Bug 17600: Standardize our EXPORT_OK
[srvgit] / circ / set-library.pl
index 375a7f7..b03759b 100755 (executable)
@@ -21,11 +21,12 @@ use Modern::Perl;
 use CGI qw ( -utf8 );
 
 use C4::Context;
-use C4::Output;
-use C4::Auth qw/:DEFAULT get_session/;
-use C4::Koha;
+use C4::Output qw( output_html_with_http_headers );
+use C4::Auth qw( get_template_and_user get_session );
 use Koha::BiblioFrameworks;
+use Koha::Cash::Registers;
 use Koha::Libraries;
+use Koha::Desks;
 
 my $query = CGI->new();
 
@@ -33,34 +34,65 @@ my ( $template, $borrowernumber, $cookie, $flags ) = get_template_and_user({
     template_name   => "circ/set-library.tt",
     query           => $query,
     type            => "intranet",
-    debug           => 1,
-    authnotrequired => 0,
     flagsrequired   => { catalogue => 1, },
 });
 
 my $sessionID = $query->cookie("CGISESSID");
 my $session = get_session($sessionID);
 
-my $branch   = $query->param('branch' );
-my $userenv_branch  = C4::Context->userenv->{'branch'}        || '';
+my $branch              = $query->param('branch');
+my $desk_id             = $query->param('desk_id');
+my $register_id         = $query->param('register_id');
+my $userenv_branch      = C4::Context->userenv->{'branch'} || '';
+my $userenv_desk        = C4::Context->userenv->{'desk_id'} || '';
+my $userenv_register_id = C4::Context->userenv->{'register_id'} || '';
 my @updated;
 
-# $session lddines here are doing the updating
+# $session lines here are doing the updating
 if ( $branch and my $library = Koha::Libraries->find($branch) ) {
     if (! $userenv_branch or $userenv_branch ne $branch ) {
         my $branchname = $library->branchname;
-        $template->param(LoginBranchname => $branchname);   # update template for new branch
-        $template->param(LoginBranchcode => $branch);       # update template for new branch
         $session->param('branchname', $branchname);         # update sesssion in DB
         $session->param('branch', $branch);                 # update sesssion in DB
-        $session->flush();
         push @updated, {
             updated_branch => 1,
                 old_branch => $userenv_branch,
+                new_branch => $branch,
         };
     } # else branch the same, no update
+    if ( $desk_id && (!$userenv_desk or $userenv_desk ne $desk_id) ) {
+        my $desk = Koha::Desks->find( { desk_id => $desk_id } );
+        my $old_desk_name = '';
+        if ($userenv_desk) {
+            $old_desk_name = Koha::Desks->find( { desk_id => $userenv_desk })->desk_name;
+        }
+        $template->param( LoginDeskname => $desk->desk_name );
+        $template->param( LoginDeskid => $desk->desk_id );
+        $session->param( desk_name => $desk->desk_name );
+        $session->param( desk_id => $desk->desk_id );
+        $session->flush();
+        push @updated, {
+            updated_desk => 1,
+            old_desk => $old_desk_name,
+        };
+    }
+    if ( defined($userenv_register_id)
+        && ( $userenv_register_id ne $register_id ) )
+    {
+        my $old_register_name = C4::Context->userenv->{'register_name'} || '';
+        my $register = Koha::Cash::Registers->find($register_id);
+        $session->param( 'register_id', $register_id );
+        $session->param( 'register_name', $register ? $register->name : '' );
+        push @updated,
+          {
+            updated_register => 1,
+            old_register     => $old_register_name
+          };
+    }
+    $session->flush();
 } else {
     $branch = $userenv_branch;  # fallback value
+    $desk_id = $userenv_desk;
 }
 
 $template->param(updated => \@updated) if (scalar @updated);
@@ -69,11 +101,13 @@ my @recycle_loop;
 foreach ($query->param()) {
     $_ or next;                   # disclude blanks
     $_ eq "branch"     and next;  # disclude branch
+    $_ eq "desk_id"    and next;  # disclude desk_id
+    $_ eq "register_id" and next;    # disclude register
     $_ eq "oldreferer" and next;  # disclude oldreferer
     push @recycle_loop, {
         param => $_,
         value => scalar $query->param($_),
-    };
+      };
 }
 
 my $referer =  $query->param('oldreferer') || $ENV{HTTP_REFERER};
@@ -87,6 +121,7 @@ if (scalar @updated and not scalar @recycle_loop) {
 $template->param(
     referer     => $referer,
     branch      => $branch,
+    desk_id     => $desk_id,
     recycle_loop=> \@recycle_loop,
 );