Ejemplo n.º 1
0
 private function convertRecord(Record $record)
 {
     $records = $record->toArray();
     $offset = 0;
     $fields = array_merge($records['subfield'], $records['datafield']);
     $content = [];
     $directory = [];
     foreach ($fields as $field) {
         $result = $field instanceof ControlField ? $this->convertControlField($field) : $this->convertDataField($field);
         $content[] = $result;
         $length = strlen($result);
         $entry = sprintf("%03s%04d%05d", $field->getTag(), $length, $offset);
         $directory[] = $entry;
         $offset += $length;
     }
     $base = File_MARC::LEADER_LEN + count($directory) * File_MARC::DIRECTORY_ENTRY_LEN + 1;
     $total = $base + $offset + 1;
     $record->setLeaderLength($total, $base);
     return $record->getLeader() . implode($directory) . File_MARC::END_OF_FIELD . implode($content) . File_MARC::END_OF_RECORD;
 }