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