use Carp;
use C4::Context;
-use C4::Circulation;
use C4::Debug;
-use C4::Members;
-require C4::Auth;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
@ISA = qw(Exporter);
@EXPORT = qw(
&GetShelves &GetShelfContents &GetShelf
- &AddToShelf &AddToShelfFromBiblio &AddShelf
+ &AddToShelf &AddShelf
&ModShelf
&ShelfPossibleAction
&DelFromShelf &DelShelf
&GetBibliosShelves
);
@EXPORT_OK = qw(
- &GetShelvesSummary &GetRecentShelves
+ &GetShelvesSummary &GetRecentShelves &GetAllShelves
&RefreshShelvesSummary &SetShelvesLimit
);
}
This module provides functions for manipulating virtual virtualshelves,
including creating and deleting virtualshelves, and adding and removing
-items to and from virtualshelves.
+bibs to and from virtualshelves.
=head1 FUNCTIONS
-=over 2
-
-=item GetShelves
+=head2 GetShelves
($shelflist, $totshelves) = &GetShelves($mincategory, $row_count, $offset, $owner);
($shelfnumber, $shelfhash) = each %{$shelflist};
C<$shelflist>is a reference-to-hash. The keys are the virtualshelves numbers (C<$shelfnumber>, above),
and the values (C<$shelfhash>, above) are themselves references-to-hash, with the following keys:
-=over 4
+=over
=item C<$shelfhash-E<gt>{shelfname}>
$query .= ($mincategory == 1) ? "WHERE owner=? AND category=?" : "WHERE category>=?";
$query .= qq(
GROUP BY virtualshelves.shelfnumber
- ORDER BY virtualshelves.category
- DESC
+ ORDER BY virtualshelves.shelfname
LIMIT ?, ?);
my $sth2 = $dbh->prepare($query);
$sth2->execute(@params);
$firstname, $category, $sortfield, $count ) = $sth2->fetchrow ) {
$shelflist{$shelfnumber}->{'shelfname'} = $shelfname;
$shelflist{$shelfnumber}->{'count'} = $count;
+ if($count eq 1){ $shelflist{$shelfnumber}->{'single'} = 1; }
$shelflist{$shelfnumber}->{'sortfield'} = $sortfield;
$shelflist{$shelfnumber}->{'category'} = $category;
$shelflist{$shelfnumber}->{'owner'} = $owner;
return ( \%shelflist, $total );
}
-=item GetShelvesSummary
+=head2 GetShelvesSummary
($shelves, $total) = GetShelvesSummary($mincategory, $row_count, $offset, $owner)
# 2|6|Josh Ferraro|51|en_fuego|106
}
-=item GetRecentShelves
+=head2 GetRecentShelves
- ($shelflist) = GetRecentShelves(1, $limit, $owner)
+ ($shelflist, $total) = GetRecentShelves(1, $limit, $owner)
-This function returns a references to an array of hashrefs containing specified shelves sorted
+This function returns a reference to an array of hashrefs containing specified shelves sorted
by the date the shelf was last modified in descending order limited to the number of records
specified by C<$row_count>. If calling with C<$mincategory> other than 1, use undef as C<$owner>.
=cut
-sub GetRecentShelves ($$$) {
- my ($mincategory, $row_count, $owner) = @_;
- my (@shelflist);
- my $total = _shelf_count($owner, $mincategory);
- my @params = ($owner, $mincategory, 0, $row_count); #FIXME: offset is hardcoded here, but could be passed in for enhancements
- shift @params if (not defined $owner);
- my $query = "SELECT * FROM virtualshelves";
- $query .= ((defined $owner) ? " WHERE owner = ? AND category = ?" : " WHERE category >= ? ");
- $query .= " ORDER BY lastmodified DESC LIMIT ?, ?";
- my $sth = $dbh->prepare($query);
- $sth->execute(@params);
- @shelflist = $sth->fetchall_arrayref({});
- return ( \@shelflist, $total );
+sub GetRecentShelves {
+ my ($mincategory, $row_count, $owner) = @_;
+ my $total = _shelf_count($owner, $mincategory);
+ my @params;
+ my $selection;
+ if (defined $owner) {
+ @params = ($owner, $mincategory);
+ $selection = ' WHERE owner = ? AND category = ?';
+ } else {
+ @params = ( $mincategory);
+ $selection = ' WHERE category >= ? ';
+ }
+ my $query = 'SELECT * FROM virtualshelves';
+ $query .= $selection;
+ $query .= ' ORDER BY lastmodified DESC';
+ if ($row_count){
+ $query .= ' LIMIT ?';
+ push @params,$row_count;
+ }
+ my $sth = $dbh->prepare($query);
+ $sth->execute(@params);
+ my $shelflist = $sth->fetchall_arrayref({});
+ return ( $shelflist, $total );
}
-=item GetShelf
+=head2 GetAllShelves
+
+ $shelflist = GetAllShelves($owner)
+
+This function returns a reference to an array of hashrefs containing all shelves sorted
+by the shelf name.
+
+This function is intended to return a dataset reflecting all the shelves for
+the submitted parameters.
+
+=cut
+
+sub GetAllShelves {
+ my ($category,$owner) = @_;
+ my $query = 'SELECT * FROM virtualshelves WHERE category = ? AND owner = ? ORDER BY shelfname ASC';
+ my $sth = $dbh->prepare( $query );
+ $sth->execute( $category, $owner );
+ return $sth->fetchall_arrayref({});
+}
+
+=head2 GetShelf
(shelfnumber,shelfname,owner,category,sortfield) = &GetShelf($shelfnumber);
return $sth->fetchrow;
}
-=item GetShelfContents
+=head2 GetShelfContents
- $itemlist = &GetShelfContents($shelfnumber);
+ $biblist = &GetShelfContents($shelfnumber);
Looks up information about the contents of virtual virtualshelves number
C<$shelfnumber>. Sorted by a field in the biblio table. copyrightdate
}
my $query =
" SELECT vc.biblionumber, vc.shelfnumber, vc.dateadded, itemtypes.*,
- biblio.*, biblioitems.itemtype, biblioitems.publicationyear
+ biblio.*, biblioitems.itemtype, biblioitems.publicationyear as year, biblioitems.publishercode, biblioitems.place, biblioitems.size, biblioitems.pages
FROM virtualshelfcontents vc
LEFT JOIN biblio ON vc.biblionumber = biblio.biblionumber
LEFT JOIN biblioitems ON biblio.biblionumber = biblioitems.biblionumber
# or newer, for your version of DBI.
}
-=item AddShelf
+=head2 AddShelf
$shelfnumber = &AddShelf( $shelfname, $owner, $category);
return ($shelfnumber);
}
-=item AddToShelf
+=head2 AddToShelf
&AddToShelf($biblionumber, $shelfnumber);
-Adds item number C<$biblionumber> to virtual virtualshelves number
-C<$shelfnumber>, unless that item is already on that shelf.
+Adds bib number C<$biblionumber> to virtual virtualshelves number
+C<$shelfnumber>, unless that bib is already on that shelf.
=cut
$sth->execute( $shelfnumber );
}
-=item AddToShelfFromBiblio
-
- &AddToShelfFromBiblio($biblionumber, $shelfnumber)
-
- this function allow to add a virtual into the shelf number $shelfnumber
- from biblionumber.
-
-=cut
-
-sub AddToShelfFromBiblio {
- my ( $biblionumber, $shelfnumber ) = @_;
- return unless $biblionumber;
- my $query = qq(
- SELECT *
- FROM virtualshelfcontents
- WHERE shelfnumber=? AND biblionumber=?
- );
- my $sth = $dbh->prepare($query);
- $sth->execute( $shelfnumber, $biblionumber );
- unless ( $sth->rows ) {
- my $query =qq(
- INSERT INTO virtualshelfcontents
- (shelfnumber, biblionumber, flags)
- VALUES
- (?, ?, 0)
- );
- $sth = $dbh->prepare($query);
- $sth->execute( $shelfnumber, $biblionumber );
- $query = qq(UPDATE virtualshelves
- SET lastmodified = CURRENT_TIMESTAMP
- WHERE shelfnumber = ?);
- $sth = $dbh->prepare($query);
- $sth->execute( $shelfnumber );
- }
-}
-
-=item ModShelf
+=head2 ModShelf
ModShelf($shelfnumber, $hashref)
$sth->execute( @bind_params );
}
-=item ShelfPossibleAction
+=head2 ShelfPossibleAction
ShelfPossibleAction($loggedinuser, $shelfnumber, $action);
my $sth = $dbh->prepare($query);
$sth->execute($shelfnumber);
my ( $owner, $category ) = $sth->fetchrow;
- my $borrower = GetMemberDetails($user);
+ require C4::Members;
+ my $borrower = C4::Members::GetMemberDetails($user);
return 0 if not defined($user);
return 1 if ( $category >= 3); # open list
return 1 if (($category >= 2) and
return 0;
}
-=item DelFromShelf
+=head2 DelFromShelf
&DelFromShelf( $biblionumber, $shelfnumber);
-Removes item number C<$biblionumber> from virtual virtualshelves number
-C<$shelfnumber>. If the item wasn't on that virtualshelves to begin with,
+Removes bib number C<$biblionumber> from virtual virtualshelves number
+C<$shelfnumber>. If the bib wasn't on that virtualshelves to begin with,
nothing happens.
=cut
$sth->execute( $shelfnumber, $biblionumber );
}
-=item DelShelf (old version)
+=head2 DelShelf (old version)
($status, $msg) = &DelShelf($shelfnumber);
was successful, or non-zero otherwise. C<$msg> is "Done" in case of
success, or an error message giving the reason for failure.
-=item DelShelf (current version)
+=head2 DelShelf (current version)
$Number = DelShelf($shelfnumber);
return $sth->execute(shift);
}
-=item GetBibShelves
+=head2 GetBibShelves
This finds all the public lists that this bib record is in.
return $sth->fetchall_arrayref({});
}
-=item RefreshShelvesSummary
+=head2 RefreshShelvesSummary
($total, $pubshelves, $barshelves) = RefreshShelvesSummary($sessionID, $loggedinuser, $row_count);
=cut
sub RefreshShelvesSummary ($$$) {
-
+ require C4::Auth;
my ($sessionID, $loggedinuser, $row_count) = @_;
my $session = C4::Auth::get_session($sessionID);
my ($total, $totshelves, $barshelves, $pubshelves);
$total->{'pubtotal'} = $totshelves;
# Update the current session with the latest shelves...
- $session->param('barshelves', $barshelves->[0]);
- $session->param('pubshelves', $pubshelves->[0]);
+ $session->param('barshelves', $barshelves);
+ $session->param('pubshelves', $pubshelves);
$session->param('totshelves', $total);
# likewise the userenv...
- C4::Context->set_shelves_userenv('bar',$barshelves->[0]);
- C4::Context->set_shelves_userenv('pub',$pubshelves->[0]);
+ C4::Context->set_shelves_userenv('bar',$barshelves);
+ C4::Context->set_shelves_userenv('pub',$pubshelves);
C4::Context::set_shelves_userenv('tot',$total);
return ($total, $pubshelves, $barshelves);
__END__
-=back
-
=head1 AUTHOR
-Koha Development Team <info@koha.org>
+Koha Development Team <http://koha-community.org/>
=head1 SEE ALSO