コード例 #1
0
ファイル: MarcRecord.php プロジェクト: grharry/RecordManager
 /**
  * Dedup: Return (unique) ISBNs in ISBN-13 format without dashes
  *
  * @return string[]
  */
 public function getISBNs()
 {
     $arr = [];
     $fields = $this->getFields('020');
     foreach ($fields as $field) {
         $isbn = $this->getSubfield($field, 'a');
         $isbn = MetadataUtils::normalizeISBN($isbn);
         if ($isbn) {
             $arr[] = $isbn;
         }
     }
     return array_values(array_unique($arr));
 }
コード例 #2
0
 /**
  * Get an array of all fields relevant to allfields search
  *
  * @return string[]
  */
 protected function getAllFields()
 {
     $subfieldFilter = ['650' => ['0' => 1, '2' => 1, '6' => 1, '8' => 1], '773' => ['0' => 1, '6' => 1, '7' => 1, '8' => 1, 'w' => 1], '856' => ['0' => 1, '6' => 1, '8' => 1, 'q' => 1], '979' => ['0' => 1, 'a' => 1, 'f' => 1]];
     $allFields = [];
     // Include ISBNs, also normalized if possible
     foreach ($this->getFields('020') as $field) {
         $isbns = $this->getSubfieldsArray($field, ['a' => 1, 'z' => 1]);
         foreach ($isbns as $isbn) {
             $allFields[] = $isbn;
             $isbn = MetadataUtils::normalizeISBN($isbn);
             if ($isbn) {
                 $allFields[] = $isbn;
             }
         }
     }
     foreach ($this->fields as $tag => $fields) {
         if ($tag >= 100 && $tag < 841 && $tag != 336 && $tag != 337 || $tag == 856 || $tag == 880 || $tag == 979) {
             foreach ($fields as $field) {
                 $subfields = $this->getAllSubfields($field, isset($subfieldFilter[$tag]) ? $subfieldFilter[$tag] : ['0' => 1, '6' => 1, '8' => 1]);
                 if ($subfields) {
                     $allFields = array_merge($allFields, $subfields);
                 }
             }
         }
     }
     $allFields = array_map(function ($str) {
         return MetadataUtils::stripLeadingPunctuation(MetadataUtils::stripTrailingPunctuation($str));
     }, $allFields);
     return array_values(array_unique($allFields));
 }