diff -ru gallery-1.3.3/classes/Album.php gallery-iptcpatch/classes/Album.php
--- gallery-1.3.3/classes/Album.php Sat Dec 7 08:26:17 2002
+++ gallery-iptcpatch/classes/Album.php Thu Feb 13 12:38:55 2003
@@ -604,7 +604,36 @@
}
return $err;
} else {
+ // Add IPTC HEADLINE + CAPTION to caption
+
+ $iptc = $item->getIPTC($dir, $name, $tag);
+
+ if (isset($iptc[ "HEADLINE" ]))
+ { if ($caption != '') $caption .= '
';
+ $caption .= '' . htmlspecialchars($iptc[ "HEADLINE" ]) . '';
+ }
+
+ if (isset($iptc[ "CAPTION" ]))
+ { if ($caption != '') $caption .= '
';
+ $caption .= htmlspecialchars($iptc[ "CAPTION" ]);
+ }
+
$item->setCaption("$caption");
+
+ // Put additional IPTC data into keywords
+
+ $kw = '';
+
+ foreach ($iptc as $iptctag => $iptcvalue)
+ { if (($iptctag == 'HEADLINE') || ($iptctag == 'CAPTION'))
+ continue;
+
+ if ($kw != '') $kw .= ' ';
+ $kw .= $iptcvalue;
+ }
+
+ $item->setKeywords($kw);
+
$originalItemCaptureDate = getItemCaptureDate($file);
$now = time();
$item->setItemCaptureDate($originalItemCaptureDate);
diff -ru gallery-1.3.3/classes/AlbumItem.php gallery-iptcpatch/classes/AlbumItem.php
--- gallery-1.3.3/classes/AlbumItem.php Wed Nov 27 08:59:31 2002
+++ gallery-iptcpatch/classes/AlbumItem.php Thu Feb 13 12:38:55 2003
@@ -347,6 +347,89 @@
return $ret;
}
+ function getIPTC($dir, $name, $tag) {
+
+ $result = array();
+
+ $filename = $dir . "/" . $name . "." . $tag;
+ getimagesize($filename, $imgsize);
+
+ if (! is_array($imgsize))
+ return $result;
+
+ if (! isset($imgsize[ 'APP13' ]))
+ return $result;
+
+ $iptc = iptcparse($imgsize[ 'APP13' ]);
+
+ if (! is_array($iptc))
+ return $result;
+
+ $iptcmap = array(
+ '1#070' => 'DATESENT',
+ '1#080' => 'TIMESENT',
+ '2#005' => 'OBJECTNAME',
+ '2#007' => 'EDITSTATUS',
+ '2#010' => 'URGENCY',
+ '2#015' => 'CATEGORY',
+ '2#020' => 'SUBCATEGORY',
+ '2#022' => 'FIXTURE',
+ '2#025' => 'KEYWORD',
+ '2#030' => 'RELDATE',
+ '2#035' => 'RELTIME',
+ '2#040' => 'SPECINSTR',
+ '2#055' => 'CREDATE',
+ '2#060' => 'CRETIME',
+ '2#065' => 'ORGPRG',
+ '2#070' => 'PRGVER',
+ '2#080' => 'BYLINE',
+ '2#085' => 'BYTITLE',
+ '2#090' => 'CITY',
+ '2#092' => 'SUBLOCATION',
+ '2#095' => 'STATE',
+ '2#100' => 'COUNTRYCODE',
+ '2#101' => 'COUNTRYNAME',
+ '2#103' => 'ORGTRANSREF',
+ '2#105' => 'HEADLINE',
+ '2#110' => 'CREDIT',
+ '2#115' => 'SOURCE',
+ '2#116' => 'COPYRIGHT',
+ '2#118' => 'CONTACT',
+ '2#120' => 'CAPTION',
+ '2#122' => 'CAPTIONWRITER',
+ '2#130' => 'IMAGETYPE',
+ '2#131' => 'ORIENTATION',
+ '2#135' => 'LANGUAGE',
+ '8#010' => 'SUBFILE',
+ '2#199' => 'APPRESERVER'
+ );
+
+ foreach ($iptc as $pos => $values)
+ foreach ($values as $value)
+ { if (! isset($iptcmap[ $pos ]))
+ continue;
+
+ // 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);
+
+ if (trim($value) == '')
+ continue;
+
+ if (isset($result[ $iptcmap[ $pos ] ]))
+ $result[ $iptcmap[ $pos ] ] .= ' ';
+ else
+ $result[ $iptcmap[ $pos ] ] = '';
+
+ $result[ $iptcmap[ $pos ] ] .= $value;
+ }
+
+ return $result;
+ }
+
function makeThumbnail($dir, $thumb_size, $pathToThumb="")
{
global $gallery;