&get_syndetics_toc
&get_syndetics_editions
&get_syndetics_excerpt
+ &get_syndetics_reviews
);
}
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;
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;
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;
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 ) = @_;
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;
<!-- 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 -->
<!-- /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>
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;
my $syndetics_summary = &get_syndetics_summary($xisbn);
$template->param( SYNDETICS_SUMMARY => $syndetics_summary );
};
+ warn $@ if $@;
+
}
if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("SyndeticsTOC") ) {
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