Changeset 12126 for extensions/edit_gmaps
- Timestamp:
- Sep 10, 2011, 5:02:19 PM (13 years ago)
- Location:
- extensions/edit_gmaps
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/edit_gmaps/admin/admin_edit.php
r10060 r12126 1 <?php 1 <?php 2 2 if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 3 3 global $lang; … … 6 6 7 7 if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 8 8 9 9 /***********************************************************************************/ 10 10 if (!defined('TOOL_KIT_PATH')) define( 'TOOL_KIT_PATH', EDIT_CL_PATH."admin/"); 11 if (!defined('INCLUDE_PATH')) define( 'INCLUDE_PATH', TOOL_KIT_PATH.'include/' ); 12 $Toolkit_Dir =INCLUDE_PATH ; 13 11 if (!defined('INCLUDE_PATH')) define( 'INCLUDE_PATH', TOOL_KIT_PATH.'include/' ); 12 13 $Toolkit_Dir =INCLUDE_PATH ; 14 14 15 include $Toolkit_Dir . 'fonctions.php'; 15 /***********************************************************************************/ 16 //========================================================== 17 if (!defined('EDIT_CL_PATH')) define( 'EDIT_CL_PATH', EDIT_CL_PATH .'admin/' ); 18 $path = EDIT_CL_PATH; 19 $plg_data = implode( '', file($path.'main.inc.php') ); 20 if (preg_match("|Version: (.*)|", $plg_data, $val)) { 21 $EDIT_CL_PATH_plugin['version'] = trim($val[1]); 22 } 23 $EDIT_CL_PATH_plugin = array_map('htmlspecialchars', $EDIT_CL_PATH_plugin); 24 $version= $EDIT_CL_PATH_plugin['version'] ; 25 $icon_path = 'themes/default/icon/help.png'; 26 $path_js= 'themes/default/js/' ; 27 /****************************************************************/ 16 28 $info_message="" ; 17 $error_message=""; 18 19 /************* Mise à jour des meta données ***************/ 20 if ( isset($_POST['update']) && $_POST['update']==l10n('update_exif')){ 21 $exif = @read_exif_data( $exif ); 22 $exif = @array_intersect_key( $exif, array_flip( array('GPSLatitudeRef', 'GPSLatitude', 'GPSLongitudeRef', 'GPSLongitude', 'GPSAltitudeRef', 'GPSAltitude') ) ); 23 24 // error_reporting ( 0 ); 25 // Hide any unknown EXIF tags 26 $GLOBALS['HIDE_UNKNOWN_TAGS'] = FALSE; 27 include $Toolkit_Dir.'Toolkit_Version.php'; // Change: added as of version 1.11 28 // Include the required files for reading and writing Photoshop File Info 29 include $Toolkit_Dir.'JPEG.php'; 30 include $Toolkit_Dir.'XMP.php'; 31 include $Toolkit_Dir.'Photoshop_IRB.php'; 32 include $Toolkit_Dir.'EXIF.php'; 33 include $Toolkit_Dir.'GPS_File_Info.php'; 34 $GLOBALS['HTTP_POST_VARS']=$_POST ; 35 // Copy all of the HTML Posted variables into an array 36 $new_ps_file_info_array = $GLOBALS['HTTP_POST_VARS']; 37 // Some characters are escaped with backslashes in HTML Posted variable 38 // Cycle through each of the HTML Posted variables, and strip out the slashes ' 39 foreach( $new_ps_file_info_array as $var_key => $var_val ){ 40 if ($var_key !="selection") 41 $new_ps_file_info_array[ $var_key ] = stripslashes( $var_val ); 42 } 43 $new_ps_file_info_array['selection'] = explode(";",$new_ps_file_info_array['filename']); 44 foreach( $new_ps_file_info_array['selection'] as $filename ) { 45 //====================================================== 46 //= $new_ps_file_info_array[ 'filename' ]; 47 if($filename!="") { // Protect against hackers editing other files 48 // copy( $filename, $filename.".bak" ); 49 $path_parts = pathinfo( $filename ); 50 if(1) { 51 if ( strcasecmp( $path_parts["extension"], "jpg" ) != 0 ) { 52 $error_message .= $filename ; 53 $error_message .="Incorrect File Type - JPEG Only\n"; 54 $filename=""; 55 // exit( ); 56 } 57 // Change: removed limitation on file being in current directory - as of version 1.11 58 // Retrieve the header information 59 $jpeg_header_data = get_jpeg_header_data( $filename ); 60 // Retreive the EXIF, XMP and Photoshop IRB information from 61 // the existing file, so that it can be updated 62 $Exif_array = get_EXIF_JPEG( $filename ); 63 $XMP_array = read_XMP_array_from_text( get_XMP_text( $jpeg_header_data ) ); 64 $IRB_array = get_Photoshop_IRB( $jpeg_header_data ); 65 66 // Update the JPEG header information with the new Photoshop File Info 67 $jpeg_header_data = put_GPS_file_info( $jpeg_header_data, $new_ps_file_info_array, $Exif_array, $XMP_array, $IRB_array ); 68 // Check if the Update worked 69 if ( $jpeg_header_data == FALSE ) { 70 // Update of file info didn''t work - output error message 71 $error_message .= "jpeg_header_data 72 Error - Failure update Photoshop File Info : $filename <br>\n"; 73 // Output HTML with the form and data which was 74 // sent, to allow the user to fix it 75 }else if ( FALSE == put_jpeg_header_data( $filename, $filename, $jpeg_header_data ) ) { 76 // Attempt to write the new JPEG file 77 // Writing of the new file didn''t work - output error message 78 $error_message .= "Error - Failure to write new JPEG : $filename <br>\n"; 79 // Output HTML with the form and data which was 80 // sent, to allow the user to fix it 81 }else{ 82 $info_message .= l10n('update') . " Exif: " . $filename . " " . l10n('OK') ."<br />" ; 83 } 84 $_POST['submit']= l10n('update_database') ; 85 } 86 } 87 } 88 $_POST['update'] ="ok"; 89 } 29 $erreur_message=""; 90 30 /****************************************************************/ 91 31 if ( !isset($_GET['cat']) ) $_GET['cat'] = 'caddie'; 92 32 $_GET['mode'] = 'map'; 93 if (PHPWG_VERSION < 2.2 ) {94 include (PHPWG_ROOT_PATH.'admin/element_set.php');95 } else {96 if (!isset($page['title'])) $page['title']="";97 include (PHPWG_ROOT_PATH.'admin/batch_manager.php');33 if (PHPWG_VERSION < 2.2 ) { 34 include (PHPWG_ROOT_PATH.'admin/element_set.php'); 35 } else { 36 if (!isset($page['title'])) $page['title']=""; 37 include (PHPWG_ROOT_PATH.'admin/batch_manager.php'); 98 38 $template->concat('TABSHEET_TITLE', ' '.l10n_dec('%d image', '%d images', count($page['cat_elements_id'])).' - '.$page['title']); 99 } 100 101 if ( isset($_POST['submit']) ) { 102 $collection = array(); 103 if( !isset ($_POST['target'])) { 104 $_POST['submit'] = l10n('Submit') ; 105 $_POST['target']='selection'; 106 $collection = $_POST['selection']; 107 } 108 109 switch ($_POST['target']) 110 { 39 } 40 //=============================================================== 41 $collection = array(); 42 if(!isset($_POST['target'])) $_POST['target']=""; 43 44 switch ($_POST['target']){ 111 45 case 'all' : 112 46 $collection = $page['cat_elements_id']; 113 47 break; 114 48 case 'selection' : 115 49 if (!isset($_POST['selection']) or count($_POST['selection']) == 0) … … 117 51 else 118 52 $collection = $_POST['selection']; 119 break; 120 } 121 53 break; 54 } 55 if (isset($_POST['selection'])){} 56 //=============================================================== 57 $images=array(); 58 if (!empty($_GET['display'])) 59 { 60 if ('all' == $_GET['display']) 61 $page['nb_images'] = count($page['cat_elements_id']); 62 else 63 $page['nb_images'] = intval($_GET['display']); 64 } 65 else 66 $page['nb_images'] = 20; 67 68 if ( !empty($page['cat_elements_id']) ) 69 { 70 $query=' 71 SELECT id,tn_ext,name,path,file,lat,lon,alt FROM '.IMAGES_TABLE.' 72 WHERE id IN ('.implode(',',$page['cat_elements_id']).') 73 '.$conf['order_by'].' 74 LIMIT '.$page['start'].', '. $page['nb_images'] .' 75 ;'; 76 $result = pwg_query($query); 77 while ( $row=mysql_fetch_assoc($result) ) 78 $images[] = $row; 79 } 80 //=============================================================== 81 global $lang_info; 82 if (date_default_timezone_get()) { 83 $adresse = date_default_timezone_get() ; 84 }else{ 85 86 } 87 $adresse = $lang_info['country']; ; 88 $adresse=str_replace("/",", ",$adresse); 89 90 if (count($collection)>0 ) 91 //============================================================= 92 if (isset($_POST['update']) && $_POST['update']==l10n('update_exif')){ 93 /************* Mise à jour des meta données ***************/ 94 // error_reporting ( 0 ); 95 // Hide any unknown EXIF tags 96 $GLOBALS['HIDE_UNKNOWN_TAGS'] = FALSE; 97 include $Toolkit_Dir.'Toolkit_Version.php'; // Change: added as of version 1.11 98 // Include the required files for reading and writing Photoshop File Info 99 include $Toolkit_Dir.'JPEG.php'; 100 include $Toolkit_Dir.'XMP.php'; 101 include $Toolkit_Dir.'Photoshop_IRB.php'; 102 include $Toolkit_Dir.'EXIF.php'; 103 include $Toolkit_Dir.'GPS_File_Info.php'; 104 105 $GLOBALS['HTTP_POST_VARS']=$_POST ; 106 // Copy all of the HTML Posted variables into an array 107 $new_ps_file_info_array = $GLOBALS['HTTP_POST_VARS']; 108 109 // Some characters are escaped with backslashes in HTML Posted variable 110 // Cycle through each of the HTML Posted variables, and strip out the slashes ' 111 112 foreach( $new_ps_file_info_array as $var_key => $var_val ){ 113 if ($var_key !="selection") 114 $new_ps_file_info_array[ $var_key ] = stripslashes( $var_val ); 115 } 116 117 $init_info =true; 118 $first_image=""; 119 $_POST['submit']=""; 120 121 foreach ($collection as $id_0){ 122 foreach ($images as $image) { 123 if (array_search($id_0,$image)) { 124 //================================================================= 125 // Donnée base de donnée 126 //================================================================= 127 // $info_message .= "<div style='border:2px solid red'>$id_0 Image:" . cl_edit_functions::Memo_vars($image)."</div>" ; 128 129 //================================================================= 130 // Meta donnée 131 //================================================================= 132 $infos_gps = array(); 133 $infos_gps = cl_edit_controler::Get_exif_gps( $image['path'],$image,false) ; 134 if($image['lat']=='' || $image['lon']==''){ 135 $image['lat']=$infos_gps['lat']; 136 $image['lon']=$infos_gps['lon']; 137 $image['alt']=$infos_gps['alt']; 138 } 139 140 if($image['lat']!=''){ 141 $new_ps_file_info_array= base_to_meta($image); 142 } 143 144 $new_ps_file_info_array['filename'] = $image['path']; 145 $new_ps_file_info_array['selection'] = explode(";",$new_ps_file_info_array['filename']); 146 // 147 if( $image['lat']=="" ){ 148 $image['lat']= $new_ps_file_info_array['lat'] ; 149 $image['lon']= $new_ps_file_info_array['lon'] ; 150 $image['alt']= $new_ps_file_info_array['alt'] ; 151 } 152 if($_POST['update']==l10n('update_exif')) unset($_POST['submit']); 153 if(1) { 154 155 if( cl_edit_controler::add_meta_gps($new_ps_file_info_array,$image)){ 156 157 $exif = @read_exif_data( $image['path']); 158 $infos_gps = cl_edit_controler::Get_exif_gps( $image['path'],$image,false) ; 159 $info_message .= $image['path'] . " : " . $image['file'] . " : ok<BR />"; 160 }else{ 161 162 } 163 } 164 }else{ 165 166 } // fin search 167 } // fin id_0 168 } // fin collection 169 $_POST['update'] ="ok"; 170 } 171 172 if ( isset($_POST['submit']) ) { 122 173 /******** Mise à jour base de données *****/ 123 174 if ( $_POST['submit'] == l10n('update_database') ){ 124 if ( count($collection)>0 ){ 125 $lat = trim($_POST['lat']); 126 $lon = trim($_POST['lon']); 127 $alt = trim($_POST['alt']); 128 129 if ( strlen($lat)>0 and strlen($lon)>0 ) { 130 if ( (double)$lat<=90 and (double)$lat>=-90 131 and (double)$lon<=180 and (double)$lat>=-180 ) 132 $update_query = 'lat='.$lat.', lon='.$lon; 133 else 134 $page['errors'][] = 'Invalid lat or lon value'; 175 if ( count($collection)>0 ){ 176 $lat = trim($_POST['lat']); 177 $lon = trim($_POST['lon']); 178 $alt = trim($_POST['alt']); 179 //=============================================================== 180 if($lat !="") cl_edit_controler::add_data_base($collection,$lat,$lon,$alt) ; 181 $_POST['submit'] = l10n('Submit') ; 182 foreach ($collection as $id_0){ 183 foreach ($images as $image) { 184 if (array_search($id_0,$image)) { 185 $image['lat'] = $lat ; 186 $image['lon']= $lon ; 187 $image['alt'] =$alt ; 188 } 189 } 190 } 191 } 135 192 } 136 elseif ( strlen($lat)==0 and strlen($lon)==0 )137 $update_query = 'lat=NULL, lon=NULL';138 else139 $page['errors'][] = 'Both lat/lon must be empty or not empty';140 141 if ( strlen($alt)==0)142 $update_query .= ', alt=NULL';143 else144 $update_query .= ', alt=' .$alt ;145 146 if (isset($update_query)){147 $update_query = '148 UPDATE '.IMAGES_TABLE.' SET '.$update_query.'149 WHERE id IN ('.implode(',',$collection).')';150 pwg_query($update_query);151 cl_meta_invalidate_cache();152 $info_message .= l10n('update') . " " . IMAGES_TABLE . " : " . l10n('OK') ;153 $_POST['submit'] = l10n('Submit') ;154 }155 }156 }157 193 } 158 194 /**************************************/ 195 159 196 $specials_selected = null; 160 foreach( array('caddie'=>'Caddie', 'recent'=>'Recent photos') as $k => $v) 161 { 162 $link = $admin_url.get_query_string_diff(array('start','cat')).'&cat='.$k; 163 $template->append( 164 'specials', 165 array( 166 $link => l10n($v), 167 ), 168 true 169 ); 170 if ($k == $_GET['cat']) $specials_selected = $link; 171 } 197 foreach( array('caddie'=>'Caddie', 'recent'=>'Recent photos') as $k => $v){ 198 $link = $admin_url.get_query_string_diff(array('start','cat')).'&cat='.$k; 199 $template->append( 200 'specials', 201 array( 202 $link => l10n($v), 203 ), 204 true 205 ); 206 if ($k == $_GET['cat']) $specials_selected = $link; 207 } 208 209 172 210 $template->assign('specials_selected', $specials_selected); 173 211 /****************************************/ … … 179 217 $categories = array(); 180 218 $selecteds = array(); 181 if (!empty($result)) 182 { 183 while ($row = mysql_fetch_assoc($result)) 184 { 219 if (!empty($result)){ 220 while ($row = mysql_fetch_assoc($result)) { 185 221 $url = $admin_url.get_query_string_diff(array('start','cat')).'&cat='.$row['id']; 186 222 if ( $row['id']==$_GET['cat'] ) $selecteds[] = $url; … … 192 228 display_select_categories($categories, $selecteds, 'categories', false); 193 229 194 if (!empty($_GET['display'])) 195 { 196 if ('all' == $_GET['display']) 197 $page['nb_images'] = count($page['cat_elements_id']); 198 else 199 $page['nb_images'] = intval($_GET['display']); 200 } 201 else 202 $page['nb_images'] = 20; 203 204 if ( !empty($page['cat_elements_id']) ) 205 { 230 231 if ( !empty($page['cat_elements_id']) ){ 206 232 $nav_bar = create_navigation_bar( 207 233 $admin_url.get_query_string_diff(array('start')), … … 212 238 $template->assign('navbar', $nav_bar); 213 239 } 214 215 $images=array(); 216 if ( !empty($page['cat_elements_id']) ) 217 { 218 $query=' 219 SELECT id,tn_ext,name,path,file,lat,lon,alt FROM '.IMAGES_TABLE.' 220 WHERE id IN ('.implode(',',$page['cat_elements_id']).') 221 '.$conf['order_by'].' 222 LIMIT '.$page['start'].', '.$page['nb_images'].' 223 ;'; 224 $result = pwg_query($query); 225 while ( $row=mysql_fetch_assoc($result) ) 226 $images[] = $row; 227 } 228 229 foreach ($images as $image) 230 { 231 $tpl_var = array_merge( $image, 240 //======================================================================== 241 $v_exif=""; 242 foreach ($images as $image){ 243 244 $infos_gps = array(); 245 $infos_gps = cl_edit_controler::Get_exif_gps( $image['path'],$image,false) ; 246 $v_exif=$infos_gps['is_exif']?true:false ; 247 $v_db=false ; 248 $v_db=$image['lat']!=0 && $image['lon']!=0; 249 250 if( $infos_gps['lat'] !=0 || $infos_gps['lon'] !=0 ) { 251 252 $new= ( !isset($image['lat'])? true: $image['lat']!=$infos_gps['lat'] ) ; 253 $image['lat']=$infos_gps['lat']; 254 $image['lon']=$infos_gps['lon']; 255 $image['alt']=$infos_gps['alt']; 256 $sel_img= array($image['id']); 257 if ($new) cl_edit_controler::add_data_base( $sel_img,$image['lat'],$image['lon'],$image['alt']) ; 258 } 259 //================================================= 260 $tpl_var = array_merge( $image, 232 261 array( 262 'U_EXIF' => $v_exif, 263 'U_DB' => $v_db, 233 264 'U_TN' => get_thumbnail_url($image), 234 265 'TITLE' => get_thumbnail_title($image) 235 ) 236 ); 237 if ( isset($image['lat']) ) 238 $tpl_var['U_MAP'] = cl_make_map_picture_url( array('image_id'=>$image['id'], 'image_file'=>$image['file']) ); 239 $template->append('thumbnails', $tpl_var); 240 } 266 ) ); 267 268 if ( isset($image['lat']) ){ 269 $tpl_var['U_MAP'] = cl_make_map_picture_url( 270 array('image_id'=>$image['id'], 271 'image_file'=>$image['file']) ); 272 } 273 274 $template->append('thumbnails', $tpl_var); 275 } 276 241 277 242 278 $template->assign( 243 279 array( 244 280 'U_DISPLAY'=> $admin_url.get_query_string_diff(array('display')) 245 ) 281 ) 246 282 ); 247 283 248 //==========================================================249 if (!defined('EDIT_CL_PATH')) define( 'EDIT_CL_PATH', EDIT_CL_PATH .'admin/' );250 $path = EDIT_CL_PATH;251 $plg_data = implode( '', file($path.'main.inc.php') );252 if (preg_match("|Version: (.*)|", $plg_data, $val))253 { $EDIT_CL_PATH_plugin['version'] = trim($val[1]); }254 $EDIT_CL_PATH_plugin = array_map('htmlspecialchars', $EDIT_CL_PATH_plugin);255 $version= $EDIT_CL_PATH_plugin['version'] ;256 $icon_path = 'themes/default/icon/help.png';257 $path_js= 'themes/default/js/' ;258 284 259 285 //================================================================================== 260 $match=""; 261 262 if ( isset($_POST['submit']) ) 263 { 264 if ($_POST['submit']==l10n('Submit') ) 265 { 266 $_POST['selection']=array(); 267 $collection =array(); 268 unset($collection); 269 } 270 271 272 if ($_POST['submit']==l10n('reset' ) ) 273 { 274 $_POST['selection']=array(); 275 unset($collection); 276 } 277 278 } 286 $match=""; 287 if ( isset($_POST['submit']) ) { 288 if ($_POST['submit']==l10n('Submit') ) { 289 $_POST['selection']=array(); 290 $collection =array(); 291 unset($collection); 292 } 293 if ($_POST['submit']==l10n('reset' ) ) { 294 $_POST['selection']=array(); 295 unset($collection); 296 } 297 } 279 298 //================================================================================= 280 299 $src=""; 281 282 300 $template->assign( 283 array( 284 301 array( 'EDIT_CL_PATH' => EDIT_CL_PATH, 302 'path_js' => $path_js, 285 303 'VERSION'=> $version, 286 304 'EDIT_CL_PATH_ABS' => dirname(__FILE__).'/', 287 ) 305 ) 288 306 ); 289 global $lang_info; 290 if (date_default_timezone_get()) { 291 $adresse = date_default_timezone_get() ; 292 }else{ 293 294 } 295 $adresse = $lang_info['country']; ; 296 $adresse=str_replace("/",", ",$adresse); 297 $template->assign( 'coordinates', 298 array( 'FILE' => '', 299 'LAT' => '100', 300 'LON' => '100', 301 'ADRESSE' => $adresse, 302 'ZOOM' => 18, 303 'ALT' => 0 304 ) 305 ); 306 307 if (isset($_POST['submit']) and $_POST['submit']==l10n('selection' )) 308 { 309 if (isset($collection)) { 310 $lat =1000;$first_image=""; 307 308 $template->assign( 'coordinates', 309 array( 'FILE' => '', 310 'LAT' => '100', 311 'LON' => '100', 312 'ADRESSE' => $adresse, 313 'ZOOM' => 18, 314 'ALT' => 0 315 ) 316 ); 317 //====================================================================== 318 if (isset($_POST['submit']) and $_POST['submit']==l10n('selection' )){ 319 if (isset($collection)) { 320 $init_info =true; 321 $first_image=""; 322 $_POST['selection'] = $collection ; 311 323 foreach ($collection as $id_0) { 312 foreach ($images as $image) { 313 if (array_search($id_0,$image)) { 314 $_POST['selection'] = $collection ; 315 $infos_gps= Get_exif_gps( $image['path'],$image) ; 316 $image['lat']=$infos_gps['lat']; 317 $image['lon']=$infos_gps['lon']; 318 $image['alt']=$infos_gps['alt']; 319 if ($lat==1000) { 320 $lat= ($image['lat'] <> '') ? $image['lat'] : '100' ; 321 $lon= ($image['lon'] <> '') ? $image['lon'] : '3.0' ; 322 $alt= ($image['alt'] <> '') ? $image['alt'] : '0' ; 323 if($lat != '100') $lat=$image['lat']; 324 //===================================================== 325 $template->assign( 'coordinates', 326 array('FILE' => $image['path'], 327 'LAT' => $lat , 328 'LON' => $lon , 329 'ADRESSE' => $adresse , 330 'ZOOM' => 4, 331 'ALT' => $alt , 332 ) 333 ); 334 } 335 324 foreach ($images as $image) { 325 if (array_search($id_0,$image)) { 326 $infos_gps = array(); 327 if($image['lat']=='' || $image['lon']==''){ } 328 $infos_gps =array(); 329 $infos_gps = cl_edit_controler::Get_exif_gps( $image['path'],$image,false) ; 330 if(isset($infos_gps['lat']) && $infos_gps['is_exif']){ 331 $image['lat']=$infos_gps['lat']; 332 $image['lon']=$infos_gps['lon']; 333 $image['alt']=$infos_gps['alt']; 334 } 335 if ( $init_info && $image['lat'] <> '' ) { 336 $init_info = false ; 337 $lat = ($image['lat'] <> '') ? $image['lat'] : '100' ; 338 $lon = ($image['lon'] <> '') ? $image['lon'] : '3.0' ; 339 $alt = ($image['alt'] <> '') ? $image['alt'] : '0' ; 340 341 //===================================================== 342 $template->assign( 'coordinates', 343 array( 344 'FILE' => $image['path'], 345 'LAT' => $lat , 346 'LON' => $lon , 347 'ADRESSE' => $adresse , 348 'ZOOM' => 4, 349 'ALT' => $alt , 350 ) 351 ); 352 } 353 //===================================================== 336 354 $lon=$image['lon']; 337 $lat=$image['lat']; 338 if($infos_gps['is_exif']) $info_message .='EXIF'; 339 340 $lonDMS= dec2dms($lon) ; 341 $latDMS= dec2dms($lat) ; 342 343 344 $tpl_var = array_merge( 345 $image, 346 array( 355 $lat=$image['lat']; 356 if($infos_gps['is_exif']) { 357 $info_message .='EXIF'; 358 } 359 $lonDMS= dec2dms($lon) ; 360 $latDMS= dec2dms($lat) ; 361 362 $v_db=false ; 363 $v_db=$lon!=0 && $lat!=0; 364 365 $tpl_var = array_merge( 366 $image, 367 array( 347 368 'filename' => $image['path'], 348 'exif' => $infos_gps['is_exif'],369 'exif' => '"'.$infos_gps['is_exif'].'"' , 349 370 'lat' => $image['lat'] , 350 371 'lon' => $image['lon'] , 351 'alt' => $image['alt'] , 372 'alt' => $image['alt'] , 352 373 'latDMS' => $latDMS[3] , 353 'lonDMS' => "-->".$lonDMS[3] ,374 'lonDMS' => $lonDMS[3] , 354 375 'adresse' => $adresse , 355 376 'U_TN' => get_thumbnail_url($image), 356 377 'TITLE' => get_thumbnail_title($image), 357 'U_MAP' => cl_make_map_picture_url( 358 array( 359 'image_id'=>$image['id'], 360 'image_file'=>$image['file'], 361 ) 362 ), 363 ) 364 ); 365 $template->append('Selectthumbnails', $tpl_var); 366 } 367 } 368 } 369 } 370 371 } 372 373 374 if ( !empty($first_image)) 375 { $error_message .= cl_edit_controler::Memo_Vars($first_image); 376 if (isset($_POST['update'])) { 377 // document.Envoie.latDMS.value 378 $image= first_image ; 379 $filename=$image['path'] ; 380 $Val_exif=""; 381 $Val_XMP=""; 382 /* */ 383 if (!empty($infos_gps)) 384 $Position = $infos_gps ; 385 else $Position = Get_exif_gps($filename,$image) ; 386 387 $jpeg_header_data = get_jpeg_header_data($filename ); 388 $template->assign( array( 389 'filename_abs' => $filename , 390 'filename' => $filename, 391 'datas' => array( 392 /* 'Val_JPEG_APP'=> Generate_JPEG_APP_Segment_HTML( $jpeg_header_data ), 378 'U_EXIF' => $infos_gps['is_exif'] , 379 'U_BD' => $v_db , 380 'U_MAP' => cl_make_map_picture_url( 381 array( 382 'image_id'=>$image['id'], 383 'image_file'=>$image['file'], 384 ) 385 ), 386 ) 387 ); 388 $template->append('Selectthumbnails', $tpl_var); 389 } 390 } 391 } 392 } 393 } 394 395 //============================================================ 396 if ( !empty($first_image)) { 397 $erreur_message .= cl_edit_functions::Memo_Vars($first_image); 398 399 if (isset($_POST['update'])) { 400 // document.Envoie.latDMS.value 401 $image= first_image ; 402 $filename=$image['path'] ; 403 $Val_exif=""; 404 $Val_XMP=""; 405 /* */ 406 if (!empty($infos_gps)) 407 $Position = $infos_gps ; 408 else $Position = cl_edit_controler::Get_exif_gps($filename,$image,false) ; 409 410 $jpeg_header_data = get_jpeg_header_data($filename ); 411 $template->assign( array( 412 'filename_abs' => $filename , 413 'filename' => $filename, 414 'datas' => array( 415 /* 416 'Val_JPEG_APP'=> Generate_JPEG_APP_Segment_HTML( $jpeg_header_data ), 393 417 'Val_intrinsic'=> Interpret_intrinsic_values_to_HTML( get_jpeg_intrinsic_values( $jpeg_header_data ) ), 394 'Val_Comment'=> Interpret_Comment_to_HTML( $jpeg_header_data ), 418 'Val_Comment'=> Interpret_Comment_to_HTML( $jpeg_header_data ), 395 419 'Val_JFIF'=> Interpret_JFIF_to_HTML( get_JFIF( $jpeg_header_data ), $filename ), 396 'Val_JFXX'=>Interpret_JFXX_to_HTML( get_JFXX( $jpeg_header_data ), $filename ), 397 'Val_App12' => Interpret_App12_Pic_Info_to_HTML( $jpeg_header_data ), 398 'Val_IRB' => Interpret_IRB_to_HTML( get_Photoshop_IRB( $jpeg_header_data ), $filename ), 420 'Val_JFXX'=>Interpret_JFXX_to_HTML( get_JFXX( $jpeg_header_data ), $filename ), 421 'Val_App12' => Interpret_App12_Pic_Info_to_HTML( $jpeg_header_data ), 422 'Val_IRB' => Interpret_IRB_to_HTML( get_Photoshop_IRB( $jpeg_header_data ), $filename ), 399 423 400 424 'Val_exif'=> Interpret_EXIF_to_HTML( get_EXIF_JPEG( $filename ), $filename), 401 425 'Val_XMP' => Interpret_XMP_to_HTML( read_XMP_array_from_text( get_XMP_text( $jpeg_header_data) ) ), 402 426 */ 403 // 427 // 404 428 ), 405 'Datadase' => ($Position) ,429 'Datadase' => ($Position) , 406 430 ) ); 407 408 409 } 431 } 410 432 } 411 433 … … 414 436 function cl_make_map_picture_url($params) 415 437 { 416 417 418 419 420 438 global $conf; 439 /*if ( empty($conf['gmaps_api_key']) and $_SERVER['SERVER_ADDR']!='127.0.0.1' ) 440 return "";*/ 441 $map_url = make_picture_url($params); 442 return add_url_params($map_url, array('map'=>null) ); 421 443 } 422 444 $v1=0; … … 424 446 425 447 426 function Get_exif_gps($firt_image,$image) 427 { 428 429 error_reporting ( 1 ); 430 $filename=$firt_image; 431 432 $datas = array(); 433 $errors = array(); 434 435 436 $exif = @read_exif_data( $filename ); 437 global $errors;global $template ; 438 439 if ( empty($exif) ) return; 440 $exif = array_intersect_key( $exif, array_flip( array('GPSLatitudeRef', 'GPSLatitude', 'GPSLongitudeRef', 'GPSLongitude', 'GPSAltitudeRef', 'GPSAltitude') ) ); 441 442 //==================================================================== 443 $lat = $image['lat'] ; 444 $lon = $image['lon'] ; 445 $alt = $image['alt']; 446 global $info_message ; 447 448 $is_exif = "'".(is_array($exif['GPSLatitude']) and is_array($exif['GPSLongitude']) )."'" ; 449 if ($is_exif) { 450 $lat_exif = parse_lat_lon( $exif['GPSLatitude'] ); 451 $lon_exif = parse_lat_lon( $exif['GPSLongitude'] ); 452 $alt_exif = Parse_Fract( $exif['GPSAltitude'] ); 453 } 454 455 if ($lat =="") 456 { 457 $lat = Parse_Lat_Lon( $exif['GPSLatitude'] ); 458 if ( $exif['GPSLatitudeRef']=='S' ) $lat = -$lat; 459 460 }else{ 461 $is_exif="false" ; 462 if($lat<0) $exif['GPSLatitudeRef']='S' ; 463 else $exif['GPSLatitudeRef']='N' ; 464 465 466 } 467 if ($lon =="") { 468 469 $lon = parse_lat_lon( $exif['GPSLongitude'] ); 470 if ( $exif['GPSLongitudeRef']=='W' ) $lon = -$lon; 471 }else{ 472 if ($lon<0) $exif['GPSLongitudeRef'] ='W' ; 473 else $exif['GPSLongitudeRef'] ='E' ; 474 475 } 476 477 478 479 //======================================================================= 480 $altref = 0; 481 482 if (!is_array($exif['GPSAltitude']) or !is_array($exif['GPSAltitudeRef']) ) 483 { 484 $exif['GPSAltitude']=$alt; 485 $exif['GPSAltitudeRef']=0; 486 } else { 487 $alt = $exif['GPSAltitude']; 488 $altref = $exif['GPSAltitudeRef']; 489 } 490 //======================================================================== 491 $datas[] = array ( 492 'is_exif' => $is_exif, 493 ' filename=' => $filename , 494 'id' => $image['id'] , 495 'lat' => $lat , 496 'lon' => $lon , 497 'latDMS' => $exif['GPSLatitude'][0]['Numerator'] . "/" . 498 $exif['GPSLatitude'][0]['Denominator'] . " " . 499 $exif['GPSLatitude'][1]['Numerator'] . "/" . 500 $exif['GPSLatitude'][1]['Denominator']. " " . 501 $exif['GPSLatitude'][2]['Numerator'] . "/" . 502 $exif['GPSLatitude'][2]['Denominator'], 503 'lonDMS' => $exif['GPSLongitude'][0]['Numerator'] . "/" . 504 $exif['GPSLongitude'][0]['Denominator'] . " " . 505 $exif['GPSLongitude'][1]['Numerator'] . "/" . 506 $exif['GPSLongitude'][1]['Denominator']. " " . 507 $exif['GPSLongitude'][2]['Numerator'] . "/" . 508 $exif['GPSLongitude'][2]['Denominator'], 509 'altref' => $exif['GPSAltitudeRef'], 510 'alt' => $exif['GPSAltitude'] , 511 512 ); 513 514 return $datas[0] ; 515 } 448 516 449 if ($info_message!="") 517 450 $template->assign('infos',$info_message); 518 if ($error_message!="") 519 $template->assign('errors',$error_message); 451 if ($erreur_message!="") 452 $template->assign('errors',$erreur_message); 453 454 520 455 ?> -
extensions/edit_gmaps/admin/admin_edit.tpl
r10060 r12126 101 101 <input type="checkbox" name="selection[]" value="{$thumbnail.id}" /> 102 102 </label> 103 <span class="thumbLegend"> 104 {if isset($thumbnail.U_MAP)} 105 <a href="{$thumbnail.U_MAP}" target="_blank">{$thumbnail.lat},{$thumbnail.lon}</a> 103 <span class="thumbLegend" > 104 <div> {$thumbnail.file} </div> 105 {if isset($thumbnail.U_MAP)} 106 <div ><a href="{$thumbnail.U_MAP}" target="_blank" > 107 {if $thumbnail.U_EXIF } 108 EXIF 109 {/if} 110 {if $thumbnail.U_DB } 111 BD 112 {/if}</a> 113 </div> 114 106 115 {/if} 107 {$thumbnail.file}116 108 117 109 118 </span> … … 121 130 <td><label><input type="radio" name="target" value="selection" checked="checked" /> {'selection'|@translate}</label></td> 122 131 <input class="cluetip submit" title="{'selection'|@translate}|{'hlp_line3'|@translate}." type="submit" name="submit" value="{'selection'|@translate}" /> 132 <td> 133 <input class="cluetip submit" title="{'update_exif'|@translate}|{'hlp_update_exif'|@translate}." type="submit" value="{'update_exif'|@translate}" name="update" {$tag_input_enabled} /></td> 134 123 135 </table> 124 136 </fieldset> … … 149 161 </label> 150 162 <input type="hidden" value={$thumbnail.id} name="selection[]" /> 151 <span class="thumbLegend"> 163 <span class="thumbLegend"> <div>{$thumbnail.file} </div> 164 {if $thumbnail.U_EXIF } Exif{/if} 165 {if $thumbnail.U_BD } Bd {/if} 152 166 {if isset($thumbnail.U_MAP)} 153 <a href="{$thumbnail.U_MAP}" target="_blank"> {$thumbnail.lat},{$thumbnail.lon}</a>167 <a href="{$thumbnail.U_MAP}" target="_blank"><div>{$thumbnail.lat}</div><div>{$thumbnail.lon}</div></a> 154 168 {/if} 155 {$thumbnail.file} 156 169 157 170 </span> 158 171 </span> … … 190 203 {foreach from=$Selectthumbnails item=thumbnail} 191 204 {assign var="filename" value=$filename|@cat:$thumbnail.filename|@cat:";"} 205 192 206 {if $thumbnail.lat<>0 } 193 207 {if $thumbnail.lon<>0} -
extensions/edit_gmaps/admin/admin_edit_meta.php
r9412 r12126 119 119 } 120 120 usort($categories, 'global_rank_compare'); 121 display_select_categories($categories, $selecteds, 'categories', false); 121 122 display_select_categories($categories, $selecteds, 'categories', true); 122 123 123 124 if (!empty($_GET['display'])) … … 454 455 if ($lon =="") { 455 456 456 $lon = parse_lat_lon( $exif['GPSLongitude'] );457 $lon = Parse_Lat_Lon( $exif['GPSLongitude'] ); 457 458 $lonDMS= $exif['GPSLongitude'][0] . " | " . $exif['GPSLongitude'][1] . " | " . $exif['GPSLongitude'][2] ; 458 459 if ( $exif['GPSLongitudeRef']=='W' ) $lon = -$lon; -
extensions/edit_gmaps/admin/admin_edit_meta.tpl
r9412 r12126 188 188 <label>Altitude </label> 189 189 <input type="hidden" size="2"value="0" name="altRef" /> 190 <input type="hidden" size="2" value="0" name="altDMS" /> 190 191 <input type="text" size="15"value="{$alt}" name="alt" /> <label> m </label> 191 192 </td> … … 280 281 <input size=60 id="altRef" name="GPSAltitudeRef" type=\"text\" value="{$altRef}"> 281 282 </td> 283 <input size=60 id="altDMS" name="GPSAltitudeRef" type=\"text\" value="{$altRef}"> 282 284 <td> 283 285 Altitude -
extensions/edit_gmaps/admin/element_set.php
r8960 r12126 1 <?php1 <?php 2 2 // +-----------------------------------------------------------------------+ 3 3 // | Piwigo - a PHP based picture gallery | -
extensions/edit_gmaps/admin/header_2_1.tpl
r9412 r12126 1 {known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.js" now=0} 1 {known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.js" now=0} 2 2 {known_script id="jquery.cluetip" src=$ROOT_URL|@cat:"themes/default/js/plugins/jquery.cluetip.packed.js"} 3 3 {known_script id="jquery.ui" src=$ROOT_URL|@cat:"themes/default/js/ui/ui.core.js"} 4 4 {known_script id="jquery.ui.resizable" src=$ROOT_URL|@cat:"themes/default/js/ui/ui.resizable.js"} 5 {known_script id="EDIT_RV_script" src=$EDIT_CL_PATH|@cat:"admin/js/JScript.js"} 6 {known_script id="fieldset" src=$EDIT_CL_PATH|@cat:"admin/js/fieldset.js"} 5 {known_script id="EDIT_RV_script" src=$EDIT_CL_PATH|@cat:"admin/js/JScript.js"} 6 {known_script id="fieldset" src=$EDIT_CL_PATH|@cat:"admin/js/fieldset.js"} -
extensions/edit_gmaps/admin/include/EXIF.php
r10060 r12126 118 118 function get_EXIF_JPEG( $filename ) 119 119 { 120 global $err or_message ;120 global $erreur_message ; 121 121 // Change: Added as of version 1.11 122 122 // Check if a wrapper is being used - these are not currently supported (see notes at top of file) … … 124 124 { 125 125 // A HTTP or FTP wrapper is being used - show a warning and abort 126 $err or_message .= "HTTP and FTP wrappers are currently not supported with EXIF - See EXIF functionality documentation - a local file must be specified<br>";127 $err or_message .= "To work on an internet file, copy it locally to start with:<br><br>\n";128 $err or_message .= "\$newfilename = tempnam ( \$dir, \"tmpexif\" );<br>\n";129 $err or_message .= "copy ( \"http://whatever.com\", \$newfilename );<br><br>\n";126 $erreur_message .= "HTTP and FTP wrappers are currently not supported with EXIF - See EXIF functionality documentation - a local file must be specified<br>"; 127 $erreur_message .= "To work on an internet file, copy it locally to start with:<br><br>\n"; 128 $erreur_message .= "\$newfilename = tempnam ( \$dir, \"tmpexif\" );<br>\n"; 129 $erreur_message .= "copy ( \"http://whatever.com\", \$newfilename );<br><br>\n"; 130 130 return FALSE; 131 131 } … … 168 168 { 169 169 // Could't open the file - exit 170 $err or_message .= "<p>Could not open file $filename</p>\n";170 $erreur_message .= "<p>Could not open file $filename</p>\n"; 171 171 return FALSE; 172 172 } … … 297 297 function get_Meta_JPEG( $filename ) 298 298 { 299 global $err or_message ;299 global $erreur_message ; 300 300 // Change: Added as of version 1.11 301 301 // Check if a wrapper is being used - these are not currently supported (see notes at top of file) … … 303 303 { 304 304 // A HTTP or FTP wrapper is being used - show a warning and abort 305 $err or_message .= "HTTP and FTP wrappers are currently not supported with Meta - See EXIF/Meta functionality documentation - a local file must be specified<br>";306 $err or_message .= "To work on an internet file, copy it locally to start with:<br><br>\n";307 $err or_message .= "\$newfilename = tempnam ( \$dir, \"tmpmeta\" );<br>\n";308 $err or_message .= "copy ( \"http://whatever.com\", \$newfilename );<br><br>\n";305 $erreur_message .= "HTTP and FTP wrappers are currently not supported with Meta - See EXIF/Meta functionality documentation - a local file must be specified<br>"; 306 $erreur_message .= "To work on an internet file, copy it locally to start with:<br><br>\n"; 307 $erreur_message .= "\$newfilename = tempnam ( \$dir, \"tmpmeta\" );<br>\n"; 308 $erreur_message .= "copy ( \"http://whatever.com\", \$newfilename );<br><br>\n"; 309 309 return FALSE; 310 310 } … … 347 347 { 348 348 // Could't open the file - exit 349 $err or_message .= "<p>Could not open file $filename</p>\n";349 $erreur_message .= "<p>Could not open file $filename</p>\n"; 350 350 return FALSE; 351 351 } … … 474 474 function get_EXIF_TIFF( $filename ) 475 475 { 476 global $err or_message ;476 global $erreur_message ; 477 477 // Change: Added as of version 1.11 478 478 // Check if a wrapper is being used - these are not currently supported (see notes at top of file) … … 480 480 { 481 481 // A HTTP or FTP wrapper is being used - show a warning and abort 482 $err or_message .= "HTTP and FTP wrappers are currently not supported with TIFF - See EXIF/TIFF functionality documentation - a local file must be specified<br>";483 $err or_message .= "To work on an internet file, copy it locally to start with:<br><br>\n";484 $err or_message .= "\$newfilename = tempnam ( \$dir, \"tmptiff\" );<br>\n";485 $err or_message .= "copy ( \"http://whatever.com\", \$newfilename );<br><br>\n";482 $erreur_message .= "HTTP and FTP wrappers are currently not supported with TIFF - See EXIF/TIFF functionality documentation - a local file must be specified<br>"; 483 $erreur_message .= "To work on an internet file, copy it locally to start with:<br><br>\n"; 484 $erreur_message .= "\$newfilename = tempnam ( \$dir, \"tmptiff\" );<br>\n"; 485 $erreur_message .= "copy ( \"http://whatever.com\", \$newfilename );<br><br>\n"; 486 486 return FALSE; 487 487 } … … 494 494 { 495 495 // Could't open the file - exit 496 $err or_message .= "<p>Could not open file $filename</p>\n";496 $erreur_message .= "<p>Could not open file $filename</p>\n"; 497 497 return FALSE; 498 498 } … … 1131 1131 function read_Multiple_IFDs( $filehnd, $Tiff_offset, $Byte_Align, $Tag_Definitions_Name, $local_offsets = FALSE, $read_next_ptr = TRUE ) 1132 1132 { 1133 global $err or_message ;1133 global $erreur_message ; 1134 1134 // Start at the offset of the first IFD 1135 1135 $Next_Offset = 0; … … 1144 1144 { 1145 1145 // Error seeking to position of next IFD 1146 $err or_message .= "<p>Error: Corrupted EXIF</p>\n";1146 $erreur_message .= "<p>Error: Corrupted EXIF</p>\n"; 1147 1147 return FALSE; 1148 1148 } … … 1193 1193 function read_IFD_universal( $filehnd, $Tiff_offset, $Byte_Align, $Tag_Definitions_Name, $local_offsets = FALSE, $read_next_ptr = TRUE ) 1194 1194 { 1195 global $error_message ; 1196 1195 global $erreur_message ; 1196 global $nom_fichier; 1197 1197 1198 if ( ( $filehnd == NULL ) || ( feof( $filehnd ) ) ) 1198 1199 { … … 1213 1214 // If the data is corrupt, the number of entries may be huge, which will cause errors 1214 1215 // This is often caused by a lack of a Next-IFD pointer 1215 if ( $No_Entries> 1 0000 )1216 if ( $No_Entries> 12800 ) 1216 1217 { 1217 1218 // Huge number of entries - abort 1218 $err or_message .= "<p>".$No_Entries."Error: huge number of EXIF entries - EXIF is probably Corrupted</p>\n";1219 $erreur_message .= $nom_fichier." Error: huge number (".$No_Entries.") of EXIF entries - EXIF is probably Corrupted.<br />"; 1219 1220 1220 1221 return array ( FALSE , 0); … … 1241 1242 { 1242 1243 // Couldn't read the IFD Data properly, Some Casio files have no Next IFD pointer, hence cause this error 1243 $err or_message .= "<p>Error: EXIF Corrupted</p>\n";1244 $erreur_message .= "<p>Error: EXIF Corrupted</p>\n"; 1244 1245 return array(FALSE, 0); 1245 1246 } … … 1297 1298 if ( $Data_Count > 100000 ) 1298 1299 { 1299 // $err or_message .= "<p>Error: huge EXIF data count - EXIF is probably Corrupted</p>\n";1300 // $erreur_message .= "<p>Error: huge EXIF data count - EXIF is probably Corrupted</p>\n"; 1300 1301 1301 1302 // Some Casio files have no Next IFD pointer, hence cause errors … … 2209 2210 2210 2211 function get_IFD_Data_Type( $input_data, $data_type, $Byte_Align ){ 2211 global $err or_message ;2212 global $erreur_message ; 2212 2213 // Check if this is a Unsigned Byte, Unsigned Short or Unsigned Long 2213 2214 if (( $data_type == 1 ) || ( $data_type == 3 ) || ( $data_type == 4 )) … … 2234 2235 // to return multiple values instead of a single value 2235 2236 2236 $err or_message .= "<p>Error - ASCII Strings should not be processed in get_IFD_Data_Type</p>\n";2237 $erreur_message .= "<p>Error - ASCII Strings should not be processed in get_IFD_Data_Type</p>\n"; 2237 2238 return "Error Should never get here"; //explode( "\x00", $input_data ); 2238 2239 } -
extensions/edit_gmaps/admin/include/fonctions.php
r9412 r12126 1 1 <?php 2 // 3 // DECIMAL TO FRACTION 4 // 2 3 function base_to_meta($image){ 4 $info_meta['lat']=$image['lat']; 5 $info_meta['lon']=$image['lon']; 6 $info_meta['alt']=$image['alt']; 7 //=========================================================================== 8 $info_meta['latRef'] = ($image['lat']<0)? 'S' : "N" ; 9 $info_meta['GPSLatitudeRef'] = ($image['lat']<0)? 'S' : "N" ; 10 $p1=dec2dms($image['lat']); 11 12 $info_meta['latDMS']=$p1[0]['Numerator'] . "/" . 13 $p1[0]['Denominator'] ." ". 14 $p1[1]['Numerator'] . "/" . 15 $p1[1]['Denominator'] ." ". 16 $p1[2]['Numerator'] . "/" . 17 $p1[2]['Denominator'] ; 18 19 $info_meta['GPSLatitude']=array( 20 $p1[0]['Numerator'] . "/" . 21 $p1[0]['Denominator'] , 22 $p1[1]['Numerator'] . "/" . 23 $p1[1]['Denominator'] , 24 $p1[2]['Numerator'] . "/" . 25 $p1[2]['Denominator'] 26 ); 27 28 //=========================================================================== 29 $info_meta['GPSLongitudeRef'] = ($image['lon']<0)? 'W' : "E" ; 30 $info_meta['lonRef'] = ($image['lon']<0)? 'W' : "E" ; 31 $p1=dec2dms($image['lon']); 32 $info_meta['lonDMS']=$p1[0]['Numerator'] . "/" . 33 $p1[0]['Denominator'] ." ". 34 $p1[1]['Numerator'] . "/" . 35 $p1[1]['Denominator'] ." ". 36 $p1[2]['Numerator'] . "/" . 37 $p1[2]['Denominator'] ; 38 $info_meta['GPSLongitude']=array( 39 $p1[0]['Numerator'] . "/" . 40 $p1[0]['Denominator'] , 41 $p1[1]['Numerator'] . "/" . 42 $p1[1]['Denominator'] , 43 $p1[2]['Numerator'] . "/" . 44 $p1[2]['Denominator'] 45 ); 46 //=========================================================================== 47 $info_meta['GPSAltitudeRef'] = "0"; 48 $p1= round( $image['alt'] * 5000000000 ); 49 $info_meta['GPSAltitude']= $p1.'/'."500000000000"; 50 $info_meta['altDMS']= $p1.'/'."500000000000"; 51 $info_meta['altRef']= "0"; 52 return $info_meta ; 53 } 54 55 /********************************** 56 * DECIMAL TO FRACTION * 57 **********************************/ 5 58 function dec2frac( $decimal ) { 6 59 $decimal = (string)$decimal; … … 10 63 11 64 // find least reduced fractional form of number 12 for( $i = 0, $ix = strlen( $decimal ); $i < $ix; $i++ ) 13 { 65 for( $i = 0, $ix = strlen( $decimal ); $i < $ix; $i++ ){ 14 66 // build the denominator as we 'shift' the decimal to the right 15 67 if( $dec ) $den *= 10; … … 42 94 } 43 95 44 96 /********************************** 97 * Decimal vers Deg Min Sec * 98 **********************************/ 45 99 function dec2dms($value) { 46 100 $value= abs($value); … … 59 113 $ret[2]['Denominator']=$sec->Denominator; 60 114 $ret[3]= " Deg: " . $degrees . " Min: " . $minutes . " Sec: " . $seconds." " ; 61 115 $ret[4]= " " . $degrees . "/1 " . $minutes . "/1 " . $sec->Numerator."/".$sec->Denominator ; 62 116 return( $ret); 63 117 64 118 } 65 119 66 67 /*68 //Array (69 [GPSLatitudeRef] => S70 [GPSLatitude] =>71 Array ( [0] => 41/172 [1] => 54/173 [2] => 26543/3238 )74 [GPSLongitudeRef] => E75 [GPSLongitude] => Array (76 [0] => 146/177 [1] => 21/178 [2] => 61393/1729 ) )79 */80 120 81 121 function toFraction($number){ … … 108 148 return ($denominator > 0) ? $numerator . '/' . $denominator : false; 109 149 } 110 111 function Parse_Fract( $f ) 112 { 150 //============================================== 151 function Parse_Fract( $f ){ 113 152 $nd = explode( '/', $f ); 114 153 return $nd[0]/$nd[1]; -
extensions/edit_gmaps/admin/js/JScript.js
r10060 r12126 8 8 9 9 function onLoad() { 10 11 12 13 14 15 16 17 18 if (coordinates.LAT <= 90 && coordinates.LAT != " " && coordinates.LAT != "") {19 20 21 coordinates.LAT=49 ;coordinates.LON = 3;22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 10 var reg = new RegExp('/', "g"); 11 12 if (coordinates.ADRESSE) 13 coordinates.ADRESSE = coordinates.ADRESSE.replace("/", ", "); 14 15 document.getElementById("match").value = coordinates.ADRESSE; 16 geocoder = new google.maps.Geocoder(); 17 var mapElement = document.getElementById("map"); 18 if (coordinates.LAT <= 90 && coordinates.LAT != " " && coordinates.LAT != "") { 19 20 } else { 21 coordinates.LAT = 49; coordinates.LON = 3; 22 coordinates.ZOOM = coordinates.ZOOM | 18; 23 geocoder.geocode({ 'address': coordinates.ADRESSE }, function (results, status) { 24 /* Si l'adresse a pu être géolocalisée */ 25 if (status == google.maps.GeocoderStatus.OK) { 26 /* Récupération de sa latitude et de sa longitude */ 27 coordinates.LAT = results[0].geometry.location.lat(); 28 coordinates.LON = results[0].geometry.location.lng(); 29 LatLng = new google.maps.LatLng(coordinates.LAT, coordinates.LON); 30 updateMarkerPosition(LatLng); 31 geocodePosition(LatLng); 32 } 33 }); 34 35 36 } 37 37 zoom = coordinates.ZOOM; 38 39 40 41 42 43 44 45 46 47 var mapOpts = {48 center:LatLng,49 zoom:zoom,50 mapTypeId: google.maps.MapTypeId.SATELLITE 51 52 53 map = new google.maps.Map( mapElement, mapOpts);54 55 56 57 58 if (coordinates)59 marker = new google.maps.Marker( { 60 61 62 draggable: true63 64 65 66 67 38 LatLng = new google.maps.LatLng(coordinates.LAT, coordinates.LON); 39 40 41 /* 42 MapTypeId.ROADMAP affiche un plan (de type carte routière). 43 MapTypeId.SATELLITE affiche une vue satellite. 44 MapTypeId.HYBRID affiche une vue mixte entre les deux précédentes. 45 MapTypeId.TERRAIN affiche une vue du relief. 46 */ 47 var mapOpts = { 48 center: LatLng, 49 zoom: zoom, 50 mapTypeId: google.maps.MapTypeId.SATELLITE 51 }; 52 53 map = new google.maps.Map(mapElement, mapOpts); 54 55 56 57 58 if (coordinates) 59 marker = new google.maps.Marker({ 60 position: map.getCenter(), 61 map: map, 62 draggable: true 63 }); 64 65 66 // Add dragging event listeners. 67 google.maps.event.addListener(marker, 68 68 'dragstart', 69 69 function () { 70 70 updateMarkerAddress('Dragging...'); 71 71 }); 72 72 73 73 google.maps.event.addListener(marker, 74 74 'drag', 75 75 function () { 76 77 76 updateMarkerStatus('Dragging...'); 77 updateMarkerPosition(marker.getPosition()); 78 78 } 79 79 ); 80 80 81 81 google.maps.event.addListener(marker, 82 82 'dragend', 83 83 function () { 84 84 85 86 85 86 87 87 // getElevation({ latLng: marker.getPosition() }); 88 89 90 91 88 geocodePosition(marker.getPosition()); 89 updateMarkerStatus('Drag ended'); 90 getElevation({ 'latLng': marker.getPosition() }); 91 92 92 93 93 } 94 94 ); 95 95 96 // styleIcon = new StyledIcon(StyledIconTypes.BUBBLE, { color: "#cccccc", text: "Drag Me!" }); 97 // var styleMaker1 = new StyledMarker({ styleIcon: styleIcon, position: new google.maps.LatLng(37.383477473067, -121.880502070713), map: map, draggable: true }); 98 99 // google.maps.event.addDomListener(styleMaker1, "dragend", getElevation); 100 // Update current position info. 101 102 updateMarkerPosition(LatLng); 103 geocodePosition(LatLng); 104 getElevation({ 'latLng': marker.getPosition() }); 105 106 return false; 107 108 109 110 111 112 } 113 114 function updateMarkerStatus(str) { 115 document.getElementById('markerStatus').innerHTML = str; 116 } 117 118 function updateMarkerPosition(latLng) { 119 document.Envoie.lat.value=latLng.lat() ; 120 document.Envoie.lon.value = latLng.lng(); 121 dms_frac = dec2dms(latLng.lng()); 122 if (document.Envoie.lon.value < 0) 123 document.Envoie.lonRef.value = "W"; 124 else 125 document.Envoie.lonRef.value = "E"; 126 document.Envoie.lonDMS.value = Math.abs(dms_frac.Degre) +"/1" + " " + dms_frac.Minute +"/1" + " " + dms_frac.Numerator + "/" + dms_frac.Denominator; 127 dms_frac = dec2dms(latLng.lat()); 128 if (document.Envoie.lat.value < 0) 129 document.Envoie.latRef.value = "S"; 130 else 131 document.Envoie.latRef.value = "N"; 132 document.Envoie.latDMS.value = Math.abs(dms_frac.Degre) + "/1" + " " + dms_frac.Minute + "/1" + " " + dms_frac.Numerator + "/" + dms_frac.Denominator; 133 // update_datas(); 134 } 135 136 137 function update_datas() { 138 n= jQuery(document.EditJPEG); 139 140 jQuery.each(n[0], function (i) { 141 142 143 n00 = this; 144 n0 = n00.id; 145 n1 = n00.name; 146 n2 = jQuery(n00).val(); 147 try { 148 if (n0 == "alt") { 149 n3 = dec2frac(document.Envoie[n0].value); 150 n3 = n3.Numerator + "/" + n3.Denominator; 151 jQuery(this).val(n3); 152 } 153 else { 154 n3 = document.Envoie[n0].value; 155 jQuery(this).val(n3); 156 } 157 } 158 catch (e) { 159 n3 = n0; 160 } 161 162 163 164 } 165 ) 166 167 168 169 } 170 171 function updateMarkerAddress(str) { 172 document.getElementById('markerAdress').innerHTML = str; 173 174 jQuery("#match").val(str); 175 } 176 177 function getElevation(event) { 178 var elevator = new google.maps.ElevationService(); 179 var locations = []; 180 181 // Retrieve the clicked location and push it on the array 182 var clickedLocation = event.latLng; 183 locations.push(clickedLocation); 184 185 // Create a LocationElevationRequest object using the array's one value 186 var positionalRequest = { 187 'locations': locations 188 } 189 190 // Initiate the location request 191 if (elevator) { 192 elevator.getElevationForLocations(positionalRequest, function (results, status) { 193 if (status == google.maps.ElevationStatus.OK) { 194 195 // Retrieve the first result 196 if (results[0]) { 197 coordinates.ALT = results[0].elevation; 198 document.Envoie.alt.value = coordinates.ALT; 199 altDMS = dec2frac(coordinates.ALT); 200 document.Envoie.altRef.value = "0"; 201 document.Envoie.altDMS.value = altDMS.Numerator + "/" + altDMS.Denominator; 202 //styleIcon.set("text", "Elevation: " + results[0].elevation + "m"); 203 } else { 204 // alert("No results found"); 205 } 206 } else { 207 alert("Elevation service failed due to: " + status); 208 } 96 // styleIcon = new StyledIcon(StyledIconTypes.BUBBLE, { color: "#cccccc", text: "Drag Me!" }); 97 // var styleMaker1 = new StyledMarker({ styleIcon: styleIcon, position: new google.maps.LatLng(37.383477473067, -121.880502070713), map: map, draggable: true }); 98 99 // google.maps.event.addDomListener(styleMaker1, "dragend", getElevation); 100 // Update current position info. 101 102 updateMarkerPosition(LatLng); 103 geocodePosition(LatLng); 104 getElevation({ 'latLng': marker.getPosition() }); 105 106 return false; 107 108 109 110 111 112 } 113 114 function updateMarkerStatus(str) { 115 document.getElementById('markerStatus').innerHTML = str; 116 } 117 118 function updateMarkerPosition(latLng) { 119 document.Envoie.lat.value = latLng.lat(); 120 document.Envoie.lon.value = latLng.lng(); 121 dms_frac = dec2dms(latLng.lng()); 122 if (document.Envoie.lon.value < 0) 123 document.Envoie.lonRef.value = "W"; 124 else 125 document.Envoie.lonRef.value = "E"; 126 document.Envoie.lonDMS.value = Math.abs(dms_frac.Degre) + "/1" + " " + dms_frac.Minute + "/1" + " " + dms_frac.Numerator + "/" + dms_frac.Denominator; 127 dms_frac = dec2dms(latLng.lat()); 128 if (document.Envoie.lat.value < 0) 129 document.Envoie.latRef.value = "S"; 130 else 131 document.Envoie.latRef.value = "N"; 132 document.Envoie.latDMS.value = Math.abs(dms_frac.Degre) + "/1" + " " + dms_frac.Minute + "/1" + " " + dms_frac.Numerator + "/" + dms_frac.Denominator; 133 // update_datas(); 134 } 135 136 function update_datas() { 137 n = jQuery(document.EditJPEG); 138 jQuery.each(n[0], function (i) { 139 n00 = this; 140 n0 = n00.id; 141 n1 = n00.name; 142 n2 = jQuery(n00).val(); 143 try { 144 if (n0 == "alt") { 145 n3 = dec2frac(document.Envoie[n0].value); 146 n3 = n3.Numerator + "/" + n3.Denominator; 147 jQuery(this).val(n3); 148 } 149 else { 150 n3 = document.Envoie[n0].value; 151 jQuery(this).val(n3); 152 } 153 } 154 catch (e) { 155 n3 = n0; 156 } 157 }) 158 } 159 160 function updateMarkerAddress(str) { 161 document.getElementById('markerAdress').innerHTML = str; 162 jQuery("#match").val(str); 163 } 164 165 function getElevation(event) { 166 var elevator = new google.maps.ElevationService(); 167 var locations = []; 168 169 // Retrieve the clicked location and push it on the array 170 var clickedLocation = event.latLng; 171 locations.push(clickedLocation); 172 173 // Create a LocationElevationRequest object using the array's one value 174 var positionalRequest = { 175 'locations': locations 176 } 177 178 // Initiate the location request 179 if (elevator) { 180 elevator.getElevationForLocations(positionalRequest, function (results, status) { 181 if (status == google.maps.ElevationStatus.OK) { 182 183 // Retrieve the first result 184 if (results[0]) { 185 coordinates.ALT = results[0].elevation; 186 document.Envoie.alt.value = coordinates.ALT; 187 altDMS = dec2frac(coordinates.ALT); 188 document.Envoie.altRef.value = "0"; 189 190 document.Envoie.altDMS.value = altDMS.Numerator + "/" + altDMS.Denominator; 191 //styleIcon.set("text", "Elevation: " + results[0].elevation + "m"); 192 } else { 193 // alert("No results found"); 194 } 195 } else { 196 alert("Elevation service failed due to: " + status); 197 } 198 }); 199 } 200 } 201 function geocodePosition(pos) { 202 geocoder.geocode({ 'latLng': pos }, 203 function (results, status) { 204 /* Si le géocodage inversé a réussi */ 205 if (status == google.maps.GeocoderStatus.OK) { 206 updateMarkerAddress(results[0].formatted_address); 207 } else { 208 updateMarkerAddress('Cannot determine address at this location.'); 209 } 209 210 }); 210 } 211 } 212 213 214 215 function geocodePosition(pos) { 216 geocoder.geocode({ 'latLng': pos }, 217 function (results, status) { 218 /* Si le géocodage inversé a réussi */ 219 if (status == google.maps.GeocoderStatus.OK) { 220 updateMarkerAddress(results[0].formatted_address); 221 } else { 222 updateMarkerAddress('Cannot determine address at this location.'); 223 } 224 }); 225 } 226 227 228 /* Fonction de géocodage déclenchée en cliquant surle bouton "Geocoder" */ 229 function codeAddress() { 230 /* Récupération de la valeur de l'adresse saisie */ 231 232 /* Appel au service de geocodage avec l'adresse en paramètre */ 233 if (typeof map == "undefined") onLoad(); 234 235 var address = document.getElementById("match").value; 211 } 212 /* Fonction de géocodage déclenchée en cliquant surle bouton "Geocoder" */ 213 function codeAddress() { 214 /* Récupération de la valeur de l'adresse saisie */ 215 216 /* Appel au service de geocodage avec l'adresse en paramètre */ 217 if (typeof map == "undefined") onLoad(); 218 219 var address = document.getElementById("match").value; 236 220 237 221 geocoder.geocode({ 'address': address }, function (results, status) { 238 /* Si l'adresse a pu être géolocalisée */ 239 if (status == google.maps.GeocoderStatus.OK) { 240 /* Récupération de sa latitude et de sa longitude */ 241 coordinates.LAT = results[0].geometry.location.lat(); 242 coordinates.LON = results[0].geometry.location.lng(); 243 onLoad(); 244 245 246 247 } else { 248 alert("Cannot determine location at this adress.: " + status); 249 } 222 /* Si l'adresse a pu être géolocalisée */ 223 if (status == google.maps.GeocoderStatus.OK) { 224 /* Récupération de sa latitude et de sa longitude */ 225 coordinates.LAT = results[0].geometry.location.lat(); 226 coordinates.LON = results[0].geometry.location.lng(); 227 onLoad(); 228 } else { 229 alert("Cannot determine location at this adress.: " + status); 230 } 250 231 }); 251 232 } … … 253 234 //======================================================= 254 235 function On_Click(a, b, c) { 255 document.Envoie.lat.value = b; 256 document.Envoie.lon.value = c; 257 258 coordinates = {LAT:a, 259 LON : b} ; 260 LatLng = new google.maps.LatLng(coordinates.LAT, coordinates.LON); 261 updateMarkerPosition(LatLng); 262 263 236 document.Envoie.lat.value = b; 237 document.Envoie.lon.value = c; 238 coordinates = { LAT: a, 239 LON: b 240 }; 241 LatLng = new google.maps.LatLng(coordinates.LAT, coordinates.LON); 242 updateMarkerPosition(LatLng); 264 243 } 265 244 266 245 jQuery(window).load( 267 268 246 function () { 269 //Récupérer tous les inputs radios appartenant à un même groupe270 /* a = jQuery('input[type=hidden][name=Selectthumbnail]');271 272 273 274 */247 //Récupérer tous les inputs radios appartenant à un même groupe 248 /* a = jQuery('input[type=hidden][name=Selectthumbnail]'); 249 b = a.length; 250 c = jQuery('input[type=hidden]:checked').length; 251 d = jQuery('input[type=hidden][name="Selectthumbnail"]').attr('value'); 252 */ 275 253 276 254 // onLoad(); 277 }); 255 }); 278 256 279 257 jQuery(document).ready(function () { 280 258 281 jQuery('.cluetip').cluetip({ 282 width: 300, height: 100, 283 splitTitle: '|', 284 clickThrough: true 285 } 259 /* 260 jQuery('.cluetip').cluetip({ 261 width: 300, height: 100, 262 splitTitle: '|', 263 clickThrough: true 264 } 286 265 ); 266 */ 267 jQuery('.cluetip').tipTip({ maxWidth: '600px', 'delay': 0, 'fadeIn': 200, 'fadeOut': 200 }); 287 268 jQuery("#search").click(function (e) { 288 269 289 290 LAT:0,LON:0,ZOOM: 18 ,ALT:0291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 270 coordinates = { ADRESSE: jQuery("#match").val(), 271 LAT: 0, LON: 0, ZOOM: 18, ALT: 0 272 }; 273 codeAddress(); 274 return false; 275 }); 276 277 jQuery("#match").keydown(function (e) { 278 // e.target pour FireFox 279 // event.srcElement pour IE 280 var Obj = e ? e.target : event.srcElement; 281 if (Obj.tagName != "INPUT") return false; 282 var Code = e.keyCode || e.which; 283 if (Code != 13) return true; 284 coordinates = { ADRESSE: jQuery("#match").val(), 285 LAT: 0, LON: 0, ZOOM: 18, ALT: 0 286 }; 287 codeAddress(); 288 return false; 289 }); 309 290 310 291 … … 314 295 315 296 316 // DECIMAL TO FRACTION 317 // 318 function dec2frac( valeur_decimal ) { 319 decimal = valeur_decimal.toString() ; 320 num = ''; 321 den = 1; 322 dec = false; 323 324 // find least reduced fractional form of number 325 for( i = 0, ix = decimal.length ; i < ix; i++ ) 326 { 327 // build the denominator as we 'shift' the decimal to the right 328 if( dec ) den *= 10; 329 330 // find the decimal place/ build the numberator 331 if( decimal.charAt(i) == '.' ) dec = true; 332 else num += decimal.charAt(i); 333 } 334 num = parseInt(num); 335 336 // whole number, just return it 337 if( den == 1 ) return num; 338 339 num2 = num; 340 den2 = den; 341 rem = 1; 342 // Euclid's Algorithm (to find the gcd) 343 while( num2 % den2 ) { 344 rem = num2 % den2; 345 num2 = den2; 346 den2 = rem; 347 } 348 if( den2 != den ) rem = den2; 349 ret1 = { Numerator: (num / rem), Denominator: (den / rem) }; 350 // new Array() 351 // ret1->Numerator =(num / rem ) ; 352 // ret1->Denominator=(den / rem); 353 354 // now $rem holds the gcd of the numerator and denominator of our fraction 355 return ret1; 356 357 } 297 // DECIMAL TO FRACTION 298 // 299 function dec2frac(valeur_decimal) { 300 decimal = valeur_decimal.toString(); 301 num = ''; 302 den = 1; 303 dec = false; 304 305 // find least reduced fractional form of number 306 for (i = 0, ix = decimal.length; i < ix; i++) { 307 // build the denominator as we 'shift' the decimal to the right 308 if (dec) den *= 10; 309 310 // find the decimal place/ build the numberator 311 if (decimal.charAt(i) == '.') dec = true; 312 else num += decimal.charAt(i); 313 } 314 num = parseInt(num); 315 316 // whole number, just return it 317 if (den == 1) return num; 318 319 num2 = num; 320 den2 = den; 321 rem = 1; 322 // Euclid's Algorithm (to find the gcd) 323 while (num2 % den2) { 324 rem = num2 % den2; 325 num2 = den2; 326 den2 = rem; 327 } 328 if (den2 != den) rem = den2; 329 ret1 = { Numerator: (num / rem), Denominator: (den / rem) }; 330 // new Array() 331 // ret1->Numerator =(num / rem ) ; 332 // ret1->Denominator=(den / rem); 333 334 // now $rem holds the gcd of the numerator and denominator of our fraction 335 return ret1; 336 337 } 358 338 359 339 function dec2dms(l) { 360 sign = 1; 361 if (l < 0) { sign = -1; } 362 l = Math.abs(Math.round(l * 1000000.)) 363 d = Math.floor(l / 1000000) * sign; 364 m = Math.floor(((l / 1000000) - Math.floor(l / 1000000)) * 60); 365 s = Math.floor(((((l / 1000000) - Math.floor(l / 1000000)) * 60) - Math.floor(((l / 1000000) - Math.floor(l / 1000000)) * 60)) * 100000) * 60 / 100000; 366 frac_s = dec2frac(s); 367 s2 = (frac_s.Numerator / frac_s.Denominator); 368 return { dms: d + "° " + m + "' " + s + "''", 369 Degre:d, Minute:m,Sec:s, 370 Numerator: frac_s.Numerator, 371 Denominator:frac_s.Denominator}; 372 } 373 340 sign = 1; 341 if (l < 0) { sign = -1; } 342 l = Math.abs(Math.round(l * 1000000.)) 343 d = Math.floor(l / 1000000) * sign; 344 m = Math.floor(((l / 1000000) - Math.floor(l / 1000000)) * 60); 345 s = Math.floor(((((l / 1000000) - Math.floor(l / 1000000)) * 60) - Math.floor(((l / 1000000) - Math.floor(l / 1000000)) * 60)) * 100000) * 60 / 100000; 346 frac_s = dec2frac(s); 347 s2 = (frac_s.Numerator / frac_s.Denominator); 348 return { dms: d + "° " + m + "' " + s + "''", 349 Degre: d, Minute: m, Sec: s, 350 Numerator: frac_s.Numerator, 351 Denominator: frac_s.Denominator 352 }; 353 } 354 -
extensions/edit_gmaps/edit_gmaps.inc.php
r9446 r12126 66 66 class cl_edit_controler { 67 67 68 static public function add_meta_gps($new_ps_file_info_array,$image){ 69 global $nom_fichier,$erreur_message, $info_message; 70 71 72 // $exif = @read_exif_data( $exif ); 73 // $exif = @array_intersect_key( $exif, array_flip( array('GPSLatitudeRef', 'GPSLatitude', 'GPSLongitudeRef', 'GPSLongitude', 'GPSAltitudeRef', 'GPSAltitude') ) ); 74 75 foreach( $new_ps_file_info_array['selection'] as $filename ) { 76 //====================================================== 77 if($new_ps_file_info_array['lat']=='') { 78 $erreur_message .= "Error - lon or lat = null : $filename <br>\n"; 79 }else{ 80 if($filename!="") { 81 //= $new_ps_file_info_array[ 'filename' ]; 82 // Protect against hackers editing other files 83 // copy( $filename, $filename.".bak" ); 84 $path_parts = pathinfo( $filename ); 85 86 if ( strcasecmp( $path_parts["extension"], "jpg" ) != 0 ) { 87 $erreur_message .= $filename ; 88 $erreur_message .="Incorrect File Type - JPEG Only\n"; 89 $filename=""; 90 return; 91 } 92 // Change: removed limitation on file being in current directory - as of version 1.11 93 // Retrieve the header information 94 95 $nom_fichier=$filename; 96 $jpeg_header_data = get_jpeg_header_data( $filename ); 97 // Retreive the EXIF, XMP and Photoshop IRB information from 98 // the existing file, so that it can be updated 99 $Exif_array = get_EXIF_JPEG( $filename ); 100 $XMP_array = read_XMP_array_from_text( get_XMP_text( $jpeg_header_data ) ); 101 $IRB_array = get_Photoshop_IRB( $jpeg_header_data ); 102 // Update the JPEG header information with the new Photoshop File Info 103 104 $jpeg_header_data = put_GPS_file_info( $jpeg_header_data, $new_ps_file_info_array, $Exif_array, $XMP_array, $IRB_array ); 105 // Check if the Update worked 106 if ( $jpeg_header_data == FALSE ) { 107 // Update of file info didn''t work - output error message 108 $erreur_message .= "jpeg_header_data 109 Error - Failure update Photoshop File Info : $filename <br>\n"; 110 return false; 111 // Output HTML with the form and data which was 112 // sent, to allow the user to fix it 113 }else if ( FALSE == put_jpeg_header_data( $filename, $filename, $jpeg_header_data ) ) { 114 // Attempt to write the new JPEG file 115 // Writing of the new file didn''t work - output error message 116 $erreur_message .= "Error - Failure to write new JPEG : $filename <br>\n"; 117 return false; 118 // Output HTML with the form and data which was 119 // sent, to allow the user to fix it 120 }else{ 121 return true; 122 } 123 }// test filename} 124 } //for each 125 126 } 127 128 129 } 130 //========================================================== 131 static public function Get_exif_gps($firt_image,$image,$hight_gps) { 132 global $errors;global $template ; 133 global $info_message ; 134 error_reporting ( 1 ); 135 $filename=$firt_image; 136 137 $datas = array(); 138 $errors = array(); 139 $exif = @read_exif_data( $filename ); 140 if ( empty($exif) ) return; 141 142 $exif = array_intersect_key( $exif, array_flip( array('GPSLatitudeRef', 'GPSLatitude', 'GPSLongitudeRef', 'GPSLongitude', 'GPSAltitudeRef', 'GPSAltitude') ) ); 143 if(count($exif)==0 || $hight_gps ){ 144 $path_parts = pathinfo( $filename ); 145 $exif = @read_exif_data( $path_parts['dirname']."/pwg_high/".$path_parts['basename']); 146 $exif = array_intersect_key( $exif, array_flip( array('GPSLatitudeRef', 'GPSLatitude', 'GPSLongitudeRef', 'GPSLongitude', 'GPSAltitudeRef', 'GPSAltitude') ) ); 147 } 148 if(count($exif)==0) return ; 149 //==================================================================== 150 $lat = $image['lat'] ; 151 $lon = $image['lon'] ; 152 $alt = $image['alt']; 153 154 $p1=base_to_meta($image); 155 156 if($exif['GPSLatitude'][0]=="1/1" && $lat!=""){ 157 $exif['GPSLatitudeRef'] = $p1['GPSLatitudeRef'] ; 158 $exif['GPSLatitude']=$p1['GPSLatitude']; 159 $exif['GPSLongitudeRef'] = $p1['GPSLongitudeRef']; 160 $exif['GPSLongitude']=$p1['GPSLongitude']; 161 $exif['GPSAltitudeRef'] =$p1['GPSAltitudeRef']; 162 $exif['GPSAltitude']= $p1['GPSAltitude']; 163 164 } 165 166 $is_exif = is_array($exif['GPSLatitude']) && $exif['GPSLatitude']!='' ; 167 $is_exif = is_array($exif['GPSLongitude']) && $exif['GPSLongitude']!='' & $is_exif ; 168 169 if ($is_exif) { 170 $lat_exif = Parse_Lat_Lon( $exif['GPSLatitude'] ); 171 $lon_exif = Parse_Lat_Lon( $exif['GPSLongitude'] ); 172 $alt_exif = Parse_Fract( $exif['GPSAltitude'] ); 173 } 174 175 $is_exif = $lat_exif!=0; 176 //============================== 177 if ($lat =="" || $hight_gps){ 178 $lat = Parse_Lat_Lon( $exif['GPSLatitude'] ); 179 if ( $exif['GPSLatitudeRef']=='S' ) $lat = -$lat; 180 }else{ 181 if($lat<0) $exif['GPSLatitudeRef']='S' ; 182 else $exif['GPSLatitudeRef']='N' ; 183 } 184 //============================== 185 if ($lon =="" || $hight_gps) { 186 $lon = Parse_Lat_Lon( $exif['GPSLongitude'] ); 187 if ( $exif['GPSLongitudeRef']=='W' ) $lon = -$lon; 188 }else{ 189 if ($lon<0) $exif['GPSLongitudeRef'] ='W' ; 190 else $exif['GPSLongitudeRef'] ='E' ; 191 } 192 //======================================================================= 193 $altref = 0; 194 if (!is_array($exif['GPSAltitude']) or !is_array($exif['GPSAltitudeRef']) ){ 195 $exif['GPSAltitude']=$alt; 196 $exif['GPSAltitudeRef']=0; 197 } else { 198 $alt = $exif['GPSAltitude']; 199 $altref = $exif['GPSAltitudeRef']; 200 } 201 //======================================================================== 202 $datas[] = array ( 203 'is_exif' => $is_exif , 204 ' filename=' => $filename , 205 'id' => $image['id'] , 206 'lat' => $lat , 207 'lon' => $lon , 208 'latDMS' => $exif['GPSLatitude'][0]." ". 209 $exif['GPSLatitude'][1]." ". 210 $exif['GPSLatitude'][2]." ". 211 $exif['GPSLatitudeRef'], 212 'lonDMS' => $exif['GPSLongitude'][0]." ". 213 $exif['GPSLongitude'][1]." ". 214 $exif['GPSLongitude'][2]." ". 215 $exif['GPSLongitudeRef'], 216 'altref' => $exif['GPSAltitudeRef'], 217 'alt' => $exif['GPSAltitude'] 218 ); 219 220 return $datas[0] ; 221 } 222 //====================================================== 223 /* 224 * 225 */ 226 static public function add_data_base($sel,$lat,$lon,$alt){ 227 global $page,$info_message,$erreur_message ; 228 229 if ( strlen($lat)>0 and strlen($lon)>0 ) { 230 if ( (double)$lat<=90 and (double)$lat>=-90 231 and (double)$lon<=180 and (double)$lat>=-180 ) 232 $update_query = 'lat='.$lat.', lon='.$lon; 233 else 234 $erreur_message .= 'Invalid lat or lon value'; 235 } 236 elseif ( strlen($lat)==0 and strlen($lon)==0 ) 237 $update_query = 'lat=NULL, lon=NULL'; 238 else 239 $erreur_message .= 'Both lat/lon must be empty or not empty'; 240 if ( strlen($alt)==0) 241 $update_query .= ', alt=NULL'; 242 else 243 $update_query .= ', alt=' .$alt ; 244 245 if (isset($update_query)){ 246 $update_query = ' 247 UPDATE '.IMAGES_TABLE.' SET '.$update_query.' 248 WHERE id IN ('.implode(',',$sel).')'; 249 pwg_query($update_query) ; 250 cl_meta_invalidate_cache(); 251 $info_message .= l10n('update') . " " . implode(',',$sel) . " ". IMAGES_TABLE . " : " . l10n('OK') ."<br />"; 252 } 253 } 254 //====================================================== 68 255 static public function cl_edit_admin_menu($menu) 69 256 { … … 77 264 return $menu; 78 265 } 79 80 81 82 83 84 85 266 /* 86 267 * -
extensions/edit_gmaps/main.inc.php
r10060 r12126 4 4 Version: auto 5 5 Description: Editor for rv gmaps 6 Plugin URI: http://piwigo.org/ext/extension_view.php ?eid=3306 Plugin URI: http://piwigo.org/ext/extension_view.php 7 7 Author: rvelices cljosse 8 8 Author URI: http://cl.josse.free.fr/
Note: See TracChangeset
for help on using the changeset viewer.