Bug 16819: C4::Members::DelMember should use Koha::Holds to delete holds
[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(@ISA @EXPORT);
26
27 BEGIN {
28     require Exporter;
29     @ISA    = qw(Exporter);
30     @EXPORT = qw(getreview savereview updatereview numberofreviews numberofreviewsbybiblionumber
31       getreviews getallreviews approvereview unapprovereview deletereview);
32 }
33
34 =head1 NAME
35
36 C4::Review - Perl Module containing routines for dealing with reviews of items
37
38 =head1 SYNOPSIS
39
40   use C4::Review;
41
42   my $review=getreview($biblionumber,$borrowernumber);
43   savereview($biblionumber,$borrowernumber,$review);
44   updatereview($biblionumber,$borrowernumber,$review);
45   my $count=numberofreviews($status);
46   my $count=numberofreviewsbybiblionumber($biblionumber);
47   my $reviews=getreviews($biblionumber, $status);
48   my $reviews=getallreviews($status, [$offset], [$row_count]);
49
50 =head1 DESCRIPTION
51
52 Review.pm provides many routines for manipulating reviews.
53
54 =head1 FUNCTIONS
55
56 =head2 getreview
57
58   $review = getreview($biblionumber,$borrowernumber);
59
60 Takes a borrowernumber and a biblionumber and returns the review of that biblio
61
62 =cut
63
64 sub getreview {
65     my ( $biblionumber, $borrowernumber ) = @_;
66     my $dbh   = C4::Context->dbh;
67     my $query = "SELECT * FROM reviews WHERE biblionumber=? and borrowernumber=?";
68     my $sth   = $dbh->prepare($query);
69     $sth->execute( $biblionumber, $borrowernumber );
70     return $sth->fetchrow_hashref();
71 }
72
73 =head2 savereview
74
75   savereview($biblionumber,$borrowernumber, $review);
76
77 Save a review in the 'reviews' database
78
79 =cut
80
81 sub savereview {
82     my ( $biblionumber, $borrowernumber, $review ) = @_;
83     my $dbh   = C4::Context->dbh;
84     my $query = "INSERT INTO reviews (borrowernumber,biblionumber,
85   review,approved,datereviewed) VALUES
86   (?,?,?,0,now())";
87     my $sth = $dbh->prepare($query);
88     $sth->execute( $borrowernumber, $biblionumber, $review );
89 }
90
91 =head2 updatereview
92
93   updateview($biblionumber,$borrowernumber, $review);
94
95 Update the review description in the 'reviews' database
96
97 =cut
98
99 sub updatereview {
100     my ( $biblionumber, $borrowernumber, $review ) = @_;
101     my $dbh   = C4::Context->dbh;
102     my $query = "UPDATE reviews SET review=?,datereviewed=now(),approved=0  WHERE borrowernumber=? and biblionumber=?";
103     my $sth   = $dbh->prepare($query);
104     $sth->execute( $review, $borrowernumber, $biblionumber );
105 }
106
107 =head2 numberofreviews
108
109   my $count=numberofreviews( [$status] );
110
111 Return the number of reviews where in the 'reviews' database : 'approved' = $status
112 (By default $status = 1)
113
114 =cut
115
116 sub numberofreviews {
117     my ($param) = @_;
118     my $status = ( defined($param) ? $param : 1 );
119     my $dbh    = C4::Context->dbh;
120     my $query  = "SELECT count(*) FROM reviews WHERE approved=?";
121     my $sth    = $dbh->prepare($query);
122     $sth->execute($status);
123     return $sth->fetchrow;
124 }
125
126 =head2 numberofreviewsbybiblionumber
127
128   my $count=numberofreviewsbybiblionumber($biblionumber);
129
130 Return the number of reviews approved for a given biblionumber
131
132 =cut
133
134 sub numberofreviewsbybiblionumber {
135     my ($biblionumber) = @_;
136     my $dbh            = C4::Context->dbh;
137     my $query          = "SELECT count(*) FROM reviews WHERE biblionumber=? and approved=?";
138     my $sth            = $dbh->prepare($query);
139     $sth->execute( $biblionumber, 1 );
140     return $sth->fetchrow;
141 }
142
143 =head2 getreviews
144
145   my $reviews=getreviews($biblionumber, $status);
146
147 Return all reviews where in the 'reviews' database :
148 'biblionumber' = $biblionumber and 'approved' = $status
149
150 =cut
151
152 sub getreviews {
153     my ( $biblionumber, $approved ) = @_;
154     my $dbh   = C4::Context->dbh;
155     my $query = "SELECT * FROM reviews WHERE biblionumber=? and approved=? order by datereviewed desc";
156     my $sth   = $dbh->prepare($query);
157     $sth->execute( $biblionumber, $approved );
158     return $sth->fetchall_arrayref( {} );
159 }
160
161 =head2 getallreviews
162
163   my $reviews=getallreviews($status, [$offset], [$row_count]);
164
165 Return all reviews where in the 'reviews' database : 'approved' = $status
166
167 If offset and row_count are fiven, it's return all reviews between the
168 $offset position and the ($offset + $row_count) position.
169 (By default : $offset = 0 and $row_count = 20)
170
171 =cut
172
173 sub getallreviews {
174     my ( $status, $offset, $row_count ) = @_;
175     my @params = ( $status, ( $offset ? $offset : 0 ), ( $row_count ? $row_count : 20 ) );
176     my $dbh    = C4::Context->dbh;
177     my $query  = "SELECT * FROM reviews WHERE approved=? order by datereviewed desc LIMIT ?, ?";
178     my $sth    = $dbh->prepare($query);
179     $sth->execute(@params);
180     return $sth->fetchall_arrayref( {} );
181 }
182
183 =head2 approvereview
184
185   approvereview($reviewid);
186
187 Takes a reviewid and marks that review approved
188
189 =cut
190
191 sub approvereview {
192     my ($reviewid) = @_;
193     my $dbh        = C4::Context->dbh();
194     my $query      = "UPDATE reviews
195                SET approved=?
196                WHERE reviewid=?";
197     my $sth = $dbh->prepare($query);
198     $sth->execute( 1, $reviewid );
199 }
200
201 =head2 unapprovereview
202
203   unapprovereview($reviewid);
204
205 Takes a reviewid and marks that review as not approved
206
207 =cut
208
209 sub unapprovereview {
210     my ($reviewid) = @_;
211     my $dbh        = C4::Context->dbh();
212     my $query      = "UPDATE reviews
213                SET approved=?
214                WHERE reviewid=?";
215     my $sth = $dbh->prepare($query);
216     $sth->execute( 0, $reviewid );
217 }
218
219 =head2 deletereview
220
221   deletereview($reviewid);
222
223 Takes a reviewid and deletes it
224
225 =cut
226
227 sub deletereview {
228     my ($reviewid) = @_;
229     my $dbh        = C4::Context->dbh();
230     my $query      = "DELETE FROM reviews
231                WHERE reviewid=?";
232     my $sth = $dbh->prepare($query);
233     $sth->execute($reviewid);
234 }
235
236 1;
237 __END__
238
239 =head1 AUTHOR
240
241 Koha Team
242
243 =cut