From bb4183af1ff0033d750b7c9d7b395a10100656ef 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. NOTE: Tested in conjunction with my patch. However, this piece alone: - lacked unit tests since it modified C4/Review.pm - failed to provide the desired links in the email message, as mentioned in comment #1. - failed to pass biblionumber information for use in the letter as mentioned in comment #11. - passed $review, when it was really id that should have been passed and used to implement the inclusion of reviews.reviewid and other reviews table fields. Signed-off-by: Mark Tompsett Signed-off-by: sonia bouis Signed-off-by: Kyle M Hall --- 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 7b0cb8b..9b920c0 100644 --- a/C4/Review.pm +++ b/C4/Review.pm @@ -81,6 +81,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 +93,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 +194,38 @@ sub deletereview { $sth->execute($reviewid); } +=head2 SendReviewAlert + + SendReviewAlert( $review, $borrowernumber ); + +=cut + +sub SendReviewAlert { + my $review = shift; + my $borrowernumber = shift; + + my $moderatorEmail = C4::Context->preference('CommentModeratorsEmail'); + + return unless $moderatorEmail; + + 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 7bf8086..fe66a82 100644 --- a/installer/data/mysql/en/mandatory/sample_notices.sql +++ b/installer/data/mysql/en/mandatory/sample_notices.sql @@ -120,6 +120,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 f371193..e478e20 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -91,6 +91,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('CoceHost', NULL, NULL, 'Coce server URL', 'Free'), ('CoceProviders', NULL, 'aws,gb,ol', 'Coce providers', 'multiple'), ('COinSinOPACResults','1','','If ON, use COinS in OPAC search results page. NOTE: this can slow down search response time significantly','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'), ('ConfirmFutureHolds','0','','Number of days for confirming future holds','Integer'), ('CronjobLog','0',NULL,'If ON, log information from cron jobs.','YesNo'), ('CurrencyFormat','US','US|FR','Determines the display format of currencies. eg: \'36000\' is displayed as \'360 000,00\' in \'FR\' or \'360,000.00\' in \'US\'.','Choice'), diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 1161752..8119257 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -8359,6 +8359,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 c26d048..6667b69 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 @@ -416,6 +416,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 -- 2.1.4