Exemplo n.º 1
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);
     $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];
     }
 }
Exemplo n.º 2
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));
     }
 }
Exemplo n.º 3
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);
 }
Exemplo n.º 4
0
 public function __construct($config)
 {
     parent::__construct($config);
 }