diff options
Diffstat (limited to 'include/photos.php')
-rw-r--r-- | include/photos.php | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/include/photos.php b/include/photos.php index 4b7809fc1..4785e47c4 100644 --- a/include/photos.php +++ b/include/photos.php @@ -205,6 +205,17 @@ function photo_upload($channel, $observer, $args) { // Create item container + $lat = $lon = null; + + if($exif && $exif['GPS']) { + if(get_pconfig($channel_id,'system','allow_photo_location')) { + $lat = getGps($exif['GPS']['GPSLatitude'], $exif['GPSLatitudeRef']); + $lon = getGps($exif['GPS']['GPSLongitude'], $exif['GPSLongitudeRef']); + } + } + + + $item_flags = ITEM_WALL|ITEM_ORIGIN|ITEM_THREAD_TOP; $item_restrict = (($visible) ? ITEM_VISIBLE : ITEM_HIDDEN); $title = ''; @@ -212,6 +223,9 @@ function photo_upload($channel, $observer, $args) { $arr = array(); + if($lat && $lon) + $arr['coord'] = $lat . ' ' . $lon; + $arr['aid'] = $account_id; $arr['uid'] = $channel_id; $arr['mid'] = $mid; @@ -481,3 +495,30 @@ function photos_create_item($channel, $creator_hash, $photo, $visible = false) { return $item_id; } + + +function getGps($exifCoord, $hemi) { + + $degrees = count($exifCoord) > 0 ? gps2Num($exifCoord[0]) : 0; + $minutes = count($exifCoord) > 1 ? gps2Num($exifCoord[1]) : 0; + $seconds = count($exifCoord) > 2 ? gps2Num($exifCoord[2]) : 0; + + $flip = ($hemi == 'W' or $hemi == 'S') ? -1 : 1; + + return floatval($flip * ($degrees + ($minutes / 60) + ($seconds / 3600))); + +} + +function gps2Num($coordPart) { + + $parts = explode('/', $coordPart); + + if (count($parts) <= 0) + return 0; + + if (count($parts) == 1) + return $parts[0]; + + return floatval($parts[0]) / floatval($parts[1]); +} + |