isset($_POST['simulate']), 'use_high' => isset($_POST['use_high']), 'cat_id' => isset($_POST['cat_id']) ? (int)$_POST['cat_id'] : 0, 'subcats_included' => isset($_POST['subcats_included']), ); else $sync_options = array( 'simulate' => true, 'use_high' => true, 'cat_id' => 0, 'subcats_included' => true, ); if ( isset($_POST['submit']) ) { include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php'); include_once( dirname(__FILE__).'/../include/functions_metadata.php' ); $where_clauses = array(); if ( $sync_options['cat_id']!=0 ) { $query=' SELECT id FROM '.CATEGORIES_TABLE.' WHERE '; if ( $sync_options['subcats_included']) $query .= 'uppercats REGEXP \'(^|,)'.$sync_options['cat_id'].'(,|$)\''; else $query .= 'id='.$sync_options['cat_id']; $cat_ids = array_from_query($query, 'id'); $query=' SELECT id,path,lat,lon,has_high FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON id=image_id WHERE category_id IN ('.implode(',', $cat_ids).') GROUP BY id'; } else { $query=' SELECT id,path,lat,lon,has_high FROM '.IMAGES_TABLE; } $images = hash_from_query( $query, 'id'); $datas = array(); $errors = array(); foreach ($images as $image) { $filename = $image['path']; if ($sync_options['use_high'] and $image['has_high']=='true') $filename = get_high_path($image); $exif = @read_exif_data( $filename ); if ( empty($exif) ) continue; $ll = exif_to_lat_lon($exif); if (!is_array($ll)) { if (!empty($ll)) $errors[] = $filename. ': '.$ll; continue; } $datas[] = array ( 'id' => $image['id'], 'lat' => $ll[0], 'lon' => $ll[1], ); } $template->assign( 'sync_errors', $errors ); if ( count($datas)>0 and !$sync_options['simulate'] ) { mass_updates( IMAGES_TABLE, array( 'primary' => array('id'), 'update' => array('lat', 'lon') ), $datas ); rvm_invalidate_cache(); } $template->assign( 'metadata_result', array( 'NB_ELEMENTS_DONE' => count($datas), 'NB_ELEMENTS_CANDIDATES' => count($images), 'NB_ERRORS' => count($errors), )); } $query = ' SELECT id, CONCAT(name, IF(dir IS NULL, " (V)", "") ) AS name, uppercats, global_rank FROM '.CATEGORIES_TABLE; display_select_cat_wrapper($query, array( $sync_options['cat_id'] ), 'categories', false); $template->assign( array( 'SUBCATS_INCLUDED_CHECKED' => $sync_options['subcats_included'] ? 'checked="checked"' : '', 'USE_HIGH_CHECKED' => $sync_options['use_high'] ? 'checked="checked"' : '' ) ); ?>