Merge remote-tracking branch 'origin/new/bug_6966'
[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 under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 2 of the License, or (at your option) any later
10 # version.
11 #
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License along
17 # with Koha; if not, write to the Free Software Foundation, Inc.,
18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
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.00;
30         require Exporter;
31         @ISA    = qw(Exporter);
32         @EXPORT = qw(getreview savereview updatereview numberofreviews numberofreviewsbybiblionumber
33                 getreviews getallreviews approvereview 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($biblionumber);
48   my $reviews=getreviews($biblionumber);
49   my $reviews=getallreviews($status);
50
51 =head1 DESCRIPTION
52
53 Review.pm provides many routines for manipulating reviews.
54
55 =head1 FUNCTIONS
56
57 =head2 getreview
58
59   $review = getreview($biblionumber,$borrowernumber);
60
61 Takes a borrowernumber and a biblionumber and returns the review of that biblio
62
63 =cut
64
65 sub getreview {
66     my ( $biblionumber, $borrowernumber ) = @_;
67     my $dbh   = C4::Context->dbh;
68     my $query =
69       "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 sub savereview {
76     my ( $biblionumber, $borrowernumber, $review ) = @_;
77     my $dbh   = C4::Context->dbh;
78     my $query = "INSERT INTO reviews (borrowernumber,biblionumber,
79         review,approved,datereviewed) VALUES 
80   (?,?,?,0,now())";
81     my $sth = $dbh->prepare($query);
82     $sth->execute( $borrowernumber, $biblionumber, $review);
83 }
84
85 sub updatereview {
86     my ( $biblionumber, $borrowernumber, $review ) = @_;
87     my $dbh   = C4::Context->dbh;
88     my $query = "UPDATE reviews SET review=?,datereviewed=now(),approved=0  WHERE borrowernumber=? and biblionumber=?";
89     my $sth = $dbh->prepare($query);
90     $sth->execute( $review, $borrowernumber, $biblionumber );
91 }
92
93 sub numberofreviews {
94     my $dbh            = C4::Context->dbh;
95     my $query          =
96       "SELECT count(*) FROM reviews WHERE approved=?";
97     my $sth = $dbh->prepare($query);
98     $sth->execute( 1 );
99   return $sth->fetchrow;
100 }
101
102 sub numberofreviewsbybiblionumber {
103     my ($biblionumber) = @_;
104     my $dbh            = C4::Context->dbh;
105     my $query          =
106       "SELECT count(*) FROM reviews WHERE biblionumber=? and approved=?";
107     my $sth = $dbh->prepare($query);
108     $sth->execute( $biblionumber, 1 );
109         return $sth->fetchrow;
110 }
111
112 sub getreviews {
113     my ( $biblionumber, $approved ) = @_;
114     my $dbh   = C4::Context->dbh;
115     my $query =
116 "SELECT * FROM reviews WHERE biblionumber=? and approved=? order by datereviewed desc";
117     my $sth = $dbh->prepare($query) || warn $dbh->err_str;
118     $sth->execute( $biblionumber, $approved );
119         return $sth->fetchall_arrayref({});
120 }
121
122 sub getallreviews {
123     my ($status, $offset, $row_count) = @_;
124     my @params = ($status,($offset ? $offset : 0),($row_count ? $row_count : 20));
125     my $dbh      = C4::Context->dbh;
126     my $query    =
127       "SELECT * FROM reviews WHERE approved=? order by datereviewed desc LIMIT ?, ?";
128     my $sth = $dbh->prepare($query) || warn $dbh->err_str;
129     $sth->execute(@params);
130         return $sth->fetchall_arrayref({});
131 }
132
133 =head2 approvereview
134
135   approvereview($reviewid);
136
137 Takes a reviewid and marks that review approved
138
139 =cut
140
141 sub approvereview {
142     my ($reviewid) = @_;
143     my $dbh        = C4::Context->dbh();
144     my $query      = "UPDATE reviews
145                SET approved=?
146                WHERE reviewid=?";
147     my $sth = $dbh->prepare($query);
148     $sth->execute( 1, $reviewid );
149 }
150
151 =head2 deletereview
152
153   deletereview($reviewid);
154
155 Takes a reviewid and deletes it
156
157 =cut
158
159 sub deletereview {
160     my ($reviewid) = @_;
161     my $dbh        = C4::Context->dbh();
162     my $query      = "DELETE FROM reviews
163                WHERE reviewid=?";
164     my $sth = $dbh->prepare($query);
165     $sth->execute($reviewid);
166 }
167
168 1;
169 __END__
170
171 =head1 AUTHOR
172
173 Koha Team
174
175 =cut