fixed invocation of CGI::Carp::set_message
[koha_gimpoz] / C4 / Auth.pm
index 43ded3e..ba7f7dd 100755 (executable)
@@ -31,12 +31,13 @@ use C4::Output;    # to get the template
 use C4::Members;
 use C4::Koha;
 use C4::Branch; # GetBranches
+use C4::VirtualShelves 3.02 qw(GetShelvesSummary);
 
 # use utf8;
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $debug $ldap);
 
 BEGIN {
-    $VERSION = 3.01;        # set version for version checking
+    $VERSION = 3.02;        # set version for version checking
     $debug = $ENV{DEBUG} || 0 ;
     @ISA   = qw(Exporter);
     @EXPORT    = qw(&checkauth &get_template_and_user);
@@ -145,6 +146,11 @@ sub get_template_and_user {
         # user info
         $template->param( loggedinusername => $user );
         $template->param( sessionID        => $sessionID );
+               my $shelves;
+               if ($shelves = C4::Context->get_shelves_userenv()) {
+               $template->param( barshelves     => scalar (@$shelves));
+               $template->param( barshelvesloop => $shelves);
+               }
 
         $borrowernumber = getborrowernumber($user);
         my ( $borr, $alternativeflags ) =
@@ -269,6 +275,7 @@ sub get_template_and_user {
                        canreservefromotherbranches => C4::Context->preference('canreservefromotherbranches'),
                        intranetreadinghistory => C4::Context->preference("intranetreadinghistory"),
                        noItemTypeImages => C4::Context->preference("noItemTypeImages"),
+            singleBranchMode => C4::Context->preference("singleBranchMode"),
         );
     }
     else {
@@ -280,6 +287,7 @@ sub get_template_and_user {
             KohaAdminEmailAddress  => "" . C4::Context->preference("KohaAdminEmailAddress"),
             AnonSuggestions =>  "" . C4::Context->preference("AnonSuggestions"),
             suggestion             => "" . C4::Context->preference("suggestion"),
+            OPACViewOthersSuggestions             => "" . C4::Context->preference("OPACViewOthersSuggestions"),
             virtualshelves         => "" . C4::Context->preference("virtualshelves"),
             OpacNav                => "" . C4::Context->preference("OpacNav"),
             opacheader             => "" . C4::Context->preference("opacheader"),
@@ -288,11 +296,16 @@ sub get_template_and_user {
             opaclargeimage         => "" . C4::Context->preference("opaclargeimage"),
             opaclayoutstylesheet   => "". C4::Context->preference("opaclayoutstylesheet"),
             opaccolorstylesheet    => "". C4::Context->preference("opaccolorstylesheet"),
+            OPACUserCSS    => "". C4::Context->preference("OPACUserCSS"),
             opaclanguagesdisplay   => "". C4::Context->preference("opaclanguagesdisplay"),
             opacuserlogin          => "" . C4::Context->preference("opacuserlogin"),
+                       OpacMainUserBlock =>  "" . C4::Context->preference("OpacMainUserBlock"),
+                       OPACURLOpenInNewWindow =>  "" . C4::Context->preference("OPACURLOpenInNewWindow"),
             opacbookbag            => "" . C4::Context->preference("opacbookbag"),
             TemplateEncoding       => "". C4::Context->preference("TemplateEncoding"),
             AmazonContent          => "" . C4::Context->preference("AmazonContent"),
+            OPACShelfBrowser       => "". C4::Context->preference("OPACShelfBrowser"),
+            OPACAmazonSimilarItems => "" . C4::Context->preference("OPACAmazonSimilarItems"),
             LibraryName            => "" . C4::Context->preference("LibraryName"),
             LibraryNameTitle       => "" . $LibraryNameTitle,
             LoginBranchcode        => (C4::Context->userenv?C4::Context->userenv->{"branch"}:"insecure"),
@@ -307,15 +320,23 @@ sub get_template_and_user {
             OpacAuthorities        => C4::Context->preference("OpacAuthorities"),
             OpacBrowser            => C4::Context->preference("OpacBrowser"),
             RequestOnOpac          => C4::Context->preference("RequestOnOpac"),
+                       OPACItemHolds          => C4::Context->preference("OPACItemHolds"),
             reviewson              => C4::Context->preference("reviewson"),
             hide_marc              => C4::Context->preference("hide_marc"),
             patronimages           => C4::Context->preference("patronimages"),
+            hidelostitems          => C4::Context->preference("hidelostitems"),
             mylibraryfirst   => C4::Context->preference("SearchMyLibraryFirst"),
             "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
             OPACFRBRizeEditions => C4::Context->preference("OPACFRBRizeEditions"),
             'item-level_itypes' => C4::Context->preference('item-level_itypes'),
+            'Version' => C4::Context->preference('Version'),
+                       yuipath => C4::Context->preference("yuipath"),
+            singleBranchMode => C4::Context->preference("singleBranchMode"),
+            XSLTResultsDisplay => C4::Context->preference("XSLTResultsDisplay"),
+            XSLTDetailsDisplay => C4::Context->preference("XSLTDetailsDisplay"),
         );
     }
+       $template->param(listloop=>[{shelfname=>"Freelist", shelfnumber=>110}]);
     return ( $template, $borrowernumber, $cookie, $flags);
 }
 
@@ -405,8 +426,7 @@ sub _version_check ($$) {
     $kohaversion =~ s/(.*\..*)\.(.*)\.(.*)/$1$2$3/;
     $debug and print STDERR "kohaversion : $kohaversion\n";
     if ($version < $kohaversion){
-        my $warning = "Database update needed, redirecting to %s. Database is $version and Koha is "
-            . C4::Context->config("kohaversion");
+        my $warning = "Database update needed, redirecting to %s. Database is $version and Koha is $kohaversion";
         if ($type ne 'opac'){
             warn sprintf($warning, 'Installer');
             print $query->redirect("/cgi-bin/koha/installer/install.pl?step=3");
@@ -427,7 +447,7 @@ sub _session_log {
 
 sub checkauth {
     my $query = shift;
-  # warn "Checking Auth";
+       $debug and warn "Checking Auth";
     # $authnotrequired will be set for scripts which will run without authentication
     my $authnotrequired = shift;
     my $flagsrequired   = shift;
@@ -446,7 +466,7 @@ sub checkauth {
     # state variables
     my $loggedin = 0;
     my %info;
-    my ( $userid, $cookie, $sessionID, $flags );
+    my ( $userid, $cookie, $sessionID, $flags, $shelves );
     my $logout = $query->param('logout.x');
     if ( $userid = $ENV{'REMOTE_USER'} ) {
         # Using Basic Authentication, no cookies required
@@ -469,6 +489,7 @@ sub checkauth {
                 $session->param('branchname'),   $session->param('flags'),
                 $session->param('emailaddress'), $session->param('branchprinter')
             );
+            C4::Context::set_shelves_userenv($session->param('shelves'));
             $debug and printf STDERR "AUTH_SESSION: (%s)\t%s %s - %s\n", map {$session->param($_)} qw(cardnumber firstname surname branch) ;
             $ip       = $session->param('ip');
             $lasttime = $session->param('lasttime');
@@ -532,11 +553,11 @@ sub checkauth {
                 $info{'nopermission'} = 1;
                 C4::Context->_unset_userenv($sessionID);
             }
+
+                       my ($borrowernumber, $firstname, $surname, $userflags,
+                               $branchcode, $branchname, $branchprinter, $emailaddress);
+
             if ( $return == 1 ) {
-                my (
-                   $borrowernumber, $firstname, $surname, $userflags,
-                   $branchcode, $branchname, $branchprinter, $emailaddress
-                );
                 my $select = "
                 SELECT borrowernumber, firstname, surname, flags, borrowers.branchcode, 
                         branches.branchname    as branchname, 
@@ -610,10 +631,11 @@ sub checkauth {
                 $session->param('emailaddress',$emailaddress);
                 $session->param('ip',$session->remote_addr());
                 $session->param('lasttime',time());
-                $debug and printf STDERR "AUTH_3: (%s)\t%s %s - %s\n", map {$session->param($_)} qw(cardnumber firstname surname branch) ;
+                $debug and printf STDERR "AUTH_4: (%s)\t%s %s - %s\n", map {$session->param($_)} qw(cardnumber firstname surname branch) ;
             }
             elsif ( $return == 2 ) {
                 #We suppose the user is the superlibrarian
+                               $borrowernumber = 0;
                 $session->param('number',0);
                 $session->param('id',C4::Context->config('user'));
                 $session->param('cardnumber',C4::Context->config('user'));
@@ -633,6 +655,9 @@ sub checkauth {
                 $session->param('branchname'),   $session->param('flags'),
                 $session->param('emailaddress'), $session->param('branchprinter')
             );
+                       $shelves = GetShelvesSummary($borrowernumber,2,10);
+                       $session->param('shelves', $shelves);
+                       C4::Context::set_shelves_userenv($shelves);
         }
         else {
             if ($userid) {
@@ -670,7 +695,7 @@ sub checkauth {
     # get the branchloop, which we need for authentication
     my $branches = GetBranches();
     my @branch_loop;
-    for my $branch_hash (keys %$branches) {
+    for my $branch_hash (sort keys %$branches) {
                push @branch_loop, {branchcode => "$branch_hash", branchname => $branches->{$branch_hash}->{'branchname'}, };
     }
 
@@ -684,6 +709,7 @@ sub checkauth {
         virtualshelves       => C4::Context->preference("virtualshelves"),
         opaclargeimage       => C4::Context->preference("opaclargeimage"),
         LibraryName          => C4::Context->preference("LibraryName"),
+        opacuserlogin        => C4::Context->preference("opacuserlogin"),
         OpacNav              => C4::Context->preference("OpacNav"),
         opaccredits          => C4::Context->preference("opaccredits"),
         opacreadinghistory   => C4::Context->preference("opacreadinghistory"),
@@ -692,6 +718,11 @@ sub checkauth {
         opaccolorstylesheet  => C4::Context->preference("opaccolorstylesheet"),
         opaclanguagesdisplay => C4::Context->preference("opaclanguagesdisplay"),
         opacuserjs           => C4::Context->preference("opacuserjs"),
+        opacbookbag          => "" . C4::Context->preference("opacbookbag"),
+        OpacCloud            => C4::Context->preference("OpacCloud"),
+        OpacTopissue         => C4::Context->preference("OpacTopissue"),
+        OpacAuthorities      => C4::Context->preference("OpacAuthorities"),
+        OpacBrowser          => C4::Context->preference("OpacBrowser"),
         intranetcolorstylesheet =>
                                                                C4::Context->preference("intranetcolorstylesheet"),
         intranetstylesheet => C4::Context->preference("intranetstylesheet"),