Bug 31785: Fix for adding non-public library
[koha-ffzg.git] / admin / marc-overlay-rules.pl
index dcc4f1d..05a5bbe 100755 (executable)
 
 use Modern::Perl;
 
-# standard or CPAN modules used
 use CGI qw ( -utf8 );
-use CGI::Cookie;
-use MARC::File::USMARC;
 use Try::Tiny;
 
-# Koha modules used
 use C4::Context;
 use C4::Auth qw( get_template_and_user );
 use C4::Output qw( output_html_with_http_headers );
 use C4::ImportBatch;
-use C4::Matcher;
-use C4::BackgroundJob;
-use C4::Labels::Batch;
 use Koha::MarcOverlayRules;
 use Koha::Patron::Categories;
 
-my $script_name = "/cgi-bin/koha/admin/marc-overlay-rules.pl";
-
-my $input = new CGI;
+my $input = CGI->new;
 my $op = $input->param('op') || '';
 my $errors = [];
 
@@ -66,22 +57,14 @@ my ($template, $loggedinuser, $cookie) = get_template_and_user(
         template_name   => "admin/marc-overlay-rules.tt",
         query           => $input,
         type            => "intranet",
-        authnotrequired => 0,
         flagsrequired   => { parameters => 'manage_marc_overlay_rules' },
-        debug           => 1,
     }
 );
 
-$template->param(script_name => $script_name);
-
-my %cookies = parse CGI::Cookie($cookie);
-our $sessionID = $cookies{'CGISESSID'}->value;
-
 my $get_rules = sub {
-    # TODO: order?
-    return [map { { $_->get_columns() } } Koha::MarcOverlayRules->_resultset->all];
+    return Koha::MarcOverlayRules->search( undef, { order_by => { -asc => 'id' } } )->unblessed;
 };
-my $rules;
+my $rules = $get_rules->();
 
 if ($op eq 'remove' || $op eq 'doremove') {
     my @remove_ids = $input->multi_param('batchremove');
@@ -89,7 +72,6 @@ if ($op eq 'remove' || $op eq 'doremove') {
     if ($op eq 'remove') {
         $template->{VARS}->{removeConfirm} = 1;
         my %remove_ids = map { $_ => undef } @remove_ids;
-        $rules = $get_rules->();
         for my $rule (@{$rules}) {
             $rule->{'removemarked'} = 1 if exists $remove_ids{$rule->{id}};
         }
@@ -98,13 +80,13 @@ if ($op eq 'remove' || $op eq 'doremove') {
         my @remove_ids = $input->multi_param('batchremove');
         push @remove_ids, scalar $input->param('id') if $input->param('id');
         Koha::MarcOverlayRules->search({ id => { in => \@remove_ids } })->delete();
+        # Update $rules after deletion
         $rules = $get_rules->();
     }
 }
 elsif ($op eq 'edit') {
-    $template->{VARS}->{edit} = 1;
+    $template->param( edit => 1 );
     my $id = $input->param('id');
-    $rules = $get_rules->();
     for my $rule(@{$rules}) {
         if ($rule->{id} == $id) {
             $rule->{'edit'} = 1;
@@ -145,14 +127,16 @@ elsif ($op eq 'doedit' || $op eq 'add') {
             $rule->set($rule_data);
             $rule->store();
         }
+        # Update $rules after edit/add
         $rules = $get_rules->();
     }
 }
-else {
-    $rules = $get_rules->();
-}
 
-my $categorycodes = Koha::Patron::Categories->search_limited({}, {order_by => ['description']});
-$template->param( rules => $rules, categorycodes => $categorycodes, messages => $errors );
+my $categorycodes = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['description']});
+$template->param(
+    rules         => $rules,
+    categorycodes => $categorycodes,
+    messages      => $errors
+);
 
 output_html_with_http_headers $input, $cookie, $template->output;