Bug 15839: Koha::Reviews - Remove getreviews
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 16 Feb 2016 15:09:01 +0000 (15:09 +0000)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 9 Sep 2016 10:29:53 +0000 (10:29 +0000)
The C4::Reviews::getreviews subroutine retrieved the reviews for a given
record, depending on their status.
This can be achieve with a call to Koha::Reviews->search.
There were 2 calls to this subroutine. The one from opac-ISBDdetail.pl
does not look in used: the reviews are not display on this page. It
certainly comes from an old copy/paste from opac-detail.pl.
The one from opac-detail only asked for the approved reviews. So the
logged in user does not see its own review if it is pending approval.
Actually this pending approval review is only displayed when the user
submits it (because of a unecessary complex text replacement done in
JS).
With this patch, the approved reviews AND the unaproved review from the
logged in user will be displayed.
It will allow a future enhancement to add a way to delete our own
reviews.

Moreover, the reviews were retrieved even if they were not displayed (if
reviewson is off), it's now fixed.

Signed-off-by: Marc Veron <veron@veron.ch>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
C4/Review.pm
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-review.tt
opac/opac-ISBDdetail.pl
opac/opac-detail.pl

index 5d56396..6f40ec1 100644 (file)
@@ -28,7 +28,7 @@ BEGIN {
     require Exporter;
     @ISA    = qw(Exporter);
     @EXPORT = qw(getreview savereview updatereview numberofreviews numberofreviewsbybiblionumber
-      getreviews getallreviews approvereview unapprovereview deletereview);
+      getallreviews approvereview unapprovereview deletereview);
 }
 
 =head1 NAME
@@ -44,7 +44,6 @@ C4::Review - Perl Module containing routines for dealing with reviews of items
   updatereview($biblionumber,$borrowernumber,$review);
   my $count=numberofreviews($status);
   my $count=numberofreviewsbybiblionumber($biblionumber);
-  my $reviews=getreviews($biblionumber, $status);
   my $reviews=getallreviews($status, [$offset], [$row_count]);
 
 =head1 DESCRIPTION
@@ -140,24 +139,6 @@ sub numberofreviewsbybiblionumber {
     return $sth->fetchrow;
 }
 
-=head2 getreviews
-
-  my $reviews=getreviews($biblionumber, $status);
-
-Return all reviews where in the 'reviews' database :
-'biblionumber' = $biblionumber and 'approved' = $status
-
-=cut
-
-sub getreviews {
-    my ( $biblionumber, $approved ) = @_;
-    my $dbh   = C4::Context->dbh;
-    my $query = "SELECT * FROM reviews WHERE biblionumber=? and approved=? order by datereviewed desc";
-    my $sth   = $dbh->prepare($query);
-    $sth->execute( $biblionumber, $approved );
-    return $sth->fetchall_arrayref( {} );
-}
-
 =head2 getallreviews
 
   my $reviews=getallreviews($status, [$offset], [$row_count]);
index 13dc57e..5c52f0f 100644 (file)
                             <div id="newcomment"></div>
                                 [% IF ( reviews ) %]
                                     [% FOREACH review IN reviews %]
-                                        [% IF ( review.your_comment ) %]
+                                        [% IF review.borrowernumber == borrowernumber %]
                                             <div class="commentline yours" id="c[% review.reviewid %]">
                                                 [% IF ( review.avatarurl ) %]
                                                     <img class="avatar" src="[% review.avatarurl %]" height="80" width="80" alt="" />
                                                 [% END %]
-                                                <h5>Your comment</h5>
+                                                [% IF review.approved %]
+                                                    <h5>Your comment</h5>
+                                                [% ELSE %]
+                                                    <h5>Your comment (preview, pending approval)</h5>
+                                                [% END %]
                                                 <small>[% review.datereviewed | $KohaDates %]</small>
                                                 <p>
                                                     [% FILTER html_break %]
                                                   [% END %]
                                                 </p>
                                             </div> <!-- / .commentline -->
-                                        [% END # / IF review.your_comment %]
+                                        [% END %]
                                     [% END # / FOREACH reviews %]
                                 [% ELSE %]
                                     <p>There are no comments for this item.</p>
                                 [% IF ( loggedinusername ) %]
                                     [% UNLESS ( loggedincommenter ) %]
                                        <div id="addcomment"> <a href="#" onclick="Dopop('/cgi-bin/koha/opac-review.pl?biblionumber=[% biblionumber %]'); return false;">
-                                            Post or edit your comments on this item.
+                                            Post your comments on this item.
                                         </a></div>
                                     [% END %]
                                 [% ELSE %]
index 44792a5..c5ecd82 100644 (file)
 <script type="text/javascript">
     //<![CDATA[
          $(document).ready(function() {
-            var inject_old = function(comment) {
-                [% IF ( reviewid ) %]
-                [% IF ( cgi_debug ) %]alert(_("injecting OLD comment: ")+comment);[% END %]
-                parent.opener.$('#c[% reviewid %] p').prev("small").prev("h5").html(_("Your edited comment (preview, pending approval)"));
-                parent.opener.$('#c[% reviewid %] p').html(comment);
-                parent.opener.$('#c[% reviewid %] p').append(" <a href=\"#comment\" onclick=\"Dopop(\'/cgi-bin/koha/opac-review.pl?biblionumber=[% biblionumber | uri %]&amp;reviewid=[% reviewid | uri%]\');\">"+_("Edit")+"<\/a>");
-                [% END %]
-                return 1;
-            };
-            var inject_new = function(comment) {
-                [% IF ( cgi_debug ) %]alert(_("injecting NEW comment: ") +comment);[% END %]
-                parent.opener.$('#newcomment').attr("class","yours");
-                parent.opener.$('#newcomment').html(
-                    "<h5>" + _("Your comment (preview, pending approval)") + "<\/h5>" +
-                    "<p>"+comment+"<\/p>" +
-                    "<a href=\"#comment\" onclick=\"Dopop(\'/cgi-bin/koha/opac-review.pl?biblionumber=[% biblionumber |uri%]\');\">"+_("Edit")+"<\/a><\/p>"
-                );
-                parent.opener.$("#addcomment").prev("p").remove();
-                parent.opener.$("#addcomment").remove();
-            };
-            [% IF ( clean_review ) %]
-                var clean_review = "[% clean_review |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]";        // TMPL var must not contain " quotes.
-                [% IF ( reviewid ) %]
-                inject_old(clean_review);
-                [% ELSE %]
-                inject_new(clean_review);
-                [% END %]
-            [% END %]
-            [% IF ( WINDOW_CLOSE ) %]
-                [% IF ( ERRORS ) %]
-                    // flash this page, then close.  Change warning in template if you change this value.
-                    setTimeout("window.close()",5000);
-                [% ELSE %]
-                    window.close();
-                [% END %]
+            [% IF WINDOW_CLOSE %]
+                window.close();
             [% END %]
         });
     //]]>
index c55829c..357f2f8 100755 (executable)
@@ -50,12 +50,12 @@ use C4::Biblio;
 use C4::Items;
 use C4::Reserves;
 use C4::Acquisition;
-use C4::Review;
 use C4::Serials;    # uses getsubscriptionfrom biblionumber
 use C4::Koha;
 use C4::Members;    # GetMember
 use Koha::RecordProcessor;
 
+
 my $query = CGI->new();
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
     {
@@ -177,24 +177,12 @@ for my $itm (@items) {
       unless $allow_onshelf_holds;
 }
 
-my $reviews = getreviews( $biblionumber, 1 );
-foreach ( @$reviews ) {
-    my $borrower_number_review = $_->{borrowernumber};
-    my $borrowerData           = GetMember('borrowernumber' =>$borrower_number_review);
-    # setting some borrower info into this hash
-    $_->{title}     = $borrowerData->{'title'};
-    $_->{surname}   = $borrowerData->{'surname'};
-    $_->{firstname} = $borrowerData->{'firstname'};
-}
-
-
 $template->param(
     RequestOnOpac       => C4::Context->preference("RequestOnOpac"),
     AllowOnShelfHolds   => $allow_onshelf_holds,
     norequests   => $norequests,
     ISBD         => $res,
     biblionumber => $biblionumber,
-    reviews             => $reviews,
 );
 
 #Search for title in links
index 2d019b1..bada8e2 100755 (executable)
@@ -51,6 +51,7 @@ use C4::CourseReserves qw(GetItemCourseReservesInfo);
 use Koha::RecordProcessor;
 use Koha::Virtualshelves;
 use Koha::Ratings;
+use Koha::Reviews;
 
 BEGIN {
        if (C4::Context->preference('BakerTaylorEnabled')) {
@@ -801,39 +802,45 @@ $template->param(
     ocoins => GetCOinSBiblio($record),
 );
 
-my $libravatar_enabled = 0;
-if ( C4::Context->preference('ShowReviewer') and C4::Context->preference('ShowReviewerPhoto')) {
-    eval {
-        require Libravatar::URL;
-        Libravatar::URL->import();
-    };
-    if (!$@ ) {
-        $libravatar_enabled = 1;
+my ( $loggedincommenter, $reviews );
+if ( C4::Context->preference('reviewson') ) {
+    $reviews = Koha::Reviews->search(
+        {
+            biblionumber => $biblionumber,
+            -or => { approved => 1, borrowernumber => $borrowernumber }
+        },
+        {
+            order_by => { -desc => 'datereviewed' }
+        }
+    )->unblessed;
+    my $libravatar_enabled = 0;
+    if ( C4::Context->preference('ShowReviewer') and C4::Context->preference('ShowReviewerPhoto') ) {
+        eval {
+            require Libravatar::URL;
+            Libravatar::URL->import();
+        };
+        if ( !$@ ) {
+            $libravatar_enabled = 1;
+        }
     }
-}
-
-my $reviews = getreviews( $biblionumber, 1 );
-my $loggedincommenter;
-
-
-
+    for my $review (@$reviews) {
+        my $borrowerData = GetMember( 'borrowernumber' => $review->{borrowernumber} );
+
+        # setting some borrower info into this hash
+        $review->{title}     = $borrowerData->{'title'};
+        $review->{surname}   = $borrowerData->{'surname'};
+        $review->{firstname} = $borrowerData->{'firstname'};
+        if ( $libravatar_enabled and $borrowerData->{'email'} ) {
+            $review->{avatarurl} = libravatar_url( email => $borrowerData->{'email'}, https => $ENV{HTTPS} );
+        }
+        $review->{userid}     = $borrowerData->{'userid'};
+        $review->{cardnumber} = $borrowerData->{'cardnumber'};
 
-foreach ( @$reviews ) {
-    my $borrowerData   = GetMember('borrowernumber' => $_->{borrowernumber});
-    # setting some borrower info into this hash
-    $_->{title}     = $borrowerData->{'title'};
-    $_->{surname}   = $borrowerData->{'surname'};
-    $_->{firstname} = $borrowerData->{'firstname'};
-    if ($libravatar_enabled and $borrowerData->{'email'}) {
-        $_->{avatarurl} = libravatar_url(email => $borrowerData->{'email'}, https => $ENV{HTTPS});
+        if ( $borrowerData->{'borrowernumber'} eq $borrowernumber ) {
+            $review->{your_comment} = 1;
+            $loggedincommenter = 1;
+        }
     }
-    $_->{userid}    = $borrowerData->{'userid'};
-    $_->{cardnumber}    = $borrowerData->{'cardnumber'};
-
-    if ($borrowerData->{'borrowernumber'} eq $borrowernumber) {
-               $_->{your_comment} = 1;
-               $loggedincommenter = 1;
-       }
 }
 
 if ( C4::Context->preference("OPACISBD") ) {