/** * Update dedup candidate keys for the given record * * @param array $record Database record * @param object $metadataRecord Metadata record for the used format * * @return boolean Whether anything was changed */ public function updateDedupCandidateKeys(&$record, $metadataRecord) { $result = false; if ($metadataRecord->getAccessRestrictions()) { $result = isset($record['title_keys']) || isset($record['isbn_keys']) || isset($record['id_keys']); unset($record['title_keys']); unset($record['isbn_keys']); unset($record['id_keys']); return $result; } $keys = [MetadataUtils::createTitleKey($metadataRecord->getTitle(true))]; if (!isset($record['title_keys']) || !is_array($record['title_keys']) || array_diff($record['title_keys'], $keys)) { $record['title_keys'] = $keys; $result = true; } if (empty($record['title_keys'])) { unset($record['title_keys']); } $keys = $metadataRecord->getISBNs(); if (!isset($record['isbn_keys']) || !is_array($record['isbn_keys']) || array_diff($record['isbn_keys'], $keys)) { $record['isbn_keys'] = $keys; $result = true; } if (empty($record['isbn_keys'])) { unset($record['isbn_keys']); } $keys = $metadataRecord->getUniqueIDs(); if (!isset($record['id_keys']) || !is_array($record['id_keys']) || array_diff($record['id_keys'], $keys)) { $record['id_keys'] = $keys; $result = true; } if (empty($record['id_keys'])) { unset($record['id_keys']); } return $result; }