(bug #3284) fix borrower deletion in independantbranches mode
[koha.git] / members / deletemem.pl
index e1f8a59..a1694f6 100755 (executable)
@@ -1,11 +1,9 @@
 #!/usr/bin/perl
 
-
 #script to delete items
 #written 2/5/00
 #by chris@katipo.co.nz
 
-
 # Copyright 2000-2002 Katipo Communications
 #
 # This file is part of Koha.
@@ -24,6 +22,7 @@
 # Suite 330, Boston, MA  02111-1307 USA
 
 use strict;
+# use warnings; # FIXME
 
 use CGI;
 use C4::Context;
@@ -31,71 +30,64 @@ use C4::Output;
 use C4::Auth;
 use C4::Members;
 
-
 my $input = new CGI;
 
-my $flagsrequired;
-$flagsrequired->{borrowers}=1;
-my ($loggedinuser, $cookie, $sessionID) = checkauth($input, 0, $flagsrequired);
-
-
+my ($template, $borrowernumber, $cookie)
+                = get_template_and_user({template_name => "members/deletemem.tmpl",
+                                        query => $input,
+                                        type => "intranet",
+                                        authnotrequired => 0,
+                                        flagsrequired => {borrowers => 1},
+                                        debug => 1,
+                                        });
 
 #print $input->header;
 my $member=$input->param('member');
-my %member2;
-$member2{'borrowernumber'}=$member;
-my ($countissues,$issues)=GetPendingIssues($member);
+my $issues = GetPendingIssues($member);     # FIXME: wasteful call when really, we only want the count
+my $countissues = scalar(@$issues);
 
 my ($bor)=GetMemberDetails($member,'');
 my $flags=$bor->{flags};
-
 my $userenv = C4::Context->userenv;
-if(C4::Auth::haspermission(undef,$userenv->{'id'},{'staffaccess'=>1})) {
-  print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member&error=CANT_DELETE");
-       exit 1;
+if ($bor->{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 1;
+    }
 }
 
 if (C4::Context->preference("IndependantBranches")) {
-       unless ($userenv->{flags} == 1){
-               unless ($userenv->{'branch'} eq $bor->{'branchcode'}){
-#                      warn "user ".$userenv->{'branch'} ."borrower :". $bor->{'branchcode'};
-                       print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member&error=CANT_DELETE");
-                       exit 1;
-               }
-       }
+    my $userenv = C4::Context->userenv;
+    if ($userenv->{flags} != 1 && $bor->{'branchcode'}){
+        unless ($userenv->{branch} eq $bor->{'branchcode'}){
+            print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member&error=CANT_DELETE_OTHERLIBRARY");
+            exit;
+        }
+    }
 }
+
 my $dbh = C4::Context->dbh;
 my $sth=$dbh->prepare("Select * from borrowers where guarantorid=?");
 $sth->execute($member);
 my $data=$sth->fetchrow_hashref;
-$sth->finish;
 if ($countissues > 0 or $flags->{'CHARGES'}  or $data->{'borrowernumber'}){
-
-       my ($template, $borrowernumber, $cookie)
-               = get_template_and_user({template_name => "members/deletemem.tmpl",
-                                       query => $input,
-                                       type => "intranet",
-                                       authnotrequired => 0,
-                                       flagsrequired => {borrowers => 1},
-                                       debug => 1,
-                                       });
-       #   print $input->header;
-       $template->param(borrowernumber => $member);
-       if ($countissues >0) {
-               $template->param(ItemsOnIssues => $countissues);
-       }
-       if ($flags->{'CHARGES'} ne '') {
-               $template->param(charges => $flags->{'CHARGES'}->{'amount'});
-       }
-       if ($data ne '') {
-               $template->param(guarantees => 1);
-       }
+    #   print $input->header;
+    $template->param(borrowernumber => $member);
+    if ($countissues >0) {
+        $template->param(ItemsOnIssues => $countissues);
+    }
+    if ($flags->{'CHARGES'} ne '') {
+        $template->param(charges => $flags->{'CHARGES'}->{'amount'});
+    }
+    if ($data) {
+        $template->param(guarantees => 1);
+    }
 output_html_with_http_headers $input, $cookie, $template->output;
 
 } else {
-       MoveMemberToDeleted($member);
-       DelMember($member);
-       print $input->redirect("/cgi-bin/koha/members/members-home.pl");
+    MoveMemberToDeleted($member);
+    DelMember($member);
+    print $input->redirect("/cgi-bin/koha/members/members-home.pl");
 }