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