X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FMaintainance.pm;h=aea6028cd5c2172fd53b8f274c35f7e75ca6a1cb;hb=6c0b51460ea812c27f75058ba33c5e99d1a8e9e3;hp=a520cfcf2b674f847b8fcb56542b9b7f0d51fd0f;hpb=6897cec04dd39bf2758c8f5dc5994a0a4bd0894b;p=koha_gimpoz diff --git a/C4/Maintainance.pm b/C4/Maintainance.pm index a520cfcf2b..aea6028cd5 100644 --- a/C4/Maintainance.pm +++ b/C4/Maintainance.pm @@ -2,8 +2,27 @@ package C4::Maintainance; #assumes C4/Maintainance #package to deal with marking up output + +# Copyright 2000-2002 Katipo Communications +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + use strict; -use C4::Database; +#use warnings; FIXME - Bug 2505 +use C4::Context; require Exporter; @@ -12,20 +31,65 @@ use vars qw($VERSION @ISA @EXPORT); # set the version for version checking $VERSION = 0.01; +=head1 NAME + +C4::Maintenance - Koha catalog maintenance functions + +=head1 SYNOPSIS + + use C4::Maintenance; + +=head1 DESCRIPTION + +The functions in this module perform various catalog-maintenance +functions, including deleting and undeleting books, fixing +miscategorized items, etc. + +=head1 FUNCTIONS + +=cut + @ISA = qw(Exporter); -@EXPORT = qw(&listsubjects &updatesub &shiftgroup &deletedbib &undeletebib -&updatetype); - +@EXPORT = qw(&listsubjects &shiftgroup &deletedbib &undeletebib +&updatetype &logaction); + +=head2 listsubjects + + ($count, $results) = &listsubjects($subject, $n, $offset); + +Finds the subjects that begin with C<$subject> in the bibliosubject +table of the Koha database. + +C<&listsubjects> returns a two-element array. C<$results> is a +reference-to-array, in which each element is a reference-to-hash +giving information about the given subject. C<$count> is the number of +elements in C<@{$results}>. + +Probably the only interesting field in C<$results->[$i]> is +C, the subject in question. + +C<&listsubject> returns up to C<$n> items, starting at C<$offset>. If +C<$n> is 0, it will return all matching subjects. + +=cut + +#' +# FIXME - This API is bogus. The way it's currently used, it should +# just return a list of strings. sub listsubjects { my ($sub,$num,$offset)=@_; - my $dbh=C4Connect; - my $query="Select * from bibliosubject where subject like '$sub%' group by subject"; + my $dbh = C4::Context->dbh; + my $query="Select * from bibliosubject where subject like ? group by subject"; + my @bind = ("$sub%"); + # FIXME - Make $num and $offset optional. + # If $num was given, make sure $offset was, too. if ($num != 0){ - $query.=" limit $offset,$num"; + $query.=" limit ?,?"; + push(@bind,$offset,$num); } my $sth=$dbh->prepare($query); # print $query; - $sth->execute; + $sth->execute(@bind); my @results; my $i=0; while (my $data=$sth->fetchrow_hashref){ @@ -33,42 +97,50 @@ sub listsubjects { $i++; } $sth->finish; - $dbh->disconnect; return($i,\@results); } -sub updatesub{ - my ($sub,$oldsub)=@_; - my $dbh=C4Connect; - $sub=$dbh->quote($sub); - $oldsub=$dbh->quote($oldsub); - my $query="update bibliosubject set subject=$sub where subject=$oldsub"; - my $sth=$dbh->prepare($query); - $sth->execute; - $sth->finish; - $dbh->disconnect; -} +=head2 shiftgroup + + &shiftgroup($biblionumber, $biblioitemnumber); +Changes the biblionumber associated with a given biblioitem. +C<$biblioitemnumber> is the number of the biblioitem to change. +C<$biblionumber> is the biblionumber to associate it with. + +=cut + +#' sub shiftgroup{ - my ($bib,$bi)=@_; - my $dbh=C4Connect; - my $query="update biblioitems set biblionumber=$bib where biblioitemnumber=$bi"; - my $sth=$dbh->prepare($query); - $sth->execute; + my ($biblionumber,$bi)=@_; + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("update biblioitems set biblionumber=? where biblioitemnumber=?"); + $sth->execute($biblionumber,$bi); $sth->finish; - $query="update items set biblionumber=$bib where biblioitemnumber=$bi"; - $sth=$dbh->prepare($query); - $sth->execute; + $sth=$dbh->prepare("update items set biblionumber=? where biblioitemnumber=?"); + $sth->execute($biblionumber,$bi); $sth->finish; - $dbh->disconnect; } +=head2 deletedbib + + ($count, $results) = &deletedbib($title); + +Looks up deleted books whose title begins with C<$title>. + +C<&deletedbib> returns a two-element list. C<$results> is a +reference-to-array; each element is a reference-to-hash whose keys are +the fields of the deletedbiblio table in the Koha database. C<$count> +is the number of elements in C<$results>. + +=cut + +#' sub deletedbib{ my ($title)=@_; - my $dbh=C4Connect; - my $query="Select * from deletedbiblio where title like '$title%' order by title"; - my $sth=$dbh->prepare($query); - $sth->execute; + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("Select * from deletedbiblio where title like ? order by title"); + $sth->execute("$title%"); my @results; my $i=0; while (my $data=$sth->fetchrow_hashref){ @@ -76,43 +148,68 @@ sub deletedbib{ $i++; } $sth->finish; - $dbh->disconnect; return($i,\@results); } +=head2 undeletebib + + &undeletebib($biblionumber); + +Undeletes a book. C<&undeletebib> looks up the book with the given +biblionumber in the deletedbiblio table of the Koha database, and +moves its entry to the biblio table. + +=cut + +#' sub undeletebib{ - my ($bib)=@_; - my $dbh=C4Connect; - my $query="select * from deletedbiblio where biblionumber=$bib"; - my $sth=$dbh->prepare($query); - $sth->execute; - if (my @data=$sth->fetchrow_array){ - $sth->finish; - $query="Insert into biblio values ("; - foreach my $temp (@data){ - $temp=~ s/\'/\\\'/g; - $query=$query."'$temp',"; - } - $query=~ s/\,$/\)/; - # print $query; - $sth=$dbh->prepare($query); - $sth->execute; - $sth->finish; + my ($biblionumber)=@_; + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("select * from deletedbiblio where biblionumber=?"); + $sth->execute($biblionumber); + if (my @data=$sth->fetchrow_array){ + $sth->finish; + # FIXME - Doesn't this keep the same biblionumber? Isn't this + # forbidden by the definition of 'biblio'? Or doesn't it matter? + my $query="INSERT INTO biblio VALUES ("; + my $count = @data; + $query .= ("?," x $count); + $query=~ s/\,$/\)/; + # print $query; + $sth=$dbh->prepare($query); + $sth->execute(@data); + $sth->finish; } - $query="Delete from deletedbiblio where biblionumber=$bib"; - $sth=$dbh->prepare($query); - $sth->execute; + $sth=$dbh->prepare("DELETE FROM deletedbiblio WHERE biblionumber=?"); + $sth->execute($biblionumber); $sth->finish; - $dbh->disconnect; } +=head2 updatetype + + &updatetype($biblioitemnumber, $itemtype); + +Changes the type of the item with the given biblioitemnumber to be +C<$itemtype>. + +=cut + +#' sub updatetype{ my ($bi,$type)=@_; - my $dbh=C4Connect; - my $sth=$dbh->prepare("Update biblioitems set itemtype='$type' where biblioitemnumber=$bi"); - $sth->execute; + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("Update biblioitems set itemtype=? where biblioitemnumber=?"); + $sth->execute($type,$bi); $sth->finish; - $dbh->disconnect; } + END { } # module clean-up code here (global destructor) - + +1; +__END__ + +=head1 AUTHOR + +Koha Development Team + +=cut