Adds Syndetics Reviews
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This commit is contained in:
parent
9806abf865
commit
11bd4a7660
6 changed files with 145 additions and 14 deletions
|
@ -276,6 +276,7 @@ sub get_template_and_user {
|
|||
SyndeticsSummary => C4::Context->preference("SyndeticsSummary"),
|
||||
SyndeticsEditions => C4::Context->preference("SyndeticsEditions"),
|
||||
SyndeticsExcerpt => C4::Context->preference("SyndeticsExcerpt"),
|
||||
SyndeticsReviews => C4::Context->preference("SyndeticsReviews"),
|
||||
);
|
||||
|
||||
if ( $in->{'type'} eq "intranet" ) {
|
||||
|
|
116
C4/External/Syndetics.pm
vendored
116
C4/External/Syndetics.pm
vendored
|
@ -36,6 +36,7 @@ BEGIN {
|
|||
&get_syndetics_toc
|
||||
&get_syndetics_editions
|
||||
&get_syndetics_excerpt
|
||||
&get_syndetics_reviews
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -69,11 +70,19 @@ 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;
|
||||
my $content = get($url);
|
||||
my $ua = LWP::UserAgent->new;
|
||||
$ua->timeout(10);
|
||||
$ua->env_proxy;
|
||||
my $response = $ua->get($url);
|
||||
unless ($response->content_type =~ /xml/) {
|
||||
return;
|
||||
}
|
||||
|
||||
my $content = $response->content;
|
||||
|
||||
warn "could not retrieve $url" unless $content;
|
||||
my $xmlsimple = XML::Simple->new();
|
||||
my $response = $xmlsimple->XMLin(
|
||||
$response = $xmlsimple->XMLin(
|
||||
$content,
|
||||
forcearray => [ qw(Fld520) ],
|
||||
) unless !$content;
|
||||
|
@ -93,11 +102,19 @@ 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;
|
||||
my $content = get($url);
|
||||
my $ua = LWP::UserAgent->new;
|
||||
$ua->timeout(10);
|
||||
$ua->env_proxy;
|
||||
|
||||
my $response = $ua->get($url);
|
||||
unless ($response->content_type =~ /xml/) {
|
||||
return;
|
||||
}
|
||||
|
||||
my $content = $response->content;
|
||||
warn "could not retrieve $url" unless $content;
|
||||
my $xmlsimple = XML::Simple->new();
|
||||
my $response = $xmlsimple->XMLin(
|
||||
$response = $xmlsimple->XMLin(
|
||||
$content,
|
||||
forcearray => [ qw(Fld970) ],
|
||||
) unless !$content;
|
||||
|
@ -117,11 +134,18 @@ sub get_syndetics_excerpt {
|
|||
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);
|
||||
my $ua = LWP::UserAgent->new;
|
||||
$ua->timeout(10);
|
||||
$ua->env_proxy;
|
||||
my $response = $ua->get($url);
|
||||
unless ($response->content_type =~ /xml/) {
|
||||
return;
|
||||
}
|
||||
|
||||
my $content = $response->content;
|
||||
warn "could not retrieve $url" unless $content;
|
||||
my $xmlsimple = XML::Simple->new();
|
||||
my $response = $xmlsimple->XMLin(
|
||||
$response = $xmlsimple->XMLin(
|
||||
$content,
|
||||
forcearray => [ qw(Fld520) ],
|
||||
) unless !$content;
|
||||
|
@ -131,6 +155,65 @@ sub get_syndetics_excerpt {
|
|||
return XMLout($excerpt) if $excerpt;
|
||||
}
|
||||
|
||||
sub get_syndetics_reviews {
|
||||
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 @reviews;
|
||||
my $review_sources = [
|
||||
{title => 'Library Journal Review', file => 'LJREVIEW.XML'},
|
||||
{title => 'Publishers Weekly Review', file => 'PWREVIEW.XML'},
|
||||
{title => 'School Library Journal Review', file => 'SLJREVIEW.XML'},
|
||||
{title => 'CHOICE Review', file => 'CHREVIEW.XML'},
|
||||
{title => 'Booklist Review', file => 'BLREVIEW.XML'},
|
||||
{title => 'Horn Book Review', file => 'HBREVIEW.XML'},
|
||||
{title => 'Kirkus Book Review', file => 'KIRKREVIEW.XML'},
|
||||
{title => 'Criticas Review', file => 'CRITICASREVIEW.XML'}
|
||||
];
|
||||
|
||||
for my $source (@$review_sources) {
|
||||
my $url = "http://syndetics.com/index.aspx?isbn=$isbn/$source->{file}&client=$syndetics_client_code&type=xw10";
|
||||
|
||||
my $ua = LWP::UserAgent->new;
|
||||
$ua->timeout(10);
|
||||
$ua->env_proxy;
|
||||
|
||||
my $response = $ua->get($url);
|
||||
unless ($response->content_type =~ /xml/) {
|
||||
next;
|
||||
}
|
||||
|
||||
my $content = $response->content;
|
||||
warn "could not retrieve $url" unless $content;
|
||||
my $xmlsimple = XML::Simple->new();
|
||||
eval {
|
||||
$response = $xmlsimple->XMLin(
|
||||
$content,
|
||||
forcearray => [ qw(Fld520) ],
|
||||
) unless !$content;
|
||||
};
|
||||
|
||||
# This particular review deserializes differently
|
||||
if ($source->{file} =~ /BLREVIEW.XML/) {
|
||||
for my $subfield_a (@{$response->{VarFlds}->{VarDFlds}->{Notes}->{Fld520}}) {
|
||||
my @content;
|
||||
for my $content (@{$subfield_a->{a}->{content}}) {
|
||||
push @content, {content => $content};
|
||||
}
|
||||
push @reviews, {title => $source->{title}, reviews => \@content}; #[ {content => $content} ]};
|
||||
}
|
||||
}
|
||||
else {
|
||||
push @reviews, {title => $source->{title}, reviews => \@{$response->{VarFlds}->{VarDFlds}->{Notes}->{Fld520}}} unless $@;
|
||||
}
|
||||
|
||||
}
|
||||
return \@reviews;
|
||||
}
|
||||
|
||||
sub get_syndetics_editions {
|
||||
my ( $isbn ) = @_;
|
||||
|
@ -142,11 +225,20 @@ sub get_syndetics_editions {
|
|||
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);
|
||||
my $ua = LWP::UserAgent->new;
|
||||
$ua->timeout(10);
|
||||
$ua->env_proxy;
|
||||
|
||||
my $response = $ua->get($url);
|
||||
unless ($response->content_type =~ /xml/) {
|
||||
return;
|
||||
}
|
||||
|
||||
my $content = $response->content;
|
||||
|
||||
warn "could not retrieve $url" unless $content;
|
||||
my $xmlsimple = XML::Simple->new();
|
||||
my $response = $xmlsimple->XMLin(
|
||||
$response = $xmlsimple->XMLin(
|
||||
$content,
|
||||
forcearray => [ qw(Fld020) ],
|
||||
) unless !$content;
|
||||
|
|
|
@ -239,6 +239,7 @@ $tabsysprefs{SyndeticsTOC} = 'EnhancedContent';
|
|||
$tabsysprefs{SyndeticsSummary} = 'EnhancedContent';
|
||||
$tabsysprefs{SyndeticsEditions} = 'EnhancedContent';
|
||||
$tabsysprefs{SyndeticsExcerpt} = 'EnhancedContent';
|
||||
$tabsysprefs{SyndeticsReviews} = 'EnhancedContent';
|
||||
|
||||
# FRBR
|
||||
$tabsysprefs{FRBRizeEditions} = "EnhancedContent";
|
||||
|
|
|
@ -2236,6 +2236,8 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
|
|||
|
||||
$dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsExcerpt', '0', 'Display Excerpts and first chapters on OPAC from Syndetics','','YesNo')");
|
||||
|
||||
$dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsReviews', '0', 'Display Reviews on OPAC from Syndetics','','YesNo')");
|
||||
|
||||
print "Upgrade to $DBversion done (added Syndetics Enhanced Content system preferences)\n";
|
||||
SetVersion ($DBversion);
|
||||
}
|
||||
|
|
|
@ -234,6 +234,9 @@
|
|||
<!-- 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="SyndeticsReviews" --><!-- TMPL_IF NAME="SYNDETICS_REVIEWS" -->
|
||||
<li> <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->#reviews">Reviews</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 -->
|
||||
|
@ -416,6 +419,26 @@
|
|||
<!-- /TMPL_IF -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="reviews">
|
||||
<div class="content_set">
|
||||
<!-- TMPL_IF NAME="SyndeticsReviews" --><!-- TMPL_IF NAME="SYNDETICS_REVIEWS" -->
|
||||
<!-- TMPL_LOOP NAME="SYNDETICS_REVIEWS" -->
|
||||
<!-- TMPL_IF NAME="title" -->
|
||||
<h4><!-- TMPL_VAR NAME="title" --></h4>
|
||||
<!-- TMPL_LOOP NAME="reviews" -->
|
||||
|
||||
<!-- TMPL_IF NAME="content" -->
|
||||
<!-- TMPL_VAR NAME="content" -->
|
||||
<!-- /TMPL_IF -->
|
||||
|
||||
<!-- /TMPL_LOOP -->
|
||||
<!-- /TMPL_IF -->
|
||||
<!-- /TMPL_LOOP -->
|
||||
<!-- /TMPL_IF --><!-- /TMPL_IF -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- TMPL_IF name="subscriptionsnumber" -->
|
||||
<div id="subscriptions">
|
||||
<h2>This is a serial subscription</h2>
|
||||
|
|
|
@ -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 get_syndetics_excerpt );
|
||||
use C4::External::Syndetics qw(get_syndetics_summary get_syndetics_toc get_syndetics_excerpt get_syndetics_reviews );
|
||||
use C4::Review;
|
||||
use C4::Serials;
|
||||
use C4::Members;
|
||||
|
@ -296,6 +296,8 @@ if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("Syn
|
|||
my $syndetics_summary = &get_syndetics_summary($xisbn);
|
||||
$template->param( SYNDETICS_SUMMARY => $syndetics_summary );
|
||||
};
|
||||
warn $@ if $@;
|
||||
|
||||
}
|
||||
|
||||
if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("SyndeticsTOC") ) {
|
||||
|
@ -303,13 +305,23 @@ if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("Syn
|
|||
my $syndetics_toc = &get_syndetics_toc($xisbn);
|
||||
$template->param( SYNDETICS_TOC => $syndetics_toc );
|
||||
};
|
||||
warn $@ if $@;
|
||||
}
|
||||
|
||||
if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("SyndeticsTOC") ) {
|
||||
if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("SyndeticsExcerpt") ) {
|
||||
eval {
|
||||
my $syndetics_excerpt = &get_syndetics_excerpt($xisbn);
|
||||
$template->param( SYNDETICS_EXCERPT => $syndetics_excerpt );
|
||||
};
|
||||
warn $@ if $@;
|
||||
}
|
||||
|
||||
if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("SyndeticsReviews") ) {
|
||||
eval {
|
||||
my $syndetics_reviews = &get_syndetics_reviews($xisbn);
|
||||
$template->param( SYNDETICS_REVIEWS => $syndetics_reviews );
|
||||
};
|
||||
warn $@ if $@;
|
||||
}
|
||||
|
||||
# Shelf Browser Stuff
|
||||
|
|
Loading…
Reference in a new issue