primo commit
This commit is contained in:
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Phoca Gallery
|
||||
* @author Jan Pavelka - https://www.phoca.cz
|
||||
* @copyright Copyright (C) Jan Pavelka https://www.phoca.cz
|
||||
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 and later
|
||||
* @cms Joomla
|
||||
* @copyright Copyright (C) Open Source Matters. All rights reserved.
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
|
||||
*/
|
||||
defined( '_JEXEC' ) or die( 'Restricted access' );
|
||||
use Joomla\CMS\Filesystem\File;
|
||||
|
||||
class PhocaGalleryGeo
|
||||
{
|
||||
/*
|
||||
* Geotagging
|
||||
* If no lat or lng will be set by image, it will be automatically set by category
|
||||
*/
|
||||
public static function findLatLngFromCategory($categories) {
|
||||
$output['lat'] = '';
|
||||
$output['lng'] = '';
|
||||
foreach ($categories as $category) {
|
||||
if (isset($category->latitude) && isset($category->longitude)) {
|
||||
if ($category->latitude != '' && $category->latitude != '') {
|
||||
$output['lat'] = $category->latitude;
|
||||
}
|
||||
if ($category->longitude != '' && $category->longitude != '') {
|
||||
$output['lng'] = $category->longitude;
|
||||
}
|
||||
|
||||
if ($output['lat'] != '' && $output['lng'] != '') {
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
}
|
||||
// If nothing will be found, paste some lng, lat
|
||||
$output['lat'] = 50.079623358200884;
|
||||
$output['lng'] = 14.429919719696045;
|
||||
return $output;
|
||||
}
|
||||
|
||||
public static function getGeoCoords($filename){
|
||||
|
||||
$lat = $long = '';
|
||||
$fileOriginal = PhocaGalleryFile::getFileOriginal($filename);
|
||||
|
||||
if (!function_exists('exif_read_data')) {
|
||||
return array('latitude' => 0, 'longitude' => 0);
|
||||
} else {
|
||||
if (strtolower(File::getExt($fileOriginal)) != 'jpg') {
|
||||
return array('latitude' => 0, 'longitude' => 0);
|
||||
}
|
||||
|
||||
// Not happy but @ must be added because of different warnings returned by exif functions - can break multiple upload
|
||||
$exif = @exif_read_data($fileOriginal, 0, true);
|
||||
if (empty($exif)) {
|
||||
return array('latitude' => 0, 'longitude' => 0);
|
||||
}
|
||||
|
||||
|
||||
if (isset($exif['GPS']['GPSLatitude'][0])) {$GPSLatDeg = explode('/',$exif['GPS']['GPSLatitude'][0]);}
|
||||
if (isset($exif['GPS']['GPSLatitude'][1])) {$GPSLatMin = explode('/',$exif['GPS']['GPSLatitude'][1]);}
|
||||
if (isset($exif['GPS']['GPSLatitude'][2])) {$GPSLatSec = explode('/',$exif['GPS']['GPSLatitude'][2]);}
|
||||
if (isset($exif['GPS']['GPSLongitude'][0])) {$GPSLongDeg = explode('/',$exif['GPS']['GPSLongitude'][0]);}
|
||||
if (isset($exif['GPS']['GPSLongitude'][1])) {$GPSLongMin = explode('/',$exif['GPS']['GPSLongitude'][1]);}
|
||||
if (isset($exif['GPS']['GPSLongitude'][2])) {$GPSLongSec = explode('/',$exif['GPS']['GPSLongitude'][2]);}
|
||||
|
||||
|
||||
if (isset($GPSLatDeg[0]) && isset($GPSLatDeg[1]) && (int)$GPSLatDeg[1] > 0
|
||||
&& isset($GPSLatMin[0]) && isset($GPSLatMin[1]) && (int)$GPSLatMin[1] > 0
|
||||
&& isset($GPSLatSec[0]) && isset($GPSLatSec[1]) && (int)$GPSLatSec[1] > 0) {
|
||||
|
||||
$lat = $GPSLatDeg[0]/$GPSLatDeg[1]+
|
||||
($GPSLatMin[0]/$GPSLatMin[1])/60+
|
||||
($GPSLatSec[0]/$GPSLatSec[1])/3600;
|
||||
|
||||
if(isset($exif['GPS']['GPSLatitudeRef']) && $exif['GPS']['GPSLatitudeRef'] == 'S'){$lat=$lat*(-1);}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (isset($GPSLongDeg[0]) && isset($GPSLongDeg[1]) && (int)$GPSLongDeg[1] > 0
|
||||
&& isset($GPSLongMin[0]) && isset($GPSLongMin[1]) && (int)$GPSLongMin[1] > 0
|
||||
&& isset($GPSLongSec[0]) && isset($GPSLongSec[1]) && (int)$GPSLongSec[1] > 0) {
|
||||
|
||||
|
||||
$long = $GPSLongDeg[0]/$GPSLongDeg[1]+
|
||||
($GPSLongMin[0]/$GPSLongMin[1])/60+
|
||||
($GPSLongSec[0]/$GPSLongSec[1])/3600;
|
||||
|
||||
if(isset($exif['GPS']['GPSLongitudeRef']) && $exif['GPS']['GPSLongitudeRef'] == 'W'){$long=$long*(-1);}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return array('latitude' => $lat, 'longitude' => $long);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
@ -0,0 +1 @@
|
||||
<html><body bgcolor="#FFFFFF"></body></html>
|
||||
Reference in New Issue
Block a user