use C4::Serials; #uses getsubscriptionfrom biblionumber
use C4::Output;
use C4::Biblio;
+use C4::Items;
use C4::Circulation;
use C4::Branch;
use C4::Reserves;
use C4::Members;
use C4::Serials;
-use C4::XISBN qw(get_xisbns get_biblio_from_xisbn);
+use C4::XISBN qw(get_xisbns get_biblionumber_from_isbn get_biblio_from_xisbn);
use C4::Amazon;
+# use Smart::Comments;
+
my $query = new CGI;
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
{
my $biblionumber = $query->param('biblionumber');
my $fw = GetFrameworkCode($biblionumber);
+## get notes and subjects from MARC record
+my $marcflavour = C4::Context->preference("marcflavour");
+my $record = GetMarcBiblio($biblionumber);
+
+unless (defined($record)) {
+ print $query->redirect("/cgi-bin/koha/errors/404.pl");
+ exit;
+}
+
+my $marcnotesarray = GetMarcNotes( $record, $marcflavour );
+my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
+my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
+my $marcseriesarray = GetMarcSeries($record,$marcflavour);
+my $subtitle = C4::Biblio::get_koha_field_from_marc('bibliosubtitle', 'subtitle', $record, '');
+
# Get Branches, Itemtypes and Locations
my $branches = GetBranches();
my $itemtypes = GetItemTypes();
-my %locations;
# FIXME: move this to a pm, check waiting status for holds
my $dbh = C4::Context->dbh;
-my $lsch = $dbh->prepare("SELECT authorised_value,lib FROM authorised_values WHERE category = 'LOC'");
-$lsch->execute();
-while (my $ldata = $lsch->fetchrow_hashref ) {
- $locations{ $ldata->{'authorised_value'} } = $ldata->{'lib'};
-}
# change back when ive fixed request.pl
my @items = &GetItemsInfo( $biblionumber, 'intra' );
my $dat = &GetBiblioData($biblionumber);
-if (!$dat) {
- print $query->redirect("/cgi-bin/koha/koha-tmpl/errors/404.pl");
-}
-
#coping with subscriptions
my $subscriptionsnumber = CountSubscriptionFromBiblionumber($biblionumber);
my @subscriptions = GetSubscriptions( $dat->{title}, $dat->{issn}, $biblionumber );
+
+
my @subs;
foreach my $subscription (@subscriptions) {
my %cell;
$item->{datedue} = format_date($item->{datedue});
$item->{datelastseen} = format_date($item->{datelastseen});
$item->{onloan} = format_date($item->{onloan});
- $item->{locationname} = $locations{$item->{location}};
# item damaged, lost, withdrawn loops
$item->{itemlostloop}= GetAuthorisedValues(GetAuthValCode('items.itemlost',$fw),$item->{itemlost}) if GetAuthValCode('items.itemlost',$fw);
if ($item->{damaged}) {
$item->{itemdamagedloop}= GetAuthorisedValues(GetAuthValCode('items.damaged',$fw),$item->{damaged}) if GetAuthValCode('items.damaged',$fw);
}
+ #get shelf location and collection code description if they are authorised value.
+ my $shelflocations = GetKohaAuthorisedValues('items.location',$fw );
+ my $shelfcode= $item->{'location'};
+ $item->{'location'} = $shelflocations->{$shelfcode} if(defined($shelflocations) && exists($shelflocations->{$shelfcode}));
+ my $collections = GetKohaAuthorisedValues('items.ccode',$fw );
+ my $ccode= $item->{'ccode'};
+ $item->{'ccode'} = $collections->{$ccode} if(defined($collections) && exists($collections->{$ccode}));
# checking for holds
my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($item->{itemnumber});
}
# FIXME: move this to a pm, check waiting status for holds
- my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W' AND cancellationdate IS NULL");
+ my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'");
$sth2->execute($item->{ReservedForBorrowernumber},$item->{itemnumber});
while (my $wait_hashref = $sth2->fetchrow_hashref) {
$item->{waitingdate} = format_date($wait_hashref->{waitingdate});
$template->param( norequests => $norequests );
-## get notes and subjects from MARC record
- my $dbh = C4::Context->dbh;
- my $marcflavour = C4::Context->preference("marcflavour");
- my $record = GetMarcBiblio($biblionumber);
- my $marcnotesarray = GetMarcNotes( $record, $marcflavour );
- my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
- my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
-
$template->param(
MARCNOTES => $marcnotesarray,
MARCSUBJCTS => $marcsubjctsarray,
- MARCAUTHORS => $marcauthorsarray
+ MARCAUTHORS => $marcauthorsarray,
+ MARCSERIES => $marcseriesarray,
+ subtitle => $subtitle,
);
my @results = ( $dat, );
if ($@) { warn "XISBN Failed $@"; }
}
if ( C4::Context->preference("AmazonContent") == 1 ) {
+ my $similar_products_exist;
my $amazon_details = &get_amazon_details( $xisbn );
- foreach my $result ( @{ $amazon_details->{Details} } ) {
- $template->param( item_description => $result->{ProductDescription} );
- $template->param( image => $result->{ImageUrlMedium} );
- $template->param( list_price => $result->{ListPrice} );
- $template->param( amazon_url => $result->{url} );
- }
-
- my @products;
- my @reviews;
- for my $details ( @{ $amazon_details->{Details} } ) {
-
- next unless $details->{SimilarProducts};
- for my $product ( @{ $details->{SimilarProducts}->{Product} } ) {
- if (C4::Context->preference("AmazonSimilarItems") ) {
- my @xisbns;
- if (C4::Context->preference("XISBNAmazonSimilarItems") ) {
- @xisbns = @{get_xisbns($product)};
- }
- else {
- push @xisbns, get_biblio_from_xisbn($product);
- }
- push @products, +{ product => \@xisbns };
- }
- }
- next unless $details->{Reviews};
- for my $product ( @{ $details->{Reviews}->{AvgCustomerRating} } ) {
- $template->param( rating => $product * 20 );
- }
- for my $reviews ( @{ $details->{Reviews}->{CustomerReview} } ) {
- push @reviews,
- +{
- summary => $reviews->{Summary},
- comment => $reviews->{Comment},
- };
- }
+ my $item_attributes = \%{$amazon_details->{Items}->{Item}->{ItemAttributes}};
+ my $customer_reviews = \@{$amazon_details->{Items}->{Item}->{CustomerReviews}->{Review}};
+ my @similar_products;
+ for my $similar_product (@{$amazon_details->{Items}->{Item}->{SimilarProducts}->{SimilarProduct}}) {
+ # do we have any of these isbns in our collection?
+ my $similar_biblionumbers = get_biblionumber_from_isbn($similar_product->{ASIN});
+ # verify that there is at least one similar item
+ $similar_products_exist++ if ${@$similar_biblionumbers}[0];
+ push @similar_products, +{ similar_biblionumbers => $similar_biblionumbers, title => $similar_product->{Title}, ASIN => $similar_product->{ASIN} };
}
- $template->param( SIMILAR_PRODUCTS => \@products );
- $template->param( AMAZONREVIEWS => \@reviews );
+ my $editorial_reviews = \@{$amazon_details->{Items}->{Item}->{EditorialReviews}->{EditorialReview}};
+ my $average_rating = $amazon_details->{Items}->{Item}->{CustomerReviews}->{AverageRating};
+ $template->param( AmazonSimilarItems => $similar_products_exist );
+ $template->param( amazon_average_rating => $average_rating * 20);
+ $template->param( AMAZON_CUSTOMER_REVIEWS => $customer_reviews );
+ $template->param( AMAZON_SIMILAR_PRODUCTS => \@similar_products );
+ $template->param( AMAZON_EDITORIAL_REVIEWS => $editorial_reviews );
}
-
output_html_with_http_headers $query, $cookie, $template->output;