コード例 #1
0
 /**
  * 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;
 }