Browse Source

Bug 14708: Don't allow merging of other patron records into Anonymous Patron

Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
20.11.x
Kyle Hall 4 years ago
committed by Jonathan Druart
parent
commit
e2032ccfd3
  1. 7
      Koha/Patron.pm
  2. 7
      t/db_dependent/Koha/Patrons.t

7
Koha/Patron.pm

@ -603,6 +603,9 @@ sub siblings {
sub merge_with {
my ( $self, $patron_ids ) = @_;
my $anonymous_patron = C4::Context->preference("AnonymousPatron");
return if $anonymous_patron && $self->id eq $anonymous_patron;
my @patron_ids = @{ $patron_ids };
# Ensure the keeper isn't in the list of patrons to merge
@ -615,9 +618,7 @@ sub merge_with {
$self->_result->result_source->schema->txn_do( sub {
foreach my $patron_id (@patron_ids) {
if ( my $anonymous_patron = C4::Context->preference("AnonymousPatron") ) {
next if $patron_id eq $anonymous_patron;
}
next if $patron_id eq $anonymous_patron;
my $patron = Koha::Patrons->find( $patron_id );

7
t/db_dependent/Koha/Patrons.t

@ -1603,7 +1603,7 @@ subtest 'BorrowersLog tests' => sub {
$schema->storage->txn_rollback;
subtest 'Test Koha::Patrons::merge' => sub {
plan tests => 111;
plan tests => 113;
my $schema = Koha::Database->new()->schema();
@ -1649,6 +1649,11 @@ subtest 'Test Koha::Patrons::merge' => sub {
is( Koha::Patrons->find($loser_2), undef, 'Loser 2 has been deleted' );
is( ref Koha::Patrons->find($anonymous_patron), 'Koha::Patron', 'Anonymous Patron was not deleted' );
$anonymous_patron = Koha::Patrons->find($anonymous_patron);
$results = $anonymous_patron->merge_with( [ $keeper->id ] );
is( $results, undef, "Anonymous patron cannot have other patrons merged into it" );
is( Koha::Patrons->search( { borrowernumber => $keeper->id } )->count, 1, "Patron from attempted merge with AnonymousPatron still exists" );
t::lib::Mocks::mock_preference( 'AnonymousPatron', '' );
$schema->storage->txn_rollback;
};

Loading…
Cancel
Save