Bug 13969: Testing C4::Review
[koha.git] / C4 / Review.pm
1 package C4::Review;
2
3 # Copyright 2000-2002 Katipo Communications
4 #
5 # This file is part of Koha.
6 #
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
19
20 use strict;
21 use warnings;
22
23 use C4::Context;
24
25 use vars qw($VERSION @ISA @EXPORT);
26
27 BEGIN {
28   # set the version for version checking
29     $VERSION = 3.07.00.049;
30   require Exporter;
31   @ISA    = qw(Exporter);
32   @EXPORT = qw(getreview savereview updatereview numberofreviews numberofreviewsbybiblionumber
33     getreviews getallreviews approvereview unapprovereview deletereview);
34 }
35
36 =head1 NAME
37
38 C4::Review - Perl Module containing routines for dealing with reviews of items
39
40 =head1 SYNOPSIS
41
42   use C4::Review;
43
44   my $review=getreview($biblionumber,$borrowernumber);
45   savereview($biblionumber,$borrowernumber,$review);
46   updatereview($biblionumber,$borrowernumber,$review);
47   my $count=numberofreviews($status);
48   my $count=numberofreviewsbybiblionumber($biblionumber);
49   my $reviews=getreviews($biblionumber, $status);
50   my $reviews=getallreviews($status, [$offset], [$row_count]);
51
52 =head1 DESCRIPTION
53
54 Review.pm provides many routines for manipulating reviews.
55
56 =head1 FUNCTIONS
57
58 =head2 getreview
59
60   $review = getreview($biblionumber,$borrowernumber);
61
62 Takes a borrowernumber and a biblionumber and returns the review of that biblio
63
64 =cut
65
66 sub getreview {
67     my ( $biblionumber, $borrowernumber ) = @_;
68     my $dbh   = C4::Context->dbh;
69     my $query =
70       "SELECT * FROM reviews WHERE biblionumber=? and borrowernumber=?";
71     my $sth = $dbh->prepare($query);
72     $sth->execute( $biblionumber, $borrowernumber );
73     return $sth->fetchrow_hashref();
74 }
75
76 =head2 savereview
77
78   savereview($biblionumber,$borrowernumber, $review);
79
80 Save a review in the 'reviews' database
81
82 =cut
83
84 sub savereview {
85     my ( $biblionumber, $borrowernumber, $review ) = @_;
86     my $dbh   = C4::Context->dbh;
87     my $query = "INSERT INTO reviews (borrowernumber,biblionumber,
88   review,approved,datereviewed) VALUES
89   (?,?,?,0,now())";
90     my $sth = $dbh->prepare($query);
91     $sth->execute( $borrowernumber, $biblionumber, $review);
92 }
93
94 =head2 updatereview
95
96   updateview($biblionumber,$borrowernumber, $review);
97
98 Update the review description in the 'reviews' database
99
100 =cut
101
102 sub updatereview {
103     my ( $biblionumber, $borrowernumber, $review ) = @_;
104     my $dbh   = C4::Context->dbh;
105     my $query = "UPDATE reviews SET review=?,datereviewed=now(),approved=0  WHERE borrowernumber=? and biblionumber=?";
106     my $sth = $dbh->prepare($query);
107     $sth->execute( $review, $borrowernumber, $biblionumber );
108 }
109
110 =head2 numberofreviews
111
112   my $count=numberofreviews( [$status] );
113
114 Return the number of reviews where in the 'reviews' database : 'approved' = $status
115 (By default $status = 1)
116
117 =cut
118
119 sub numberofreviews {
120     my ($param) = @_;
121     my $status = (defined($param) ? $param : 1);
122     my $dbh            = C4::Context->dbh;
123     my $query          =
124       "SELECT count(*) FROM reviews WHERE approved=?";
125     my $sth = $dbh->prepare($query);
126     $sth->execute( $status );
127   return $sth->fetchrow;
128 }
129
130 =head2 numberofreviewsbybiblionumber
131
132   my $count=numberofreviewsbybiblionumber($biblionumber);
133
134 Return the number of reviews approved for a given biblionumber
135
136 =cut
137
138 sub numberofreviewsbybiblionumber {
139     my ($biblionumber) = @_;
140     my $dbh            = C4::Context->dbh;
141     my $query          =
142       "SELECT count(*) FROM reviews WHERE biblionumber=? and approved=?";
143     my $sth = $dbh->prepare($query);
144     $sth->execute( $biblionumber, 1 );
145   return $sth->fetchrow;
146 }
147
148 =head2 getreviews
149
150   my $reviews=getreviews($biblionumber, $status);
151
152 Return all reviews where in the 'reviews' database :
153 'biblionumber' = $biblionumber and 'approved' = $status
154
155 =cut
156
157 sub getreviews {
158     my ( $biblionumber, $approved ) = @_;
159     my $dbh   = C4::Context->dbh;
160     my $query =
161       "SELECT * FROM reviews WHERE biblionumber=? and approved=? order by datereviewed desc";
162     my $sth = $dbh->prepare($query);
163     $sth->execute( $biblionumber, $approved );
164   return $sth->fetchall_arrayref({});
165 }
166
167 =head2 getallreviews
168
169   my $reviews=getallreviews($status, [$offset], [$row_count]);
170
171 Return all reviews where in the 'reviews' database : 'approved' = $status
172
173 If offset and row_count are fiven, it's return all reviews between the
174 $offset position and the ($offset + $row_count) position.
175 (By default : $offset = 0 and $row_count = 20)
176
177 =cut
178
179 sub getallreviews {
180     my ($status, $offset, $row_count) = @_;
181     my @params = ($status,($offset ? $offset : 0),($row_count ? $row_count : 20));
182     my $dbh      = C4::Context->dbh;
183     my $query    =
184       "SELECT * FROM reviews WHERE approved=? order by datereviewed desc LIMIT ?, ?";
185     my $sth = $dbh->prepare($query);
186     $sth->execute(@params);
187   return $sth->fetchall_arrayref({});
188 }
189
190 =head2 approvereview
191
192   approvereview($reviewid);
193
194 Takes a reviewid and marks that review approved
195
196 =cut
197
198 sub approvereview {
199     my ($reviewid) = @_;
200     my $dbh        = C4::Context->dbh();
201     my $query      = "UPDATE reviews
202                SET approved=?
203                WHERE reviewid=?";
204     my $sth = $dbh->prepare($query);
205     $sth->execute( 1, $reviewid );
206 }
207
208 =head2 unapprovereview
209
210   unapprovereview($reviewid);
211
212 Takes a reviewid and marks that review as not approved
213
214 =cut
215
216 sub unapprovereview {
217     my ($reviewid) = @_;
218     my $dbh        = C4::Context->dbh();
219     my $query      = "UPDATE reviews
220                SET approved=?
221                WHERE reviewid=?";
222     my $sth = $dbh->prepare($query);
223     $sth->execute( 0, $reviewid );
224 }
225
226 =head2 deletereview
227
228   deletereview($reviewid);
229
230 Takes a reviewid and deletes it
231
232 =cut
233
234 sub deletereview {
235     my ($reviewid) = @_;
236     my $dbh        = C4::Context->dbh();
237     my $query      = "DELETE FROM reviews
238                WHERE reviewid=?";
239     my $sth = $dbh->prepare($query);
240     $sth->execute($reviewid);
241 }
242
243 1;
244 __END__
245
246 =head1 AUTHOR
247
248 Koha Team
249
250 =cut