Bug 16011: $VERSION - remove use vars $VERSION
[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     # 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 = "SELECT * FROM reviews WHERE biblionumber=? and borrowernumber=?";
70     my $sth   = $dbh->prepare($query);
71     $sth->execute( $biblionumber, $borrowernumber );
72     return $sth->fetchrow_hashref();
73 }
74
75 =head2 savereview
76
77   savereview($biblionumber,$borrowernumber, $review);
78
79 Save a review in the 'reviews' database
80
81 =cut
82
83 sub savereview {
84     my ( $biblionumber, $borrowernumber, $review ) = @_;
85     my $dbh   = C4::Context->dbh;
86     my $query = "INSERT INTO reviews (borrowernumber,biblionumber,
87   review,approved,datereviewed) VALUES
88   (?,?,?,0,now())";
89     my $sth = $dbh->prepare($query);
90     $sth->execute( $borrowernumber, $biblionumber, $review );
91 }
92
93 =head2 updatereview
94
95   updateview($biblionumber,$borrowernumber, $review);
96
97 Update the review description in the 'reviews' database
98
99 =cut
100
101 sub updatereview {
102     my ( $biblionumber, $borrowernumber, $review ) = @_;
103     my $dbh   = C4::Context->dbh;
104     my $query = "UPDATE reviews SET review=?,datereviewed=now(),approved=0  WHERE borrowernumber=? and biblionumber=?";
105     my $sth   = $dbh->prepare($query);
106     $sth->execute( $review, $borrowernumber, $biblionumber );
107 }
108
109 =head2 numberofreviews
110
111   my $count=numberofreviews( [$status] );
112
113 Return the number of reviews where in the 'reviews' database : 'approved' = $status
114 (By default $status = 1)
115
116 =cut
117
118 sub numberofreviews {
119     my ($param) = @_;
120     my $status = ( defined($param) ? $param : 1 );
121     my $dbh    = C4::Context->dbh;
122     my $query  = "SELECT count(*) FROM reviews WHERE approved=?";
123     my $sth    = $dbh->prepare($query);
124     $sth->execute($status);
125     return $sth->fetchrow;
126 }
127
128 =head2 numberofreviewsbybiblionumber
129
130   my $count=numberofreviewsbybiblionumber($biblionumber);
131
132 Return the number of reviews approved for a given biblionumber
133
134 =cut
135
136 sub numberofreviewsbybiblionumber {
137     my ($biblionumber) = @_;
138     my $dbh            = C4::Context->dbh;
139     my $query          = "SELECT count(*) FROM reviews WHERE biblionumber=? and approved=?";
140     my $sth            = $dbh->prepare($query);
141     $sth->execute( $biblionumber, 1 );
142     return $sth->fetchrow;
143 }
144
145 =head2 getreviews
146
147   my $reviews=getreviews($biblionumber, $status);
148
149 Return all reviews where in the 'reviews' database :
150 'biblionumber' = $biblionumber and 'approved' = $status
151
152 =cut
153
154 sub getreviews {
155     my ( $biblionumber, $approved ) = @_;
156     my $dbh   = C4::Context->dbh;
157     my $query = "SELECT * FROM reviews WHERE biblionumber=? and approved=? order by datereviewed desc";
158     my $sth   = $dbh->prepare($query);
159     $sth->execute( $biblionumber, $approved );
160     return $sth->fetchall_arrayref( {} );
161 }
162
163 =head2 getallreviews
164
165   my $reviews=getallreviews($status, [$offset], [$row_count]);
166
167 Return all reviews where in the 'reviews' database : 'approved' = $status
168
169 If offset and row_count are fiven, it's return all reviews between the
170 $offset position and the ($offset + $row_count) position.
171 (By default : $offset = 0 and $row_count = 20)
172
173 =cut
174
175 sub getallreviews {
176     my ( $status, $offset, $row_count ) = @_;
177     my @params = ( $status, ( $offset ? $offset : 0 ), ( $row_count ? $row_count : 20 ) );
178     my $dbh    = C4::Context->dbh;
179     my $query  = "SELECT * FROM reviews WHERE approved=? order by datereviewed desc LIMIT ?, ?";
180     my $sth    = $dbh->prepare($query);
181     $sth->execute(@params);
182     return $sth->fetchall_arrayref( {} );
183 }
184
185 =head2 approvereview
186
187   approvereview($reviewid);
188
189 Takes a reviewid and marks that review approved
190
191 =cut
192
193 sub approvereview {
194     my ($reviewid) = @_;
195     my $dbh        = C4::Context->dbh();
196     my $query      = "UPDATE reviews
197                SET approved=?
198                WHERE reviewid=?";
199     my $sth = $dbh->prepare($query);
200     $sth->execute( 1, $reviewid );
201 }
202
203 =head2 unapprovereview
204
205   unapprovereview($reviewid);
206
207 Takes a reviewid and marks that review as not approved
208
209 =cut
210
211 sub unapprovereview {
212     my ($reviewid) = @_;
213     my $dbh        = C4::Context->dbh();
214     my $query      = "UPDATE reviews
215                SET approved=?
216                WHERE reviewid=?";
217     my $sth = $dbh->prepare($query);
218     $sth->execute( 0, $reviewid );
219 }
220
221 =head2 deletereview
222
223   deletereview($reviewid);
224
225 Takes a reviewid and deletes it
226
227 =cut
228
229 sub deletereview {
230     my ($reviewid) = @_;
231     my $dbh        = C4::Context->dbh();
232     my $query      = "DELETE FROM reviews
233                WHERE reviewid=?";
234     my $sth = $dbh->prepare($query);
235     $sth->execute($reviewid);
236 }
237
238 1;
239 __END__
240
241 =head1 AUTHOR
242
243 Koha Team
244
245 =cut