Bug 21704: (follow-up) Remove unused 'frameworkcode' template param
[koha.git] / admin / smart-rules.pl
index aa26cbe..4975254 100755 (executable)
@@ -35,6 +35,7 @@ use Koha::Libraries;
 use Koha::CirculationRules;
 use Koha::Patron::Categories;
 use Koha::Caches;
+use Koha::Patrons;
 
 my $input = CGI->new;
 my $dbh = C4::Context->dbh;
@@ -61,6 +62,13 @@ unless ( $branch ) {
         $branch = C4::Context::only_my_library() ? ( C4::Context::mybranch() || '*' ) : '*';
     }
 }
+
+my $logged_in_patron = Koha::Patrons->find( $loggedinuser );
+
+my $can_edit_from_any_library = $logged_in_patron->has_permission( {parameters => 'manage_circ_rules_from_any_libraries' } );
+$template->param( restricted_to_own_library => not $can_edit_from_any_library );
+$branch = C4::Context::mybranch() unless $can_edit_from_any_library;
+
 $branch = '*' if $branch eq 'NO_LIBRARY_SET';
 
 my $op = $input->param('op') || q{};
@@ -156,7 +164,10 @@ elsif ($op eq 'add') {
     $no_auto_renewal_after_hard_limit = eval { dt_from_string( $input->param('no_auto_renewal_after_hard_limit') ) } if ( $no_auto_renewal_after_hard_limit );
     $no_auto_renewal_after_hard_limit = output_pref( { dt => $no_auto_renewal_after_hard_limit, dateonly => 1, dateformat => 'iso' } ) if ( $no_auto_renewal_after_hard_limit );
     my $reservesallowed  = $input->param('reservesallowed');
-    my $holds_per_record  = $input->param('holds_per_record');
+    my $holds_per_record = $input->param('holds_per_record');
+    my $holds_per_day    = $input->param('holds_per_day');
+    $holds_per_day =~ s/\s//g;
+    $holds_per_day = undef if $holds_per_day !~ /^\d+/;
     my $onshelfholds     = $input->param('onshelfholds') || 0;
     $maxissueqty =~ s/\s//g;
     $maxissueqty = undef if $maxissueqty !~ /^\d+/;
@@ -197,6 +208,7 @@ elsif ($op eq 'add') {
         no_auto_renewal_after_hard_limit => $no_auto_renewal_after_hard_limit,
         reservesallowed               => $reservesallowed,
         holds_per_record              => $holds_per_record,
+        holds_per_day                 => $holds_per_day,
         issuelength                   => $issuelength,
         lengthunit                    => $lengthunit,
         hardduedate                   => $hardduedate,
@@ -271,7 +283,7 @@ elsif ($op eq "set-branch-defaults") {
     Koha::CirculationRules->set_rule(
         {
             branchcode   => $branch,
-            categorycode => '*',
+            categorycode => undef,
             itemtype     => undef,
             rule_name    => 'max_holds',
             rule_value   => $max_holds,
@@ -292,18 +304,18 @@ elsif ($op eq "add-branch-cat") {
 
     if ($branch eq "*") {
         if ($categorycode eq "*") {
+            #FIXME This block is will probably be never used
             my $sth_search = $dbh->prepare("SELECT count(*) AS total
                                             FROM default_circ_rules");
             my $sth_insert = $dbh->prepare(q|
                 INSERT INTO default_circ_rules
-                    (maxissueqty, maxonsiteissueqty, max_holds)
-                    VALUES (?, ?, ?)
+                    (maxissueqty, maxonsiteissueqty)
+                    VALUES (?, ?)
             |);
             my $sth_update = $dbh->prepare(q|
                 UPDATE default_circ_rules
                 SET maxissueqty = ?,
                     maxonsiteissueqty = ?,
-                    max_holds = ?
             |);
 
             $sth_search->execute();
@@ -329,14 +341,13 @@ elsif ($op eq "add-branch-cat") {
                                             WHERE categorycode = ?");
             my $sth_insert = $dbh->prepare(q|
                 INSERT INTO default_borrower_circ_rules
-                    (categorycode, maxissueqty, maxonsiteissueqty, max_holds)
-                    VALUES (?, ?, ?, ?)
+                    (categorycode, maxissueqty, maxonsiteissueqty)
+                    VALUES ( ?, ?, ?)
             |);
             my $sth_update = $dbh->prepare(q|
                 UPDATE default_borrower_circ_rules
                 SET maxissueqty = ?,
                     maxonsiteissueqty = ?,
-                    max_holds = ?
                 WHERE categorycode = ?
             |);
             $sth_search->execute($categorycode);
@@ -349,7 +360,7 @@ elsif ($op eq "add-branch-cat") {
 
             Koha::CirculationRules->set_rule(
                 {
-                    branchcode   => '*',
+                    branchcode   => undef,
                     categorycode => $categorycode,
                     itemtype     => undef,
                     rule_name    => 'max_holds',
@@ -386,14 +397,13 @@ elsif ($op eq "add-branch-cat") {
                                         AND   categorycode = ?");
         my $sth_insert = $dbh->prepare(q|
             INSERT INTO branch_borrower_circ_rules
-            (branchcode, categorycode, maxissueqty, maxonsiteissueqty, max_holds)
-            VALUES (?, ?, ?, ?, ?)
+            (branchcode, categorycode, maxissueqty, maxonsiteissueqty)
+            VALUES (?, ?, ?, ?)
         |);
         my $sth_update = $dbh->prepare(q|
             UPDATE branch_borrower_circ_rules
             SET maxissueqty = ?,
                 maxonsiteissueqty = ?
-                max_holds = ?
             WHERE branchcode = ?
             AND categorycode = ?
         |);
@@ -401,9 +411,9 @@ elsif ($op eq "add-branch-cat") {
         $sth_search->execute($branch, $categorycode);
         my $res = $sth_search->fetchrow_hashref();
         if ($res->{total}) {
-            $sth_update->execute($maxissueqty, $maxonsiteissueqty, $max_holds, $branch, $categorycode);
+            $sth_update->execute($maxissueqty, $maxonsiteissueqty, $branch, $categorycode);
         } else {
-            $sth_insert->execute($branch, $categorycode, $maxissueqty, $maxonsiteissueqty, $max_holds);
+            $sth_insert->execute($branch, $categorycode, $maxissueqty, $maxonsiteissueqty);
         }
 
         Koha::CirculationRules->set_rule(
@@ -607,9 +617,10 @@ my @sorted_branch_cat_rules = sort { $a->{'humancategorycode'} cmp $b->{'humanca
 
 # note undef maxissueqty so that template can deal with them
 foreach my $entry (@sorted_branch_cat_rules, @sorted_row_loop) {
-    $entry->{unlimited_maxissueqty} = 1 unless defined($entry->{maxissueqty});
+    $entry->{unlimited_maxissueqty}       = 1 unless defined($entry->{maxissueqty});
     $entry->{unlimited_maxonsiteissueqty} = 1 unless defined($entry->{maxonsiteissueqty});
-    $entry->{unlimited_max_holds} = 1 unless defined($entry->{max_holds});
+    $entry->{unlimited_max_holds}         = 1 unless defined($entry->{max_holds});
+    $entry->{unlimited_holds_per_day}     = 1 unless defined($entry->{holds_per_day});
 }
 
 @sorted_row_loop = sort by_category_and_itemtype @row_loop;