@@ -, +, @@ in a system preference instead of a file a Twilio account meets these requirements and can be created for free. Set this up using the traditional file based system. --- C4/SMS.pm | 16 +++++++++++++++- installer/data/mysql/atomicupdate/bug_36051.pl | 18 ++++++++++++++++++ installer/data/mysql/mandatory/sysprefs.sql | 1 + .../en/modules/admin/preferences/patrons.pref | 4 ++++ 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100755 installer/data/mysql/atomicupdate/bug_36051.pl --- a/C4/SMS.pm +++ a/C4/SMS.pm @@ -94,19 +94,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( --- a/installer/data/mysql/atomicupdate/bug_36051.pl +++ a/installer/data/mysql/atomicupdate/bug_36051.pl @@ -0,0 +1,18 @@ +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'"; + }, +}; --- a/installer/data/mysql/mandatory/sysprefs.sql +++ a/installer/data/mysql/mandatory/sysprefs.sql @@ -712,6 +712,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('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'), +('SMSSendAdditionalOptions', '', '', 'Additional SMS::Send parameters used to send SMS messages', 'free'), ('SocialNetworks','','facebook|linkedin|email','Enable/Disable social networks links in opac detail pages','Choice'), ('SpecifyDueDate','1','','Define whether to display \"Specify Due Date\" form in Circulation','YesNo'), ('SpecifyReturnDate',1,'','Define whether to display \"Specify Return Date\" form in Circulation','YesNo'), --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref @@ -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: --