From 9cbaec2a94aaef2d946a6d1dea57af5f9ff4e22c 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 Signed-off-by: Liz Rea Signed-off-by: Marcel de Rooy Signed-off-by: Martin Renvoize --- 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 344e71a898..8f60e70fa9 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 7cf4dfadf7..687e6bb27c 100644 --- a/etc/SIPconfig.xml +++ b/etc/SIPconfig.xml @@ -61,6 +61,9 @@ + + 0 + @@ -101,4 +104,13 @@ in our case "ILS". retries="5" /> + + + + 0 + + -- 2.39.5