X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=members%2Fdeletemem.pl;h=1da27fc1dfda12a4ce35db1ec24b883be95e4a3f;hb=3aa102d0c35058bc6f2350d97e3da11815d368f1;hp=5ea015ada7d6887e60063d9f3f2c113a38ec1e12;hpb=2b90ea2cb0e5e976de7ddef0151ae83d8ac578e6;p=koha.git diff --git a/members/deletemem.pl b/members/deletemem.pl index 5ea015ada7..1da27fc1df 100755 --- a/members/deletemem.pl +++ b/members/deletemem.pl @@ -21,8 +21,7 @@ # You should have received a copy of the GNU General Public License # along with Koha; if not, see . -use strict; -#use warnings; FIXME - Bug 2505 +use Modern::Perl; use CGI qw ( -utf8 ); use C4::Context; @@ -39,12 +38,12 @@ if ( C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preferen my $input = new CGI; -my ($template, $borrowernumber, $cookie) +my ($template, $loggedinuser, $cookie) = get_template_and_user({template_name => "members/deletemem.tt", query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => {borrowers => 1}, + flagsrequired => {borrowers => 'edit_borrowers'}, debug => 1, }); @@ -52,11 +51,15 @@ my ($template, $borrowernumber, $cookie) my $member = $input->param('member'); #Do not delete yourself... -if ($borrowernumber == $member ) { +if ( $loggedinuser == $member ) { print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member&error=CANT_DELETE_YOURSELF"); exit 0; # Exit without error } +my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in"; +my $patron = Koha::Patrons->find( $member ); +output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } ); + # Handle deletion from the Norwegian national patron database, if it is enabled # If the "deletelocal" parameter is set to "false", the regular deletion will be # short circuited, and only a deletion from the national database can be carried @@ -71,22 +74,17 @@ if ( C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preferen } } -my $issues = GetPendingIssues($member); # FIXME: wasteful call when really, we only want the count -my $countissues = scalar(@$issues); - -my $patron = Koha::Patrons->find( $member ); -my $flags = C4::Members::patronflags( $patron->unblessed ); +my $charges = $patron->account->non_issues_charges; +my $countissues = $patron->checkouts->count; my $userenv = C4::Context->userenv; - - if ($patron->category->category_type eq "S") { unless(C4::Auth::haspermission($userenv->{'id'},{'staffaccess'=>1})) { print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member&error=CANT_DELETE_STAFF"); exit 0; # Exit without error } } else { - unless(C4::Auth::haspermission($userenv->{'id'},{'borrowers'=>1})) { + unless(C4::Auth::haspermission($userenv->{'id'},{'borrowers'=>'edit_borrowers'})) { print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member&error=CANT_DELETE"); exit 0; # Exit without error } @@ -105,36 +103,16 @@ if (C4::Context->preference("IndependentBranches")) { my $op = $input->param('op') || 'delete_confirm'; my $dbh = C4::Context->dbh; my $is_guarantor = $dbh->selectrow_array("SELECT COUNT(*) FROM borrowers WHERE guarantorid=?", undef, $member); -if ( $op eq 'delete_confirm' or $countissues > 0 or $flags->{'CHARGES'} or $is_guarantor or $deletelocal == 0) { - $template->param( picture => 1 ) if $patron->image; - - $template->param( adultborrower => 1 ) if $patron->category->category_type =~ /^(A|I)$/; +if ( $op eq 'delete_confirm' or $countissues > 0 or $charges or $is_guarantor or $deletelocal == 0) { $template->param( - # FIXME The patron object should be passed to the template - borrowernumber => $patron->borrowernumber, - surname => $patron->surname, - title => $patron->title, - cardnumber => $patron->cardnumber, - firstname => $patron->firstname, - categorycode => $patron->categorycode, - category_type => $patron->category->category_type, - categoryname => $patron->category->description, - address => $patron->address, - address2 => $patron->address2, - city => $patron->city, - zipcode => $patron->zipcode, - country => $patron->country, - phone => $patron->phone, - email => $patron->email, - branchcode => $patron->branchcode, - RoutingSerials => C4::Context->preference('RoutingSerials'), + patron => $patron, ); if ($countissues >0) { $template->param(ItemsOnIssues => $countissues); } - if ($flags->{'CHARGES'} ne '') { - $template->param(charges => $flags->{'CHARGES'}->{'amount'}); + if ( $charges > 0 ) { + $template->param(charges => $charges); } if ($is_guarantor) { $template->param(guarantees => 1); @@ -143,7 +121,7 @@ if ( $op eq 'delete_confirm' or $countissues > 0 or $flags->{'CHARGES'} or $is_ $template->param(keeplocal => 1); } # This is silly written but reflect the same conditions as above - if ( not $countissues > 0 and not $flags->{CHARGES} ne '' and not $is_guarantor and not $deletelocal == 0 ) { + if ( not $countissues > 0 and not $charges and not $is_guarantor and not $deletelocal == 0 ) { $template->param( op => 'delete_confirm', csrf_token => Koha::Token->new->generate_csrf({ session_id => scalar $input->cookie('CGISESSID') }),