Bug 36051: Add option to specify SMS::Send driver parameters in a system preference
If an SMS::Send driver ( such as Twilio ) requires additional parameters, those parameters have to be placed in a yaml file named after the SMS::Send driver, and the path to that file specified in the Koha conf file. It would be good if we had the option to specify those parameters in a YAML system preference instead. This would be less complicated and avoid requiring an administrator to update that data from the backend. Test Plan: 1) Set up an SMS::Send driver that requires additional options; a Twilio account meets these requirements and can be created for free. Set this up using the traditional file based system. 2) Verify you can send SMS messages 3) Move the contents of that file into the new system preference SMSSendAdditionalOptions 4) Verify you can still send SMS messages 5) Delete the file 6) Verify yet again you can still send SMS messages! Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
parent
a1d5ad87d7
commit
309e0af9bb
4 changed files with 40 additions and 1 deletions
16
C4/SMS.pm
16
C4/SMS.pm
|
@ -98,19 +98,33 @@ sub send_sms {
|
|||
my $subpath = $driver;
|
||||
$subpath =~ s|::|/|g;
|
||||
|
||||
# Extract additional SMS::Send arguments from file
|
||||
my $sms_send_config = C4::Context->config('sms_send_config');
|
||||
my $conf_file = defined $sms_send_config
|
||||
? File::Spec->catfile( $sms_send_config, $subpath )
|
||||
: $subpath;
|
||||
$conf_file .= q{.yaml};
|
||||
|
||||
my %args;
|
||||
my %args = ();
|
||||
if ( -f $conf_file ) {
|
||||
require YAML::XS;
|
||||
my $conf = YAML::XS::LoadFile( $conf_file );
|
||||
%args = map { q{_} . $_ => $conf->{$_} } keys %$conf;
|
||||
}
|
||||
|
||||
# Extract additional SMS::Send arguments from the syspref
|
||||
# Merge with any arguments from file with syspref taking precedence
|
||||
my $sms_send_config_syspref = C4::Context->preference('SMSSendAdditionalOptions');
|
||||
if ( $sms_send_config_syspref ) {
|
||||
require YAML::XS;
|
||||
|
||||
$sms_send_config_syspref = "$sms_send_config_syspref\n\n";
|
||||
my $yaml;
|
||||
eval { $yaml = YAML::XS::Load(Encode::encode_utf8($yaml)); };
|
||||
my %syspref_args = map { q{_} . $_ => $conf->{$_} } keys %$conf;
|
||||
%args = ( %args, %syspref_args );
|
||||
}
|
||||
|
||||
eval {
|
||||
# Create a sender
|
||||
$sender = SMS::Send->new(
|
||||
|
|
20
installer/data/mysql/atomicupdate/bug_36051.pl
Executable file
20
installer/data/mysql/atomicupdate/bug_36051.pl
Executable file
|
@ -0,0 +1,20 @@
|
|||
use Modern::Perl;
|
||||
|
||||
return {
|
||||
bug_number => "36051",
|
||||
description => "Add option to specify SMS::Send driver parameters in a system preference instead of a file",
|
||||
up => sub {
|
||||
my ($args) = @_;
|
||||
my ( $dbh, $out ) = @$args{qw(dbh out)};
|
||||
|
||||
# Do you stuffs here
|
||||
$dbh->do(
|
||||
q{
|
||||
INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES
|
||||
('SMSSendAdditionalOptions', '', '', 'Additional SMS::Send parameters used to send SMS messages', 'free');
|
||||
}
|
||||
);
|
||||
|
||||
say $out "Added new system preference 'SMSSendAdditionalOptions'";
|
||||
},
|
||||
};
|
|
@ -714,6 +714,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
|
|||
('SIP2SortBinMapping','',NULL,'Use the following mappings to determine the sort_bin of a returned item. The mapping should be on the form \"branchcode:item field:item field value:sort bin number\", with one mapping per line.','free'),
|
||||
('SkipHoldTrapOnNotForLoanValue','',NULL,'If set, Koha will never trap items for hold with this notforloan value','Integer'),
|
||||
('SlipCSS','',NULL,'Slips CSS url.','free'),
|
||||
('SMSSendAdditionalOptions', '', '', 'Additional SMS::Send parameters used to send SMS messages', 'free'),
|
||||
('SMSSendDriver','','','Sets which SMS::Send driver is used to send SMS messages.','free'),
|
||||
('SMSSendPassword', '', '', 'Password used to send SMS messages', 'free'),
|
||||
('SMSSendUsername', '', '', 'Username/Login used to send SMS messages', 'free'),
|
||||
|
|
|
@ -238,6 +238,10 @@ Patrons:
|
|||
- pref: EmailSMSSendDriverFromAddress
|
||||
class: email
|
||||
- "for emails sent using \"Email\" send driver."
|
||||
- "If the SMS::Send driver requires more options that just username/login and password, entire them here as YAML key/value pairs:"
|
||||
- pref: SMSSendAdditionalOptions
|
||||
type: textarea
|
||||
syntax: text/x-yaml
|
||||
-
|
||||
- pref: FallbackToSMSIfNoEmail
|
||||
choices:
|
||||
|
|
Loading…
Reference in a new issue