Newer
Older
<?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']);
$pages = array_key_exists('pages',$data) ? $data['pages'] : null;
/* Collect needed record data */
$id = $driver->tryMethod('getUniqueID');
$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');
$record = compact(
'id',
'title',
'publicationDetails',
'authors',
'primaryAuthor',
'secondaryAuthors',
'isbn',
'languages',
'price',
'pages'
);
$object->setData(compact('record'));
$object->setLabel($title);
public function toArray ($object) : array {
$array = (array) $object;
$keys = str_replace( '*', '', array_keys( $array ) );
return array_combine( $keys, array_values( $array ) );
}