From 9806abf8653172a149403a846a9bffdad9f4fdb0 Mon Sep 17 00:00:00 2001 From: Joshua Ferraro Date: Fri, 6 Feb 2009 16:52:27 -0600 Subject: [PATCH] Adds support for Syndetics Excerpts and Editions Signed-off-by: Galen Charlton --- C4/Auth.pm | 3 +- C4/External/Syndetics.pm | 61 +++++++++++++++++-- C4/XISBN.pm | 15 ++++- admin/systempreferences.pl | 3 +- installer/data/mysql/updatedatabase.pl | 4 +- .../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 a9975c6adc..b0330c4447 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 9344da655f..f10fa3b2eb 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 50acc11876..58a75b5502 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 edcad2f94b..29dbcecd3b 100755 --- a/admin/systempreferences.pl +++ b/admin/systempreferences.pl @@ -237,7 +237,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 358609602f..a1080923df 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 15561863fb..a5ef870535 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 @@
  • #toc">TOC
  • + +
  • #excerpt">Excerpt
  • +
  • #subscriptions">Subscriptions
  • @@ -391,6 +394,7 @@ +
    @@ -404,6 +408,14 @@
    + +
    +
    + + + +
    +

    This is a serial subscription

    @@ -501,7 +513,15 @@

    Other Editions of this Work

    - + +
    .01._AA75_PU_PU-5_.jpg" alt="" />"> by © +
    +.01._AA75_PU_PU-5_.jpg" alt="" /> + +/SC.GIF&client=&type=xw10" alt="" class="thumbnail" /> + + +"> by ©

    () ,

    diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl index c184982e10..afd06022b6 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 -- 2.20.1