<?php namespace fid\Hydrator; use fid\Service\DataTransferObject\Order; use VuFind\RecordDriver\DefaultRecord; use Zend\Hydrator\AbstractHydrator; class OrderHydrator extends AbstractHydrator { public function extract($object) { return; // TODO: Implement extract() method. } /** * @param array $data * @param Order|object $object * @return Order|object|void */ public function hydrate(array $data, $object) { /** @var DefaultRecord $driver */ $driver = $data['driver']; $object->setType($data['type']); $object->setUser($data['user']); $partialCopy = array_key_exists('subitoPartialCopy', $data) ? $data['subitoPartialCopy'] : null; /* Collect needed record data */ $id = $driver->tryMethod('getUniqueID'); $title = $driver->tryMethod('getTitle'); $publicationDetails = $this->toArray( $driver->tryMethod('getPublicationDetails')[0] ); $authors = $driver->tryMethod('getDeduplicatedAuthors'); $primaryAuthor = $driver->tryMethod('getPrimaryAuthor'); $secondaryAuthors = $driver->tryMethod('getSecondaryAuthors'); $isbn = $driver->tryMethod('getCleanISBN'); $issn = $driver->tryMethod('getCleanISSN'); $languages = $driver->tryMethod('getLanguages'); $price = $driver->tryMethod('getPrice'); /* pre generated record-url */ $url = $data['url']; /* Collect special journal data used for subito-article*/ $publishedIn = $driver->tryMethod('getPublishedIn'); if (isset($publishedIn['issue'])) { $publishedIn['issue'] = is_string($publishedIn['issue']) ? $publishedIn['issue'] : implode(', ', $publishedIn['issue']); } $record = compact( 'id', 'title', 'publicationDetails', 'authors', 'primaryAuthor', 'secondaryAuthors', 'issn', 'isbn', 'languages', 'price', 'publishedIn', 'url' ); $object->setData(compact('record','partialCopy')); $object->setLabel($data['label']); return; } public function toArray ($object) : array { $array = (array) $object; $keys = str_replace( '*', '', array_keys( $array ) ); return array_combine( $keys, array_values( $array ) ); } }