aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorplegall <plg@piwigo.org>2006-04-20 21:12:45 +0000
committerplegall <plg@piwigo.org>2006-04-20 21:12:45 +0000
commit599665c2cf83fa924eb5ca0e71a176aaa714ce33 (patch)
tree3347a648d701a16cb63eed8288b5913e6536a747 /tools
parent81abfe32ecd8575aa216a892e7b96525c0decbed (diff)
bug 339 fixed: crash on metadata synchronization when duplicate keywords.
improvement: tools/metadata.php is nearer of what metadata synchronization uses (concerning keywords) git-svn-id: http://piwigo.org/svn/branches/branch-1_6@1222 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'tools')
-rw-r--r--tools/metadata.php41
1 files changed, 34 insertions, 7 deletions
diff --git a/tools/metadata.php b/tools/metadata.php
index 011240135..1ef307f3f 100644
--- a/tools/metadata.php
+++ b/tools/metadata.php
@@ -28,6 +28,25 @@
$filename = 'sample.jpg';
echo 'Informations are read from '.$filename.'<br /><br /><br />';
+/**
+ * return a cleaned IPTC value
+ *
+ * @param string value
+ * @return string
+ */
+function clean_iptc_value($value)
+{
+ // strip leading zeros (weird Kodak Scanner software)
+ while ( isset($value[0]) and $value[0] == chr(0))
+ {
+ $value = substr($value, 1);
+ }
+ // remove binary nulls
+ $value = str_replace(chr(0x00), ' ', $value);
+
+ return $value;
+}
+
$iptc_result = array();
$imginfo = array();
getimagesize($filename, $imginfo);
@@ -38,17 +57,25 @@ if (isset($imginfo['APP13']))
{
foreach (array_keys($iptc) as $iptc_key)
{
- if (isset($iptc[$iptc_key][0]) and $value = $iptc[$iptc_key][0])
+ if (isset($iptc[$iptc_key][0]))
{
- // strip leading zeros (weird Kodak Scanner software)
- while ($value[0] == chr(0))
+ if ($iptc_key == '2#025')
+ {
+ $value = implode(
+ ',',
+ array_map(
+ 'clean_iptc_value',
+ $iptc[$iptc_key]
+ )
+ );
+ }
+ else
{
- $value = substr($value, 1);
+ $value = clean_iptc_value($iptc[$iptc_key][0]);
}
- // remove binary nulls
- $value = str_replace(chr(0x00), ' ', $value);
+
+ $iptc_result[$iptc_key] = $value;
}
- $iptc_result[$iptc_key] = $value;
}
}