From 7c72741b2df89e7c2b3df4e35a282158b2105dc8 Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Date: Wed, 16 Oct 2019 14:53:48 +0200
Subject: [PATCH] Bug 23271: Replace search_limited with
 search_with_library_limits

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
---
 C4/ItemCirculationAlertPreference.pm             |  2 +-
 Koha/Patron/Categories.pm                        | 13 +------------
 Koha/Template/Plugin/Categories.pm               |  2 +-
 acqui/add_user_search.pl                         |  2 +-
 admin/add_user_search.pl                         |  2 +-
 admin/item_circulation_alerts.pl                 |  2 +-
 admin/patron-attr-types.pl                       |  2 +-
 members/guarantor_search.pl                      |  2 +-
 members/memberentry.pl                           |  2 +-
 members/members-home.pl                          |  2 +-
 members/update-child.pl                          |  2 +-
 patroncards/add_user_search.pl                   |  2 +-
 reports/bor_issues_top.pl                        |  2 +-
 reports/borrowers_out.pl                         |  2 +-
 reports/cat_issues_top.pl                        |  2 +-
 reports/issues_stats.pl                          |  2 +-
 reports/reserves_stats.pl                        |  4 ++--
 serials/add_user_search.pl                       |  2 +-
 t/db_dependent/Utils/Datatables_Virtualshelves.t |  2 +-
 tools/cleanborrowers.pl                          |  2 +-
 tools/import_borrowers.pl                        |  2 +-
 tools/modborrowers.pl                            |  2 +-
 22 files changed, 23 insertions(+), 34 deletions(-)

diff --git a/C4/ItemCirculationAlertPreference.pm b/C4/ItemCirculationAlertPreference.pm
index 4eb263c196..c7935163f2 100644
--- a/C4/ItemCirculationAlertPreference.pm
+++ b/C4/ItemCirculationAlertPreference.pm
@@ -331,7 +331,7 @@ sub grid {
     my ($class, $where) = @_;
     my @branch_prefs = $class->find($where);
     my @default_prefs = $class->find({ branchcode => '*', notification => $where->{notification} });
-    my @cc = Koha::Patron::Categories->search_limited;
+    my @cc = Koha::Patron::Categories->search_with_library_limits;
     my @it = Koha::ItemTypes->search;
     my $notification = $where->{notification};
     my %disabled = map {
diff --git a/Koha/Patron/Categories.pm b/Koha/Patron/Categories.pm
index 8ee320d0c5..af59fb85e8 100644
--- a/Koha/Patron/Categories.pm
+++ b/Koha/Patron/Categories.pm
@@ -21,7 +21,7 @@ use Koha::Database;
 
 use Koha::Patron::Category;
 
-use base qw(Koha::Objects);
+use base qw(Koha::Objects Koha::Objects::Limit::Library);
 
 =head1 NAME
 
@@ -33,17 +33,6 @@ Koha::Patron::Categories - Koha Patron Category Object set class
 
 =cut
 
-sub search_limited {
-    my ( $self, $params, $attributes ) = @_;
-    my $branch_limit = C4::Context->userenv ? C4::Context->userenv->{"branch"} : "";
-    if ( $branch_limit ) {
-        $params->{'categories_branches.branchcode'} = [ $branch_limit, undef ];
-        $attributes->{join} = 'categories_branches';
-    }
-    $attributes->{order_by} = ['description'] unless $attributes->{order_by};
-    return $self->search($params, $attributes);
-}
-
 =head3 type
 
 =cut
diff --git a/Koha/Template/Plugin/Categories.pm b/Koha/Template/Plugin/Categories.pm
index 140f12a395..59d358802e 100644
--- a/Koha/Template/Plugin/Categories.pm
+++ b/Koha/Template/Plugin/Categories.pm
@@ -25,7 +25,7 @@ use Koha::Patron::Categories;
 
 sub all {
     my ( $self, $params ) = @_;
-    return Koha::Patron::Categories->search_limited($params);
+    return Koha::Patron::Categories->search_with_library_limits($params);
 }
 
 sub GetName {
diff --git a/acqui/add_user_search.pl b/acqui/add_user_search.pl
index a81053da1a..ea7b2ae9d7 100755
--- a/acqui/add_user_search.pl
+++ b/acqui/add_user_search.pl
@@ -50,7 +50,7 @@ my $search_patrons_with_acq_perm_only =
     ( $referer =~ m|acqui/basket.pl| )
         ? 1 : 0;
 
-my $patron_categories = Koha::Patron::Categories->search_limited;
+my $patron_categories = Koha::Patron::Categories->search_with_library_limits;
 $template->param(
     patrons_with_acq_perm_only => $search_patrons_with_acq_perm_only,
     view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
diff --git a/admin/add_user_search.pl b/admin/add_user_search.pl
index 5d3b5de661..027eb15e68 100755
--- a/admin/add_user_search.pl
+++ b/admin/add_user_search.pl
@@ -51,7 +51,7 @@ my $search_patrons_with_acq_perm_only =
     ( $referer =~ m|admin/aqbudgets.pl| )
         ? 1 : 0;
 
-my $patron_categories = Koha::Patron::Categories->search_limited;
+my $patron_categories = Koha::Patron::Categories->search_with_library_limits;
 $template->param(
     patrons_with_acq_perm_only => $search_patrons_with_acq_perm_only,
     view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
diff --git a/admin/item_circulation_alerts.pl b/admin/item_circulation_alerts.pl
index 3a93cba336..ae6692d058 100755
--- a/admin/item_circulation_alerts.pl
+++ b/admin/item_circulation_alerts.pl
@@ -49,7 +49,7 @@ sub show {
     );
 
     my $branch   = $input->param('branch') || '*';
-    my @categories = Koha::Patron::Categories->search_limited;
+    my @categories = Koha::Patron::Categories->search_with_library_limits;
     my @item_types = Koha::ItemTypes->search;
     my $grid_checkout = $preferences->grid({ branchcode => $branch, notification => 'CHECKOUT' });
     my $grid_checkin  = $preferences->grid({ branchcode => $branch, notification => 'CHECKIN' });
diff --git a/admin/patron-attr-types.pl b/admin/patron-attr-types.pl
index 1924c0660f..5b357d2c9e 100755
--- a/admin/patron-attr-types.pl
+++ b/admin/patron-attr-types.pl
@@ -85,7 +85,7 @@ exit 0;
 sub add_attribute_type_form {
     my $template = shift;
 
-    my $patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['description']});
+    my $patron_categories = Koha::Patron::Categories->search_with_library_limlits({}, {order_by => ['description']});
     $template->param(
         attribute_type_form => 1,
         confirm_op => 'add_attribute_type_confirmed',
diff --git a/members/guarantor_search.pl b/members/guarantor_search.pl
index 3bd4165867..b5d31ed069 100755
--- a/members/guarantor_search.pl
+++ b/members/guarantor_search.pl
@@ -43,7 +43,7 @@ my $op = $input->param('op') || '';
 
 my $referer = $input->referer();
 
-my $patron_categories = Koha::Patron::Categories->search_limited;
+my $patron_categories = Koha::Patron::Categories->search_with_library_limits;
 $template->param(
     view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
     columns => ['cardnumber', 'name', 'dateofbirth', 'address', 'action' ],
diff --git a/members/memberentry.pl b/members/memberentry.pl
index 6aad0c0dc4..a0a25cfb10 100755
--- a/members/memberentry.pl
+++ b/members/memberentry.pl
@@ -673,7 +673,7 @@ my @typeloop;
 my $no_categories = 1;
 my $no_add;
 foreach my $category_type (qw(C A S P I X)) {
-    my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => $category_type }, {order_by => ['categorycode']});
+    my $patron_categories = Koha::Patron::Categories->search_with_library_limits({ category_type => $category_type }, {order_by => ['categorycode']});
     $no_categories = 0 if $patron_categories->count > 0;
 
     my @categoryloop;
diff --git a/members/members-home.pl b/members/members-home.pl
index 4dc06b1319..8ae49fac28 100755
--- a/members/members-home.pl
+++ b/members/members-home.pl
@@ -44,7 +44,7 @@ if( Koha::Libraries->search->count < 1){
     $template->param(no_branches => 1);
 }
 
-my @categories = Koha::Patron::Categories->search_limited;
+my @categories = Koha::Patron::Categories->search_with_library_limits;
 if(scalar(@categories) < 1){
     $no_add = 1;
     $template->param(no_categories => 1);
diff --git a/members/update-child.pl b/members/update-child.pl
index 0789ea553f..7e7edad463 100755
--- a/members/update-child.pl
+++ b/members/update-child.pl
@@ -57,7 +57,7 @@ my $op             = $input->param('op');
 
 my $logged_in_user = Koha::Patrons->find( $loggedinuser );
 
-my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']});
+my $patron_categories = Koha::Patron::Categories->search_with_library_limits({ category_type => 'A' }, {order_by => ['categorycode']});
 if ( $op eq 'multi' ) {
     # FIXME - what are the possible upgrade paths?  C -> A , C -> S ...
     #   currently just allowing C -> A
diff --git a/patroncards/add_user_search.pl b/patroncards/add_user_search.pl
index b01cf6a5df..8eb2a731e9 100755
--- a/patroncards/add_user_search.pl
+++ b/patroncards/add_user_search.pl
@@ -43,7 +43,7 @@ my $op = $input->param('op') || '';
 
 my $referer = $input->referer();
 
-my $patron_categories = Koha::Patron::Categories->search_limited;
+my $patron_categories = Koha::Patron::Categories->search_with_library_limits;
 $template->param(
     view            => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
     columns         => ['cardnumber', 'name', 'category', 'branch', 'dateexpiry', 'borrowernotes', 'action'],
diff --git a/reports/bor_issues_top.pl b/reports/bor_issues_top.pl
index 90b6b49db8..265362bb0d 100755
--- a/reports/bor_issues_top.pl
+++ b/reports/bor_issues_top.pl
@@ -108,7 +108,7 @@ my $dbh = C4::Context->dbh;
 my @mime  = ( map { {type =>$_} } (split /[;:]/, 'CSV') ); # FIXME translation
 my $delims = GetDelimiterChoices;
 
-my $patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['categorycode']});
+my $patron_categories = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['categorycode']});
 my $itemtypes = Koha::ItemTypes->search_with_localization;
 $template->param(
 	    mimeloop => \@mime,
diff --git a/reports/borrowers_out.pl b/reports/borrowers_out.pl
index 394bf38b15..aee373ad3c 100755
--- a/reports/borrowers_out.pl
+++ b/reports/borrowers_out.pl
@@ -113,7 +113,7 @@ if ($do_it) {
     my $CGIextChoice = ( 'CSV' ); # FIXME translation
 	my $CGIsepChoice = GetDelimiterChoices;
 
-    my $patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['categorycode']});
+    my $patron_categories = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['categorycode']});
     $template->param(
                     CGIextChoice => $CGIextChoice,
                     CGIsepChoice => $CGIsepChoice,
diff --git a/reports/cat_issues_top.pl b/reports/cat_issues_top.pl
index 28025cce67..ee0c092c43 100755
--- a/reports/cat_issues_top.pl
+++ b/reports/cat_issues_top.pl
@@ -132,7 +132,7 @@ if ($do_it) {
 
     @shelvinglocloop = sort {$a->{value} cmp $b->{value}} @shelvinglocloop;
 
-    my $patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['categorycode']});
+    my $patron_categories = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['categorycode']});
 
     $template->param(
                     CGIextChoice => $CGIextChoice,
diff --git a/reports/issues_stats.pl b/reports/issues_stats.pl
index 8f86fdb113..896b443478 100755
--- a/reports/issues_stats.pl
+++ b/reports/issues_stats.pl
@@ -88,7 +88,7 @@ $template->param(do_it => $do_it,
 
 our $itemtypes = Koha::ItemTypes->search_with_localization->unblessed;
 
-our @patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['description']});
+our @patron_categories = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['description']});
 
 our $locations = { map { ( $_->{authorised_value} => $_->{lib} ) } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => '', kohafield => 'items.location' }, { order_by => ['description'] } ) };
 our $ccodes = { map { ( $_->{authorised_value} => $_->{lib} ) } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => '', kohafield => 'items.ccode' }, { order_by => ['description'] } ) };
diff --git a/reports/reserves_stats.pl b/reports/reserves_stats.pl
index 23b42290aa..c28c398a32 100755
--- a/reports/reserves_stats.pl
+++ b/reports/reserves_stats.pl
@@ -73,7 +73,7 @@ $sep = "\t" if ($sep eq 'tabulation');
 $template->param(do_it => $do_it,
 );
 
-my @patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['description']});
+my @patron_categories = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['description']});
 
 my $locations = { map { ( $_->{authorised_value} => $_->{lib} ) } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => '', kohafield => 'items.location' }, { order_by => ['description'] } ) };
 my $ccodes = { map { ( $_->{authorised_value} => $_->{lib} ) } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => '', kohafield => 'items.ccode' }, { order_by => ['description'] } ) };
@@ -330,7 +330,7 @@ sub display_value {
         }
     }
     elsif ( $crit =~ /category/ ) {
-        my @patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['description']});
+        my @patron_categories = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['description']});
         foreach my $patron_category ( @patron_categories ) {
             ( $value eq $patron_category->categorycode ) or next;
             $display_value = $patron_category->description and last;
diff --git a/serials/add_user_search.pl b/serials/add_user_search.pl
index dedce1d279..b42b5faf38 100755
--- a/serials/add_user_search.pl
+++ b/serials/add_user_search.pl
@@ -43,7 +43,7 @@ my $op = $input->param('op') || '';
 
 my $referer = $input->referer();
 
-my $patron_categories = Koha::Patron::Categories->search_limited;
+my $patron_categories = Koha::Patron::Categories->search_with_library_limits;
 $template->param(
     view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
     columns => ['cardnumber', 'name', 'branch', 'action'],
diff --git a/t/db_dependent/Utils/Datatables_Virtualshelves.t b/t/db_dependent/Utils/Datatables_Virtualshelves.t
index eaf5ce5fd8..758f93fff9 100755
--- a/t/db_dependent/Utils/Datatables_Virtualshelves.t
+++ b/t/db_dependent/Utils/Datatables_Virtualshelves.t
@@ -38,7 +38,7 @@ my $dbh = C4::Context->dbh;
 $dbh->do(q|DELETE FROM virtualshelves|);
 
 # Pick a categorycode from the DB
-my @categories   = Koha::Patron::Categories->search_limited;
+my @categories   = Koha::Patron::Categories->search_with_library_limits;
 my $categorycode = $categories[0]->categorycode;
 my $branchcode   = "ABC";
 my $branch_data = {
diff --git a/tools/cleanborrowers.pl b/tools/cleanborrowers.pl
index c323eeb908..1afc3f9540 100755
--- a/tools/cleanborrowers.pl
+++ b/tools/cleanborrowers.pl
@@ -178,7 +178,7 @@ elsif ( $step == 3 ) {
     $template->param( patron_lists => [ @non_empty_lists ] );
 }
 
-my $patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['description']});
+my $patron_categories = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['description']});
 
 $template->param(
     step                   => $step,
diff --git a/tools/import_borrowers.pl b/tools/import_borrowers.pl
index a0c4bfbc01..f722568942 100755
--- a/tools/import_borrowers.pl
+++ b/tools/import_borrowers.pl
@@ -77,7 +77,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
 );
 
 # get the patron categories and pass them to the template
-my @patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['description']});
+my @patron_categories = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['description']});
 $template->param( categories => \@patron_categories );
 my $columns = C4::Templates::GetColumnDefs( $input )->{borrowers};
 $columns = [ grep { $_->{field} ne 'borrowernumber' ? $_ : () } @$columns ];
diff --git a/tools/modborrowers.pl b/tools/modborrowers.pl
index 3a1bd5594f..ee896848d1 100755
--- a/tools/modborrowers.pl
+++ b/tools/modborrowers.pl
@@ -113,7 +113,7 @@ if ( $op eq 'show' ) {
     my @patron_attributes_codes;
     my $library_id = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef;
     my $patron_attribute_types = Koha::Patron::Attribute::Types->search_with_library_limits({}, {}, $library_id);
-    my @patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['description']});
+    my @patron_categories = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['description']});
     while ( my $attr_type = $patron_attribute_types->next ) {
         # TODO Repeatable attributes are not correctly managed and can cause data lost.
         # This should be implemented.
-- 
2.24.3 (Apple Git-128)