[Koha-patches] [PATCH] Adds support for Syndetics Excerpts and Editions

Daniel Sweeney daniel.sweeney at liblime.com
Fri Mar 6 17:28:14 CET 2009


From: Joshua Ferraro <jmf at liblime.com>


Signed-off-by: Daniel Sweeney <daniel.sweeney at liblime.com>
---
 C4/Auth.pm                                         |    3 +-
 C4/External/Syndetics.pm                           |   61 ++++++++++++++++++-
 C4/XISBN.pm                                        |   15 ++++-
 admin/systempreferences.pl                         |    3 +-
 installer/data/mysql/updatedatabase.pl             |    4 +-
 .../opac-tmpl/prog/en/modules/opac-detail.tmpl     |   22 +++++++-
 opac/opac-detail.pl                                |   13 ++++-
 7 files changed, 109 insertions(+), 12 deletions(-)

diff --git a/C4/Auth.pm b/C4/Auth.pm
index 4036aa5..3d45305 100644
--- a/C4/Auth.pm
+++ b/C4/Auth.pm
@@ -274,7 +274,8 @@ sub get_template_and_user {
 			SyndeticsCoverImages	     => C4::Context->preference("SyndeticsCoverImages"),
 			SyndeticsTOC			     => C4::Context->preference("SyndeticsTOC"),
 			SyndeticsSummary			 => C4::Context->preference("SyndeticsSummary"),
-			SyndeticsSimilarItems		 => C4::Context->preference("SyndeticsSimilarItems"),
+			SyndeticsEditions		 => C4::Context->preference("SyndeticsEditions"),
+			SyndeticsExcerpt		     => C4::Context->preference("SyndeticsExcerpt"),
                  );
 
     if ( $in->{'type'} eq "intranet" ) {
diff --git a/C4/External/Syndetics.pm b/C4/External/Syndetics.pm
index 9344da6..f10fa3b 100644
--- a/C4/External/Syndetics.pm
+++ b/C4/External/Syndetics.pm
@@ -34,6 +34,8 @@ BEGIN {
     @EXPORT = qw(
         &get_syndetics_summary
         &get_syndetics_toc
+		&get_syndetics_editions
+		&get_syndetics_excerpt
     );
 }
 
@@ -67,7 +69,7 @@ sub get_syndetics_summary {
     my $syndetics_client_code = C4::Context->preference('SyndeticsClientCode');
 
     my $url = "http://syndetics.com/index.aspx?isbn=$isbn/SUMMARY.XML&client=$syndetics_client_code&type=xw10";
-    warn $url;
+    # warn $url;
     my $content = get($url);
     warn "could not retrieve $url" unless $content;
     my $xmlsimple = XML::Simple->new();
@@ -76,7 +78,8 @@ sub get_syndetics_summary {
         forcearray => [ qw(Fld520) ],
     ) unless !$content;
 	# manipulate response USMARC VarFlds VarDFlds Notes Fld520 a
-	my $summary = \@{$response->{VarFlds}->{VarDFlds}->{Notes}->{Fld520}} if $response;
+	my $summary;
+	$summary = \@{$response->{VarFlds}->{VarDFlds}->{Notes}->{Fld520}} if $response;
     return $summary if $summary;
 }
 
@@ -90,7 +93,7 @@ sub get_syndetics_toc {
     my $syndetics_client_code = C4::Context->preference('SyndeticsClientCode');
 
     my $url = "http://syndetics.com/index.aspx?isbn=$isbn/TOC.XML&client=$syndetics_client_code&type=xw10";
-    warn $url;
+    #warn $url;
     my $content = get($url);
     warn "could not retrieve $url" unless $content;
     my $xmlsimple = XML::Simple->new();
@@ -99,10 +102,60 @@ sub get_syndetics_toc {
         forcearray => [ qw(Fld970) ],
     ) unless !$content;
     # manipulate response USMARC VarFlds VarDFlds Notes Fld520 a
-    my $toc = \@{$response->{VarFlds}->{VarDFlds}->{SSIFlds}->{Fld970}} if $response;
+    my $toc;
+	$toc = \@{$response->{VarFlds}->{VarDFlds}->{SSIFlds}->{Fld970}} if $response;
     return $toc if $toc;
 }
 
+sub get_syndetics_excerpt {
+    my ( $isbn ) = @_;
+
+    #normalize the ISBN
+    $isbn = _normalize_match_point ($isbn);
+
+    # grab the AWSAccessKeyId: mine is '0V5RRRRJZ3HR2RQFNHR2'
+    my $syndetics_client_code = C4::Context->preference('SyndeticsClientCode');
+
+    my $url = "http://syndetics.com/index.aspx?isbn=$isbn/DBCHAPTER.XML&client=$syndetics_client_code&type=xw10";
+    #warn $url;
+    my $content = get($url);
+    warn "could not retrieve $url" unless $content;
+    my $xmlsimple = XML::Simple->new();
+    my $response = $xmlsimple->XMLin(
+        $content,
+        forcearray => [ qw(Fld520) ],
+    ) unless !$content;
+    # manipulate response USMARC VarFlds VarDFlds Notes Fld520 a
+    my $excerpt;
+    $excerpt = \@{$response->{VarFlds}->{VarDFlds}->{Notes}->{Fld520}} if $response;
+    return XMLout($excerpt) if $excerpt;
+}
+
+
+sub get_syndetics_editions {
+    my ( $isbn ) = @_;
+
+    #normalize the ISBN
+    $isbn = _normalize_match_point ($isbn);
+
+    # grab the AWSAccessKeyId: mine is '0V5RRRRJZ3HR2RQFNHR2'
+    my $syndetics_client_code = C4::Context->preference('SyndeticsClientCode');
+
+    my $url = "http://syndetics.com/index.aspx?isbn=$isbn/FICTION.XML&client=$syndetics_client_code&type=xw10";
+    # warn $url;
+    my $content = get($url);
+    warn "could not retrieve $url" unless $content;
+    my $xmlsimple = XML::Simple->new();
+    my $response = $xmlsimple->XMLin(
+        $content,
+        forcearray => [ qw(Fld020) ],
+    ) unless !$content;
+    # manipulate response USMARC VarFlds VarDFlds Notes Fld520 a
+    my $similar_items;
+	$similar_items = \@{$response->{VarFlds}->{VarDFlds}->{NumbCode}->{Fld020}} if $response;
+    return $similar_items if $similar_items;
+}
+
 sub _normalize_match_point {
 	my $match_point = shift;
 	(my $normalized_match_point) = $match_point =~ /([\d-]*[X]*)/;
diff --git a/C4/XISBN.pm b/C4/XISBN.pm
index 50acc11..58a75b5 100644
--- a/C4/XISBN.pm
+++ b/C4/XISBN.pm
@@ -21,7 +21,7 @@ use XML::Simple;
 #use LWP::Simple;
 use C4::Biblio;
 use C4::Items;
-
+use C4::External::Syndetics qw(get_syndetics_editions);
 use LWP::UserAgent;
 use HTTP::Request::Common;
 
@@ -87,7 +87,7 @@ sub get_biblio_from_xisbn {
 
 sub get_xisbns {
     my ( $isbn ) = @_;
-    my ($response,$thing_response,$xisbn_response,$gapines_response);
+    my ($response,$thing_response,$xisbn_response,$gapines_response,$syndetics_response);
     $isbn =~ /(\d{9,}[X]*)/;
     $isbn = $1;
     # THINGISBN
@@ -96,6 +96,15 @@ sub get_xisbns {
         $thing_response = _get_url($url,'thingisbn');
     }
 
+	if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("SyndeticsEditions") ) {
+    	my $syndetics_preresponse = &get_syndetics_editions($isbn);
+		my @syndetics_response;
+		for my $response (@$syndetics_preresponse) {
+			push @syndetics_response, {content => $response->{a}};
+		}
+		$syndetics_response = {isbn => \@syndetics_response};
+	}
+
     # XISBN
     if ( C4::Context->preference('XISBN') ) {
         my $affiliate_id=C4::Context->preference('OCLCAffiliateID');
@@ -113,7 +122,7 @@ sub get_xisbns {
     #    my $url = "http://www.librarything.com/api/thingISBN/".$isbn;
     #    $gapines_response = _get_url($url,'thingisbn');
     #}
-    $response->{isbn} = [ @{ $xisbn_response->{isbn} or [] }, @{ $thing_response->{isbn} or [] }, @{ $gapines_response->{isbn} or [] } ];
+    $response->{isbn} = [ @{ $xisbn_response->{isbn} or [] },  @{ $syndetics_response->{isbn} or [] }, @{ $thing_response->{isbn} or [] }, @{ $gapines_response->{isbn} or [] } ];
     my @xisbns;
     my $unique_xisbns; # a hashref
 
diff --git a/admin/systempreferences.pl b/admin/systempreferences.pl
index 9b4c6d4..42acca4 100755
--- a/admin/systempreferences.pl
+++ b/admin/systempreferences.pl
@@ -236,7 +236,8 @@ $tabsysprefs{SyndeticsEnabled}        = 'EnhancedContent';
 $tabsysprefs{SyndeticsCoverImages}    = 'EnhancedContent';
 $tabsysprefs{SyndeticsTOC}            = 'EnhancedContent';
 $tabsysprefs{SyndeticsSummary}        = 'EnhancedContent';
-$tabsysprefs{SyndeticsSimilarItems}   = 'EnhancedContent';
+$tabsysprefs{SyndeticsEditions}       = 'EnhancedContent';
+$tabsysprefs{SyndeticsExcerpt}       = 'EnhancedContent';
 
 # FRBR
 $tabsysprefs{FRBRizeEditions}     = "EnhancedContent";
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index fea9155..744a572 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -2232,7 +2232,9 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 	$dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsSummary', '0', 'Display Summary Information from Syndetics','','YesNo')");
 
-	$dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsSimilarItems', '0', 'Display Similar Items from Syndetics','','YesNo')");
+	$dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsEditions', '0', 'Display Editions from Syndetics','','YesNo')");
+
+	 $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsExcerpt', '0', 'Display Excerpts and first chapters on OPAC from Syndetics','','YesNo')");
 
     print "Upgrade to $DBversion done (added Syndetics Enhanced Content system preferences)\n";
     SetVersion ($DBversion);
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 1556186..a5ef870 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
@@ -231,6 +231,9 @@
 <!-- TMPL_IF NAME="SYNDETICS_TOC" -->
  <li> <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->#toc">TOC</a></li>
 <!-- /TMPL_IF -->
+<!-- TMPL_IF NAME="SyndeticsExcerpt" --><!-- TMPL_IF NAME="SYNDETICS_EXCERPT" -->
+ <li> <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->#excerpt">Excerpt</a></li>
+<!-- /TMPL_IF --><!-- /TMPL_IF -->
 <!-- TMPL_IF name="subscriptionsnumber" --><li>
             <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->#subscriptions">Subscriptions</a>
     </li><!-- /TMPL_IF -->
@@ -391,6 +394,7 @@
 <!-- /TMPL_IF -->
 </div>
 </div>
+
 <div id="toc">
 <div class="content_set">
 <!-- TMPL_IF NAME="SyndeticsTOC" --><!-- TMPL_IF NAME="SYNDETICS_TOC" -->
@@ -404,6 +408,14 @@
 <!-- /TMPL_IF --><!-- /TMPL_IF -->
 </div>
 </div>
+
+<div id="excerpt">
+<div class="content_set">
+<!-- TMPL_IF NAME="SyndeticsExcerpt" -->
+<!-- TMPL_VAR NAME="SYNDETICS_EXCERPT" -->
+<!-- /TMPL_IF -->
+</div>
+</div>
 <!-- TMPL_IF name="subscriptionsnumber" -->
 <div id="subscriptions">
     <h2>This is a serial subscription</h2>
@@ -501,7 +513,15 @@
 <h2>Other Editions of this Work</h2>
 <table>
 <!-- TMPL_LOOP NAME="XISBNS" -->
-<tr><!-- TMPL_IF NAME="AmazonContent" --><td><img src="http://images.amazon.com/images/P/<!-- TMPL_VAR NAME="amazonisbn" -->.01._AA75_PU_PU-5_.jpg" alt="" /></td><!-- /TMPL_IF --><td><!-- TMPL_VAR NAME="description" --></td><td><a href="/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->"><!-- TMPL_VAR NAME="title" escape="html" --></a><!-- TMPL_IF NAME="author" --> by <!-- TMPL_VAR NAME="author" ESCAPE="HTML" --><!-- /TMPL_IF --><!-- TMPL_IF NAME="copyrightdate" --> &copy;<!-- TMPL_VAR NAME="copyrightdate" --><!-- /TMPL_IF --><!-- TMPL_IF name="publishercode" -->
+<tr>
+<td>
+<!-- TMPL_IF NAME="AmazonContent" --><img src="http://images.amazon.com/images/P/<!-- TMPL_VAR NAME="amazonisbn" -->.01._AA75_PU_PU-5_.jpg" alt="" /><!-- /TMPL_IF -->
+
+<!-- TMPL_IF NAME="SyndeticsEnabled" --><!-- TMPL_IF NAME="SyndeticsCoverImages" --><!-- TMPL_IF NAME="amazonisbn" --><img src="http://syndetics.com/index.aspx?isbn=<!-- TMPL_VAR NAME="amazonisbn" -->/SC.GIF&client=<!-- TMPL_VAR NAME="SyndeticsClientCode" -->&type=xw10" alt="" class="thumbnail" />
+<!-- /TMPL_IF --><!-- /TMPL_IF --><!-- /TMPL_IF -->
+
+</td>
+<td><!-- TMPL_VAR NAME="description" --></td><td><a href="/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->"><!-- TMPL_VAR NAME="title" escape="html" --></a><!-- TMPL_IF NAME="author" --> by <!-- TMPL_VAR NAME="author" ESCAPE="HTML" --><!-- /TMPL_IF --><!-- TMPL_IF NAME="copyrightdate" --> &copy;<!-- TMPL_VAR NAME="copyrightdate" --><!-- /TMPL_IF --><!-- TMPL_IF name="publishercode" -->
     <p><!-- TMPL_VAR NAME="publishercode" ESCAPE="HTML" --> 
        <!-- TMPL_IF name="place" -->(<!-- TMPL_VAR NAME="place"-->)<!--/TMPL_IF--> <!-- TMPL_IF NAME="publicationyear" -->, <!-- TMPL_VAR NAME="publicationyear" --><!-- /TMPL_IF -->
         <!-- TMPL_IF NAME="pages" --><!-- TMPL_VAR NAME="pages" --> <!-- TMPL_VAR NAME="illus" --> <!-- TMPL_VAR NAME="size" --></p><!-- /TMPL_IF -->
diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl
index c184982..afd0602 100755
--- a/opac/opac-detail.pl
+++ b/opac/opac-detail.pl
@@ -33,7 +33,7 @@ use C4::Tags qw(get_tags);
 use C4::Dates qw/format_date/;
 use C4::XISBN qw(get_xisbns get_biblionumber_from_isbn get_biblio_from_xisbn);
 use C4::External::Amazon;
-use C4::External::Syndetics qw(get_syndetics_summary get_syndetics_toc);
+use C4::External::Syndetics qw(get_syndetics_summary get_syndetics_toc get_syndetics_excerpt );
 use C4::Review;
 use C4::Serials;
 use C4::Members;
@@ -292,13 +292,24 @@ if ( C4::Context->preference("OPACAmazonContent") == 1 ) {
 }
 
 if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("SyndeticsSummary") ) {
+	eval {
 	my $syndetics_summary = &get_syndetics_summary($xisbn);
 	$template->param( SYNDETICS_SUMMARY => $syndetics_summary );
+	};
 }
 
 if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("SyndeticsTOC") ) {
+	eval {
     my $syndetics_toc = &get_syndetics_toc($xisbn);
     $template->param( SYNDETICS_TOC => $syndetics_toc );
+	};
+}
+
+if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("SyndeticsTOC") ) {
+    eval {
+    my $syndetics_excerpt = &get_syndetics_excerpt($xisbn);
+    $template->param( SYNDETICS_EXCERPT => $syndetics_excerpt );
+    };
 }
 
 # Shelf Browser Stuff
-- 
1.5.6.5



More information about the Koha-patches mailing list