From 356729160943e7ae4730cce1ed808e928a825689 Mon Sep 17 00:00:00 2001 From: Kriss Andsten Date: Sun, 28 Nov 2010 11:22:50 +0800 Subject: [PATCH] Fixes for the initial commit which turned out to have been the wrong file (oops) Support for the Debian Stable version of exiv2, 0.16. --- 3.0/modules/author/helpers/author.php | 45 ++++++++++++++----- .../author/helpers/author_installer.php | 4 ++ 3.0/modules/author/module.info | 2 +- 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/3.0/modules/author/helpers/author.php b/3.0/modules/author/helpers/author.php index 7411739f..84dbb74a 100644 --- a/3.0/modules/author/helpers/author.php +++ b/3.0/modules/author/helpers/author.php @@ -33,8 +33,25 @@ class author_Core { $user_name = $owner->full_name; $exiv = module::get_var('author', 'exiv_path'); + $version = module::get_var('author', 'exiv_version'); + + /* + Debian stable ships with exiv2 0.16 at the time of writing. You get + roughly the same output out of the utility as with 0.20, but you have + to invoke it several times. + + The real threshhold for this might be somewhere between 0.16 and 0.20, + but the 0.16 way of doing things is forward compatible. + */ $exivData = array(); - exec("$exiv -p a " . escapeshellarg($item->file_path()), $exivData); + if ($version < 0.20) { + exec("$exiv -p x " . escapeshellarg($item->file_path()), $exivData); + exec("$exiv -p i " . escapeshellarg($item->file_path()), $exivData); + exec("$exiv -p t " . escapeshellarg($item->file_path()), $exivData); + } else { + exec("$exiv -p a " . escapeshellarg($item->file_path()), $exivData); + } + $has = array(); $mod = array(); foreach ($exivData as $line) @@ -55,20 +72,26 @@ class author_Core { } if (!array_key_exists('Exif.Image.Artist', $has)) { $mod['Exif.Image.Artist'] = $byline; } - if (!array_key_exists('Xmp.dc.creator', $has)) { $mod['Xmp.dc.creator'] = $byline; } if (!array_key_exists('Iptc.Application2.Byline', $has)) { $mod['Iptc.Application2.Byline'] = $byline; } - - # Apply our own image terms URL. - $terms = module::get_var("author", "usage_terms") - if ($terms != '') { - $mod['Xmp.xmpRights.UsageTerms'] = 'http://wiki.sverok.se/wiki/Bildbank-Bilder'; - } - - # ..and credit. - $credit = module::get_var("author", "credit") + + /* Apply the credit block */ + $credit = module::get_var("author", "credit"); if ($credit != '') { $mod['Iptc.Application2.Credit'] = $credit; } + + /* + Older versions doesn't support XMP writing. + */ + if ($version >= 0.20) { + if (!array_key_exists('Xmp.dc.creator', $has)) { $mod['Xmp.dc.creator'] = $byline; } + + /* Apply our own image terms URL */ + $terms = module::get_var("author", "usage_terms"); + if ($terms != '') { + $mod['Xmp.xmpRights.UsageTerms'] = 'http://wiki.sverok.se/wiki/Bildbank-Bilder'; + } + } $line = $exiv . ' '; foreach ($mod as $key => $value) { diff --git a/3.0/modules/author/helpers/author_installer.php b/3.0/modules/author/helpers/author_installer.php index ac8f80ea..9130df9d 100644 --- a/3.0/modules/author/helpers/author_installer.php +++ b/3.0/modules/author/helpers/author_installer.php @@ -48,6 +48,10 @@ class author_installer { } else { module::set_var("author", "exiv_path", $exiv); + $out = array(); + exec("$exiv -V", $out); + $parts = split(' ', $out[0]); + module::set_var("author", "exiv_version", $parts[1]); } } diff --git a/3.0/modules/author/module.info b/3.0/modules/author/module.info index 68cbf6bf..4a9b80b6 100644 --- a/3.0/modules/author/module.info +++ b/3.0/modules/author/module.info @@ -1,3 +1,3 @@ name = "Author" description = "Allows for the display and modification of the Author/Photographer/Byline data in photos." -version = 1 +version = 2