Bug 10277 - Add C4::Context->IsSuperLibrarian()
[srvgit] / C4 / Context.pm
index 7bc7097..4f6683e 100644 (file)
@@ -19,7 +19,6 @@ package C4::Context;
 use strict;
 use warnings;
 use vars qw($VERSION $AUTOLOAD $context @context_stack $servers $memcached $ismemcached);
-
 BEGIN {
        if ($ENV{'HTTP_USER_AGENT'})    {
                require CGI::Carp;
@@ -106,6 +105,7 @@ use C4::Debug;
 use POSIX ();
 use DateTime::TimeZone;
 use Module::Load::Conditional qw(can_load);
+use Carp;
 
 =head1 NAME
 
@@ -542,8 +542,8 @@ sub preference {
     my $self = shift;
     my $var  = shift;    # The system preference to return
 
-    if ($use_syspref_cache && exists $sysprefs{$var}) {
-        return $sysprefs{$var};
+    if ($use_syspref_cache && exists $sysprefs{lc $var}) {
+        return $sysprefs{lc $var};
     }
 
     my $dbh  = C4::Context->dbh or return 0;
@@ -559,10 +559,10 @@ sub preference {
             WHERE   variable = ?
             LIMIT   1
         };
-        $value = $dbh->selectrow_array( $sql, {}, $var );
+        $value = $dbh->selectrow_array( $sql, {}, lc $var );
     }
 
-    $sysprefs{$var} = $value;
+    $sysprefs{lc $var} = $value;
     return $value;
 }
 
@@ -1235,6 +1235,18 @@ sub tz {
 }
 
 
+=head2 IsSuperLibrarian
+
+    C4::Context->IsSuperlibrarian();
+
+=cut
+
+sub IsSuperLibrarian {
+    my $userenv = C4::Context->userenv
+      || carp("C4::Context->userenv not defined!");
+
+    return $userenv->{flags} % 2 == 1;
+}
 
 1;
 __END__