Просмотр исходного кода

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>
21.05.x
Jonathan Druart 3 лет назад
Родитель
Сommit
0633590f55
  1. 18
      catalogue/detail.pl
  2. 24
      catalogue/search.pl

18
catalogue/detail.pl

@ -92,15 +92,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")){

24
catalogue/search.pl

@ -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")){

Загрузка…
Отмена
Сохранить