|
Lines 1-215
Link Here
|
| 1 |
package C4::Maintainance; #assumes C4/Maintainance |
|
|
| 2 |
|
| 3 |
#package to deal with marking up output |
| 4 |
|
| 5 |
|
| 6 |
# Copyright 2000-2002 Katipo Communications |
| 7 |
# |
| 8 |
# This file is part of Koha. |
| 9 |
# |
| 10 |
# Koha is free software; you can redistribute it and/or modify it under the |
| 11 |
# terms of the GNU General Public License as published by the Free Software |
| 12 |
# Foundation; either version 2 of the License, or (at your option) any later |
| 13 |
# version. |
| 14 |
# |
| 15 |
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY |
| 16 |
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR |
| 17 |
# A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
| 18 |
# |
| 19 |
# You should have received a copy of the GNU General Public License along |
| 20 |
# with Koha; if not, write to the Free Software Foundation, Inc., |
| 21 |
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
| 22 |
|
| 23 |
use strict; |
| 24 |
#use warnings; FIXME - Bug 2505 |
| 25 |
use C4::Context; |
| 26 |
|
| 27 |
require Exporter; |
| 28 |
|
| 29 |
use vars qw($VERSION @ISA @EXPORT); |
| 30 |
|
| 31 |
# set the version for version checking |
| 32 |
$VERSION = 3.07.00.049; |
| 33 |
|
| 34 |
=head1 NAME |
| 35 |
|
| 36 |
C4::Maintenance - Koha catalog maintenance functions |
| 37 |
|
| 38 |
=head1 SYNOPSIS |
| 39 |
|
| 40 |
use C4::Maintenance; |
| 41 |
|
| 42 |
=head1 DESCRIPTION |
| 43 |
|
| 44 |
The functions in this module perform various catalog-maintenance |
| 45 |
functions, including deleting and undeleting books, fixing |
| 46 |
miscategorized items, etc. |
| 47 |
|
| 48 |
=head1 FUNCTIONS |
| 49 |
|
| 50 |
=cut |
| 51 |
|
| 52 |
@ISA = qw(Exporter); |
| 53 |
@EXPORT = qw(&listsubjects &shiftgroup &deletedbib &undeletebib |
| 54 |
&updatetype &logaction); |
| 55 |
|
| 56 |
=head2 listsubjects |
| 57 |
|
| 58 |
($count, $results) = &listsubjects($subject, $n, $offset); |
| 59 |
|
| 60 |
Finds the subjects that begin with C<$subject> in the bibliosubject |
| 61 |
table of the Koha database. |
| 62 |
|
| 63 |
C<&listsubjects> returns a two-element array. C<$results> is a |
| 64 |
reference-to-array, in which each element is a reference-to-hash |
| 65 |
giving information about the given subject. C<$count> is the number of |
| 66 |
elements in C<@{$results}>. |
| 67 |
|
| 68 |
Probably the only interesting field in C<$results->[$i]> is |
| 69 |
C<subject>, the subject in question. |
| 70 |
|
| 71 |
C<&listsubject> returns up to C<$n> items, starting at C<$offset>. If |
| 72 |
C<$n> is 0, it will return all matching subjects. |
| 73 |
|
| 74 |
=cut |
| 75 |
|
| 76 |
#' |
| 77 |
# FIXME - This API is bogus. The way it's currently used, it should |
| 78 |
# just return a list of strings. |
| 79 |
sub listsubjects { |
| 80 |
my ($sub,$num,$offset)=@_; |
| 81 |
my $dbh = C4::Context->dbh; |
| 82 |
my $query="Select * from bibliosubject where subject like ? group by subject"; |
| 83 |
my @bind = ("$sub%"); |
| 84 |
# FIXME - Make $num and $offset optional. |
| 85 |
# If $num was given, make sure $offset was, too. |
| 86 |
if ($num != 0){ |
| 87 |
$query.=" limit ?,?"; |
| 88 |
push(@bind,$offset,$num); |
| 89 |
} |
| 90 |
my $sth=$dbh->prepare($query); |
| 91 |
# print $query; |
| 92 |
$sth->execute(@bind); |
| 93 |
my @results; |
| 94 |
my $i=0; |
| 95 |
while (my $data=$sth->fetchrow_hashref){ |
| 96 |
$results[$i]=$data; |
| 97 |
$i++; |
| 98 |
} |
| 99 |
$sth->finish; |
| 100 |
return($i,\@results); |
| 101 |
} |
| 102 |
|
| 103 |
=head2 shiftgroup |
| 104 |
|
| 105 |
&shiftgroup($biblionumber, $biblioitemnumber); |
| 106 |
|
| 107 |
Changes the biblionumber associated with a given biblioitem. |
| 108 |
C<$biblioitemnumber> is the number of the biblioitem to change. |
| 109 |
C<$biblionumber> is the biblionumber to associate it with. |
| 110 |
|
| 111 |
=cut |
| 112 |
|
| 113 |
#' |
| 114 |
sub shiftgroup{ |
| 115 |
my ($biblionumber,$bi)=@_; |
| 116 |
my $dbh = C4::Context->dbh; |
| 117 |
my $sth=$dbh->prepare("update biblioitems set biblionumber=? where biblioitemnumber=?"); |
| 118 |
$sth->execute($biblionumber,$bi); |
| 119 |
$sth->finish; |
| 120 |
$sth=$dbh->prepare("update items set biblionumber=? where biblioitemnumber=?"); |
| 121 |
$sth->execute($biblionumber,$bi); |
| 122 |
$sth->finish; |
| 123 |
} |
| 124 |
|
| 125 |
=head2 deletedbib |
| 126 |
|
| 127 |
($count, $results) = &deletedbib($title); |
| 128 |
|
| 129 |
Looks up deleted books whose title begins with C<$title>. |
| 130 |
|
| 131 |
C<&deletedbib> returns a two-element list. C<$results> is a |
| 132 |
reference-to-array; each element is a reference-to-hash whose keys are |
| 133 |
the fields of the deletedbiblio table in the Koha database. C<$count> |
| 134 |
is the number of elements in C<$results>. |
| 135 |
|
| 136 |
=cut |
| 137 |
|
| 138 |
#' |
| 139 |
sub deletedbib{ |
| 140 |
my ($title)=@_; |
| 141 |
my $dbh = C4::Context->dbh; |
| 142 |
my $sth=$dbh->prepare("Select * from deletedbiblio where title like ? order by title"); |
| 143 |
$sth->execute("$title%"); |
| 144 |
my @results; |
| 145 |
my $i=0; |
| 146 |
while (my $data=$sth->fetchrow_hashref){ |
| 147 |
$results[$i]=$data; |
| 148 |
$i++; |
| 149 |
} |
| 150 |
$sth->finish; |
| 151 |
return($i,\@results); |
| 152 |
} |
| 153 |
|
| 154 |
=head2 undeletebib |
| 155 |
|
| 156 |
&undeletebib($biblionumber); |
| 157 |
|
| 158 |
Undeletes a book. C<&undeletebib> looks up the book with the given |
| 159 |
biblionumber in the deletedbiblio table of the Koha database, and |
| 160 |
moves its entry to the biblio table. |
| 161 |
|
| 162 |
=cut |
| 163 |
|
| 164 |
#' |
| 165 |
sub undeletebib{ |
| 166 |
my ($biblionumber)=@_; |
| 167 |
my $dbh = C4::Context->dbh; |
| 168 |
my $sth=$dbh->prepare("select * from deletedbiblio where biblionumber=?"); |
| 169 |
$sth->execute($biblionumber); |
| 170 |
if (my @data=$sth->fetchrow_array){ |
| 171 |
$sth->finish; |
| 172 |
# FIXME - Doesn't this keep the same biblionumber? Isn't this |
| 173 |
# forbidden by the definition of 'biblio'? Or doesn't it matter? |
| 174 |
my $query="INSERT INTO biblio VALUES ("; |
| 175 |
my $count = @data; |
| 176 |
$query .= ("?," x $count); |
| 177 |
$query=~ s/\,$/\)/; |
| 178 |
# print $query; |
| 179 |
$sth=$dbh->prepare($query); |
| 180 |
$sth->execute(@data); |
| 181 |
$sth->finish; |
| 182 |
} |
| 183 |
$sth=$dbh->prepare("DELETE FROM deletedbiblio WHERE biblionumber=?"); |
| 184 |
$sth->execute($biblionumber); |
| 185 |
$sth->finish; |
| 186 |
} |
| 187 |
|
| 188 |
=head2 updatetype |
| 189 |
|
| 190 |
&updatetype($biblioitemnumber, $itemtype); |
| 191 |
|
| 192 |
Changes the type of the item with the given biblioitemnumber to be |
| 193 |
C<$itemtype>. |
| 194 |
|
| 195 |
=cut |
| 196 |
|
| 197 |
#' |
| 198 |
sub updatetype{ |
| 199 |
my ($bi,$type)=@_; |
| 200 |
my $dbh = C4::Context->dbh; |
| 201 |
my $sth=$dbh->prepare("Update biblioitems set itemtype=? where biblioitemnumber=?"); |
| 202 |
$sth->execute($type,$bi); |
| 203 |
$sth->finish; |
| 204 |
} |
| 205 |
|
| 206 |
END { } # module clean-up code here (global destructor) |
| 207 |
|
| 208 |
1; |
| 209 |
__END__ |
| 210 |
|
| 211 |
=head1 AUTHOR |
| 212 |
|
| 213 |
Koha Development Team <http://koha-community.org/> |
| 214 |
|
| 215 |
=cut |