View | Details | Raw Unified | Return to bug 7310
Collapse All | Expand All

(-)a/C4/VirtualShelves.pm (-2 / +38 lines)
Lines 522-529 sub DelFromShelf { Link Here
522
	}
522
	}
523
    }
523
    }
524
    if($del_oth) {
524
    if($del_oth) {
525
        $query = qq(DELETE FROM virtualshelfcontents
525
        #includes a check if borrowernumber is null (deleted patron)
526
            WHERE shelfnumber=? AND biblionumber=? AND borrowernumber<>?);
526
        $query = qq/DELETE FROM virtualshelfcontents
527
            WHERE shelfnumber=? AND biblionumber=? AND
528
            (borrowernumber IS NULL OR borrowernumber<>?)/;
527
        $sth= $dbh->prepare($query);
529
        $sth= $dbh->prepare($query);
528
	foreach my $biblionumber (@$bibref) {
530
	foreach my $biblionumber (@$bibref) {
529
            $sth->execute($shelfnumber, $biblionumber, $user);
531
            $sth->execute($shelfnumber, $biblionumber, $user);
Lines 591-596 sub ShelvesMax { Link Here
591
  return SHELVES_MASTHEAD_MAX;
593
  return SHELVES_MASTHEAD_MAX;
592
}
594
}
593
595
596
sub HandleDelBorrower {
597
#when a member is deleted (DelMember in Members.pm), you should call me first
598
#this routine deletes/moves lists and entries for the deleted member/borrower
599
#you could just delete everything (and lose more than you want)
600
#instead we now try to save all public/shared stuff and keep others happy
601
    my ($borrower)= @_;
602
    my $query;
603
    my $dbh = C4::Context->dbh;
604
605
    #Delete shares of this borrower (not lists !)
606
    $query="DELETE FROM virtualshelfshares WHERE borrowernumber=?";
607
    $dbh->do($query,undef,($borrower));
608
609
    #Delete private lists without owner that now have no shares anymore
610
    $query="DELETE vs.* FROM virtualshelves vs LEFT JOIN virtualshelfshares sh USING (shelfnumber) WHERE category=1 AND vs.owner IS NULL AND sh.shelfnumber IS NULL";
611
    $dbh->do($query);
612
613
    #Change owner for private lists which have shares
614
    $query="UPDATE virtualshelves LEFT JOIN virtualshelfshares sh USING (shelfnumber) SET owner=NULL where owner=? AND category=1 AND sh.borrowernumber IS NOT NULL";
615
    $dbh->do($query,undef,($borrower));
616
617
    #Delete unshared private lists
618
    $query="DELETE FROM virtualshelves WHERE owner=? AND category=1";
619
    $dbh->do($query,undef,($borrower));
620
621
    #Handle public lists owned by borrower
622
    $query="UPDATE virtualshelves SET owner=NULL WHERE owner=? AND category=2";
623
    $dbh->do($query,undef,($borrower));
624
625
    #Handle entries added by borrower to lists of others
626
    $query="UPDATE virtualshelfcontents SET borrowernumber=NULL WHERE borrowernumber=?";
627
    $dbh->do($query,undef,($borrower));
628
}
629
594
# internal subs
630
# internal subs
595
631
596
sub _shelf_count {
632
sub _shelf_count {
(-)a/members/deletemem.pl (+2 lines)
Lines 30-35 use C4::Output; Link Here
30
use C4::Auth;
30
use C4::Auth;
31
use C4::Members;
31
use C4::Members;
32
use C4::Branch; # GetBranches
32
use C4::Branch; # GetBranches
33
use C4::VirtualShelves (); #no import
33
34
34
my $input = new CGI;
35
my $input = new CGI;
35
36
Lines 117-122 output_html_with_http_headers $input, $cookie, $template->output; Link Here
117
118
118
} else {
119
} else {
119
    MoveMemberToDeleted($member);
120
    MoveMemberToDeleted($member);
121
    C4::VirtualShelves::HandleDelBorrower($member);
120
    DelMember($member);
122
    DelMember($member);
121
    print $input->redirect("/cgi-bin/koha/members/members-home.pl");
123
    print $input->redirect("/cgi-bin/koha/members/members-home.pl");
122
}
124
}
(-)a/tools/cleanborrowers.pl (-2 / +4 lines)
Lines 40-45 use C4::Output; Link Here
40
use C4::Dates qw/format_date format_date_in_iso/;
40
use C4::Dates qw/format_date format_date_in_iso/;
41
use C4::Members;        # GetBorrowersWhoHavexxxBorrowed.
41
use C4::Members;        # GetBorrowersWhoHavexxxBorrowed.
42
use C4::Circulation;    # AnonymiseIssueHistory.
42
use C4::Circulation;    # AnonymiseIssueHistory.
43
use C4::VirtualShelves (); #no import
43
use Date::Calc qw/Today Add_Delta_YM/;
44
use Date::Calc qw/Today Add_Delta_YM/;
44
45
45
my $cgi = new CGI;
46
my $cgi = new CGI;
Lines 117-129 if ( $params->{'step3'} ) { Link Here
117
            my $i;
118
            my $i;
118
            for ( $i = 0 ; $i < $totalDel ; $i++ ) {
119
            for ( $i = 0 ; $i < $totalDel ; $i++ ) {
119
                MoveMemberToDeleted( $membersToDelete->[$i]->{'borrowernumber'} );
120
                MoveMemberToDeleted( $membersToDelete->[$i]->{'borrowernumber'} );
121
                C4::VirtualShelves::HandleDelBorrower($membersToDelete->[$i]->{'borrowernumber'});
120
                DelMember( $membersToDelete->[$i]->{'borrowernumber'} );
122
                DelMember( $membersToDelete->[$i]->{'borrowernumber'} );
121
            }
123
            }
122
        }
124
        }
123
        else {    # delete completly.
125
        else {    # delete completly.
124
            my $i;
126
            my $i;
125
            for ( $i = 0 ; $i < $totalDel ; $i++ ) {
127
            for ( $i = 0 ; $i < $totalDel ; $i++ ) {
126
               DelMember($membersToDelete->[$i]->{'borrowernumber'});
128
                C4::VirtualShelves::HandleDelBorrower($membersToDelete->[$i]->{'borrowernumber'});
129
                DelMember($membersToDelete->[$i]->{'borrowernumber'});
127
            }
130
            }
128
        }
131
        }
129
        $template->param(
132
        $template->param(
130
- 

Return to bug 7310