synch'ing 2.0.0 branch and head
[koha_ffzg] / C4 / BookShelves.pm
index d3f34f5..55ff166 100755 (executable)
@@ -1,10 +1,9 @@
-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
 #
@@ -26,9 +25,9 @@ package C4::BookShelves; #assumes C4/BookShelves
 use strict;
 require Exporter;
 use DBI;
-use C4::Database;
+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;
@@ -55,45 +54,8 @@ items to and from bookshelves.
 
 @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=C4Connect();
+my $dbh = C4::Context->dbh;
 
 =item GetShelfList
 
@@ -134,9 +96,9 @@ sub GetShelfList {
     $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;
@@ -161,15 +123,13 @@ I don't know what C<$env> is.
 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
@@ -184,17 +144,17 @@ C<$env> is ignored.
 =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
@@ -211,8 +171,8 @@ C<$env> is ignored.
 #'
 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
@@ -233,14 +193,13 @@ C<$env> is ignored.
 # 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");
     }
 }
@@ -262,14 +221,14 @@ C<$env> is ignored.
 #'
 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");
     }
 }
@@ -280,6 +239,34 @@ END { }       # module clean-up code here (global destructor)
 
 #
 # $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.
+#
+# Revision 1.6.2.1  2002/10/04 02:24:43  arensb
+# Use C4::Connect instead of C4::Database, C4::Connect->dbh instead
+# C4Connect.
+#
 # Revision 1.6  2002/09/23 13:50:30  arensb
 # Fixed missing bit in POD.
 #
@@ -309,8 +296,6 @@ Koha Developement team <info@koha.org>
 
 =head1 SEE ALSO
 
-L<perl>.
-
-L<C4::Circulation::Circ2(3)>
+C4::Circulation::Circ2(3)
 
 =cut