-sub GetShelvesSummary ($$$$) {
- my ($mincategory, $row_count, $offset, $owner) = @_;
- my @params = ($owner, $mincategory, ($offset ? $offset : 0), $row_count);
- my @params1 = ($owner, $mincategory);
- if ($mincategory > 1) {
- shift @params;
- shift @params1;
- }
- my $total = _shelf_count($owner, $mincategory);
- # grab only the shelves meeting the row_count/offset spec...
- my $query = qq(
- SELECT
- virtualshelves.shelfnumber,
- virtualshelves.shelfname,
- owner,
- CONCAT(firstname, ' ', surname) AS name,
- virtualshelves.category,
- count(virtualshelfcontents.biblionumber) AS count
- FROM virtualshelves
- LEFT JOIN virtualshelfcontents ON virtualshelves.shelfnumber = virtualshelfcontents.shelfnumber
- LEFT JOIN borrowers ON virtualshelves.owner = borrowers.borrowernumber );
- $query .= ($mincategory == 1) ? "WHERE owner=? AND category=?" : "WHERE category>=?";
- $query .= qq(
- GROUP BY virtualshelves.shelfnumber
- ORDER BY virtualshelves.category
- DESC
- LIMIT ?, ?);
- my $sth2 = $dbh->prepare($query);
- $sth2->execute(@params);
- my $shelves = $sth2->fetchall_arrayref({});
- return ($shelves, $total);
-
- # Probably NOT the final implementation since it is still bulky (repeated hash keys).
- # might like an array of rows of delimited values:
- # 1|2||0|blacklist|112
- # 2|6|Josh Ferraro|51|en_fuego|106
+sub GetAllShelves {
+ my ($category,$owner,$adding_allowed) = @_;
+ my @params;
+ my $query = 'SELECT vs.* FROM virtualshelves vs ';
+ if($category==1) {
+ $query.= qq{
+ LEFT JOIN virtualshelfshares sh ON sh.shelfnumber=vs.shelfnumber
+ AND sh.borrowernumber=?
+ WHERE category=1 AND (vs.owner=? OR sh.borrowernumber=?) };
+ @params = ($owner, $owner, $owner);
+ }
+ else {
+ $query.='WHERE category=2 ';
+ @params = ();
+ }
+ $query.='AND (allow_add=1 OR owner=?) ' if $adding_allowed;
+ push @params, $owner if $adding_allowed;
+ $query.= 'ORDER BY shelfname ASC';
+ my $sth = $dbh->prepare( $query );
+ $sth->execute(@params);
+ return $sth->fetchall_arrayref({});