$value) { if (in_array($pwg_key, $page['datefields'])) { if (preg_match('/(\d{4})(\d{2})(\d{2})/', $value, $matches)) { $iptc[$pwg_key] = $matches[1].'-'.$matches[2].'-'.$matches[3]; } } } if (isset($iptc['keywords'])) { // keywords separator is the comma, nothing else. Allowed characters in // keywords : [A-Za-z0-9], "-" and "_". All other characters will be // considered as separators $iptc['keywords'] = preg_replace('/[^\w-]+/', ',', $iptc['keywords']); $iptc['keywords'] = preg_replace('/^,+|,+$/', '', $iptc['keywords']); } return $iptc; } function get_sync_exif_data($file) { global $conf, $page; $exif = get_exif_data($file, $conf['use_exif_mapping']); foreach ($exif as $pwg_key => $value) { if (in_array($pwg_key, $page['datefields'])) { if (preg_match('/^(\d{4}).(\d{2}).(\d{2})/', $value, $matches)) { $exif[$pwg_key] = $matches[1].'-'.$matches[2].'-'.$matches[3]; } } } return $exif; } function update_metadata($files) { global $conf; if (!defined('CURRENT_DATE')) { define('CURRENT_DATE', date('Y-m-d')); } $datas = array(); foreach ($files as $id => $file) { $data = array(); $data['id'] = $id; $data['filesize'] = floor(filesize($file)/1024); if ($image_size = @getimagesize($file)) { $data['width'] = $image_size[0]; $data['height'] = $image_size[1]; } if ($conf['use_exif']) { $exif = get_sync_exif_data($file); if (count($exif) > 0) { foreach (array_keys($exif) as $key) { $data[$key] = addslashes($exif[$key]); } } } if ($conf['use_iptc']) { $iptc = get_sync_iptc_data($file); if (count($iptc) > 0) { foreach (array_keys($iptc) as $key) { $data[$key] = addslashes($iptc[$key]); } } } $data['date_metadata_update'] = CURRENT_DATE; array_push($datas, $data); } if (count($datas) > 0) { $update_fields = array('filesize','width','height','date_metadata_update'); if ($conf['use_exif']) { array_push($update_fields, 'date_creation'); } if ($conf['use_iptc']) { $update_fields = array_merge($update_fields, array_keys($conf['use_iptc_mapping'])); } $fields = array('primary' => array('id'), 'update' => array_unique($update_fields)); mass_updates(IMAGES_TABLE, $fields, $datas); } } /** * returns an array associating element id (images.id) with its complete * path in the filesystem * * @param int id_uppercat * @param boolean recursive ? * @param boolean only newly added files ? * @return array */ function get_filelist($category_id = '', $recursive = false, $only_new = false) { // filling $cat_ids : all categories required $cat_ids = array(); $query = ' SELECT id FROM '.CATEGORIES_TABLE.' WHERE site_id = 1 AND dir IS NOT NULL'; if (is_numeric($category_id)) { if ($recursive) { $query.= ' AND uppercats REGEXP \'(^|,)'.$category_id.'(,|$)\' '; } else { $query.= ' AND id = '.$category_id.' '; } } $query.= ' ;'; $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { array_push($cat_ids, $row['id']); } if (count($cat_ids) == 0) { return array(); } $files = array(); $query = ' SELECT id, path FROM '.IMAGES_TABLE.' WHERE storage_category_id IN ('.implode(',', $cat_ids).')'; if ($only_new) { $query.= ' AND date_metadata_update IS NULL '; } $query.= ' ;'; $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { $files[$row['id']] = $row['path']; } return $files; } ?>