/** * @param \File_MARC_Data_Field $field * * @return DataField */ private function convertDataField(\File_MARC_Data_Field $field) { $tag = $field->getTag(); $ind1 = $field->getIndicator(1); $ind2 = $field->getIndicator(2); $dataField = new DataField($tag, [$ind1, $ind2]); foreach ($field->getSubfields() as $subField) { $dataField->addSubField($this->convertSubfield($subField)); } return $dataField; }
/** * Support method for getFieldData() -- factor the relationship indicator * into the field number where relevant to generate a note to associate * with a record link. * * @param File_MARC_Data_Field $field Field to examine * * @return string */ protected function getRecordLinkNote($field) { // If set, use relationship information from subfield i if ($subfieldI = $field->getSubfield('i')) { $data = trim($subfieldI->getData()); if (!empty($data)) { return $data; } } // Normalize blank relationship indicator to 0: $relationshipIndicator = $field->getIndicator('2'); if ($relationshipIndicator == ' ') { $relationshipIndicator = '0'; } // Assign notes based on the relationship type $value = $field->getTag(); switch ($value) { case '780': if (in_array($relationshipIndicator, range('0', '7'))) { $value .= '_' . $relationshipIndicator; } break; case '785': if (in_array($relationshipIndicator, range('0', '8'))) { $value .= '_' . $relationshipIndicator; } break; } return 'note_' . $value; }
/** * Support method for getFieldData() -- factor the relationship indicator * into the field number where relevant to generate a note to associate * with a record link. * * @param File_MARC_Data_Field $field Field to examine * * @return string */ protected function getRecordLinkNote($field) { // Normalize blank relationship indicator to 0: $relationshipIndicator = $field->getIndicator('2'); if ($relationshipIndicator == ' ') { $relationshipIndicator = '0'; } // Assign notes based on the relationship type $value = $field->getTag(); switch ($value) { case '780': if (in_array($relationshipIndicator, range('0', '7'))) { $value .= '_' . $relationshipIndicator; } break; case '785': if (in_array($relationshipIndicator, range('0', '8'))) { $value .= '_' . $relationshipIndicator; } break; } return 'note_' . $value; }