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