From 62214ed55c66953b9b80d965e850f78e5e7a3bef Mon Sep 17 00:00:00 2001 From: erickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4> Date: Mon, 3 May 2010 19:00:31 +0000 Subject: [PATCH] updated SIP server to pull item config info from the new circ_modifier table when legacy script support is disabled git-svn-id: svn://svn.open-ils.org/ILS/trunk@16381 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/examples/oils_sip.xml.example | 6 +++ Open-ILS/src/perlmods/OpenILS/SIP/Item.pm | 65 +++++++++++++++++++++---------- 2 files changed, 50 insertions(+), 21 deletions(-) diff --git a/Open-ILS/examples/oils_sip.xml.example b/Open-ILS/examples/oils_sip.xml.example index 496ff81bcf..3a54aacce7 100644 --- a/Open-ILS/examples/oils_sip.xml.example +++ b/Open-ILS/examples/oils_sip.xml.example @@ -100,7 +100,13 @@ --> <option name='msg64_summary_datatype' value='barcode' /> </options> + <scripts> + <!-- + When legacy script support is disabled, the <script> configuration + is ignored. The SIP server pulls item configuration information + from the database instead (config.circ_modifier). + --> <path>LOCALSTATEDIR/</path> <path>LOCALSTATEDIR/catalog/</path> <item_config>circ/circ_item_config.js</item_config> diff --git a/Open-ILS/src/perlmods/OpenILS/SIP/Item.pm b/Open-ILS/src/perlmods/OpenILS/SIP/Item.pm index f64ae0880d..53c1fbb25e 100644 --- a/Open-ILS/src/perlmods/OpenILS/SIP/Item.pm +++ b/Open-ILS/src/perlmods/OpenILS/SIP/Item.pm @@ -79,33 +79,56 @@ sub run_attr_script { return 1 if $self->{ran_script}; $self->{ran_script} = 1; - my $config = OpenILS::SIP->config(); - my $path = $config->{implementation_config}->{scripts}->{path}; - my $item_config_script = $config->{implementation_config}->{scripts}->{item_config}; - $path = ref($path) eq 'ARRAY' ? $path : [$path]; + if($self->{osrf_config}->config_value( + apps => 'open-ils.circ' => app_settings => 'legacy_script_support')) { - syslog('LOG_DEBUG', "OILS: Script path = $path, Item config script = $item_config_script"); - my $runner = - OpenILS::Application::Circ::ScriptBuilder->build( - { - copy => $self->{copy}, - editor => OpenILS::SIP->editor(), - } - ); + my $config = OpenILS::SIP->config(); + my $path = $config->{implementation_config}->{scripts}->{path}; + my $item_config_script = $config->{implementation_config}->{scripts}->{item_config}; - $runner->add_path($_) for @$path; - $runner->load($item_config_script); + $path = ref($path) eq 'ARRAY' ? $path : [$path]; - unless( $self->{item_config_result} = $runner->run ) { - $runner->cleanup; - warn "Item config script [$path : $item_config_script] failed to run: $@\n"; - syslog('LOG_ERR', "OILS: Item config script [$path : $item_config_script] failed to run: $@"); - return undef; - } + syslog('LOG_DEBUG', "OILS: Script path = $path, Item config script = $item_config_script"); + + my $runner = + OpenILS::Application::Circ::ScriptBuilder->build( + { + copy => $self->{copy}, + editor => OpenILS::SIP->editor(), + } + ); + + $runner->add_path($_) for @$path; + $runner->load($item_config_script); + + unless( $self->{item_config_result} = $runner->run ) { + $runner->cleanup; + warn "Item config script [$path : $item_config_script] failed to run: $@\n"; + syslog('LOG_ERR', "OILS: Item config script [$path : $item_config_script] failed to run: $@"); + return undef; + } + + $runner->cleanup; + + } else { + + # use the in-db circ modifier configuration + my $config = {magneticMedia => 'f', SIPMediaType => '001'}; + my $mod = $self->{copy}->circ_modifier; + + if($mod) { + my $mod_obj = OpenILS::SIP->editor()->search_config_circ_modifier($mod); + if($mod_obj) { + $config->{magneticMedia} = $mod_obj->magnetic_media; + $config->{SIPMediaType} = $mod_obj->sip2_media_type; + } + } + + $self->{item_config_result} = $config; + } - $runner->cleanup; return 1; } -- 2.11.0