aboutsummaryrefslogtreecommitdiffstats
path: root/admin
diff options
context:
space:
mode:
Diffstat (limited to 'admin')
-rw-r--r--admin/configuration.php8
-rw-r--r--admin/include/functions_metadata.php74
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])."'";
+ }
}
}