X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FMaintainance.pm;h=8726ef91f1da39c8b0e556c4f27430261d3a0d91;hb=9c5e40e4923179bf0b2b630d3e09797dc4c1fdb0;hp=2ab4d63a2864b502371423e961b25bdc95ec26ff;hpb=53f147a340865642150c44894d5d3ccaa68f81c7;p=koha.git diff --git a/C4/Maintainance.pm b/C4/Maintainance.pm index 2ab4d63a28..8726ef91f1 100644 --- a/C4/Maintainance.pm +++ b/C4/Maintainance.pm @@ -1,66 +1,95 @@ -package C4::Maintainance; #asummes C4/Maintainance +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; -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); +use vars qw($VERSION @ISA @EXPORT); # set the version for version checking -$VERSION = 0.01; +$VERSION = 3.07.00.049; -@ISA = qw(Exporter); -@EXPORT = qw(&listsubjects &updatesub &shiftgroup &deletedbib &undeletebib -&updatetype); -%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ], +=head1 NAME + +C4::Maintenance - Koha catalog maintenance functions + +=head1 SYNOPSIS -# your exported package globals go here, -# as well as any optionally exported functions + use C4::Maintenance; -@EXPORT_OK = qw($Var1 %Hashit); +=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 &shiftgroup &deletedbib &undeletebib +&updatetype &logaction); -# non-exported package globals go here -use vars qw(@more $stuff); +=head2 listsubjects -# initalize package globals, first exported ones + ($count, $results) = &listsubjects($subject, $n, $offset); -my $Var1 = ''; -my %Hashit = (); +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}>. -# then the others (which are still accessible as $Some::Module::stuff) -my $stuff = ''; -my @more = (); +Probably the only interesting field in C<$results->[$i]> is +C, the subject in question. -# all file-scoped lexicals must be created before -# the functions below that use them. +C<&listsubject> returns up to C<$n> items, starting at C<$offset>. If +C<$n> is 0, it will return all matching subjects. -# file-private lexicals go here -my $priv_var = ''; -my %secret_hash = (); +=cut -# 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; - +#' +# 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){ @@ -68,40 +97,50 @@ sub listsubjects { $i++; } $sth->finish; - $dbh->disconnect; return($i,\@results); } -sub updatesub{ - my ($sub,$oldsub)=@_; - my $dbh=C4Connect; - 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){ @@ -109,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