Merge remote branch 'kc/new/bug_6058' into kcmaster
[koha_fer] / C4 / VirtualShelves.pm
index fa599bd..7257149 100644 (file)
@@ -40,14 +40,14 @@ BEGIN {
        @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
         );
 }
@@ -67,7 +67,7 @@ C4::VirtualShelves - Functions for manipulating Koha virtual virtualshelves
 
 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
 
@@ -116,8 +116,7 @@ sub GetShelves ($$$$) {
     $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);
@@ -126,6 +125,7 @@ sub GetShelves ($$$$) {
                $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;
@@ -212,6 +212,29 @@ sub GetRecentShelves ($$$) {
        return ( \@shelflist, $total );
 }
 
+=head2 GetAllShelves
+
+    ($shelflist) = GetAllShelves($owner)
+
+This function returns a references 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 (@shelflist);
+    my @params = ($category,$owner);
+    my $query = "SELECT * FROM virtualshelves WHERE category = ? AND owner = ? ORDER BY shelfname ASC";
+    my $sth = $dbh->prepare($query);
+    $sth->execute(@params);
+    @shelflist = $sth->fetchall_arrayref({});
+    return ( \@shelflist );
+}
+
 =head2 GetShelf
 
   (shelfnumber,shelfname,owner,category,sortfield) = &GetShelf($shelfnumber);
@@ -237,7 +260,7 @@ sub GetShelf ($) {
 
 =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 
@@ -266,7 +289,7 @@ sub GetShelfContents ($;$$$) {
        }
     my $query =
        " SELECT vc.biblionumber, vc.shelfnumber, vc.dateadded, itemtypes.*,
-                               biblio.*, biblioitems.itemtype, biblioitems.publicationyear
+            biblio.*, biblioitems.itemtype, biblioitems.publicationyear, 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
@@ -331,8 +354,8 @@ sub AddShelf {
 
   &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
 
@@ -364,42 +387,6 @@ sub AddToShelf {
        $sth->execute( $shelfnumber );
 }
 
-=head2 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 );
-    }
-}
-
 =head2 ModShelf
 
 ModShelf($shelfnumber, $hashref)
@@ -486,8 +473,8 @@ sub ShelfPossibleAction {
 
   &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