Changeset 17705


Ignore:
Timestamp:
09/03/12 12:33:45 (7 years ago)
Author:
mistic100
Message:

add geotag fields on Batch Manager Unit

Location:
extensions/rv_gmaps/trunk
Files:
2 edited

Legend:

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

    r17286 r17705  
    5353        $template->append('element_set_global_plugins_actions', 
    5454                array('ID' => 'geotag', 'NAME'=>l10n('Geotag'), 'CONTENT' => ' 
    55   <label>Latitude (-90=S to 90=N) 
     55  <label>{\'Latitude\'|@translate} (-90=S to 90=N) 
    5656    <input type="text" size="8" name="lat"> 
    5757  </label> 
    58   <label>Longitude (-180=E to 180=W) 
     58  <label>{\'Longitude\'|@translate} (-180=E to 180=W) 
    5959    <input type="text" size="9" name="lon"> 
    6060  </label> (Empty values will erase coordinates) 
     
    7373        { 
    7474                if ( (double)$lat<=90 and (double)$lat>=-90 
    75                                 and (double)$lon<=180 and (double)$lat>=-180 ) 
     75                                and (double)$lon<=180 and (double)$lon>=-180 ) 
    7676                        $update_query = 'lat='.$lat.', lon='.$lon; 
    7777                else 
     
    9292  } 
    9393} 
     94 
     95add_event_handler('loc_begin_element_set_unit', 'rvm_loc_begin_element_set_unit'); 
     96function rvm_loc_begin_element_set_unit() 
     97{ 
     98  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 = ' 
     108SELECT id, name 
     109  FROM '.IMAGES_TABLE.' 
     110  WHERE id IN ('.implode(',', $collection).') 
     111;'; 
     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      { 
     134        $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  } 
     157} 
     158 
     159add_event_handler('loc_end_element_set_unit', 'rvm_loc_end_element_set_unit'); 
     160function rvm_loc_end_element_set_unit() 
     161{ 
     162  global $template, $conf, $page, $is_category, $category_info; 
     163   
     164  $query = ' 
     165SELECT id,lat,lon 
     166  FROM '.IMAGES_TABLE; 
     167   
     168  if ($is_category) 
     169  { 
     170    $category_info = get_cat_info($_SESSION['bulk_manager_filter']['category']); 
     171     
     172    $conf['order_by'] = $conf['order_by_inside_category']; 
     173    if (!empty($category_info['image_order'])) 
     174    { 
     175      $conf['order_by'] = ' ORDER BY '.$category_info['image_order']; 
     176    } 
     177 
     178    $query.= ' 
     179    JOIN '.IMAGE_CATEGORY_TABLE.' ON id = image_id'; 
     180  } 
     181 
     182  $query.= ' 
     183  WHERE id IN ('.implode(',', $page['cat_elements_id']).')'; 
     184 
     185  if ($is_category) 
     186  { 
     187    $query.= ' 
     188    AND category_id = '.$_SESSION['bulk_manager_filter']['category']; 
     189  } 
     190 
     191  $query.= ' 
     192  '.$conf['order_by'].' 
     193  LIMIT '.$page['nb_images'].' OFFSET '.$page['start'].' 
     194;'; 
     195  $result = pwg_query($query); 
     196 
     197  $tpl_vars = array(); 
     198  while ($row = pwg_db_fetch_assoc($result)) 
     199  { 
     200    // remove last zeros for better display 
     201    $row['lat'] = preg_replace('#\.([0-9]*?)([0]+)$#', '.$1', $row['lat']); 
     202    $row['lon'] = preg_replace('#\.([0-9]*?)([0]+)$#', '.$1', $row['lon']); 
     203     
     204    $tpl_vars[ $row['id'] ] = array( 
     205      'LAT' => rtrim($row['lat'], '.'), 
     206      'LON' => rtrim($row['lon'], '.'), 
     207      ); 
     208  } 
     209   
     210  $template->assign('GEOTAG', $tpl_vars); 
     211   
     212  $template->set_prefilter('batch_manager_unit', 'rvm_prefilter_batch_manager_unit'); 
     213} 
     214 
     215function 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> 
     219      <td> 
     220        <label>{\'Latitude\'|@translate} 
     221          <input type="text" size="8" name="lat-{$element.ID}" value="{$GEOTAG[$element.ID].LAT}"> 
     222        </label> 
     223        <label>{\'Longitude\'|@translate} 
     224          <input type="text" size="9" name="lon-{$element.ID}" value="{$GEOTAG[$element.ID].LON}"> 
     225        </label> 
     226      </td> 
     227    </tr> 
     228 
     229    <tr> 
     230      '; 
     231  return str_replace($search, $add.$search, $content); 
     232} 
    94233?> 
  • extensions/rv_gmaps/trunk/language/en_UK/lang.php

    r17286 r17705  
    2626$lang['Not geotagged']='Not geotagged'; 
    2727$lang['Geotag']='Geotag'; 
     28$lang['Latitude'] = 'Latitude'; 
     29$lang['Longitude'] = 'Longitude'; 
    2830?> 
Note: See TracChangeset for help on using the changeset viewer.