[Koha-patches] [PATCH] Syndetics: add support for AVSUMMARY and AVPROFILE

Galen Charlton galen.charlton at liblime.com
Thu Apr 30 22:09:42 CEST 2009


Added support for the Syndetics AV summary and AV profile
data elements.  The AV summary is displayed in the description
tab if present, while the AV profile is displayed as
a link off of the OPAC bib details page.
---
 C4/External/Syndetics.pm                           |   21 ++++++++++---------
 .../opac-tmpl/prog/en/modules/opac-detail.tmpl     |   15 ++++++++-----
 opac/opac-detail.pl                                |    5 ++-
 3 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/C4/External/Syndetics.pm b/C4/External/Syndetics.pm
index f61a31c..c6d7ecf 100644
--- a/C4/External/Syndetics.pm
+++ b/C4/External/Syndetics.pm
@@ -90,7 +90,7 @@ sub get_syndetics_index {
     ) unless !$content;
 
     my $syndetics_elements;
-    for my $available_type ('SUMMARY','TOC','FICTION','AWARDS1','SERIES1','SPSUMMARY','SPREVIEW','AVSUMMARY','DBCHAPTER','LJREVIEW','PWREVIEW','SLJREVIEW','CHREVIEW','BLREVIEW','HBREVIEW','KIREVIEW','CRITICASREVIEW','ANOTES') {
+    for my $available_type ('SUMMARY','TOC','FICTION','AWARDS1','SERIES1','SPSUMMARY','SPREVIEW', 'AVPROFILE', 'AVSUMMARY','DBCHAPTER','LJREVIEW','PWREVIEW','SLJREVIEW','CHREVIEW','BLREVIEW','HBREVIEW','KIREVIEW','CRITICASREVIEW','ANOTES') {
         if (exists $response->{$available_type} && $response->{$available_type} =~ /$available_type/) {
             $syndetics_elements->{$available_type} = $available_type;
             #warn "RESPONSE: $available_type : $response->{$available_type}";
@@ -100,12 +100,13 @@ sub get_syndetics_index {
 }
 
 sub get_syndetics_summary {
-    my ( $isbn,$upc,$oclc ) = @_;
+    my ( $isbn, $upc, $oclc, $syndetics_elements ) = @_;
 
     # grab the AWSAccessKeyId: mine is '0V5RRRRJZ3HR2RQFNHR2'
     my $syndetics_client_code = C4::Context->preference('SyndeticsClientCode');
 
-    my $url = "http://www.syndetics.com/index.aspx?isbn=$isbn/SUMMARY.XML&client=$syndetics_client_code&type=xw10&upc=$upc&oclc=$oclc";
+    my $summary_type = exists($syndetics_elements->{'AVSUMMARY'}) ? 'AVSUMMARY' : 'SUMMARY';
+    my $url = "http://www.syndetics.com/index.aspx?isbn=$isbn/$summary_type.XML&client=$syndetics_client_code&type=xw10&upc=$upc&oclc=$oclc";
     my $ua = LWP::UserAgent->new;
     $ua->timeout(10);
     $ua->env_proxy;
@@ -117,14 +118,14 @@ sub get_syndetics_summary {
     my $content = $response->content;
 
     warn "could not retrieve $url" unless $content;
-    my $xmlsimple = XML::Simple->new();
-    $response = $xmlsimple->XMLin(
-        $content,
-        forcearray => [ qw(Fld520) ],
-    ) unless !$content;
-    # manipulate response USMARC VarFlds VarDFlds Notes Fld520 a
     my $summary;
-    $summary = \@{$response->{VarFlds}->{VarDFlds}->{Notes}->{Fld520}} if $response;
+    eval { 
+        my $doc = $parser->parse_string($content);
+        $summary = $doc->findvalue('//Fld520');
+    };
+    if ($@) {
+        warn "Error parsing response from $url";
+    }
     return $summary if $summary;
 }
 
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
index cd9bdde..aa4ebe0 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
@@ -233,6 +233,11 @@
         <span class="label">Series Information:</span> <a target="_blank" href="http://www.syndetics.com/ffseries.aspx?isbn=<!-- TMPL_VAR NAME="normalized_isbn" -->&amp;type=series&amp;num=1&amp;client=<!-- TMPL_VAR NAME="SyndeticsClientCode" --><!-- TMPL_IF NAME="normalized_upc" -->&amp;upc=<!-- TMPL_VAR NAME="normalized_upc" --><!-- /TMPL_IF --><!-- TMPL_IF NAME="normalized_oclc" -->&amp;oclc=<!-- TMPL_VAR NAME="normalized_oclc" --><!-- /TMPL_IF -->">Click to open in new window</a>
         </span>
         <!-- /TMPL_IF --><!-- /TMPL_IF -->
+        <!-- TMPL_IF NAME="SyndeticsAVPROFILEExists" -->
+        <span class="results_summary">
+        <span class="label">Audiovisual Profile:</span> <a target="_blank" href="http://www.syndetics.com/index.aspx?isbn=<!-- TMPL_VAR NAME="normalized_isbn" -->/avprofile.html&amp;client=<!-- TMPL_VAR NAME="SyndeticsClientCode" --><!-- TMPL_IF NAME="normalized_upc" -->&amp;upc=<!-- TMPL_VAR NAME="normalized_upc" --><!-- /TMPL_IF --><!-- TMPL_IF NAME="normalized_oclc" -->&amp;oclc=<!-- TMPL_VAR NAME="normalized_oclc" --><!-- /TMPL_IF -->&amp;type=xw10">Click to open in new window</a>
+        </span>
+        <!-- /TMPL_IF -->
         <!-- TMPL_IF NAME="SyndeticsFICTIONExists" -->
         <span class="results_summary">
         <span class="label">Fiction Notes:</span> <a target="_blank" href="http://www.syndetics.com/index.aspx?isbn=<!-- TMPL_VAR NAME="normalized_isbn" -->/fiction.html&amp;client=<!-- TMPL_VAR NAME="SyndeticsClientCode" --><!-- TMPL_IF NAME="normalized_upc" -->&amp;upc=<!-- TMPL_VAR NAME="normalized_upc" --><!-- /TMPL_IF --><!-- TMPL_IF NAME="normalized_oclc" -->&amp;oclc=<!-- TMPL_VAR NAME="normalized_oclc" --><!-- /TMPL_IF -->&amp;type=xw10">Click to open in new window</a>
@@ -422,13 +427,11 @@
 <!-- /TMPL_IF-->
 <!-- /TMPL_IF-->
 <!-- TMPL_IF NAME="SyndeticsEnabled" -->
-<!-- TMPL_IF NAME="SyndeticsSummary" --><!-- TMPL_IF NAME="SyndeticsSUMMARYExists" -->
-<!-- TMPL_LOOP NAME="SYNDETICS_SUMMARY" -->
-    <!-- TMPL_IF NAME="a" -->
+<!-- TMPL_IF NAME="SyndeticsSummary" -->
+<!-- TMPL_IF NAME="SYNDETICS_SUMMARY" -->
     <h4>Enhanced Descriptions from Syndetics:</h4>
-    <p><!-- TMPL_VAR NAME="a" --></p>
-    <!-- /TMPL_IF -->
-<!-- /TMPL_LOOP -->
+    <p><!-- TMPL_VAR NAME="SYNDETICS_SUMMARY" --></p>
+<!-- /TMPL_IF -->
 <!-- /TMPL_IF --><!-- /TMPL_IF -->
 <!-- /TMPL_IF -->
 
diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl
index f98f30e..5b986ac 100755
--- a/opac/opac-detail.pl
+++ b/opac/opac-detail.pl
@@ -333,9 +333,10 @@ if ( C4::Context->preference("SyndeticsEnabled") ) {
 
 if ( C4::Context->preference("SyndeticsEnabled")
         && C4::Context->preference("SyndeticsSummary")
-        && $syndetics_elements->{'SUMMARY'} =~ /SUMMARY/) {
+        && (    $syndetics_elements->{'SUMMARY'}   =~ /SUMMARY/
+             || $syndetics_elements->{'AVSUMMARY'} =~ /AVSUMMARY/ ) ) {
 	eval {
-	my $syndetics_summary = &get_syndetics_summary($isbn,$upc,$oclc);
+	my $syndetics_summary = &get_syndetics_summary($isbn,$upc,$oclc, $syndetics_elements);
 	$template->param( SYNDETICS_SUMMARY => $syndetics_summary );
 	};
 	warn $@ if $@;
-- 
1.5.6.5




More information about the Koha-patches mailing list