Bug 28213: Prevent crash if patron or club deleted after search to hold

Deleting a patron or patron club causes server error on searching.

To recreate:
- create a club template
- create a club
- enroll a patron in the club
- from the clubs page, select Search To Hold for your club
- do a search, see that it says "Hold for [club name]" in your search results page
- go back to the clubs page and delete your club
- try to perform a search
=> Without this patch you get "Can't call method "name" on an undefined value at /kohadevbox/koha/catalogue/search.pl line 207"

Same when placing a hold for a patron (check the search result and the
detail pages)

Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
(cherry picked from commit 0633590f55)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
(cherry picked from commit f307bc2786)

Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>
This commit is contained in:
Jonathan Druart 2021-04-26 11:10:11 +02:00 committed by Andrew Fuerste-Henry
parent ea3428a5dc
commit 706badc289
2 changed files with 24 additions and 18 deletions

View File

@ -90,15 +90,17 @@ if ( not defined $record ) {
eval { $biblio->metadata->record };
$template->param( decoding_error => $@ );
if($query->cookie("holdfor")){
if($query->cookie("holdfor")){
my $holdfor_patron = Koha::Patrons->find( $query->cookie("holdfor") );
$template->param(
# FIXME Should pass the patron object
holdfor => $query->cookie("holdfor"),
holdfor_surname => $holdfor_patron->surname,
holdfor_firstname => $holdfor_patron->firstname,
holdfor_cardnumber => $holdfor_patron->cardnumber,
);
if ( $holdfor_patron ) {
$template->param(
# FIXME Should pass the patron object
holdfor => $query->cookie("holdfor"),
holdfor_surname => $holdfor_patron->surname,
holdfor_firstname => $holdfor_patron->firstname,
holdfor_cardnumber => $holdfor_patron->cardnumber,
);
}
}
if($query->cookie("searchToOrder")){

View File

@ -194,20 +194,24 @@ if (C4::Context->preference("marcflavour") eq "UNIMARC" ) {
if($cgi->cookie("holdfor")){
my $holdfor_patron = Koha::Patrons->find( $cgi->cookie("holdfor") );
$template->param(
holdfor => $cgi->cookie("holdfor"),
holdfor_surname => $holdfor_patron->surname,
holdfor_firstname => $holdfor_patron->firstname,
holdfor_cardnumber => $holdfor_patron->cardnumber,
);
if ( $holdfor_patron ) { # may have been deleted in the meanwhile
$template->param(
holdfor => $cgi->cookie("holdfor"),
holdfor_surname => $holdfor_patron->surname,
holdfor_firstname => $holdfor_patron->firstname,
holdfor_cardnumber => $holdfor_patron->cardnumber,
);
}
}
if($cgi->cookie("holdforclub")){
my $holdfor_club = Koha::Clubs->find( $cgi->cookie("holdforclub") );
$template->param(
holdforclub => $cgi->cookie("holdforclub"),
holdforclub_name => $holdfor_club->name,
);
if ( $holdfor_club ) { # May have been deleted in the meanwhile
$template->param(
holdforclub => $cgi->cookie("holdforclub"),
holdforclub_name => $holdfor_club->name,
);
}
}
if($cgi->cookie("searchToOrder")){