diff --git a/C4/Acquisitions.pm b/C4/Acquisitions.pm
index 228c7a670f..11e7c995f1 100644
--- a/C4/Acquisitions.pm
+++ b/C4/Acquisitions.pm
@@ -3,6 +3,8 @@ package C4::Acquisitions; #assumes C4/Acquisitions.pm
use strict;
require Exporter;
use C4::Database;
+#use C4::Biblio;
+
use warnings;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
@@ -10,16 +12,17 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
$VERSION = 0.01;
@ISA = qw(Exporter);
-@EXPORT = qw(&getorders &bookseller &breakdown &basket &newbasket &bookfunds
-&ordersearch &newbiblio &newbiblioitem &newsubject &newsubtitle &neworder
- &newordernum &modbiblio &modorder &getsingleorder &invoice &receiveorder
-&bookfundbreakdown &curconvert &updatesup &insertsup &newitems &modbibitem
-&getcurrencies &modsubtitle &modsubject &modaddauthor &moditem &countitems
-&findall &needsmod &delitem &delbibitem &delbiblio &delorder &branches
-&getallorders &getrecorders &updatecurrencies &getorder &getcurrency &updaterecorder
-&updatecost &checkitems &modnote &getitemtypes &getbiblio
-&getbiblioitem &getitemsbybiblioitem &isbnsearch &keywordsearch
-&websitesearch &addwebsite &updatewebsite &deletewebsite);
+@EXPORT = qw(
+ &getorders &bookseller &breakdown &basket &newbasket &bookfunds
+ &ordersearch &neworder &newordernum
+ &modorder &getsingleorder &invoice &receiveorder
+ &delorder
+ &bookfundbreakdown &curconvert &updatesup &insertsup
+ &getcurrencies
+ &branches &getallorders &getrecorders &updatecurrencies
+ &getorder &getcurrency &updaterecorder
+
+);
%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
# your exported package globals go here,
@@ -385,306 +388,6 @@ sub bookfundbreakdown {
}
-# Create a new biblio entry
-sub newbiblio {
- my ($biblio) = @_; # input is ref to hash of fields
- my ($bibnum,$error); # return resulting biblio number
-
- $error="";
-
- my $dbh = &C4Connect;
-
- # Get next biblionumber in sequence
- my $query = "Select max(biblionumber) from biblio";
- my $sth = $dbh->prepare($query);
- $sth->execute;
- my $data = $sth->fetchrow_arrayref;
- $bibnum = $$data[0] + 1;
-
- my $serial; # is this item part of a series?
-
- if ($biblio->{'seriestitle'}) { $serial = 1 } else { $serial = 0 };
-
- $sth->finish;
- $query = "insert into biblio set
- biblionumber = ?,
- title = ?,
- author = ?,
- copyrightdate = ?,
- serial = ?,
- seriestitle = ?,
- notes = ? ";
-
-# print $query;
- $sth = $dbh->prepare($query);
- if ( $sth->execute(
- $bibnum,
- $biblio->{'title'},
- $biblio->{'author'},
- $biblio->{'copyright'},
- $serial,
- $biblio->{'seriestitle'} ,
- $biblio->{'notes'}
- ) ) {
- $error='';
- } else {
- $error=$sth->errstr;
- $bibnum = "";
- } # if exec error
-
- $sth->finish;
- $dbh->disconnect;
-
- return($bibnum,$error);
-}
-
-sub modbiblio {
- my ($bibnum,$title,$author,$copyright,$seriestitle,$serial,$unititle,$notes)=@_;
- my $dbh=C4Connect;
- my $query = "Update biblio set
-title = '$title',
-author = '$author',
-copyrightdate = '$copyright',
-seriestitle = '$seriestitle',
-serial = '$serial',
-unititle = '$unititle',
-notes = '$notes'
-where biblionumber = $bibnum";
- my $sth=$dbh->prepare($query);
-
- $sth->execute;
-
- $sth->finish;
- $dbh->disconnect;
- return($bibnum);
-}
-
-sub modsubtitle {
- my ($bibnum,$subtitle)=@_;
- my $dbh=C4Connect;
- my $query="update bibliosubtitle set subtitle='$subtitle' where biblionumber=$bibnum";
- my $sth=$dbh->prepare($query);
- $sth->execute;
- $sth->finish;
- $dbh->disconnect;
-}
-
-sub modaddauthor {
- my ($bibnum,$author)=@_;
- my $dbh=C4Connect;
- my $query="Delete from additionalauthors where biblionumber=$bibnum";
- my $sth=$dbh->prepare($query);
-
- $sth->execute;
- $sth->finish;
-
- if ($author ne ''){
- $query = "Insert into additionalauthors set
-author = '$author',
-biblionumber = '$bibnum'";
- $sth=$dbh->prepare($query);
-
- $sth->execute;
-
- $sth->finish;
- } # if
-
- $dbh->disconnect;
-} # sub modaddauthor
-
-
-sub modsubject {
- my ($bibnum,$force,@subject)=@_;
- my $dbh=C4Connect;
- my $count=@subject;
- my $error;
- for (my $i=0;$i<$count;$i++){
- $subject[$i]=~ s/^ //g;
- $subject[$i]=~ s/ $//g;
- my $query = "select * from catalogueentry
-where entrytype = 's'
-and catalogueentry = '$subject[$i]'";
- my $sth=$dbh->prepare($query);
- $sth->execute;
-
- if (my $data = $sth->fetchrow_hashref) {
- } else {
- if ($force eq $subject[$i]){
-
- #subject not in aut, chosen to force anway
- #so insert into cataloguentry so its in auth file
- $query = "Insert into catalogueentry
-(entrytype,catalogueentry)
- values ('s','$subject[$i]')";
- my $sth2=$dbh->prepare($query);
-
- $sth2->execute;
- $sth2->finish;
-
- } else {
-
- $error="$subject[$i]\n does not exist in the subject authority file";
- $query = "Select * from catalogueentry
-where entrytype = 's'
-and (catalogueentry like '$subject[$i] %'
-or catalogueentry like '% $subject[$i] %'
-or catalogueentry like '% $subject[$i]')";
- my $sth2=$dbh->prepare($query);
-
- $sth2->execute;
- while (my $data=$sth2->fetchrow_hashref){
- $error=$error."
$data->{'catalogueentry'}";
- } # while
- $sth2->finish;
- } # else
- } # else
- $sth->finish;
- } # else
-
- if ($error eq ''){
- my $query="Delete from bibliosubject where biblionumber=$bibnum";
- my $sth=$dbh->prepare($query);
-
- $sth->execute;
- $sth->finish;
-
- for (my $i=0;$i<$count;$i++){
- $sth = $dbh->prepare("Insert into bibliosubject
-values ('$subject[$i]', $bibnum)");
-
- $sth->execute;
- $sth->finish;
- } # for
- } # if
-
- $dbh->disconnect;
- return($error);
-} # sub modsubject
-
-sub modbibitem {
- my ($bibitemnum,$itemtype,$isbn,$publishercode,$publicationdate,$classification,$dewey,$subclass,$illus,$pages,$volumeddesc,$notes,$size,$place)=@_;
- my $dbh=C4Connect;
- my $query="update biblioitems set itemtype='$itemtype',
- isbn='$isbn',publishercode='$publishercode',publicationyear='$publicationdate',
- classification='$classification',dewey='$dewey',subclass='$subclass',illus='$illus',
- pages='$pages',volumeddesc='$volumeddesc',notes='$notes',size='$size',place='$place'
- where
- biblioitemnumber=$bibitemnum";
- my $sth=$dbh->prepare($query);
-# print $query;
- $sth->execute;
- $sth->finish;
- $dbh->disconnect;
-}
-
-sub modnote {
- my ($bibitemnum,$note)=@_;
- my $dbh=C4Connect;
- my $query="update biblioitems set notes='$note' where
- biblioitemnumber='$bibitemnum'";
- my $sth=$dbh->prepare($query);
- $sth->execute;
- $sth->finish;
- $dbh->disconnect;
-}
-
-sub newbiblioitem {
- my ($biblioitem) = @_;
- my $dbh = C4Connect;
- my $data;
- my $bibitemnum;
- my $error;
-
- # Get next unused number
- my $query = "Select max(biblioitemnumber) from biblioitems";
- my $sth = $dbh->prepare($query);
- $sth->execute;
- $data = $sth->fetchrow_arrayref;
- $bibitemnum = $$data[0] + 1;
- $sth->finish;
-
- $query = "insert into biblioitems set
- biblioitemnumber = ?,
- biblionumber = ?,
- volume = ?,
- number = ?,
- classification = ?,
- itemtype = ?,
- url = ?,
- isbn = ?,
- issn = ?,
- lccn = ?,
- dewey = ?,
- subclass = ?,
- publicationyear = ?,
- publishercode = ?,
- volumedate = ?,
- volumeddesc = ?,
- illus = ?,
- pages = ?,
- notes = ?,
- size = ?,
- marc = ?,
- place = ? ";
-
- $sth = $dbh->prepare($query);
- $sth->execute(
- $bibitemnum,
- $biblioitem->{'biblionumber'},
- $biblioitem->{'volume'},
- $biblioitem->{'number'},
- $biblioitem->{'classification'},
- $biblioitem->{'itemtype'},
- $biblioitem->{'url'},
- $biblioitem->{'isbn'},
- $biblioitem->{'issn'},
- $biblioitem->{'lccn'},
- $biblioitem->{'dewey'},
- $biblioitem->{'subclass'},
- $biblioitem->{'publicationyear'},
- $biblioitem->{'publishercode'},
- $biblioitem->{'volumedate'},
- $biblioitem->{'volumeddesc'},
- $biblioitem->{'illus'},
- $biblioitem->{'pages'},
- $biblioitem->{'notes'},
- $biblioitem->{'size'},
- $biblioitem->{'marc'},
- $biblioitem->{'place'},
- ) or $error=$sth->errstr;
-
- $sth->finish;
- $dbh->disconnect;
- return($bibitemnum);
-} # sub newbiblioitem
-
-sub newsubject {
- my ($bibnum)=@_;
- my $dbh=C4Connect;
- my $query="insert into bibliosubject (biblionumber) values
- ($bibnum)";
- my $sth=$dbh->prepare($query);
-# print $query;
- $sth->execute;
- $sth->finish;
- $dbh->disconnect;
-}
-
-sub newsubtitle {
- my ($bibnum, $subtitle) = @_;
- my $dbh = C4Connect;
- $subtitle = $dbh->quote($subtitle);
- my $query = "insert into bibliosubtitle set
-biblionumber = $bibnum,
-subtitle = $subtitle";
- my $sth = $dbh->prepare($query);
-
- $sth->execute;
-
- $sth->finish;
- $dbh->disconnect;
-}
-
sub neworder {
my ($bibnum,$title,$ordnum,$basket,$quantity,$listprice,$supplier,$who,$notes,$bookfund,$bibitemnum,$rrp,$ecost,$gst,$budget,$cost,$sub,$invoice)=@_;
if ($budget eq 'now'){
@@ -918,489 +621,4 @@ sub insertsup {
}
-sub newitems {
- my ($item, @barcodes) = @_;
- my $dbh=C4Connect;
- my $query = "Select max(itemnumber) from items";
- my $sth = $dbh->prepare($query);
- my $data;
- my $itemnumber;
- my $error;
-
- $sth->execute;
- $data = $sth->fetchrow_hashref;
- $itemnumber = $data->{'max(itemnumber)'} + 1;
- $sth->finish;
-
- $item->{'booksellerid'} = $dbh->quote($item->{'bookselletid'});
- $item->{'homebranch'} = $dbh->quote($item->{'homebranch'});
- $item->{'price'} = $dbh->quote($item->{'price'});
- $item->{'replacementprice'} = $dbh->quote($item->{'replacementprice'});
- $item->{'itemnotes'} = $dbh->quote($item->{'itemnotes'});
-
- foreach my $barcode (@barcodes) {
- $barcode = uc($barcode);
- $query = "Insert into items set
-itemnumber = $itemnumber,
-biblionumber = $item->{'biblionumber'},
-biblioitemnumber = $item->{'biblioitemnumber'},
-barcode = $barcode,
-booksellerid = $item->{'booksellerid'},
-dateaccessioned = NOW(),
-homebranch = $item->{'homebranch'},
-holdingbranch = $item->{'homebranch'},
-price = $item->{'price'},
-replacementprice = $item->{'replacementprice'},
-replacementpricedate = NOW(),
-itemnotes = $item->{'itemnotes'}";
-
- if ($item->{'loan'}) {
- $query .= ",
-notforloan = $item->{'loan'}";
- } # if
-
- $sth = $dbh->prepare($query);
- $sth->execute;
-
- $error=$sth->errstr;
-
- $sth->finish;
- $itemnumber++;
- } # for
-
- $dbh->disconnect;
- return($error);
-}
-
-sub checkitems{
- my ($count,@barcodes)=@_;
- my $dbh=C4Connect;
- my $error;
- for (my $i=0;$i<$count;$i++){
- $barcodes[$i]=uc $barcodes[$i];
- my $query="Select * from items where barcode='$barcodes[$i]'";
- my $sth=$dbh->prepare($query);
- $sth->execute;
- if (my $data=$sth->fetchrow_hashref){
- $error.=" Duplicate Barcode: $barcodes[$i]";
- }
- $sth->finish;
- }
- $dbh->disconnect;
- return($error);
-}
-
-sub moditem {
- my ($loan,$itemnum,$bibitemnum,$barcode,$notes,$homebranch,$lost,$wthdrawn,$replacement)=@_;
- my $dbh=C4Connect;
- my $query="update items set biblioitemnumber=$bibitemnum,
- barcode='$barcode',itemnotes='$notes'
- where itemnumber=$itemnum";
- if ($barcode eq ''){
- $query="update items set biblioitemnumber=$bibitemnum,notforloan=$loan where itemnumber=$itemnum";
- }
- if ($lost ne ''){
- $query="update items set biblioitemnumber=$bibitemnum,
- barcode='$barcode',itemnotes='$notes',homebranch='$homebranch',
- itemlost='$lost',wthdrawn='$wthdrawn' where itemnumber=$itemnum";
- }
- if ($replacement ne ''){
- $query=~ s/ where/,replacementprice='$replacement' where/;
- }
-
- my $sth=$dbh->prepare($query);
- $sth->execute;
- $sth->finish;
- $dbh->disconnect;
-}
-
-sub updatecost{
- my($price,$rrp,$itemnum)=@_;
- my $dbh=C4Connect;
- my $query="update items set price='$price',replacementprice='$rrp'
- where itemnumber=$itemnum";
- my $sth=$dbh->prepare($query);
- $sth->execute;
- $sth->finish;
- $dbh->disconnect;
-}
-sub countitems{
- my ($bibitemnum)=@_;
- my $dbh=C4Connect;
- my $query="Select count(*) from items where biblioitemnumber='$bibitemnum'";
- my $sth=$dbh->prepare($query);
- $sth->execute;
- my $data=$sth->fetchrow_hashref;
- $sth->finish;
- $dbh->disconnect;
- return($data->{'count(*)'});
-}
-
-sub findall {
- my ($biblionumber)=@_;
- my $dbh=C4Connect;
- my $query="Select * from biblioitems,items,itemtypes where
- biblioitems.biblionumber=$biblionumber
- and biblioitems.biblioitemnumber=items.biblioitemnumber and
- itemtypes.itemtype=biblioitems.itemtype
- order by items.biblioitemnumber";
- my $sth=$dbh->prepare($query);
- $sth->execute;
- my @results;
- my $i;
- while (my $data=$sth->fetchrow_hashref){
- $results[$i]=$data;
- $i++;
- }
- $sth->finish;
- $dbh->disconnect;
- return(@results);
-}
-
-sub needsmod{
- my ($bibitemnum,$itemtype)=@_;
- my $dbh=C4Connect;
- my $query="Select * from biblioitems where biblioitemnumber=$bibitemnum
- and itemtype='$itemtype'";
- my $sth=$dbh->prepare($query);
- $sth->execute;
- my $result=0;
- if (my $data=$sth->fetchrow_hashref){
- $result=1;
- }
- $sth->finish;
- $dbh->disconnect;
- return($result);
-}
-
-sub delitem{
- my ($itemnum)=@_;
- my $dbh=C4Connect;
- my $query="select * from items where itemnumber=$itemnum";
- my $sth=$dbh->prepare($query);
- $sth->execute;
- my @data=$sth->fetchrow_array;
- $sth->finish;
- $query="Insert into deleteditems values (";
- foreach my $temp (@data){
- $query=$query."'$temp',";
- }
- $query=~ s/\,$/\)/;
-# print $query;
- $sth=$dbh->prepare($query);
- $sth->execute;
- $sth->finish;
- $query = "Delete from items where itemnumber=$itemnum";
- $sth=$dbh->prepare($query);
- $sth->execute;
- $sth->finish;
- $dbh->disconnect;
-}
-
-sub delbibitem{
- my ($itemnum)=@_;
- my $dbh=C4Connect;
- my $query="select * from biblioitems where biblioitemnumber=$itemnum";
- my $sth=$dbh->prepare($query);
- $sth->execute;
- if (my @data=$sth->fetchrow_array){
- $sth->finish;
- $query="Insert into deletedbiblioitems values (";
- foreach my $temp (@data){
- $temp=~ s/\'/\\\'/g;
- $query=$query."'$temp',";
- }
- $query=~ s/\,$/\)/;
-# print $query;
- $sth=$dbh->prepare($query);
- $sth->execute;
- $sth->finish;
- $query = "Delete from biblioitems where biblioitemnumber=$itemnum";
- $sth=$dbh->prepare($query);
- $sth->execute;
- $sth->finish;
- }
- $sth->finish;
- $dbh->disconnect;
-}
-
-sub delbiblio{
- my ($biblio)=@_;
- my $dbh=C4Connect;
- my $query="select * from biblio where biblionumber=$biblio";
- my $sth=$dbh->prepare($query);
- $sth->execute;
- if (my @data=$sth->fetchrow_array){
- $sth->finish;
- $query="Insert into deletedbiblio values (";
- foreach my $temp (@data){
- $temp=~ s/\'/\\\'/g;
- $query=$query."'$temp',";
- }
- $query=~ s/\,$/\)/;
-# print $query;
- $sth=$dbh->prepare($query);
- $sth->execute;
- $sth->finish;
- $query = "Delete from biblio where biblionumber=$biblio";
- $sth=$dbh->prepare($query);
- $sth->execute;
- $sth->finish;
- }
-
- $sth->finish;
- $dbh->disconnect;
-}
-
-sub getitemtypes {
- my $dbh = C4Connect;
- my $query = "select * from itemtypes";
- my $sth = $dbh->prepare($query);
- # || die "Cannot prepare $query" . $dbh->errstr;
- my $count = 0;
- my @results;
-
- $sth->execute;
- # || die "Cannot execute $query\n" . $sth->errstr;
- while (my $data = $sth->fetchrow_hashref) {
- $results[$count] = $data;
- $count++;
- } # while
-
- $sth->finish;
- $dbh->disconnect;
- return($count, @results);
-} # sub getitemtypes
-
-
-sub getbiblio {
- my ($biblionumber) = @_;
- my $dbh = C4Connect;
- my $query = "Select * from biblio where biblionumber = $biblionumber";
- my $sth = $dbh->prepare($query);
- # || die "Cannot prepare $query\n" . $dbh->errstr;
- my $count = 0;
- my @results;
-
- $sth->execute;
- # || die "Cannot execute $query\n" . $sth->errstr;
- while (my $data = $sth->fetchrow_hashref) {
- $results[$count] = $data;
- $count++;
- } # while
-
- $sth->finish;
- $dbh->disconnect;
- return($count, @results);
-} # sub getbiblio
-
-
-sub getbiblioitem {
- my ($biblioitemnum) = @_;
- my $dbh = C4Connect;
- my $query = "Select * from biblioitems where
-biblioitemnumber = $biblioitemnum";
- my $sth = $dbh->prepare($query);
- my $count = 0;
- my @results;
-
- $sth->execute;
-
- while (my $data = $sth->fetchrow_hashref) {
- $results[$count] = $data;
- $count++;
- } # while
-
- $sth->finish;
- $dbh->disconnect;
- return($count, @results);
-} # sub getbiblioitem
-
-
-sub getitemsbybiblioitem {
- my ($biblioitemnum) = @_;
- my $dbh = C4Connect;
- my $query = "Select * from items, biblio where
-biblio.biblionumber = items.biblionumber and biblioitemnumber
-= $biblioitemnum";
- my $sth = $dbh->prepare($query);
- # || die "Cannot prepare $query\n" . $dbh->errstr;
- my $count = 0;
- my @results;
-
- $sth->execute;
- # || die "Cannot execute $query\n" . $sth->errstr;
- while (my $data = $sth->fetchrow_hashref) {
- $results[$count] = $data;
- $count++;
- } # while
-
- $sth->finish;
- $dbh->disconnect;
- return($count, @results);
-} # sub getitemsbybiblioitem
-
-
-sub isbnsearch {
- my ($isbn) = @_;
- my $dbh = C4Connect;
- my $count = 0;
- my $query;
- my $sth;
- my @results;
-
- $isbn = $dbh->quote($isbn);
- $query = "Select * from biblioitems where isbn = $isbn";
- $sth = $dbh->prepare($query);
-
- $sth->execute;
- while (my $data = $sth->fetchrow_hashref) {
- $results[$count] = $data;
- $count++;
- } # while
-
- $sth->finish;
- $dbh->disconnect;
- return($count, @results);
-} # sub isbnsearch
-
-
-sub keywordsearch {
- my ($keywordlist) = @_;
- my $dbh = C4Connect;
- my $query = "Select * from biblio where";
- my $count = 0;
- my $sth;
- my @results;
- my @keywords = split(/ +/, $keywordlist);
- my $keyword = shift(@keywords);
-
- $keyword =~ s/%/\\%/g;
- $keyword =~ s/_/\\_/;
- $keyword = "%" . $keyword . "%";
- $keyword = $dbh->quote($keyword);
- $query .= " (author like $keyword) or
-(title like $keyword) or (unititle like $keyword) or
-(notes like $keyword) or (seriestitle like $keyword) or
-(abstract like $keyword)";
-
- foreach $keyword (@keywords) {
- $keyword =~ s/%/\\%/;
- $keyword =~ s/_/\\_/;
- $keyword = "%" . $keyword . "%";
- $keyword = $dbh->quote($keyword);
- $query .= " or (author like $keyword) or
-(title like $keyword) or (unititle like $keyword) or
-(notes like $keyword) or (seriestitle like $keyword) or
-(abstract like $keyword)";
- } # foreach
-
- $sth = $dbh->prepare($query);
- $sth->execute;
-
- while (my $data = $sth->fetchrow_hashref) {
- $results[$count] = $data;
- $count++;
- } # while
-
- $sth->finish;
- $dbh->disconnect;
- return($count, @results);
-} # sub keywordsearch
-
-
-sub websitesearch {
- my ($keywordlist) = @_;
- my $dbh = C4Connect;
- my $query = "Select distinct biblio.* from biblio, biblioitems where
-biblio.biblionumber = biblioitems.biblionumber and (";
- my $count = 0;
- my $sth;
- my @results;
- my @keywords = split(/ +/, $keywordlist);
- my $keyword = shift(@keywords);
-
- $keyword =~ s/%/\\%/g;
- $keyword =~ s/_/\\_/;
- $keyword = "%" . $keyword . "%";
- $keyword = $dbh->quote($keyword);
- $query .= " (url like $keyword)";
-
- foreach $keyword (@keywords) {
- $keyword =~ s/%/\\%/;
- $keyword =~ s/_/\\_/;
- $keyword = "%" . $keyword . "%";
- $keyword = $dbh->quote($keyword);
- $query .= " or (url like $keyword)";
- } # foreach
-
- $query .= ")";
- $sth = $dbh->prepare($query);
- $sth->execute;
-
- while (my $data = $sth->fetchrow_hashref) {
- $results[$count] = $data;
- $count++;
- } # while
-
- $sth->finish;
- $dbh->disconnect;
- return($count, @results);
-} # sub websitesearch
-
-
-sub addwebsite {
- my ($website) = @_;
- my $dbh = C4Connect;
- my $query;
-
- $website->{'biblionumber'} = $dbh->quote($website->{'biblionumber'});
- $website->{'title'} = $dbh->quote($website->{'title'});
- $website->{'description'} = $dbh->quote($website->{'description'});
- $website->{'url'} = $dbh->quote($website->{'url'});
-
- $query = "Insert into websites set
-biblionumber = $website->{'biblionumber'},
-title = $website->{'title'},
-description = $website->{'description'},
-url = $website->{'url'}";
-
- $dbh->do($query);
-
- $dbh->disconnect;
-} # sub website
-
-
-sub updatewebsite {
- my ($website) = @_;
- my $dbh = C4Connect;
- my $query;
-
- $website->{'title'} = $dbh->quote($website->{'title'});
- $website->{'description'} = $dbh->quote($website->{'description'});
- $website->{'url'} = $dbh->quote($website->{'url'});
-
- $query = "Update websites set
-title = $website->{'title'},
-description = $website->{'description'},
-url = $website->{'url'}
-where websitenumber = $website->{'websitenumber'}";
-
- $dbh->do($query);
-
- $dbh->disconnect;
-} # sub updatewebsite
-
-
-sub deletewebsite {
- my ($websitenumber) = @_;
- my $dbh = C4Connect;
- my $query = "Delete from websites where websitenumber = $websitenumber";
-
- $dbh->do($query);
-
- $dbh->disconnect;
-} # sub deletewebsite
-
-
END { } # module clean-up code here (global destructor)
diff --git a/C4/Biblio.pm b/C4/Biblio.pm
new file mode 100644
index 0000000000..09165d7c88
--- /dev/null
+++ b/C4/Biblio.pm
@@ -0,0 +1,847 @@
+package C4::Biblio; #assumes C4/Biblio.pm
+
+use strict;
+require Exporter;
+use C4::Database;
+
+use warnings;
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
+
+# set the version for version checking
+$VERSION = 0.01;
+
+@ISA = qw(Exporter);
+@EXPORT = qw(
+ &newbiblio &newbiblioitem &newsubject &newsubtitle
+ &modbiblio &newitems &modbibitem
+ &modsubtitle &modsubject &modaddauthor &moditem &countitems
+ &delitem &delbibitem &delbiblio
+ &checkitems &modnote &getitemtypes &getbiblio
+ &findall &needsmod &updatecost
+ &getbiblioitem &getitemsbybiblioitem &isbnsearch &keywordsearch
+ &websitesearch &addwebsite &updatewebsite &deletewebsite
+);
+%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
+
+# your exported package globals go here,
+# as well as any optionally exported functions
+
+@EXPORT_OK = qw($Var1 %Hashit);
+
+
+# non-exported package globals go here
+use vars qw(@more $stuff);
+
+# initalize package globals, first exported ones
+
+my $Var1 = '';
+my %Hashit = ();
+
+
+
+# then the others (which are still accessible as $Some::Module::stuff)
+my $stuff = '';
+my @more = ();
+
+# all file-scoped lexicals must be created before
+# the functions below that use them.
+
+# file-private lexicals go here
+my $priv_var = '';
+my %secret_hash = ();
+
+# here's a file-private function as a closure,
+# callable as &$priv_func; it cannot be prototyped.
+my $priv_func = sub {
+ # stuff goes here.
+ };
+
+# make all your functions, whether exported or not;
+#------------------------------------------------
+
+# Create a new biblio entry
+sub newbiblio {
+ my ($biblio) = @_; # input is ref to hash of fields
+ my ($bibnum,$error); # return resulting biblio number
+
+ $error="";
+
+ my $dbh = &C4Connect;
+
+ # Get next biblionumber in sequence
+ my $query = "Select max(biblionumber) from biblio";
+ my $sth = $dbh->prepare($query);
+ $sth->execute;
+ my $data = $sth->fetchrow_arrayref;
+ $bibnum = $$data[0] + 1;
+
+ my $serial; # is this item part of a series?
+
+ if ($biblio->{'seriestitle'}) { $serial = 1 } else { $serial = 0 };
+
+ $sth->finish;
+ $query = "insert into biblio set
+ biblionumber = ?,
+ title = ?,
+ author = ?,
+ copyrightdate = ?,
+ serial = ?,
+ seriestitle = ?,
+ notes = ? ";
+
+# print $query;
+ $sth = $dbh->prepare($query);
+ if ( $sth->execute(
+ $bibnum,
+ $biblio->{'title'},
+ $biblio->{'author'},
+ $biblio->{'copyright'},
+ $serial,
+ $biblio->{'seriestitle'} ,
+ $biblio->{'notes'}
+ ) ) {
+ $error='';
+ } else {
+ $error=$sth->errstr;
+ $bibnum = "";
+ } # if exec error
+
+ $sth->finish;
+ $dbh->disconnect;
+
+ return($bibnum,$error);
+}
+
+sub modbiblio {
+ my ($bibnum,$title,$author,$copyright,$seriestitle,$serial,$unititle,$notes)=@_;
+ my $dbh=C4Connect;
+ my $query = "Update biblio set
+title = '$title',
+author = '$author',
+copyrightdate = '$copyright',
+seriestitle = '$seriestitle',
+serial = '$serial',
+unititle = '$unititle',
+notes = '$notes'
+where biblionumber = $bibnum";
+ my $sth=$dbh->prepare($query);
+
+ $sth->execute;
+
+ $sth->finish;
+ $dbh->disconnect;
+ return($bibnum);
+}
+
+sub modsubtitle {
+ my ($bibnum,$subtitle)=@_;
+ my $dbh=C4Connect;
+ my $query="update bibliosubtitle set subtitle='$subtitle' where biblionumber=$bibnum";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ $sth->finish;
+ $dbh->disconnect;
+}
+
+sub modaddauthor {
+ my ($bibnum,$author)=@_;
+ my $dbh=C4Connect;
+ my $query="Delete from additionalauthors where biblionumber=$bibnum";
+ my $sth=$dbh->prepare($query);
+
+ $sth->execute;
+ $sth->finish;
+
+ if ($author ne ''){
+ $query = "Insert into additionalauthors set
+author = '$author',
+biblionumber = '$bibnum'";
+ $sth=$dbh->prepare($query);
+
+ $sth->execute;
+
+ $sth->finish;
+ } # if
+
+ $dbh->disconnect;
+} # sub modaddauthor
+
+
+sub modsubject {
+ my ($bibnum,$force,@subject)=@_;
+ my $dbh=C4Connect;
+ my $count=@subject;
+ my $error;
+ for (my $i=0;$i<$count;$i++){
+ $subject[$i]=~ s/^ //g;
+ $subject[$i]=~ s/ $//g;
+ my $query = "select * from catalogueentry
+where entrytype = 's'
+and catalogueentry = '$subject[$i]'";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+
+ if (my $data = $sth->fetchrow_hashref) {
+ } else {
+ if ($force eq $subject[$i]){
+
+ #subject not in aut, chosen to force anway
+ #so insert into cataloguentry so its in auth file
+ $query = "Insert into catalogueentry
+(entrytype,catalogueentry)
+ values ('s','$subject[$i]')";
+ my $sth2=$dbh->prepare($query);
+
+ $sth2->execute;
+ $sth2->finish;
+
+ } else {
+
+ $error="$subject[$i]\n does not exist in the subject authority file";
+ $query = "Select * from catalogueentry
+where entrytype = 's'
+and (catalogueentry like '$subject[$i] %'
+or catalogueentry like '% $subject[$i] %'
+or catalogueentry like '% $subject[$i]')";
+ my $sth2=$dbh->prepare($query);
+
+ $sth2->execute;
+ while (my $data=$sth2->fetchrow_hashref){
+ $error=$error."
$data->{'catalogueentry'}";
+ } # while
+ $sth2->finish;
+ } # else
+ } # else
+ $sth->finish;
+ } # else
+
+ if ($error eq ''){
+ my $query="Delete from bibliosubject where biblionumber=$bibnum";
+ my $sth=$dbh->prepare($query);
+
+ $sth->execute;
+ $sth->finish;
+
+ for (my $i=0;$i<$count;$i++){
+ $sth = $dbh->prepare("Insert into bibliosubject
+values ('$subject[$i]', $bibnum)");
+
+ $sth->execute;
+ $sth->finish;
+ } # for
+ } # if
+
+ $dbh->disconnect;
+ return($error);
+} # sub modsubject
+
+sub modbibitem {
+ my ($bibitemnum,$itemtype,$isbn,$publishercode,$publicationdate,$classification,$dewey,$subclass,$illus,$pages,$volumeddesc,$notes,$size,$place)=@_;
+ my $dbh=C4Connect;
+ my $query="update biblioitems set itemtype='$itemtype',
+ isbn='$isbn',publishercode='$publishercode',publicationyear='$publicationdate',
+ classification='$classification',dewey='$dewey',subclass='$subclass',illus='$illus',
+ pages='$pages',volumeddesc='$volumeddesc',notes='$notes',size='$size',place='$place'
+ where
+ biblioitemnumber=$bibitemnum";
+ my $sth=$dbh->prepare($query);
+# print $query;
+ $sth->execute;
+ $sth->finish;
+ $dbh->disconnect;
+}
+
+sub modnote {
+ my ($bibitemnum,$note)=@_;
+ my $dbh=C4Connect;
+ my $query="update biblioitems set notes='$note' where
+ biblioitemnumber='$bibitemnum'";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ $sth->finish;
+ $dbh->disconnect;
+}
+
+sub newbiblioitem {
+ my ($biblioitem) = @_;
+ my $dbh = C4Connect;
+ my $data;
+ my $bibitemnum;
+ my $error;
+
+ # Get next unused number
+ my $query = "Select max(biblioitemnumber) from biblioitems";
+ my $sth = $dbh->prepare($query);
+ $sth->execute;
+ $data = $sth->fetchrow_arrayref;
+ $bibitemnum = $$data[0] + 1;
+ $sth->finish;
+
+ $query = "insert into biblioitems set
+ biblioitemnumber = ?,
+ biblionumber = ?,
+ volume = ?,
+ number = ?,
+ classification = ?,
+ itemtype = ?,
+ url = ?,
+ isbn = ?,
+ issn = ?,
+ lccn = ?,
+ dewey = ?,
+ subclass = ?,
+ publicationyear = ?,
+ publishercode = ?,
+ volumedate = ?,
+ volumeddesc = ?,
+ illus = ?,
+ pages = ?,
+ notes = ?,
+ size = ?,
+ marc = ?,
+ place = ? ";
+
+ $sth = $dbh->prepare($query);
+ $sth->execute(
+ $bibitemnum,
+ $biblioitem->{'biblionumber'},
+ $biblioitem->{'volume'},
+ $biblioitem->{'number'},
+ $biblioitem->{'classification'},
+ $biblioitem->{'itemtype'},
+ $biblioitem->{'url'},
+ $biblioitem->{'isbn'},
+ $biblioitem->{'issn'},
+ $biblioitem->{'lccn'},
+ $biblioitem->{'dewey'},
+ $biblioitem->{'subclass'},
+ $biblioitem->{'publicationyear'},
+ $biblioitem->{'publishercode'},
+ $biblioitem->{'volumedate'},
+ $biblioitem->{'volumeddesc'},
+ $biblioitem->{'illus'},
+ $biblioitem->{'pages'},
+ $biblioitem->{'notes'},
+ $biblioitem->{'size'},
+ $biblioitem->{'marc'},
+ $biblioitem->{'place'},
+ ) or $error=$sth->errstr;
+
+ $sth->finish;
+ $dbh->disconnect;
+ return($bibitemnum);
+} # sub newbiblioitem
+
+sub newsubject {
+ my ($bibnum)=@_;
+ my $dbh=C4Connect;
+ my $query="insert into bibliosubject (biblionumber) values
+ ($bibnum)";
+ my $sth=$dbh->prepare($query);
+# print $query;
+ $sth->execute;
+ $sth->finish;
+ $dbh->disconnect;
+}
+
+sub newsubtitle {
+ my ($bibnum, $subtitle) = @_;
+ my $dbh = C4Connect;
+ $subtitle = $dbh->quote($subtitle);
+ my $query = "insert into bibliosubtitle set
+biblionumber = $bibnum,
+subtitle = $subtitle";
+ my $sth = $dbh->prepare($query);
+
+ $sth->execute;
+
+ $sth->finish;
+ $dbh->disconnect;
+}
+
+sub newitems {
+ my ($item, @barcodes) = @_;
+ my $dbh=C4Connect;
+ my $query = "Select max(itemnumber) from items";
+ my $sth = $dbh->prepare($query);
+ my $data;
+ my $itemnumber;
+ my $error;
+
+ $sth->execute;
+ $data = $sth->fetchrow_hashref;
+ $itemnumber = $data->{'max(itemnumber)'} + 1;
+ $sth->finish;
+
+ $item->{'booksellerid'} = $dbh->quote($item->{'bookselletid'});
+ $item->{'homebranch'} = $dbh->quote($item->{'homebranch'});
+ $item->{'price'} = $dbh->quote($item->{'price'});
+ $item->{'replacementprice'} = $dbh->quote($item->{'replacementprice'});
+ $item->{'itemnotes'} = $dbh->quote($item->{'itemnotes'});
+
+ foreach my $barcode (@barcodes) {
+ $barcode = uc($barcode);
+ $query = "Insert into items set
+itemnumber = $itemnumber,
+biblionumber = $item->{'biblionumber'},
+biblioitemnumber = $item->{'biblioitemnumber'},
+barcode = $barcode,
+booksellerid = $item->{'booksellerid'},
+dateaccessioned = NOW(),
+homebranch = $item->{'homebranch'},
+holdingbranch = $item->{'homebranch'},
+price = $item->{'price'},
+replacementprice = $item->{'replacementprice'},
+replacementpricedate = NOW(),
+itemnotes = $item->{'itemnotes'}";
+
+ if ($item->{'loan'}) {
+ $query .= ",
+notforloan = $item->{'loan'}";
+ } # if
+
+ $sth = $dbh->prepare($query);
+ $sth->execute;
+
+ $error=$sth->errstr;
+
+ $sth->finish;
+ $itemnumber++;
+ } # for
+
+ $dbh->disconnect;
+ return($error);
+}
+
+sub checkitems{
+ my ($count,@barcodes)=@_;
+ my $dbh=C4Connect;
+ my $error;
+ for (my $i=0;$i<$count;$i++){
+ $barcodes[$i]=uc $barcodes[$i];
+ my $query="Select * from items where barcode='$barcodes[$i]'";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ if (my $data=$sth->fetchrow_hashref){
+ $error.=" Duplicate Barcode: $barcodes[$i]";
+ }
+ $sth->finish;
+ }
+ $dbh->disconnect;
+ return($error);
+}
+
+sub moditem {
+ my ($loan,$itemnum,$bibitemnum,$barcode,$notes,$homebranch,$lost,$wthdrawn,$replacement)=@_;
+ my $dbh=C4Connect;
+ my $query="update items set biblioitemnumber=$bibitemnum,
+ barcode='$barcode',itemnotes='$notes'
+ where itemnumber=$itemnum";
+ if ($barcode eq ''){
+ $query="update items set biblioitemnumber=$bibitemnum,notforloan=$loan where itemnumber=$itemnum";
+ }
+ if ($lost ne ''){
+ $query="update items set biblioitemnumber=$bibitemnum,
+ barcode='$barcode',itemnotes='$notes',homebranch='$homebranch',
+ itemlost='$lost',wthdrawn='$wthdrawn' where itemnumber=$itemnum";
+ }
+ if ($replacement ne ''){
+ $query=~ s/ where/,replacementprice='$replacement' where/;
+ }
+
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ $sth->finish;
+ $dbh->disconnect;
+}
+
+sub updatecost{
+ my($price,$rrp,$itemnum)=@_;
+ my $dbh=C4Connect;
+ my $query="update items set price='$price',replacementprice='$rrp'
+ where itemnumber=$itemnum";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ $sth->finish;
+ $dbh->disconnect;
+}
+sub countitems{
+ my ($bibitemnum)=@_;
+ my $dbh=C4Connect;
+ my $query="Select count(*) from items where biblioitemnumber='$bibitemnum'";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ my $data=$sth->fetchrow_hashref;
+ $sth->finish;
+ $dbh->disconnect;
+ return($data->{'count(*)'});
+}
+
+sub findall {
+ my ($biblionumber)=@_;
+ my $dbh=C4Connect;
+ my $query="Select * from biblioitems,items,itemtypes where
+ biblioitems.biblionumber=$biblionumber
+ and biblioitems.biblioitemnumber=items.biblioitemnumber and
+ itemtypes.itemtype=biblioitems.itemtype
+ order by items.biblioitemnumber";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ my @results;
+ my $i;
+ while (my $data=$sth->fetchrow_hashref){
+ $results[$i]=$data;
+ $i++;
+ }
+ $sth->finish;
+ $dbh->disconnect;
+ return(@results);
+}
+
+sub needsmod{
+ my ($bibitemnum,$itemtype)=@_;
+ my $dbh=C4Connect;
+ my $query="Select * from biblioitems where biblioitemnumber=$bibitemnum
+ and itemtype='$itemtype'";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ my $result=0;
+ if (my $data=$sth->fetchrow_hashref){
+ $result=1;
+ }
+ $sth->finish;
+ $dbh->disconnect;
+ return($result);
+}
+
+sub delitem{
+ my ($itemnum)=@_;
+ my $dbh=C4Connect;
+ my $query="select * from items where itemnumber=$itemnum";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ my @data=$sth->fetchrow_array;
+ $sth->finish;
+ $query="Insert into deleteditems values (";
+ foreach my $temp (@data){
+ $query=$query."'$temp',";
+ }
+ $query=~ s/\,$/\)/;
+# print $query;
+ $sth=$dbh->prepare($query);
+ $sth->execute;
+ $sth->finish;
+ $query = "Delete from items where itemnumber=$itemnum";
+ $sth=$dbh->prepare($query);
+ $sth->execute;
+ $sth->finish;
+ $dbh->disconnect;
+}
+
+sub delbibitem{
+ my ($itemnum)=@_;
+ my $dbh=C4Connect;
+ my $query="select * from biblioitems where biblioitemnumber=$itemnum";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ if (my @data=$sth->fetchrow_array){
+ $sth->finish;
+ $query="Insert into deletedbiblioitems values (";
+ foreach my $temp (@data){
+ $temp=~ s/\'/\\\'/g;
+ $query=$query."'$temp',";
+ }
+ $query=~ s/\,$/\)/;
+# print $query;
+ $sth=$dbh->prepare($query);
+ $sth->execute;
+ $sth->finish;
+ $query = "Delete from biblioitems where biblioitemnumber=$itemnum";
+ $sth=$dbh->prepare($query);
+ $sth->execute;
+ $sth->finish;
+ }
+ $sth->finish;
+ $dbh->disconnect;
+}
+
+sub delbiblio{
+ my ($biblio)=@_;
+ my $dbh=C4Connect;
+ my $query="select * from biblio where biblionumber=$biblio";
+ my $sth=$dbh->prepare($query);
+ $sth->execute;
+ if (my @data=$sth->fetchrow_array){
+ $sth->finish;
+ $query="Insert into deletedbiblio values (";
+ foreach my $temp (@data){
+ $temp=~ s/\'/\\\'/g;
+ $query=$query."'$temp',";
+ }
+ $query=~ s/\,$/\)/;
+# print $query;
+ $sth=$dbh->prepare($query);
+ $sth->execute;
+ $sth->finish;
+ $query = "Delete from biblio where biblionumber=$biblio";
+ $sth=$dbh->prepare($query);
+ $sth->execute;
+ $sth->finish;
+ }
+
+ $sth->finish;
+ $dbh->disconnect;
+}
+
+sub getitemtypes {
+ my $dbh = C4Connect;
+ my $query = "select * from itemtypes";
+ my $sth = $dbh->prepare($query);
+ # || die "Cannot prepare $query" . $dbh->errstr;
+ my $count = 0;
+ my @results;
+
+ $sth->execute;
+ # || die "Cannot execute $query\n" . $sth->errstr;
+ while (my $data = $sth->fetchrow_hashref) {
+ $results[$count] = $data;
+ $count++;
+ } # while
+
+ $sth->finish;
+ $dbh->disconnect;
+ return($count, @results);
+} # sub getitemtypes
+
+
+sub getbiblio {
+ my ($biblionumber) = @_;
+ my $dbh = C4Connect;
+ my $query = "Select * from biblio where biblionumber = $biblionumber";
+ my $sth = $dbh->prepare($query);
+ # || die "Cannot prepare $query\n" . $dbh->errstr;
+ my $count = 0;
+ my @results;
+
+ $sth->execute;
+ # || die "Cannot execute $query\n" . $sth->errstr;
+ while (my $data = $sth->fetchrow_hashref) {
+ $results[$count] = $data;
+ $count++;
+ } # while
+
+ $sth->finish;
+ $dbh->disconnect;
+ return($count, @results);
+} # sub getbiblio
+
+
+sub getbiblioitem {
+ my ($biblioitemnum) = @_;
+ my $dbh = C4Connect;
+ my $query = "Select * from biblioitems where
+biblioitemnumber = $biblioitemnum";
+ my $sth = $dbh->prepare($query);
+ my $count = 0;
+ my @results;
+
+ $sth->execute;
+
+ while (my $data = $sth->fetchrow_hashref) {
+ $results[$count] = $data;
+ $count++;
+ } # while
+
+ $sth->finish;
+ $dbh->disconnect;
+ return($count, @results);
+} # sub getbiblioitem
+
+
+sub getitemsbybiblioitem {
+ my ($biblioitemnum) = @_;
+ my $dbh = C4Connect;
+ my $query = "Select * from items, biblio where
+biblio.biblionumber = items.biblionumber and biblioitemnumber
+= $biblioitemnum";
+ my $sth = $dbh->prepare($query);
+ # || die "Cannot prepare $query\n" . $dbh->errstr;
+ my $count = 0;
+ my @results;
+
+ $sth->execute;
+ # || die "Cannot execute $query\n" . $sth->errstr;
+ while (my $data = $sth->fetchrow_hashref) {
+ $results[$count] = $data;
+ $count++;
+ } # while
+
+ $sth->finish;
+ $dbh->disconnect;
+ return($count, @results);
+} # sub getitemsbybiblioitem
+
+
+sub isbnsearch {
+ my ($isbn) = @_;
+ my $dbh = C4Connect;
+ my $count = 0;
+ my $query;
+ my $sth;
+ my @results;
+
+ $isbn = $dbh->quote($isbn);
+ $query = "Select * from biblioitems where isbn = $isbn";
+ $sth = $dbh->prepare($query);
+
+ $sth->execute;
+ while (my $data = $sth->fetchrow_hashref) {
+ $results[$count] = $data;
+ $count++;
+ } # while
+
+ $sth->finish;
+ $dbh->disconnect;
+ return($count, @results);
+} # sub isbnsearch
+
+
+sub keywordsearch {
+ my ($keywordlist) = @_;
+ my $dbh = C4Connect;
+ my $query = "Select * from biblio where";
+ my $count = 0;
+ my $sth;
+ my @results;
+ my @keywords = split(/ +/, $keywordlist);
+ my $keyword = shift(@keywords);
+
+ $keyword =~ s/%/\\%/g;
+ $keyword =~ s/_/\\_/;
+ $keyword = "%" . $keyword . "%";
+ $keyword = $dbh->quote($keyword);
+ $query .= " (author like $keyword) or
+(title like $keyword) or (unititle like $keyword) or
+(notes like $keyword) or (seriestitle like $keyword) or
+(abstract like $keyword)";
+
+ foreach $keyword (@keywords) {
+ $keyword =~ s/%/\\%/;
+ $keyword =~ s/_/\\_/;
+ $keyword = "%" . $keyword . "%";
+ $keyword = $dbh->quote($keyword);
+ $query .= " or (author like $keyword) or
+(title like $keyword) or (unititle like $keyword) or
+(notes like $keyword) or (seriestitle like $keyword) or
+(abstract like $keyword)";
+ } # foreach
+
+ $sth = $dbh->prepare($query);
+ $sth->execute;
+
+ while (my $data = $sth->fetchrow_hashref) {
+ $results[$count] = $data;
+ $count++;
+ } # while
+
+ $sth->finish;
+ $dbh->disconnect;
+ return($count, @results);
+} # sub keywordsearch
+
+
+sub websitesearch {
+ my ($keywordlist) = @_;
+ my $dbh = C4Connect;
+ my $query = "Select distinct biblio.* from biblio, biblioitems where
+biblio.biblionumber = biblioitems.biblionumber and (";
+ my $count = 0;
+ my $sth;
+ my @results;
+ my @keywords = split(/ +/, $keywordlist);
+ my $keyword = shift(@keywords);
+
+ $keyword =~ s/%/\\%/g;
+ $keyword =~ s/_/\\_/;
+ $keyword = "%" . $keyword . "%";
+ $keyword = $dbh->quote($keyword);
+ $query .= " (url like $keyword)";
+
+ foreach $keyword (@keywords) {
+ $keyword =~ s/%/\\%/;
+ $keyword =~ s/_/\\_/;
+ $keyword = "%" . $keyword . "%";
+ $keyword = $dbh->quote($keyword);
+ $query .= " or (url like $keyword)";
+ } # foreach
+
+ $query .= ")";
+ $sth = $dbh->prepare($query);
+ $sth->execute;
+
+ while (my $data = $sth->fetchrow_hashref) {
+ $results[$count] = $data;
+ $count++;
+ } # while
+
+ $sth->finish;
+ $dbh->disconnect;
+ return($count, @results);
+} # sub websitesearch
+
+
+sub addwebsite {
+ my ($website) = @_;
+ my $dbh = C4Connect;
+ my $query;
+
+ $website->{'biblionumber'} = $dbh->quote($website->{'biblionumber'});
+ $website->{'title'} = $dbh->quote($website->{'title'});
+ $website->{'description'} = $dbh->quote($website->{'description'});
+ $website->{'url'} = $dbh->quote($website->{'url'});
+
+ $query = "Insert into websites set
+biblionumber = $website->{'biblionumber'},
+title = $website->{'title'},
+description = $website->{'description'},
+url = $website->{'url'}";
+
+ $dbh->do($query);
+
+ $dbh->disconnect;
+} # sub website
+
+
+sub updatewebsite {
+ my ($website) = @_;
+ my $dbh = C4Connect;
+ my $query;
+
+ $website->{'title'} = $dbh->quote($website->{'title'});
+ $website->{'description'} = $dbh->quote($website->{'description'});
+ $website->{'url'} = $dbh->quote($website->{'url'});
+
+ $query = "Update websites set
+title = $website->{'title'},
+description = $website->{'description'},
+url = $website->{'url'}
+where websitenumber = $website->{'websitenumber'}";
+
+ $dbh->do($query);
+
+ $dbh->disconnect;
+} # sub updatewebsite
+
+
+sub deletewebsite {
+ my ($websitenumber) = @_;
+ my $dbh = C4Connect;
+ my $query = "Delete from websites where websitenumber = $websitenumber";
+
+ $dbh->do($query);
+
+ $dbh->disconnect;
+} # sub deletewebsite
+
+
+END { } # module clean-up code here (global destructor)
diff --git a/acqui.simple/addbooks.pl b/acqui.simple/addbooks.pl
index 84569afda0..ebbb8aa983 100755
--- a/acqui.simple/addbooks.pl
+++ b/acqui.simple/addbooks.pl
@@ -17,6 +17,7 @@ use C4::Database;
use CGI;
use strict;
use C4::Acquisitions;
+use C4::Biblio;
use C4::Output;
use C4::Circulation::Circ2;
diff --git a/acqui.simple/addbookslccn.pl b/acqui.simple/addbookslccn.pl
index 8c67ffc375..04acec2e99 100755
--- a/acqui.simple/addbookslccn.pl
+++ b/acqui.simple/addbookslccn.pl
@@ -17,6 +17,7 @@ use C4::Database;
use CGI;
use strict;
use C4::Acquisitions;
+use C4::Biblio;
use C4::Output;
use C4::Circulation::Circ2;
diff --git a/acqui.simple/bulkmarcimport.pl b/acqui.simple/bulkmarcimport.pl
index af18ed46b1..d5de6d0b49 100755
--- a/acqui.simple/bulkmarcimport.pl
+++ b/acqui.simple/bulkmarcimport.pl
@@ -30,6 +30,7 @@ use CGI;
use DBI;
#use strict;
use C4::Acquisitions;
+use C4::Biblio;
use C4::Output;
my $dbh=C4Connect;
my $userid=$ENV{'REMOTE_USER'};
diff --git a/acqui.simple/marcimport.pl b/acqui.simple/marcimport.pl
index 587479740f..7b15efc1dd 100755
--- a/acqui.simple/marcimport.pl
+++ b/acqui.simple/marcimport.pl
@@ -18,6 +18,7 @@ use C4::Database;
use C4::Acquisitions;
use C4::Output;
use C4::Input;
+use C4::Biblio;
#------------------
# Constants
@@ -529,7 +530,7 @@ EOF
my $elapsed=time()-$starttimer;
print "