[Koha-cvs] CVS: koha/C4 BookShelves.pm,1.12,1.13
Paul POULAIN
tipaul at users.sourceforge.net
Thu Mar 11 17:06:23 CET 2004
Update of /cvsroot/koha/koha/C4
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28562/C4
Modified Files:
BookShelves.pm
Log Message:
Index: BookShelves.pm
===================================================================
RCS file: /cvsroot/koha/koha/C4/BookShelves.pm,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -r1.12 -r1.13
*** BookShelves.pm 11 Feb 2004 08:40:09 -0000 1.12
--- BookShelves.pm 11 Mar 2004 16:06:20 -0000 1.13
***************
*** 54,61 ****
@ISA = qw(Exporter);
! @EXPORT = qw(&GetShelfList &GetShelfContents &AddToShelf &RemoveFromShelf &AddShelf &RemoveShelf);
my $dbh = C4::Context->dbh;
=item GetShelfList
--- 54,87 ----
@ISA = qw(Exporter);
! @EXPORT = qw(&GetShelfList &GetShelfContents &AddToShelf &AddToShelfFromBiblio
! &RemoveFromShelf &AddShelf &RemoveShelf
! &ShelfPossibleAction);
my $dbh = C4::Context->dbh;
+ =item ShelfPossibleAction
+
+ =over 4
+
+ =item C<$loggedinuser,$shelfnumber,$action>
+
+ $action can be "view" or "manage".
+
+ Returns 1 if the user can do the $action in the $shelfnumber shelf.
+ Returns 0 otherwise.
+
+ =back
+
+ =cut
+ sub ShelfPossibleAction {
+ my ($loggedinuser,$shelfnumber,$action)= @_;
+ my $sth = $dbh->prepare("select owner,category from bookshelf where shelfnumber=?");
+ $sth->execute($shelfnumber);
+ my ($owner,$category) = $sth->fetchrow;
+ return 1 if (($category>=3 or $owner eq $loggedinuser) && $action eq 'manage');
+ return 1 if (($category>= 2 or $owner eq $loggedinuser) && $action eq 'view');
+ return 0;
+ }
+
=item GetShelfList
***************
*** 86,106 ****
# hash.
sub GetShelfList {
! # FIXME - These two database queries can be combined into one:
! # SELECT bookshelf.shelfnumber, bookshelf.shelfname,
! # count(shelfcontents.itemnumber)
! # FROM bookshelf
! # LEFT JOIN shelfcontents
! # ON bookshelf.shelfnumber = shelfcontents.shelfnumber
! # GROUP BY bookshelf.shelfnumber
! my $sth=$dbh->prepare("select shelfnumber,shelfname from bookshelf");
! $sth->execute;
my %shelflist;
! while (my ($shelfnumber, $shelfname) = $sth->fetchrow) {
! my $sti=$dbh->prepare("select count(*) from shelfcontents where shelfnumber=?");
! # FIXME - Should there be an "order by" in here somewhere?
! $sti->execute($shelfnumber);
! my ($count) = $sti->fetchrow;
$shelflist{$shelfnumber}->{'shelfname'}=$shelfname;
$shelflist{$shelfnumber}->{'count'}=$count;
}
return(\%shelflist);
--- 112,134 ----
# hash.
sub GetShelfList {
! my ($owner,$mincategory) = @_;
! # mincategory : 2 if the list is for "look". 3 if the list is for "Select bookshelf for adding a book".
! # bookshelves of the owner are always selected, whatever the category
! my $sth=$dbh->prepare("SELECT bookshelf.shelfnumber, bookshelf.shelfname,owner,surname,firstname,
! count(shelfcontents.itemnumber) as count
! FROM bookshelf
! LEFT JOIN shelfcontents
! ON bookshelf.shelfnumber = shelfcontents.shelfnumber
! left join borrowers on bookshelf.owner = borrowers.borrowernumber
! where owner=? or category>=?
! GROUP BY bookshelf.shelfnumber order by shelfname");
! $sth->execute($owner,$mincategory);
my %shelflist;
! while (my ($shelfnumber, $shelfname,$owner,$surname,$firstname,$count) = $sth->fetchrow) {
$shelflist{$shelfnumber}->{'shelfname'}=$shelfname;
$shelflist{$shelfnumber}->{'count'}=$count;
+ $shelflist{$shelfnumber}->{'owner'}=$owner;
+ $shelflist{$shelfnumber}->{surname} = $surname;
+ $shelflist{$shelfnumber}->{firstname} = $firstname;
}
return(\%shelflist);
***************
*** 157,160 ****
--- 185,203 ----
}
}
+ sub AddToShelfFromBiblio {
+ my ($env, $biblionumber, $shelfnumber) = @_;
+ return unless $biblionumber;
+ my $sth = $dbh->prepare("select itemnumber from items where biblionumber=?");
+ $sth->execute($biblionumber);
+ my ($itemnumber) = $sth->fetchrow;
+ $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 (?, ?, 0)");
+ $sth->execute($shelfnumber, $itemnumber);
+ }
+ }
=item RemoveFromShelf
***************
*** 193,197 ****
# as well?
sub AddShelf {
! my ($env, $shelfname) = @_;
my $sth=$dbh->prepare("select * from bookshelf where shelfname=?");
$sth->execute($shelfname);
--- 236,240 ----
# as well?
sub AddShelf {
! my ($env, $shelfname,$owner,$category) = @_;
my $sth=$dbh->prepare("select * from bookshelf where shelfname=?");
$sth->execute($shelfname);
***************
*** 199,204 ****
return(1, "Shelf \"$shelfname\" already exists");
} else {
! $sth=$dbh->prepare("insert into bookshelf (shelfname) values (?)");
! $sth->execute($shelfname);
return (0, "Done");
}
--- 242,247 ----
return(1, "Shelf \"$shelfname\" already exists");
} else {
! $sth=$dbh->prepare("insert into bookshelf (shelfname,owner,category) values (?,?,?)");
! $sth->execute($shelfname,$owner,$category);
return (0, "Done");
}
***************
*** 240,245 ****
#
# $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
--- 283,291 ----
#
# $Log$
! # Revision 1.13 2004/03/11 16:06:20 tipaul
! # *** empty log message ***
! #
! # Revision 1.11.2.2 2004/02/19 10:15:41 tipaul
! # new feature : adding book to bookshelf from biblio detail screen.
#
# Revision 1.11.2.1 2004/02/06 14:16:55 tipaul
More information about the Koha-cvs
mailing list