diff options
Diffstat (limited to 'admin')
-rw-r--r-- | admin/configuration.php | 8 | ||||
-rw-r--r-- | admin/include/functions_metadata.php | 74 |
2 files changed, 25 insertions, 57 deletions
diff --git a/admin/configuration.php b/admin/configuration.php index 1d8356444..369e0cdda 100644 --- a/admin/configuration.php +++ b/admin/configuration.php @@ -210,6 +210,8 @@ $upload = ($conf['upload_available']=='true')?'UPLOAD_YES':'UPLOAD_NO'; $cookie = ($conf['authorize_cookies']=='true')?'COOKIE_YES':'COOKIE_NO'; $use_exif = ($conf['use_exif']=='true')?'USE_EXIF_YES':'USE_EXIF_NO'; $use_iptc = ($conf['use_iptc']=='true')?'USE_IPTC_YES':'USE_IPTC_NO'; +$show_exif = ($conf['show_exif']=='true')?'SHOW_EXIF_YES':'SHOW_EXIF_NO'; +$show_iptc = ($conf['show_iptc']=='true')?'SHOW_IPTC_YES':'SHOW_IPTC_NO'; //----------------------------------------------------- template initialization $template->set_filenames( array('config'=>'admin/configuration.tpl') ); @@ -244,6 +246,8 @@ $template->assign_vars(array( $cookie=>'checked="checked"', $use_exif=>'checked="checked"', $use_iptc=>'checked="checked"', + $show_exif=>'checked="checked"', + $show_iptc=>'checked="checked"', 'L_CONFIRM'=>$lang['conf_confirmation'], 'L_CONF_GENERAL'=>$lang['conf_general_title'], @@ -313,6 +317,10 @@ $template->assign_vars(array( 'L_USE_EXIF_INFO'=>$lang['conf_use_exif_info'], 'L_USE_IPTC'=>$lang['conf_use_iptc'], 'L_USE_IPTC_INFO'=>$lang['conf_use_iptc_info'], + 'L_SHOW_EXIF'=>$lang['conf_show_exif'], + 'L_SHOW_EXIF_INFO'=>$lang['conf_show_exif_info'], + 'L_SHOW_IPTC'=>$lang['conf_show_iptc'], + 'L_SHOW_IPTC_INFO'=>$lang['conf_show_iptc_info'], 'F_ACTION'=>add_session_id(PHPWG_ROOT_PATH.'admin.php?page=configuration') )); diff --git a/admin/include/functions_metadata.php b/admin/include/functions_metadata.php index 9a7d45193..14d5a0d16 100644 --- a/admin/include/functions_metadata.php +++ b/admin/include/functions_metadata.php @@ -25,17 +25,10 @@ // | USA. | // +-----------------------------------------------------------------------+ -/** - * returns informations from IPTC metadata, mapping is done at the beginning - * of the function - * - * @param string $filename - * @return array - */ -function get_iptc_data($filename) +include_once(PHPWG_ROOT_PATH.'/include/functions_metadata.inc.php'); + +function get_sync_iptc_data($file) { - global $getimagesize_time; - $map = array( 'keywords' => '2#025', 'date_creation' => '2#055', @@ -45,61 +38,25 @@ function get_iptc_data($filename) ); $datefields = array('date_creation', 'date_available'); - $result = array(); - - // Read IPTC data - $iptc = array(); - - $start = get_moment(); - getimagesize($filename, &$imginfo); - $getimagesize_time+= get_moment() - $start; - - if (is_array($imginfo) and isset($imginfo['APP13'])) + $iptc = get_iptc_data($file, $map); + + foreach ($iptc as $pwg_key => $value) { - $iptc = iptcparse($imginfo['APP13']); - if (is_array($iptc)) + if (in_array($pwg_key, $datefields)) { - $rmap = array_flip($map); - foreach (array_keys($rmap) as $iptc_key) + if ( preg_match('/(\d{4})(\d{2})(\d{2})/', $value, $matches)) { - if (isset($iptc[$iptc_key][0]) and $value = $iptc[$iptc_key][0]) - { - // strip leading zeros (weird Kodak Scanner software) - while ($value[0] == chr(0)) - { - $value = substr($value, 1); - } - // remove binary nulls - $value = str_replace(chr(0x00), ' ', $value); - - foreach (array_keys($map, $iptc_key) as $pwg_key) - { - if (in_array($pwg_key, $datefields)) - { - if ( preg_match('/(\d{4})(\d{2})(\d{2})/', $value, $matches)) - { - $value = $matches[1].'-'.$matches[2].'-'.$matches[3]; - } - else - { - continue; - } - } - $result[$pwg_key] = $value; - } - } + $iptc[$pwg_key] = $matches[1].'-'.$matches[2].'-'.$matches[3]; } } } - return $result; + + return $iptc; } function update_metadata($files) { global $conf; - -// $conf['use_iptc'] = true; -// $conf['use_exif'] = true; $inserts = array(); @@ -132,10 +89,13 @@ function update_metadata($files) if ($conf['use_iptc']) { - $iptc = get_iptc_data($file); - foreach (array_keys($iptc) as $key) + $iptc = get_sync_iptc_data($file); + if (count($iptc) > 0) { - $insert[$key] = "'".addslashes($iptc[$key])."'"; + foreach (array_keys($iptc) as $key) + { + $insert[$key] = "'".addslashes($iptc[$key])."'"; + } } } |