diff --git a/module/VuFind/src/VuFind/ILS/Driver/MultiBackend.php b/module/VuFind/src/VuFind/ILS/Driver/MultiBackend.php index f2324e6d141ba72e2e46b2c6c0f0944c86b2ff3b..ef9b5b4502d15e0901b4aa7436db5487fa3da7b5 100644 --- a/module/VuFind/src/VuFind/ILS/Driver/MultiBackend.php +++ b/module/VuFind/src/VuFind/ILS/Driver/MultiBackend.php @@ -1044,7 +1044,8 @@ class MultiBackend extends AbstractBase if ($driver && $this->methodSupported($driver, 'placeILLRequest', compact($details)) ) { - $details = $this->stripIdPrefixes($details, $source, ['id']); + // Patron is not stripped so that the correct library can be determined + $details = $this->stripIdPrefixes($details, $source, ['id'], ['patron']); return $driver->placeILLRequest($details); } throw new ILSException('No suitable backend driver found'); @@ -1425,12 +1426,13 @@ class MultiBackend extends AbstractBase * array or array of arrays * @param string $source Source code * @param array $modifyFields Fields to be modified in the array + * @param array $ignoreFields Fields to be ignored during recursive processing * * @return mixed Modified array or empty/null if that input was * empty/null */ protected function stripIdPrefixes($data, $source, - $modifyFields = ['id', 'cat_username'] + $modifyFields = ['id', 'cat_username'], $ignoreFields = [] ) { if (!isset($data) || empty($data)) { return $data; @@ -1439,6 +1441,9 @@ class MultiBackend extends AbstractBase foreach ($array as $key => $value) { if (is_array($value)) { + if (in_array($key, $ignoreFields)) { + continue; + } $array[$key] = $this->stripIdPrefixes( $value, $source, $modifyFields );