Skip to content
Snippets Groups Projects
OrderHydrator.php 1.93 KiB
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');
        $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');

            'title',
            'publicationDetails',
            'authors',
            'issn',
        );

        $object->setData(compact('record'));
    public function toArray ($object) : array {
        $array = (array) $object;
        $keys = str_replace( '*', '', array_keys( $array ) );
        return array_combine( $keys, array_values( $array ) );
    }