From d6e3bf76440912396641e5ac341e93290176eb36 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Fri, 15 Jun 2018 13:03:43 +0000 Subject: [PATCH] Bug 20954: Add ability to set syspref overrides in SIP as we can in apache We should be able to set system preference overrides for SIP in a similar manner that we do in Apache. It would be great if we could specify those overrides on both a config level, and login level basis. Test Plan: 1) Apply this patch 2) Start your SIP server 3) Enable the syspref AllFinesNeedOverride 4) Find or create a patron with a small fine ( less than noissuescharge ) 5) Attempt to check out an item to the patron, it should fail 6) Add the global syspref override from the bottom of the example SIP config file 7) Restart your SIP server 8) Attempt to check out an item to the patron again, this time it should work 9) Now, add the login level syspref override section as it appears in the eaxmple SIP config file. Make sure to add it to the login you are using 10) Attempt to check out another item to the patron, this time is should again fail --- C4/SIP/Sip/MsgType.pm | 13 +++++++++++++ etc/SIPconfig.xml | 12 ++++++++++++ 2 files changed, 25 insertions(+) diff --git a/C4/SIP/Sip/MsgType.pm b/C4/SIP/Sip/MsgType.pm index 9ec126ed12..58c451d370 100644 --- a/C4/SIP/Sip/MsgType.pm +++ b/C4/SIP/Sip/MsgType.pm @@ -331,6 +331,19 @@ sub handle { my $config = $server->{config}; my $self; + # Set system preference overrides, first global, then account level + # Clear overrides from previous message handling first + foreach my $key ( %ENV ) { + delete $ENV{$key} if index($key, 'OVERRIDE_SYSPREF_') > 0; + } + foreach my $key ( keys %{ $config->{'syspref-overrides'} } ) { + $ENV{"OVERRIDE_SYSPREF_$key"} = $config->{'syspref-overrides'}->{$key}; + } + foreach my $key ( keys %{ $server->{account}->{'syspref-overrides'} } ) { + $ENV{"OVERRIDE_SYSPREF_$key"} = + $server->{account}->{'syspref-overrides'}->{$key}; + } + # # What's the field delimiter for variable length fields? # This can't be based on the account, since we need to know diff --git a/etc/SIPconfig.xml b/etc/SIPconfig.xml index 5d9ee98bc2..fdf098818f 100644 --- a/etc/SIPconfig.xml +++ b/etc/SIPconfig.xml @@ -57,6 +57,9 @@ + + 0 + @@ -97,4 +100,13 @@ in our case "ILS". retries="5" /> + + + + 0 + + -- 2.15.2 (Apple Git-101.1)