-package C4::BookShelves; #assumes C4/BookShelves
+# -*- tab-width: 8 -*-
+# Please use 8-character tabs for this file (indents are every 4 characters)
-#
-# $Header$
-#
-#requires DBI.pm to be installed
+package C4::BookShelves;
+# $Id$
# Copyright 2000-2002 Katipo Communications
#
use DBI;
use C4::Context;
use C4::Circulation::Circ2;
-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(&GetShelfList &GetShelfContents &AddToShelf &RemoveFromShelf &AddShelf &RemoveShelf);
-%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); # FIXME - Never used
-
-
-# non-exported package globals go here
-use vars qw(@more $stuff); # FIXME - Never used
-
-# initalize package globals, first exported ones
-# FIXME - Never used
-my $Var1 = '';
-my %Hashit = ();
-
-# then the others (which are still accessible as $Some::Module::stuff)
-# FIXME - Never used
-my $stuff = '';
-my @more = ();
-
-# all file-scoped lexicals must be created before
-# the functions below that use them.
-
-# file-private lexicals go here
-# FIXME - Never used
-my $priv_var = '';
-my %secret_hash = ();
-
-# here's a file-private function as a closure,
-# callable as &$priv_func; it cannot be prototyped.
-# FIXME - Never used
-my $priv_func = sub {
- # stuff goes here.
-};
-
-# make all your functions, whether exported or not;
my $dbh = C4::Context->dbh;
$sth->execute;
my %shelflist;
while (my ($shelfnumber, $shelfname) = $sth->fetchrow) {
- my $sti=$dbh->prepare("select count(*) from shelfcontents where shelfnumber=$shelfnumber");
+ my $sti=$dbh->prepare("select count(*) from shelfcontents where shelfnumber=?");
# FIXME - Should there be an "order by" in here somewhere?
- $sti->execute;
+ $sti->execute($shelfnumber);
my ($count) = $sti->fetchrow;
$shelflist{$shelfnumber}->{'shelfname'}=$shelfname;
$shelflist{$shelfnumber}->{'count'}=$count;
sub GetShelfContents {
my ($env, $shelfnumber) = @_;
my @itemlist;
- my $sth=$dbh->prepare("select itemnumber from shelfcontents where shelfnumber=$shelfnumber order by itemnumber");
- $sth->execute;
+ my $sth=$dbh->prepare("select itemnumber from shelfcontents where shelfnumber=? order by itemnumber");
+ $sth->execute($shelfnumber);
while (my ($itemnumber) = $sth->fetchrow) {
my ($item) = getiteminformation($env, $itemnumber, 0);
push (@itemlist, $item);
}
return (\@itemlist);
- # FIXME - Wouldn't it be more intuitive to return a list,
- # rather than a reference-to-list?
}
=item AddToShelf
=cut
#'
sub AddToShelf {
- my ($env, $itemnumber, $shelfnumber) = @_;
- my $sth=$dbh->prepare("select * from shelfcontents where shelfnumber=$shelfnumber and itemnumber=$itemnumber");
- $sth->execute;
- if ($sth->rows) {
+ my ($env, $itemnumber, $shelfnumber) = @_;
+ return unless $itemnumber;
+ my $sth=$dbh->prepare("select * from shelfcontents where shelfnumber=? and itemnumber=?");
+
+ $sth->execute($shelfnumber, $itemnumber);
+ if ($sth->rows) {
# already on shelf
- } else {
- $sth=$dbh->prepare("insert into shelfcontents (shelfnumber, itemnumber, flags) values ($shelfnumber, $itemnumber, 0)");
- # FIXME - The default for 'flags' is NULL.
- # Why set it to 0?
- $sth->execute;
- }
+ } else {
+ $sth=$dbh->prepare("insert into shelfcontents (shelfnumber, itemnumber, flags) values (?, ?, 0)");
+ $sth->execute($shelfnumber, $itemnumber);
+ }
}
=item RemoveFromShelf
#'
sub RemoveFromShelf {
my ($env, $itemnumber, $shelfnumber) = @_;
- my $sth=$dbh->prepare("delete from shelfcontents where shelfnumber=$shelfnumber and itemnumber=$itemnumber");
- $sth->execute;
+ my $sth=$dbh->prepare("delete from shelfcontents where shelfnumber=? and itemnumber=?");
+ $sth->execute($shelfnumber,$itemnumber);
}
=item AddShelf
# as well?
sub AddShelf {
my ($env, $shelfname) = @_;
- my $q_shelfname=$dbh->quote($shelfname);
- my $sth=$dbh->prepare("select * from bookshelf where shelfname=$q_shelfname");
- $sth->execute;
+ my $sth=$dbh->prepare("select * from bookshelf where shelfname=?");
+ $sth->execute($shelfname);
if ($sth->rows) {
return(1, "Shelf \"$shelfname\" already exists");
} else {
- $sth=$dbh->prepare("insert into bookshelf (shelfname) values ($q_shelfname)");
- $sth->execute;
+ $sth=$dbh->prepare("insert into bookshelf (shelfname) values (?)");
+ $sth->execute($shelfname);
return (0, "Done");
}
}
#'
sub RemoveShelf {
my ($env, $shelfnumber) = @_;
- my $sth=$dbh->prepare("select count(*) from shelfcontents where shelfnumber=$shelfnumber");
- $sth->execute;
+ my $sth=$dbh->prepare("select count(*) from shelfcontents where shelfnumber=?");
+ $sth->execute($shelfnumber);
my ($count)=$sth->fetchrow;
if ($count) {
return (1, "Shelf has $count items on it. Please remove all items before deleting this shelf.");
} else {
- $sth=$dbh->prepare("delete from bookshelf where shelfnumber=$shelfnumber");
- $sth->execute;
+ $sth=$dbh->prepare("delete from bookshelf where shelfnumber=?");
+ $sth->execute($shelfnumber);
return (0, "Done");
}
}
#
# $Log$
+# Revision 1.12 2004/02/11 08:40:09 tipaul
+# synch'ing 2.0.0 branch and head
+#
+# Revision 1.11.2.1 2004/02/06 14:16:55 tipaul
+# fixing bugs in bookshelves management.
+#
+# Revision 1.11 2003/12/15 10:57:08 slef
+# DBI call fix for bug 662
+#
+# Revision 1.10 2003/02/05 10:05:02 acli
+# Converted a few SQL statements to use ? to fix a few strange SQL errors
+# Noted correct tab size
+#
+# Revision 1.9 2002/10/13 08:29:18 arensb
+# Deleted unused variables.
+# Removed trailing whitespace.
+#
+# Revision 1.8 2002/10/10 04:32:44 arensb
+# Simplified references.
+#
# Revision 1.7 2002/10/05 09:50:10 arensb
# Merged with arensb-context branch: use C4::Context->dbh instead of
# &C4Connect, and generally prefer C4::Context over C4::Database.
=head1 SEE ALSO
-L<perl>.
-
-L<C4::Circulation::Circ2(3)>
+C4::Circulation::Circ2(3)
=cut