Bugzilla – Attachment 46354 Details for
Bug 8000
Test mode for notices
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 8000 - Override emails of every message sent from Koha
Bug-8000---Override-emails-of-every-message-sent-f.patch (text/plain), 10.15 KB, created by
Rémi Mayrand-Provencher
on 2016-01-06 20:25:47 UTC
(
hide
)
Description:
Bug 8000 - Override emails of every message sent from Koha
Filename:
MIME Type:
Creator:
Rémi Mayrand-Provencher
Created:
2016-01-06 20:25:47 UTC
Size:
10.15 KB
patch
obsolete
>From 81cf363a1202e09b8fc77ad715bf9ceb560f107d Mon Sep 17 00:00:00 2001 >From: Blou <philippe.blouin@inlibro.com> >Date: Thu, 6 Mar 2014 15:16:09 -0500 >Subject: [PATCH] Bug 8000 - Override emails of every message sent from Koha > >For testing purposes, we do not want emails sent to (legitimate) users. >And sometime we also like to actually see what would be generated for the users. >This preference will allow to override every message sent by koha with >a new (temporary) To address. Leave it empty for normal usage. > > C4/Letters.pm > installer/data/mysql/sysprefs.sql > installer/data/mysql/updatedatabase.pl > koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref > >TESTING: > 0) Run updatedatabase.pl > 1) Enter a valid address for new preference SendAllEmailsTo, something that will be easily identified > as NOT the normal destination for the Koha emails. > 2) Have koha generate an email to a user. Or any other mean prefered that cause Koha to send email. > 3) Validate that the email is NOT sent to the user. > 4) Validate that the email IS sent to the overriding address. > 5) Clean the preference > 6) Redo the test, validate that the email is going to the right address. > > PS Not sure if those steps are precise enough. Here's one way: > a) set AutoEmailOpacUser to true > b) create a new user, with an email address > c) Normally, a confirmation email is sent to the user. Validate that it goes to the SendAllEmailsTo one. >--- > C4/Letters.pm | 27 ++++++++++++++++++---- > basket/sendbasket.pl | 2 ++ > installer/data/mysql/sysprefs.sql | 1 + > installer/data/mysql/updatedatabase.pl | 1 + > .../prog/en/modules/admin/preferences/admin.pref | 5 ++++ > misc/cronjobs/runreport.pl | 2 ++ > opac/opac-sendbasket.pl | 2 ++ > opac/opac-sendshelf.pl | 2 ++ > virtualshelves/sendshelf.pl | 2 ++ > 9 files changed, 40 insertions(+), 4 deletions(-) > >diff --git a/C4/Letters.pm b/C4/Letters.pm >index e5c15ba..4a1142c 100644 >--- a/C4/Letters.pm >+++ b/C4/Letters.pm >@@ -414,7 +414,11 @@ sub SendAlerts { > my $alerts = getalert( '', 'issue', $subscriptionid ); > foreach (@$alerts) { > my $borinfo = C4::Members::GetMember('borrowernumber' => $_->{'borrowernumber'}); >- my $email = $borinfo->{email} or next; >+ my $sendAllEmailsTo = C4::Context->preference('SendAllEmailsTo'); >+ my $email = $sendAllEmailsTo; >+ if (!($sendAllEmailsTo && $sendAllEmailsTo =~ /@/) ){ # some validation. This could be improved. >+ $email = $borinfo->{email} or next; >+ } > > # warn "sending issues..."; > my $userenv = C4::Context->userenv; >@@ -528,10 +532,20 @@ sub SendAlerts { > # Remove the order tag > $letter->{content} =~ s/<order>(.*?)<\/order>/$1/gxms; > >+ # SendAllEmailsTo system preference to override for testing >+ my $emailsTo = join( ',', @email); >+ my $emailsCC = join( ',', @cc); >+ my $sendAllEmailsTo = C4::Context->preference('SendAllEmailsTo'); >+ # some validation. This could be improved. >+ if ($sendAllEmailsTo && $sendAllEmailsTo =~ /@/ ) { >+ $emailsTo = $sendAllEmailsTo; >+ $emailsCC = ''; >+ } >+ > # ... then send mail > my %mail = ( >- To => join( ',', @email), >- Cc => join( ',', @cc), >+ To => $emailsTo, >+ Cc => $emailsCC, > From => $userenv->{emailaddress}, > Subject => Encode::encode( "UTF-8", "" . $letter->{title} ), > Message => $letter->{'is_html'} >@@ -583,9 +597,12 @@ sub SendAlerts { > ) or return; > return { error => "no_email" } unless $externalid->{'emailaddr'}; > my $email = Koha::Email->new(); >+ my $emailaddr = $externalid->{'emailaddr'}; >+ my $sendAllEmailsTo = C4::Context->preference('SendAllEmailsTo'); >+ $emailaddr = $sendAllEmailsTo if ($sendAllEmailsTo && $sendAllEmailsTo =~ /@/ ); # some validation. This could be improved. > my %mail = $email->create_message_headers( > { >- to => $externalid->{'emailaddr'}, >+ to => $emailaddr, > from => $branchdetails->{'branchemail'}, > replyto => $branchdetails->{'branchreplyto'}, > sender => $branchdetails->{'branchreturnpath'}, >@@ -1171,6 +1188,8 @@ sub _send_message_by_email { > > my $member = C4::Members::GetMember( 'borrowernumber' => $message->{'borrowernumber'} ); > my $to_address = $message->{'to_address'}; >+ my $sendAllEmailsTo = C4::Context->preference('SendAllEmailsTo'); >+ $to_address = $sendAllEmailsTo if ($sendAllEmailsTo && $sendAllEmailsTo =~ /@/ ); # some validation. This could be improved. > unless ($to_address) { > unless ($member) { > warn "FAIL: No 'to_address' and INVALID borrowernumber ($message->{borrowernumber})"; >diff --git a/basket/sendbasket.pl b/basket/sendbasket.pl >index 83dab55..7f6c697 100755 >--- a/basket/sendbasket.pl >+++ b/basket/sendbasket.pl >@@ -45,7 +45,9 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user ( > ); > > my $bib_list = $query->param('bib_list'); >+my $sendAllEmailsTo = C4::Context->preference('SendAllEmailsTo'); > my $email_add = $query->param('email_add'); >+$email_add = $sendAllEmailsTo if ($sendAllEmailsTo && $sendAllEmailsTo =~ /@/ ); # some validation. This could be improved. > > my $dbh = C4::Context->dbh; > >diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql >index aa53139..2e505d1 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -410,6 +410,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` > ('SelfCheckHelpMessage','','70|10','Enter HTML to include under the basic Web-based Self Checkout instructions on the Help page','Textarea'), > ('SelfCheckReceiptPrompt','1','NULL','If ON, print receipt dialog pops up when self checkout is finished','YesNo'), > ('SelfCheckTimeout','120','','Define the number of seconds before the Web-based Self Checkout times out a patron','Integer'), >+('SendAllEmailsTo','',NULL,'This email will replace the To address in every message sent by the system. This is meant to help testing only.','Textarea'), > ('SeparateHoldings','0',NULL,'Separate current branch holdings from other holdings','YesNo'), > ('SeparateHoldingsBranch','homebranch','homebranch|holdingbranch','Branch used to separate holdings','Choice'), > ('SessionRestrictionByIP','1','Check for change in remote IP address for session security. Disable only when remote IP address changes frequently.','','YesNo'), >diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl >index 6ed1223..db20db7 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -11686,6 +11686,7 @@ foreach my $file ( sort readdir $dirh ) { > } > } > >+ > =head1 FUNCTIONS > > =head2 TableExists($table) >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref >index 0f3b66c..73e83a4 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref >@@ -71,6 +71,11 @@ Administration: > yes: "logged in library's" > no: "all libraries" > - rules by default. >+ - >+ - Redirect all emails from Koha to >+ - pref: SendAllEmailsTo >+ class: email >+ - instead of their intended user. > Login options: > - > - Automatically log out users after >diff --git a/misc/cronjobs/runreport.pl b/misc/cronjobs/runreport.pl >index ddfb6ee..2c1ab87 100755 >--- a/misc/cronjobs/runreport.pl >+++ b/misc/cronjobs/runreport.pl >@@ -211,6 +211,8 @@ if ($to or $from or $email) { > $from or $from = C4::Context->preference('KohaAdminEmailAddress'); > $to or $to = C4::Context->preference('KohaAdminEmailAddress'); > } >+my $sendAllEmailsTo = C4::Context->preference('SendAllEmailsTo'); >+$to = $sendAllEmailsTo if ($sendAllEmailsTo && $sendAllEmailsTo =~ /@/ ); # some validation. This could be improved. > > unless (scalar(@ARGV)) { > print STDERR "ERROR: No reportID(s) specified\n"; >diff --git a/opac/opac-sendbasket.pl b/opac/opac-sendbasket.pl >index 6b2d62f..dc54525 100755 >--- a/opac/opac-sendbasket.pl >+++ b/opac/opac-sendbasket.pl >@@ -47,7 +47,9 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user ( > ); > > my $bib_list = $query->param('bib_list'); >+my $sendAllEmailsTo = C4::Context->preference('SendAllEmailsTo'); > my $email_add = $query->param('email_add'); >+$email_add = $sendAllEmailsTo if ($sendAllEmailsTo && $sendAllEmailsTo =~ /@/ ); # some validation. This could be improved. > > my $dbh = C4::Context->dbh; > >diff --git a/opac/opac-sendshelf.pl b/opac/opac-sendshelf.pl >index 8d39c93..cc2a3b9 100755 >--- a/opac/opac-sendshelf.pl >+++ b/opac/opac-sendshelf.pl >@@ -47,7 +47,9 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user ( > ); > > my $shelfid = $query->param('shelfid'); >+my $sendAllEmailsTo = C4::Context->preference('SendAllEmailsTo'); > my $email = $query->param('email'); >+$email = $sendAllEmailsTo if ($sendAllEmailsTo && $sendAllEmailsTo =~ /@/ ); # some validation. This could be improved. > > my $dbh = C4::Context->dbh; > >diff --git a/virtualshelves/sendshelf.pl b/virtualshelves/sendshelf.pl >index cb46ce2..8416fbe 100755 >--- a/virtualshelves/sendshelf.pl >+++ b/virtualshelves/sendshelf.pl >@@ -47,7 +47,9 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( > ); > > my $shelfid = $query->param('shelfid'); >+my $sendAllEmailsTo = C4::Context->preference('SendAllEmailsTo'); > my $email = $query->param('email'); >+$email = $sendAllEmailsTo if ($sendAllEmailsTo && $sendAllEmailsTo =~ /@/ ); # some validation. This could be improved. > > my $dbh = C4::Context->dbh; > >-- >1.9.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 8000
:
21976
|
22315
|
24784
|
25917
|
25919
|
25920
|
25923
|
25924
|
25925
|
25926
|
25927
|
25928
|
25939
|
25950
|
25951
|
26446
|
37463
|
37464
|
37465
|
37466
|
37467
|
37468
|
37469
|
37472
|
37473
|
37474
|
37475
|
37476
|
37477
|
37478
|
37481
|
37482
|
37483
|
37484
|
37485
|
37486
|
37487
|
39985
|
39986
|
39987
|
39988
|
39989
|
39990
|
39991
|
39992
|
40215
|
40216
|
40217
|
40218
|
40219
|
40220
|
40221
|
40222
|
40223
|
40224
|
40225
|
40226
|
40227
|
40228
|
40229
|
40230
|
46354
|
46355
|
46356
|
46357
|
46358
|
46359
|
46360
|
46361
|
46362
|
49991
|
49992
|
49993
|
49998
|
49999
|
50000
|
55940
|
58434
|
62863
|
67155
|
70086
|
70087
|
70484
|
74110
|
74111
|
74848
|
80370
|
81487
|
81488
|
81589
|
81590
|
81591
|
84801
|
84802
|
84803
|
84804
|
84805
|
86861
|
86862
|
86863
|
86864
|
86865
|
88874
|
88875
|
88876
|
88877
|
88878
|
88879