Syndetics: add support for AVSUMMARY and AVPROFILE
authorGalen Charlton <galen.charlton@liblime.com>
Thu, 30 Apr 2009 20:09:42 +0000 (15:09 -0500)
committerGalen Charlton <galen.charlton@liblime.com>
Fri, 1 May 2009 12:19:19 +0000 (07:19 -0500)
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.

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
C4/External/Syndetics.pm
koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
opac/opac-detail.pl

index f61a31c..c6d7ecf 100644 (file)
@@ -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;
 }
 
index 66aa1c4..39d25d5 100644 (file)
         <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>
 <!-- /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 -->
 
index f98f30e..5b986ac 100755 (executable)
@@ -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 $@;