[Koha-patches] [PATCH] Bug 2968 - SIP ACS_STATUS message (98) misreported config.

Joe Atzberger joe.atzberger at liblime.com
Thu Feb 19 17:20:07 CET 2009


The *_ok methods in ILS.pm were targeting the wrong depth.
This also resolves a longstanding FIXME on to_bool() warning like:
    Argument "\x{66}\x{61}..." isn't numeric in numeric ne (!=) at /ILS.pm line 94.

The example_institution_dump.sh essentially provides the proof test case for this patch.
Run it before/after on SIPconfig.xml where "MAIN" has checkout="true" and checkin="true".
---
 C4/SIP/ILS.pm                      |   25 +++++++++++--------------
 C4/SIP/example_institution_dump.sh |   15 ++++++++++++++-
 2 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/C4/SIP/ILS.pm b/C4/SIP/ILS.pm
index 2dcc616..4315540 100644
--- a/C4/SIP/ILS.pm
+++ b/C4/SIP/ILS.pm
@@ -86,33 +86,30 @@ sub to_bool {
     my $bool = shift;
     # If it's defined, and matches a true sort of string, or is
     # a non-zero number, then it's true.
-	#
-	# FIXME: this test is faulty
-	# 	We're running under warnings and strict.
-	#	But if we don't match regexp, then we go ahead and numerical compare?
-	# 	That means we'd generate a warning on 'FALSE' or ''.
-    return defined($bool) && (($bool =~ /true|y|yes/i) || $bool != 0);
+    defined($bool) or return;                   # false
+    ($bool =~ /true|y|yes/i) and return 1;      # true
+    return ($bool =~ /^\d+$/ and $bool != 0);   # true for non-zero numbers, false otherwise
 }
 
 sub checkout_ok {
     my $self = shift;
-    return (exists($self->{policy}->{checkout})
-	    && to_bool($self->{policy}->{checkout}));
+    return (exists($self->{institution}->{policy}->{checkout})
+	    && to_bool($self->{institution}->{policy}->{checkout}));
 }
 sub checkin_ok {
     my $self = shift;
-    return (exists($self->{policy}->{checkin})
-	    && to_bool($self->{policy}->{checkin}));
+    return (exists($self->{institution}->{policy}->{checkin})
+	    && to_bool($self->{institution}->{policy}->{checkin}));
 }
 sub status_update_ok {
     my $self = shift;
-    return (exists($self->{policy}->{status_update})
-	    && to_bool($self->{policy}->{status_update}));
+    return (exists($self->{institution}->{policy}->{status_update})
+	    && to_bool($self->{institution}->{policy}->{status_update}));
 }
 sub offline_ok {
     my $self = shift;
-    return (exists($self->{policy}->{offline})
-	    && to_bool($self->{policy}->{offline}));
+    return (exists($self->{institution}->{policy}->{offline})
+	    && to_bool($self->{institution}->{policy}->{offline}));
 }
 
 #
diff --git a/C4/SIP/example_institution_dump.sh b/C4/SIP/example_institution_dump.sh
index 3aa32f3..3837e75 100755
--- a/C4/SIP/example_institution_dump.sh
+++ b/C4/SIP/example_institution_dump.sh
@@ -1,3 +1,16 @@
 #!/bin/bash
 
-perl -I ./ -e 'use Data::Dumper; use ILS; use Sip::Configuration; $conf=Sip::Configuration->new("SIPconfig.xml");  print Dumper($conf->{institutions}->{"MAIN"}),"\n";'
+perl -I ./ -e '
+use Data::Dumper;
+use ILS;
+use Sip::Configuration;
+my $code = "MAIN";
+my $conf = Sip::Configuration->new("SIPconfig.xml");
+my $ils  = ILS->new($conf->{institutions}->{$code});
+print "XML for $code: ", Dumper($conf->{institutions}->{$code}), "\n";
+print "ILS for $code: ", Dumper($ils), "\n";
+print "\$ils->checkout_ok(): ", ($ils->checkout_ok() ? "Y" : "N"), "\n";
+print "\$ils->checkin_ok() : ", ($ils->checkin_ok()  ? "Y" : "N"), "\n";
+print "\$ils->offline_ok() : ", ($ils->offline_ok()  ? "Y" : "N"), "\n";
+print "\n";
+'
-- 
1.5.5.GIT




More information about the Koha-patches mailing list