X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FSerials.pm;h=e31d5dfb82574802bd9c6666fada5faf0b4a7307;hb=2b3ab13c3db25f583ac537ab234e825a8ad94e09;hp=20ad7067b41f23cf9dcef05213a64fa33808ac76;hpb=6eb021ab0e113e2b6b897c89475f1eadc7a2c15b;p=koha.git diff --git a/C4/Serials.pm b/C4/Serials.pm index 20ad7067b4..e31d5dfb82 100644 --- a/C4/Serials.pm +++ b/C4/Serials.pm @@ -30,7 +30,7 @@ use C4::Debug; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); BEGIN { - $VERSION = 3.01; # set version for version checking + $VERSION = 3.07.00.049; # set version for version checking require Exporter; @ISA = qw(Exporter); @EXPORT = qw( @@ -53,6 +53,7 @@ BEGIN { &check_routing &updateClaim &removeMissingIssue &CountIssues HasItems + &GetSubscriptionsFromBorrower ); } @@ -545,15 +546,15 @@ sub GetFullSubscriptionsFromBiblionumber { =head2 GetSubscriptions -@results = GetSubscriptions($title,$ISSN,$biblionumber); -this function gets all subscriptions which have title like $title,ISSN like $ISSN and biblionumber like $biblionumber. +@results = GetSubscriptions($title,$ISSN,$ean,$biblionumber); +this function gets all subscriptions which have title like $title,ISSN like $ISSN,EAN like $ean and biblionumber like $biblionumber. return: a table of hashref. Each hash containt the subscription. =cut sub GetSubscriptions { - my ( $string, $issn, $biblionumber ) = @_; + my ( $string, $issn, $ean, $biblionumber ) = @_; #return unless $title or $ISSN or $biblionumber; my $dbh = C4::Context->dbh; @@ -566,7 +567,7 @@ sub GetSubscriptions { LEFT JOIN biblioitems ON biblio.biblionumber = biblioitems.biblionumber ); my @bind_params; - my $sqlwhere; + my $sqlwhere = q{}; if ($biblionumber) { $sqlwhere = " WHERE biblio.biblionumber=?"; push @bind_params, $biblionumber; @@ -597,6 +598,20 @@ sub GetSubscriptions { } $sqlwhere .= ( $sqlwhere ? " AND " : " WHERE " ) . "((" . join( ") OR (", @sqlstrings ) . "))"; } + if ($ean) { + my @sqlstrings; + my @strings_to_search; + @strings_to_search = map { "$_" } split( / /, $ean ); + foreach my $index ( qw(biblioitems.ean) ) { + push @bind_params, @strings_to_search; + my $tmpstring = "OR $index = ? " x scalar(@strings_to_search); + $debug && warn "$tmpstring"; + $tmpstring =~ s/^OR //; + push @sqlstrings, $tmpstring; + } + $sqlwhere .= ( $sqlwhere ? " AND " : " WHERE " ) . "((" . join( ") OR (", @sqlstrings ) . "))"; + } + $sql .= "$sqlwhere ORDER BY title"; $debug and warn "GetSubscriptions query: $sql params : ", join( " ", @bind_params ); $sth = $dbh->prepare($sql); @@ -741,7 +756,7 @@ sub GetLatestSerials { FROM serial WHERE subscriptionid = ? AND (status =2 or status=4) - ORDER BY planneddate DESC LIMIT 0,$limit + ORDER BY publisheddate DESC LIMIT 0,$limit "; my $sth = $dbh->prepare($strsth); $sth->execute($subscriptionid); @@ -1288,7 +1303,7 @@ sub NewSubscription { logaction( "SERIAL", "ADD", $subscriptionid, "" ) if C4::Context->preference("SubscriptionLog"); #set serial flag on biblio if not already set. - my ( $null, ($bib) ) = GetBiblio($biblionumber); + my $bib = GetBiblio($biblionumber); if ( !$bib->{'serial'} ) { my $record = GetMarcBiblio($biblionumber); my ( $tag, $subf ) = GetMarcFromKohaField( 'biblio.serial', $bib->{'frameworkcode'} ); @@ -2161,6 +2176,40 @@ sub in_array { # used in next sub down return 0; } +=head2 GetSubscriptionsFromBorrower + +($count,@routinglist) = GetSubscriptionsFromBorrower($borrowernumber) + +this gets the info from subscriptionroutinglist for each $subscriptionid + +return : +a count of the serial subscription routing lists to which a patron belongs, +with the titles of those serial subscriptions as an array. Each element of the array +contains a hash_ref with subscriptionID and title of subscription. + +=cut + +sub GetSubscriptionsFromBorrower { + my ($borrowernumber) = @_; + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare( + "SELECT subscription.subscriptionid, biblio.title + FROM subscription + JOIN biblio ON biblio.biblionumber = subscription.biblionumber + JOIN subscriptionroutinglist USING (subscriptionid) + WHERE subscriptionroutinglist.borrowernumber = ? ORDER BY title ASC + " + ); + $sth->execute($borrowernumber); + my @routinglist; + my $count = 0; + while ( my $line = $sth->fetchrow_hashref ) { + $count++; + push( @routinglist, $line ); + } + return ( $count, @routinglist ); +} + =head2 GetNextDate $resultdate = GetNextDate($planneddate,$subscription)