Skip to content
Snippets Groups Projects
Commit dac3f39f authored by Dorian Merz's avatar Dorian Merz Committed by André Lahmann
Browse files

refs #20624 [finc] fix infinite recursion due to circularly bound items

* use static variable for short term caching
parent 75c34e2a
No related merge requests found
...@@ -356,19 +356,6 @@ class FincLibero extends FincILS implements TranslatorAwareInterface ...@@ -356,19 +356,6 @@ class FincLibero extends FincILS implements TranslatorAwareInterface
{ {
$return = parent::getItemStatus($item); $return = parent::getItemStatus($item);
$return['awlRecordId'] = $this->getBoundItemId($item);
// is this item bound with another item?
if ($return['awlRecordId'] != null) {
// overwrite any existing link settings as we need to order this item
// via the bound item
$return['addLink'] =
$return['addStorageRetrievalRequestLink'] =
$return['addILLRequestLink'] =
$return['addEmailHoldLink'] = false;
$return['awlRecordStatus'] =
current($this->getStatus($return['awlRecordId']));
}
// add all item specific information from DAIA field about to item_notes // add all item specific information from DAIA field about to item_notes
// (https://intern.finc.info/issues/7863) // (https://intern.finc.info/issues/7863)
$about = (isset($item['about'])) ? [$item['about']] : []; $about = (isset($item['about'])) ? [$item['about']] : [];
...@@ -380,6 +367,28 @@ class FincLibero extends FincILS implements TranslatorAwareInterface ...@@ -380,6 +367,28 @@ class FincLibero extends FincILS implements TranslatorAwareInterface
$about $about
) )
); );
$return['awlRecordId'] = $this->getBoundItemId($item);
// is this item bound with another item?
if ($return['awlRecordId'] != null) {
static $awlStatuses = [];
// overwrite any existing link settings as we need to order this item
// via the bound item
$return['addLink'] =
$return['addStorageRetrievalRequestLink'] =
$return['addILLRequestLink'] =
$return['addEmailHoldLink'] = false;
if (isset($awlStatuses[$return['awlRecordId']])) {
$return['awlRecordStatus'] = $awlStatuses[$return['awlRecordId']];
} else {
// fix for infinite recursion due to circularly bound items
$awlStatuses[$return['awlRecordId']] = 'pending';
$return['awlRecordStatus'] =
$awlStatuses[$return['awlRecordId']] =
current($this->getStatus($return['awlRecordId']));
}
}
return $return; return $return;
} }
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment