Physical Location Fixes/Enhancements
authorThomas Berezansky <tsbere@mvlc.org>
Tue, 14 Aug 2012 14:50:11 +0000 (10:50 -0400)
committerDan Scott <dscott@laurentian.ca>
Wed, 15 Aug 2012 15:10:37 +0000 (11:10 -0400)
Teach the physical location retrieval function about using an ENV var.

This allows a subdomain to force a specific physical location, say by adding
to their apache config:

SetEnv physical_loc 4

Rewriterules could also be used for more dynamic configuration.

Also, as a fix:

Have preferred library use the stored physical location instead of assuming
that CGI has the setting all the time.

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>

Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm

index 218e2d2..8d577da 100644 (file)
@@ -315,9 +315,12 @@ sub staff_saved_searches_set_expansion_state {
 
 # physical_loc (i.e. "original location") passed in as a URL 
 # param will replace any existing physical_loc stored as a cookie.
+# If specified via ENV that rules over all and we don't set cookies.
 sub get_physical_loc {
     my $self = shift;
 
+    return $ENV{physical_loc} if($ENV{physical_loc});
+
     if(my $physical_loc = $self->cgi->param('physical_loc')) {
         $self->apache->headers_out->add(
             "Set-Cookie" => $self->cgi->cookie(
index f94d60b..eb0c703 100644 (file)
@@ -389,8 +389,8 @@ sub _get_pref_lib {
         return $ctx->{user}->home_ou;
     }
 
-    if ($self->cgi->param('physical_loc')) {
-        return $self->cgi->param('physical_loc');
+    if ($ctx->{physical_loc}) {
+        return $ctx->{physical_loc};
     }
 
 }