Findgroupreserve update : Factorizing code
authorHenri-Damien LAURENT <henridamien.laurent@biblibre.com>
Mon, 31 Aug 2009 09:54:51 +0000 (11:54 +0200)
committerHenri-Damien LAURENT <henridamien.laurent@biblibre.com>
Wed, 16 Sep 2009 21:19:25 +0000 (23:19 +0200)
Signed-off-by: Henri-Damien LAURENT <henridamien.laurent@biblibre.com>
C4/Reserves.pm

index 67c5d9f..52751c8 100644 (file)
@@ -1269,8 +1269,8 @@ sub _Findgroupreserve {
     my ( $bibitem, $biblio, $itemnumber ) = @_;
     my $dbh   = C4::Context->dbh;
 
-    # TODO: consolidate at least the SELECT portion of the first 2 queries to a common $select var.
     # check for exact targetted match
+       # This select is valid for both item_level and biblio_level
     my $item_level_target_query = qq/
         SELECT reserves.biblionumber        AS biblionumber,
                reserves.borrowernumber      AS borrowernumber,
@@ -1285,48 +1285,16 @@ sub _Findgroupreserve {
                reserves.itemnumber          AS itemnumber
         FROM reserves
         JOIN biblioitems USING (biblionumber)
-        JOIN hold_fill_targets USING (biblionumber, borrowernumber, itemnumber)
-        WHERE found IS NULL
-        AND priority > 0
-        AND item_level_request = 1
-        AND itemnumber = ?
-    /;
-    my $sth = $dbh->prepare($item_level_target_query);
-    $sth->execute($itemnumber);
-    my @results;
-    if ( my $data = $sth->fetchrow_hashref ) {
-        push( @results, $data );
-    }
-    return @results if @results;
-    
-    # check for title-level targetted match
-    my $title_level_target_query = qq/
-        SELECT reserves.biblionumber        AS biblionumber,
-               reserves.borrowernumber      AS borrowernumber,
-               reserves.reservedate         AS reservedate,
-               reserves.branchcode          AS branchcode,
-               reserves.cancellationdate    AS cancellationdate,
-               reserves.found               AS found,
-               reserves.reservenotes        AS reservenotes,
-               reserves.priority            AS priority,
-               reserves.timestamp           AS timestamp,
-               biblioitems.biblioitemnumber AS biblioitemnumber,
-               reserves.itemnumber          AS itemnumber
-        FROM reserves
-        JOIN biblioitems USING (biblionumber)
         JOIN hold_fill_targets USING (biblionumber, borrowernumber)
         WHERE found IS NULL
         AND priority > 0
-        AND item_level_request = 0
-        AND hold_fill_targets.itemnumber = ?
+        AND holds_fill_targets.itemnumber = ?
+
     /;
-    $sth = $dbh->prepare($title_level_target_query);
+    my $sth = $dbh->prepare($item_level_target_query);
     $sth->execute($itemnumber);
-    @results = ();
-    if ( my $data = $sth->fetchrow_hashref ) {
-        push( @results, $data );
-    }
-    return @results if @results;
+       my $data = $sth->fetchall_arrayref({});
+    return @$data if ($data);
 
     my $query = qq/
         SELECT reserves.biblionumber               AS biblionumber,
@@ -1351,11 +1319,9 @@ sub _Findgroupreserve {
     /;
     $sth = $dbh->prepare($query);
     $sth->execute( $biblio, $bibitem, $itemnumber );
-    @results = ();
-    while ( my $data = $sth->fetchrow_hashref ) {
-        push( @results, $data );
-    }
-    return @results;
+    $data = $sth->fetchall_arrayref({});
+    return @$data if ($data);
+       return undef;
 }
 
 =item _koha_notify_reserve