Merge remote-tracking branch 'origin/new/bug_5327'
[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 ($param) = @_;
95     my $status = (defined($param) ? $param : 1);
96     my $dbh            = C4::Context->dbh;
97     my $query          =
98       "SELECT count(*) FROM reviews WHERE approved=?";
99     my $sth = $dbh->prepare($query);
100     $sth->execute( $status );
101   return $sth->fetchrow;
102 }
103
104 sub numberofreviewsbybiblionumber {
105     my ($biblionumber) = @_;
106     my $dbh            = C4::Context->dbh;
107     my $query          =
108       "SELECT count(*) FROM reviews WHERE biblionumber=? and approved=?";
109     my $sth = $dbh->prepare($query);
110     $sth->execute( $biblionumber, 1 );
111         return $sth->fetchrow;
112 }
113
114 sub getreviews {
115     my ( $biblionumber, $approved ) = @_;
116     my $dbh   = C4::Context->dbh;
117     my $query =
118 "SELECT * FROM reviews WHERE biblionumber=? and approved=? order by datereviewed desc";
119     my $sth = $dbh->prepare($query) || warn $dbh->err_str;
120     $sth->execute( $biblionumber, $approved );
121         return $sth->fetchall_arrayref({});
122 }
123
124 sub getallreviews {
125     my ($status, $offset, $row_count) = @_;
126     my @params = ($status,($offset ? $offset : 0),($row_count ? $row_count : 20));
127     my $dbh      = C4::Context->dbh;
128     my $query    =
129       "SELECT * FROM reviews WHERE approved=? order by datereviewed desc LIMIT ?, ?";
130     my $sth = $dbh->prepare($query) || warn $dbh->err_str;
131     $sth->execute(@params);
132         return $sth->fetchall_arrayref({});
133 }
134
135 =head2 approvereview
136
137   approvereview($reviewid);
138
139 Takes a reviewid and marks that review approved
140
141 =cut
142
143 sub approvereview {
144     my ($reviewid) = @_;
145     my $dbh        = C4::Context->dbh();
146     my $query      = "UPDATE reviews
147                SET approved=?
148                WHERE reviewid=?";
149     my $sth = $dbh->prepare($query);
150     $sth->execute( 1, $reviewid );
151 }
152
153 =head2 deletereview
154
155   deletereview($reviewid);
156
157 Takes a reviewid and deletes it
158
159 =cut
160
161 sub deletereview {
162     my ($reviewid) = @_;
163     my $dbh        = C4::Context->dbh();
164     my $query      = "DELETE FROM reviews
165                WHERE reviewid=?";
166     my $sth = $dbh->prepare($query);
167     $sth->execute($reviewid);
168 }
169
170 1;
171 __END__
172
173 =head1 AUTHOR
174
175 Koha Team
176
177 =cut