@@ -, +, @@ 1 - Give a patron full acquisitions permissions 2 - Also give them several subpermissions on other areas 3 - Go to Acquisitions 4 - Edit a fund 5 - Add a user to the fund 6 - Search for user above 7 - They return multiple times in results 8 - Apply patch 9 - Restart all the things --- C4/Utils/DataTables/Members.pm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) --- a/C4/Utils/DataTables/Members.pm +++ a/C4/Utils/DataTables/Members.pm @@ -36,13 +36,15 @@ sub search { |, undef, $has_permission->{permission}); } + my (@where, @conditions); # Get the iTotalRecords DataTable variable $iTotalQuery = "SELECT COUNT(borrowers.borrowernumber) FROM borrowers"; if ( $has_permission ) { - $iTotalQuery .= ' LEFT JOIN user_permissions on borrowers.borrowernumber=user_permissions.borrowernumber'; + $iTotalQuery .= ' LEFT JOIN user_permissions ON borrowers.borrowernumber=user_permissions.borrowernumber'; + $iTotalQuery .= ' AND module_bit=? AND code=?'; + push @conditions, $has_permission->{module_bit}, $has_permission->{subpermission}; } - my (@where, @conditions); if ( @restricted_branchcodes ) { push @where, "borrowers.branchcode IN (" . join( ',', ('?') x @restricted_branchcodes ) . ")"; push @conditions, @restricted_branchcodes; @@ -89,11 +91,13 @@ sub search { my $from = "FROM borrowers LEFT JOIN branches ON borrowers.branchcode = branches.branchcode LEFT JOIN categories ON borrowers.categorycode = categories.categorycode"; + my @where_args; if ( $has_permission ) { $from .= ' - LEFT JOIN user_permissions on borrowers.borrowernumber=user_permissions.borrowernumber'; + LEFT JOIN user_permissions ON borrowers.borrowernumber=user_permissions.borrowernumber + AND module_bit=? AND code=?'; + push @where_args, $has_permission->{module_bit}, $has_permission->{subpermission}; } - my @where_args; my @where_strs; if(defined $firstletter and $firstletter ne '') { push @where_strs, "borrowers.surname LIKE ?"; --