/** * Constructor * * @param string $data Metadata * @param string $oaiID Record ID received from OAI-PMH (or empty string for * file import) * @param string $source Source ID * @param string $idPrefix Record ID prefix */ public function __construct($data, $oaiID, $source, $idPrefix) { parent::__construct($data, $oaiID, $source, $idPrefix); $firstChar = substr($data, 0, 1); if ($firstChar === '{') { $fields = json_decode($data, true); if (!isset($fields['v'])) { // Old format, convert... $this->fields = []; foreach ($fields as $tag => $field) { foreach ($field as $data) { if (strstr($data, MarcRecord::SUBFIELD_INDICATOR)) { $newField = ['i1' => $data[0], 'i2' => $data[1]]; $subfields = explode(MarcRecord::SUBFIELD_INDICATOR, substr($data, 3)); foreach ($subfields as $subfield) { $newField['s'][] = [(string) $subfield[0] => substr($subfield, 1)]; } $this->fields[$tag][] = $newField; } else { $this->fields[$tag][] = $data; } } } } else { if ($fields['v'] == 2) { // Convert from previous field format $this->fields = []; foreach ($fields['f'] as $code => $codeFields) { if (!is_array($codeFields)) { // 000 $this->fields[$code] = $codeFields; continue; } foreach ($codeFields as $field) { if (is_array($field)) { $newField = ['i1' => $field['i1'], 'i2' => $field['i2'], 's' => []]; if (isset($field['s'])) { foreach ($field['s'] as $subfield) { $newField['s'][] = [$subfield['c'] => $subfield['v']]; } } $this->fields[$code][] = $newField; } else { $this->fields[$code][] = $field; } } } } else { $this->fields = $fields['f']; } } } elseif ($firstChar === '<') { $this->parseXML($data); } else { $this->parseISO2709($data); } if (isset($this->fields['000']) && is_array($this->fields['000'])) { $this->fields['000'] = $this->fields['000'][0]; } }
/** * Constructor * * @param string $data Metadata * @param string $oaiID Record ID received from OAI-PMH (or empty string for * file import) * @param string $source Source ID * @param string $idPrefix Record ID prefix */ public function __construct($data, $oaiID, $source, $idPrefix) { parent::__construct($data, $oaiID, $source, $idPrefix); $this->doc = simplexml_load_string($data); if (empty($this->doc->recordID)) { $p = strpos($oaiID, ':'); $p = strpos($oaiID, ':', $p + 1); $this->doc->addChild('recordID', substr($oaiID, $p + 1)); } }
/** * Constructor * * @param string $data Metadata * @param string $oaiID Record ID received from OAI-PMH * (or empty string for file import) * @param string $source Source ID * @param string $idPrefix Record ID prefix */ public function __construct($data, $oaiID, $source, $idPrefix) { parent::__construct($data, $oaiID, $source, $idPrefix); $this->doc = simplexml_load_string($data); }
public function __construct($config) { parent::__construct($config); }