From c178cf35f441d24599aeebd43675ed18c7376732 Mon Sep 17 00:00:00 2001 From: Olli-Antti Kivilahti Date: Tue, 25 Nov 2014 18:08:48 +0200 Subject: [PATCH] Bug 1985 - Email notification of new OPAC comments This feature adds YAS 'CommentModeratorsEmail', where an email (template code COMMENT_CREATED) is sent when a borrower creates/modifies an comment/review. The syspref is empty by default and no email is sent when the syspref is empty. This feature is needed because we want to alert our content moderators to take action when needed. Usually it is our librarians who write reviews and this improvement makes the process of moving Koha reviews to our CMS more smooth. TEST SETUP: -1. Run updatedatabase.pl to add the syspref and the new letter template. 0. Go to admin/preferences.pl?tab=opac, and set the 'CommentModeratorsEmail'-syspref to your email-address. TEST PLAN: 1. Log in to OPAC and find any Biblio. 2. Make a comment/review for it. 3. Check the koha.message_queue-table for any letter_code = 'COMMENT_CREATED'. You should see the reasonable default message. You can change the message in tools/letter.pl. --- C4/Review.pm | 40 ++++++++++++++++++++ .../data/mysql/en/mandatory/sample_notices.sql | 11 ++++++ installer/data/mysql/sysprefs.sql | 1 + installer/data/mysql/updatedatabase.pl | 24 ++++++++++++ .../prog/en/modules/admin/preferences/opac.pref | 4 ++ 5 files changed, 80 insertions(+) diff --git a/C4/Review.pm b/C4/Review.pm index dd989ed..bd452d4 100644 --- a/C4/Review.pm +++ b/C4/Review.pm @@ -21,6 +21,7 @@ use strict; use warnings; use C4::Context; +use C4::Members qw(GetMember); use vars qw($VERSION @ISA @EXPORT); @@ -81,6 +82,10 @@ sub savereview { (?,?,?,0,now())"; my $sth = $dbh->prepare($query); $sth->execute( $borrowernumber, $biblionumber, $review); + + unless ($sth->err()) { + SendReviewAlert( $review, $borrowernumber ); + } } sub updatereview { @@ -89,6 +94,10 @@ sub updatereview { my $query = "UPDATE reviews SET review=?,datereviewed=now(),approved=0 WHERE borrowernumber=? and biblionumber=?"; my $sth = $dbh->prepare($query); $sth->execute( $review, $borrowernumber, $biblionumber ); + + unless ($sth->err()) { + SendReviewAlert( $review, $borrowernumber ); + } } sub numberofreviews { @@ -186,6 +195,37 @@ sub deletereview { $sth->execute($reviewid); } +=head SendReviewAlert + +=cut + +sub SendReviewAlert { + my $review = shift; + my $borrowernumber = shift; + + my $moderatorEmail = C4::Context->preference('CommentModeratorsEmail'); + if (not($moderatorEmail)) { + return undef; + } + + my $letter = C4::Letters::GetPreparedLetter ( + module => 'members', + letter_code => 'COMMENT_CREATED', + tables => { + 'borrowers' => $borrowernumber, + } + ) or return; + + C4::Letters::EnqueueLetter({ + letter => $letter, + borrowernumber => $borrowernumber, + message_transport_type => 'email', + to_address => $moderatorEmail, + }); + + return 1; +} + 1; __END__ diff --git a/installer/data/mysql/en/mandatory/sample_notices.sql b/installer/data/mysql/en/mandatory/sample_notices.sql index 2281739..506e43b 100644 --- a/installer/data/mysql/en/mandatory/sample_notices.sql +++ b/installer/data/mysql/en/mandatory/sample_notices.sql @@ -118,6 +118,17 @@ http://<>/cgi-bin/koha/opac-registration-verify.pl?token=<> is waiting for moderation', 'Dear moderator, + +We want to inform you that borrower <> has just created a new comment. + +Check it out! + +Your library.', +'email' +); + INSERT INTO letter (module, code, branchcode, name, is_html, title, content) VALUES ('members', 'SHARE_INVITE', '', 'Invitation for sharing a list', '0', 'Share list <>', 'Dear patron, diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 4fb8cbd..acc83a2 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -358,6 +358,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('ReturnLog','1',NULL,'If ON, enables the circulation (returns) log','YesNo'), ('ReturnToShelvingCart','0','','If set, when any item is \'checked in\', it\'s location code will be changed to CART.','YesNo'), ('reviewson','1','','If ON, enables patron reviews of bibliographic records in the OPAC','YesNo'), +('CommentModeratorsEmail','','','The email address where to send a notification (template code COMMENT_CREATED) when a Borrower adds/modifies a review/comment for a Biblio. Set to empty to disable sending email notifications.','Textarea'), ('RoutingListAddReserves','1','','If ON the patrons on routing lists are automatically added to holds on the issue.','YesNo'), ('RoutingListNote','To change this note edit RoutingListNote system preference.','70|10','Define a note to be shown on all routing lists','Textarea'), ('RoutingSerials','1',NULL,'If ON, serials routing is enabled','YesNo'), diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index e36c20e..1747485 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -8314,6 +8314,30 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } +$DBversion = "3.17.00.XXX"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q| +INSERT INTO letter (module, code, branchcode, name, is_html, title, content, message_transport_type) +VALUES ( 'members', 'COMMENT_CREATED', '', 'Comment created notification', '0', 'Comment from <> is waiting for moderation', 'Dear moderator, + +We want to inform you that borrower <> has just created a new comment. + +Check it out! + +Your library.', +'email' +); + |); + $dbh->do(q| + INSERT INTO systempreferences + (variable,value,explanation,options,type) + VALUES + ('CommentModeratorsEmail','','','The email address where to send a notification (template code COMMENT_CREATED) when a Borrower adds/modifies a review/comment for a Biblio. Set to empty to disable sending email notifications.','Textarea') + |); + print "Upgrade to $DBversion done (Bug 1985 - Email notification of new OPAC comments)\n"; + SetVersion($DBversion); +} + $DBversion = "3.15.00.041"; if ( CheckVersion($DBversion) ) { my $name = $dbh->selectcol_arrayref(q| diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref index 45df9f8..0233cb5 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref @@ -410,6 +410,10 @@ OPAC: no: Hide - reviewer's photo beside comments in OPAC. - + - The email address where to send a notification (template code COMMENT_CREATED) when a Borrower adds/modifies a review/comment for a Biblio. Set to empty to disable sending email notifications. + - pref: CommentModeratorsEmail + class: textarea + - - pref: RequestOnOpac choices: yes: Allow -- 1.7.9.5