Fixed a few warnings.
[koha.git] / C4 / BookShelves.pm
1 package C4::BookShelves; #asummes C4/BookShelves
2
3 #
4 # $Header$
5 #
6 #
7 # Change log is at the bottom of the file
8 #
9 #requires DBI.pm to be installed
10
11 use strict;
12 require Exporter;
13 use DBI;
14 use C4::Database;
15 use C4::Circulation::Circ2;
16 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
17   
18 # set the version for version checking
19 $VERSION = 0.01;
20     
21 @ISA = qw(Exporter);
22 @EXPORT = qw(&GetShelfList &GetShelfContents &AddToShelf &RemoveFromShelf &AddShelf &RemoveShelf);
23
24 sub AddShelf {
25 }
26
27 sub RemoveShelf {
28 }
29 %EXPORT_TAGS = ( );     # eg: TAG => [ qw!name1 name2! ],
30                   
31 # your exported package globals go here,
32 # as well as any optionally exported functions
33
34 @EXPORT_OK   = qw($Var1 %Hashit);
35
36
37 # non-exported package globals go here
38 use vars qw(@more $stuff);
39         
40 # initalize package globals, first exported ones
41
42 my $Var1   = '';
43 my %Hashit = ();
44                     
45 # then the others (which are still accessible as $Some::Module::stuff)
46 my $stuff  = '';
47 my @more   = ();
48         
49 # all file-scoped lexicals must be created before
50 # the functions below that use them.
51                 
52 # file-private lexicals go here
53 my $priv_var    = '';
54 my %secret_hash = ();
55                             
56 # here's a file-private function as a closure,
57 # callable as &$priv_func;  it cannot be prototyped.
58 my $priv_func = sub {
59   # stuff goes here.
60 };
61                                                     
62 # make all your functions, whether exported or not;
63
64 my $dbh=C4Connect();
65
66 sub GetShelfList {
67     my $sth=$dbh->prepare("select shelfnumber,shelfname from bookshelf");
68     $sth->execute;
69     my %shelflist;
70     while (my ($shelfnumber, $shelfname) = $sth->fetchrow) {
71         my $sti=$dbh->prepare("select count(*) from shelfcontents where shelfnumber=$shelfnumber");
72         $sti->execute;
73         my ($count) = $sti->fetchrow;
74         $shelflist{$shelfnumber}->{'shelfname'}=$shelfname;
75         $shelflist{$shelfnumber}->{'count'}=$count;
76     }
77     return(\%shelflist);
78 }
79
80
81 sub GetShelfContents {
82     my ($env, $shelfnumber) = @_;
83     my @itemlist;
84     my $sth=$dbh->prepare("select itemnumber from shelfcontents where shelfnumber=$shelfnumber order by itemnumber");
85     $sth->execute;
86     while (my ($itemnumber) = $sth->fetchrow) {
87         my ($item) = getiteminformation($env, $itemnumber, 0);
88         push (@itemlist, $item);
89     }
90     return (\@itemlist);
91 }
92
93 sub AddToShelf {
94     my ($env, $itemnumber, $shelfnumber) = @_;
95     my $sth=$dbh->prepare("select * from shelfcontents where shelfnumber=$shelfnumber and itemnumber=$itemnumber");
96     $sth->execute;
97     if ($sth->rows) {
98 # already on shelf
99     } else {
100         $sth=$dbh->prepare("insert into shelfcontents (shelfnumber, itemnumber, flags) values ($shelfnumber, $itemnumber, 0)");
101         $sth->execute;
102     }
103 }
104
105 sub RemoveFromShelf {
106     my ($env, $itemnumber, $shelfnumber) = @_;
107     my $sth=$dbh->prepare("delete from shelfcontents where shelfnumber=$shelfnumber and itemnumber=$itemnumber");
108     $sth->execute;
109 }
110
111 sub AddShelf {
112     my ($env, $shelfname) = @_;
113     my $q_shelfname=$dbh->quote($shelfname);
114     my $sth=$dbh->prepare("select * from bookshelf where shelfname=$q_shelfname");
115     $sth->execute;
116     if ($sth->rows) {
117         return(0, "Shelf \"$shelfname\" already exists");
118     } else {
119         $sth=$dbh->prepare("insert into bookshelf (shelfname) values ($q_shelfname)");
120         $sth->execute;
121         return (1, "Done");
122     }
123 }
124
125 sub RemoveShelf {
126     my ($env, $shelfnumber) = @_;
127     my $sth=$dbh->prepare("select count(*) from shelfcontents where shelfnumber=$shelfnumber");
128     $sth->execute;
129     my ($count)=$sth->fetchrow;
130     if ($count) {
131         return (0, "Shelf has $count items on it");
132     } else {
133         $sth=$dbh->prepare("delete from bookshelf where shelfnumber=$shelfnumber");
134         $sth->execute;
135         return (1, "Done");
136     }
137 }
138
139                         
140 END { }       # module clean-up code here (global destructor)
141
142
143 #
144 # $Log$
145 # Revision 1.2  2001/02/07 23:47:43  tonnesen
146 # Added header and log substition variables
147 #
148 # Revision 1.1  2001/02/07 20:27:17  tonnesen
149 # Start of code to implement virtual bookshelves in Koha.
150 #
151 #