View | Details | Raw Unified | Return to bug 1985
Collapse All | Expand All

(-)a/C4/Review.pm (-20 / +34 lines)
Lines 4-26 package C4::Review; Link Here
4
#
4
#
5
# This file is part of Koha.
5
# This file is part of Koha.
6
#
6
#
7
# Koha is free software; you can redistribute it and/or modify it under the
7
# Koha is free software; you can redistribute it and/or modify it
8
# terms of the GNU General Public License as published by the Free Software
8
# under the terms of the GNU General Public License as published by
9
# Foundation; either version 2 of the License, or (at your option) any later
9
# the Free Software Foundation; either version 3 of the License, or
10
# version.
10
# (at your option) any later version.
11
#
11
#
12
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
12
# Koha is distributed in the hope that it will be useful, but
13
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
# WITHOUT ANY WARRANTY; without even the implied warranty of
14
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
# GNU General Public License for more details.
15
#
16
#
16
# You should have received a copy of the GNU General Public License along
17
# You should have received a copy of the GNU General Public License
17
# with Koha; if not, write to the Free Software Foundation, Inc.,
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
18
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
19
20
use strict;
20
use Modern::Perl;
21
use warnings;
22
21
23
use C4::Context;
22
use C4::Context;
23
require C4::Letters;
24
24
25
use vars qw($VERSION @ISA @EXPORT);
25
use vars qw($VERSION @ISA @EXPORT);
26
26
Lines 29-36 BEGIN { Link Here
29
    $VERSION = 3.07.00.049;
29
    $VERSION = 3.07.00.049;
30
	require Exporter;
30
	require Exporter;
31
	@ISA    = qw(Exporter);
31
	@ISA    = qw(Exporter);
32
	@EXPORT = qw(getreview savereview updatereview numberofreviews numberofreviewsbybiblionumber
32
	@EXPORT = qw(getreview savereview updatereview
33
		getreviews getallreviews approvereview unapprovereview deletereview);
33
                     numberofreviews numberofreviewsbybiblionumber
34
                     getreviews getallreviews approvereview
35
                     unapprovereview deletereview SendReviewAlert);
34
}
36
}
35
37
36
=head1 NAME
38
=head1 NAME
Lines 83-89 sub savereview { Link Here
83
    $sth->execute( $borrowernumber, $biblionumber, $review);
85
    $sth->execute( $borrowernumber, $biblionumber, $review);
84
86
85
    unless ($sth->err()) {
87
    unless ($sth->err()) {
86
        SendReviewAlert( $review, $borrowernumber );
88
        SendReviewAlert( {
89
                           'review'         => $review,
90
                           'borrowernumber' => $borrowernumber,
91
                           'biblionumber'   => $biblionumber } );
87
    }
92
    }
88
}
93
}
89
94
Lines 95-101 sub updatereview { Link Here
95
    $sth->execute( $review, $borrowernumber, $biblionumber );
100
    $sth->execute( $review, $borrowernumber, $biblionumber );
96
101
97
    unless ($sth->err()) {
102
    unless ($sth->err()) {
98
        SendReviewAlert( $review, $borrowernumber );
103
        SendReviewAlert( {
104
                           'review'         => $review,
105
                           'borrowernumber' => $borrowernumber,
106
                           'biblionumber'   => $biblionumber } );
99
    }
107
    }
100
}
108
}
101
109
Lines 196-218 sub deletereview { Link Here
196
204
197
=head2 SendReviewAlert
205
=head2 SendReviewAlert
198
206
199
  SendReviewAlert( $review, $borrowernumber );
207
  SendReviewAlert( { 'review'         => $review,
208
                     'borrowernumber' => $borrowernumber,
209
                     'biblionumber'   => $biblionumber } );
200
210
201
=cut
211
=cut
202
212
203
sub SendReviewAlert {
213
sub SendReviewAlert {
204
    my $review = shift;
214
    my $params = shift;
205
    my $borrowernumber = shift;
206
215
207
    my $moderatorEmail = C4::Context->preference('CommentModeratorsEmail');
216
    my $moderatorEmail = C4::Context->preference('CommentModeratorsEmail');
208
209
    return unless $moderatorEmail;
217
    return unless $moderatorEmail;
210
218
219
    my $review = $params->{'review'};
220
    my $borrowernumber = $params->{'borrowernumber'};
221
    my $biblionumber   = $params->{'biblionumber'};
222
211
    my $letter =  C4::Letters::GetPreparedLetter (
223
    my $letter =  C4::Letters::GetPreparedLetter (
212
        module => 'members',
224
        module => 'members',
213
        letter_code => 'COMMENT_CREATED',
225
        letter_code => 'COMMENT_CREATED',
214
        tables => {
226
        tables => {
215
            'borrowers'   => $borrowernumber,
227
            'borrowers'   => $borrowernumber,
228
            'biblio'      => $biblionumber,
229
            'biblioitems' => $biblionumber,
216
        }
230
        }
217
    ) or return;
231
    ) or return;
218
232
(-)a/t/db_dependent/Review.t (-1 / +97 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl
2
3
use Modern::Perl;
4
use Test::More tests => 14;
5
6
use_ok('C4::Review');
7
8
my $dbh = C4::Context->dbh;
9
$dbh->{RaiseError} = 1;
10
$dbh->{AutoCommit} = 0;
11
12
my $sth = $dbh->prepare("SELECT * FROM borrowers;");
13
$sth->execute();
14
my $row = $sth->fetchrow_hashref();
15
my $borrowernumber;
16
$borrowernumber = $row->{'borrowernumber'} if $row;
17
$sth = $dbh->prepare("SELECT * FROM biblio;");
18
$sth->execute();
19
$row = $sth->fetchrow_hashref();
20
my $biblionumber;
21
$biblionumber = $row->{'biblionumber'} if $row;
22
23
SKIP: {
24
    skip "Missing borrowers or biblios",13
25
      unless $biblionumber and $borrowernumber;
26
27
    # Make sure there are no reviews
28
    $sth = $dbh->prepare("DELETE FROM reviews;");
29
    $sth->execute();
30
31
    # Clear out the message_queue to make counting easier.
32
    $sth = $dbh->prepare("DELETE FROM message_queue;");
33
    $sth->execute();
34
35
    # Add a review
36
    savereview($biblionumber,$borrowernumber,'A sample review.');
37
38
    # Retrieve review
39
    my $reviews = getallreviews(0);
40
    my $reviewid = $reviews->[0]->{'reviewid'};
41
    my $ReviewText = $reviews->[0]->{'review'};
42
    ok($ReviewText eq 'A sample review.','Saved and retrieved a sample review.');
43
44
    # Update the review
45
    updatereview($biblionumber,$borrowernumber,'A revised review.');
46
47
    # Retrieve it differently.
48
    my $review = getreview($biblionumber,$borrowernumber);
49
    $ReviewText = $review->{'review'};
50
    ok($ReviewText eq 'A revised review.','Updated and retrieved a revised review.');
51
52
    # Confirm 1 unapproved comment.
53
    my $UnapprovedReviewsCount = numberofreviews(0);
54
    ok($UnapprovedReviewsCount==1,'There is one unapproved comment.');
55
56
    # Approve the comment.
57
    approvereview($reviewid);
58
    $UnapprovedReviewsCount = numberofreviews(0);
59
    ok($UnapprovedReviewsCount==0,'There are no unapproved comments.');
60
    my $ApprovedReviewsCount = numberofreviews(1);
61
    ok($ApprovedReviewsCount==1,'There is one approved comment.');
62
63
    # Check how many reviews for this biblionumber.
64
    my $ReviewsCount = numberofreviewsbybiblionumber($biblionumber);
65
    ok($ReviewsCount==1,'There is one approved comment for this biblio.');
66
67
    # Unapprove the comment.
68
    unapprovereview($reviewid);
69
    $UnapprovedReviewsCount = numberofreviews(0);
70
    ok($UnapprovedReviewsCount==1,'There is one unapproved comment.');
71
    $ApprovedReviewsCount = numberofreviews(1);
72
    ok($ApprovedReviewsCount==0,'There are no approved comments.');
73
74
    # Delete the review.
75
    deletereview($reviewid);
76
    $UnapprovedReviewsCount = numberofreviews(0);
77
    ok($UnapprovedReviewsCount==0,'There are no unapproved comments.');
78
    $ApprovedReviewsCount = numberofreviews(1);
79
    ok($ApprovedReviewsCount==0,'There are no approved comments.');
80
81
    my $ApprovedReviews   = getreviews($biblionumber,1);
82
    my $UnapprovedReviews = getreviews($biblionumber,0);
83
    ok(scalar @$ApprovedReviews==0,'No approved comment records.');
84
    ok(scalar @$UnapprovedReviews==0,'No unapproved comment records.');
85
86
    # Only save, update, and SendReviewAlert should trigger letters.
87
    SendReviewAlert( { 'review' => 'A sample review unused.',
88
                       'biblionumber' => $biblionumber,
89
                       'borrowernumber' => $borrowernumber });
90
91
    $sth = $dbh->prepare("SELECT COUNT(*) FROM message_queue;");
92
    $sth->execute();
93
    my $LetterCount = $sth->fetchrow();
94
    ok($LetterCount==3,'There are three triggered reminders as expected.');
95
}
96
97
$dbh->rollback();

Return to bug 1985