Changeset 17780


Ignore:
Timestamp:
09/06/12 22:24:41 (7 years ago)
Author:
rvelices
Message:

rv_gmaps fixes when compile_template_cache_language=true (prefilter fails and lat/lon data destroyed)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/rv_gmaps/trunk/admin/admin_boot.php

    r17705 r17780  
    5353        $template->append('element_set_global_plugins_actions', 
    5454                array('ID' => 'geotag', 'NAME'=>l10n('Geotag'), 'CONTENT' => ' 
    55   <label>{\'Latitude\'|@translate} (-90=S to 90=N) 
     55  <label>'.l10n('Latitude').' (-90=S to 90=N) 
    5656    <input type="text" size="8" name="lat"> 
    5757  </label> 
    58   <label>{\'Longitude\'|@translate} (-180=E to 180=W) 
     58  <label>'.l10n('Longitude').' (-180=E to 180=W) 
    5959    <input type="text" size="9" name="lon"> 
    6060  </label> (Empty values will erase coordinates) 
     
    9797{ 
    9898  global $page; 
    99    
    100   if (isset($_POST['submit'])) 
    101   { 
    102     $collection = explode(',', $_POST['element_ids']); 
    103      
    104     $datas = array(); 
    105     $errors = array(); 
    106      
    107     $query = ' 
     99 
     100  if (!isset($_POST['submit'])) 
     101    return; 
     102 
     103  $collection = explode(',', $_POST['element_ids']); 
     104 
     105  $datas = array(); 
     106  $errors = array(); 
     107  $form_errors = 0; 
     108 
     109  $query = ' 
    108110SELECT id, name 
    109111  FROM '.IMAGES_TABLE.' 
    110112  WHERE id IN ('.implode(',', $collection).') 
    111113;'; 
    112     $result = pwg_query($query); 
    113      
    114     while ($row = pwg_db_fetch_assoc($result)) 
    115     { 
    116       $data = array(); 
    117       $error = false; 
    118       $data['id'] = $row['id']; 
    119       $data['lat'] = trim($_POST['lat-'.$row['id']]); 
    120       $data['lon'] = trim($_POST['lon-'.$row['id']]); 
    121        
    122       if ( strlen($data['lat'])>0 and strlen($data['lon'])>0 ) 
    123       { 
    124         if ( (double)$data['lat']>90 or (double)$data['lat']<-90 
    125             or (double)$data['lon']>180 or (double)$data['lon']<-180 ) 
    126           $error = true; 
    127       } 
    128       elseif ( strlen($data['lat'])==0 and strlen($data['lon'])==0 ) 
    129       { 
    130         // nothing 
    131       } 
    132       else 
    133       { 
     114  $result = pwg_query($query); 
     115 
     116  while ($row = pwg_db_fetch_assoc($result)) 
     117  { 
     118    if (!isset($_POST['lat-'.$row['id']])) 
     119    { 
     120      $form_errors++; 
     121      continue; 
     122    } 
     123    $error = false; 
     124    $data = array( 
     125      'id' => $row['id'], 
     126      'lat' => trim($_POST['lat-'.$row['id']]), 
     127      'lon' => trim($_POST['lon-'.$row['id']]) 
     128    ); 
     129 
     130    if ( strlen($data['lat'])>0 and strlen($data['lon'])>0 ) 
     131    { 
     132      if ( (double)$data['lat']>90 or (double)$data['lat']<-90 
     133          or (double)$data['lon']>180 or (double)$data['lon']<-180 ) 
    134134        $error = true; 
    135       } 
    136        
    137       if ($error) 
    138         array_push($errors, $row['name']); 
    139       else 
    140         array_push($datas, $data); 
    141     } 
    142      
    143     mass_updates( 
    144       IMAGES_TABLE, 
    145       array( 
    146         'primary' => array('id'), 
    147         'update' => array('lat', 'lon') 
    148         ), 
    149       $datas 
    150       ); 
    151      
    152     if (count($errors)>0) 
    153     { 
    154       array_push($page['errors'], 'Invalid lat or lon value for files: '.implode(', ', $errors)); 
    155     } 
    156   } 
     135    } 
     136    elseif ( strlen($data['lat'])==0 and strlen($data['lon'])==0 ) 
     137    { 
     138      // nothing 
     139    } 
     140    else 
     141    { 
     142      $error = true; 
     143    } 
     144 
     145    if ($error) 
     146      $errors[] = $row['name']; 
     147    else 
     148      $datas[] = $data; 
     149  } 
     150 
     151  mass_updates( 
     152    IMAGES_TABLE, 
     153    array( 
     154      'primary' => array('id'), 
     155      'update' => array('lat', 'lon') 
     156      ), 
     157    $datas 
     158    ); 
     159 
     160  if (count($errors)>0) 
     161  { 
     162    $page['errors'][] = 'Invalid lat or lon value for files: '.implode(', ', $errors); 
     163  } 
     164  if ($form_errors) 
     165    $page['errors'][] = 'Maps & Earth: Invalid form submission for '.$form_errors.' photos'; 
    157166} 
    158167 
     
    161170{ 
    162171  global $template, $conf, $page, $is_category, $category_info; 
    163    
     172 
     173  $template->set_prefilter('batch_manager_unit', 'rvm_prefilter_batch_manager_unit'); 
     174 
    164175  $query = ' 
    165176SELECT id,lat,lon 
    166177  FROM '.IMAGES_TABLE; 
    167    
     178 
    168179  if ($is_category) 
    169180  { 
    170181    $category_info = get_cat_info($_SESSION['bulk_manager_filter']['category']); 
    171      
     182 
    172183    $conf['order_by'] = $conf['order_by_inside_category']; 
    173184    if (!empty($category_info['image_order'])) 
     
    201212    $row['lat'] = preg_replace('#\.([0-9]*?)([0]+)$#', '.$1', $row['lat']); 
    202213    $row['lon'] = preg_replace('#\.([0-9]*?)([0]+)$#', '.$1', $row['lon']); 
    203      
     214 
    204215    $tpl_vars[ $row['id'] ] = array( 
    205216      'LAT' => rtrim($row['lat'], '.'), 
     
    207218      ); 
    208219  } 
    209    
     220 
    210221  $template->assign('GEOTAG', $tpl_vars); 
    211    
    212   $template->set_prefilter('batch_manager_unit', 'rvm_prefilter_batch_manager_unit'); 
    213 } 
    214  
    215 function rvm_prefilter_batch_manager_unit($content, &$smarty) 
    216 { 
    217   $search = '<td><strong>{\'Who can see this photo?\'|@translate}</strong></td>'; 
    218   $add = '<td><strong>{\'Geotag\'|@translate}</strong></td> 
     222} 
     223 
     224function rvm_prefilter_batch_manager_unit($content) 
     225{ 
     226  $needle = '</table>'; 
     227  $pos = strpos($content, $needle); 
     228  if ($pos!==false) 
     229  { 
     230    $add = '<tr><td><strong>{\'Geotag\'|@translate}</strong></td> 
    219231      <td> 
    220232        <label>{\'Latitude\'|@translate} 
     
    225237        </label> 
    226238      </td> 
    227     </tr> 
    228  
    229     <tr> 
    230       '; 
    231   return str_replace($search, $add.$search, $content); 
     239    </tr>'; 
     240    $content = substr_replace($content, $add, $pos, 0); 
     241  } 
     242  return $content; 
    232243} 
    233244?> 
Note: See TracChangeset for help on using the changeset viewer.