X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FMaintainance.pm;h=aea6028cd5c2172fd53b8f274c35f7e75ca6a1cb;hb=3b0d4e04e09f37e8dcbaba71abd47980bfef7059;hp=c6fd03fb106350b453136a278de26341c2f89f86;hpb=d0374d003716dfb40796caad6390a4d69bfb0376;p=koha_gimpoz diff --git a/C4/Maintainance.pm b/C4/Maintainance.pm index c6fd03fb10..aea6028cd5 100644 --- a/C4/Maintainance.pm +++ b/C4/Maintainance.pm @@ -1,65 +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; -@ISA = qw(Exporter); -@EXPORT = qw(&listsubjects &updatesub); -%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ], +=head1 NAME + +C4::Maintenance - Koha catalog maintenance functions + +=head1 SYNOPSIS + + use C4::Maintenance; -# your exported package globals go here, -# as well as any optionally exported functions +=head1 DESCRIPTION -@EXPORT_OK = qw($Var1 %Hashit); +The functions in this module perform various catalog-maintenance +functions, including deleting and undeleting books, fixing +miscategorized items, etc. +=head1 FUNCTIONS -# non-exported package globals go here -use vars qw(@more $stuff); +=cut -# initalize package globals, first exported ones +@ISA = qw(Exporter); +@EXPORT = qw(&listsubjects &shiftgroup &deletedbib &undeletebib +&updatetype &logaction); + +=head2 listsubjects + + ($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){ @@ -67,18 +97,119 @@ 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; +=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 ($biblionumber,$bi)=@_; + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("update biblioitems set biblionumber=? where biblioitemnumber=?"); + $sth->execute($biblionumber,$bi); + $sth->finish; + $sth=$dbh->prepare("update items set biblionumber=? where biblioitemnumber=?"); + $sth->execute($biblionumber,$bi); + $sth->finish; +} + +=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 = 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){ + $results[$i]=$data; + $i++; + } + $sth->finish; + 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 ($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; + } + $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 = C4::Context->dbh; + my $sth=$dbh->prepare("Update biblioitems set itemtype=? where biblioitemnumber=?"); + $sth->execute($type,$bi); + $sth->finish; +} + END { } # module clean-up code here (global destructor) - + +1; +__END__ + +=head1 AUTHOR + +Koha Development Team + +=cut