eZ\Publish\Core\REST\Server\Output\ValueObjectVisitor\RestExecutedView::visit PHP Method

visit() public method

Visit struct returned by controllers.
public visit ( Visitor $visitor, Generator $generator, RestExecutedView $data )
$visitor eZ\Publish\Core\REST\Common\Output\Visitor
$generator eZ\Publish\Core\REST\Common\Output\Generator
$data eZ\Publish\Core\REST\Server\Values\RestExecutedView
    public function visit(Visitor $visitor, Generator $generator, $data)
    {
        $generator->startObjectElement('View');
        $visitor->setHeader('Content-Type', $generator->getMediaType('View'));
        $generator->startAttribute('href', $this->router->generate('ezpublish_rest_views_load', array('viewId' => $data->identifier)));
        $generator->endAttribute('href');
        $generator->startValueElement('identifier', $data->identifier);
        $generator->endValueElement('identifier');
        // BEGIN Query
        $generator->startObjectElement('Query');
        $generator->endObjectElement('Query');
        // END Query
        // BEGIN Result
        $generator->startObjectElement('Result', 'ViewResult');
        $generator->startAttribute('href', $this->router->generate('ezpublish_rest_views_load_results', array('viewId' => $data->identifier)));
        $generator->endAttribute('href');
        // BEGIN Result metadata
        $generator->startValueElement('count', $data->searchResults->totalCount);
        $generator->endValueElement('count');
        $generator->startValueElement('time', $data->searchResults->time);
        $generator->endValueElement('time');
        $generator->startValueElement('timedOut', $generator->serializeBool($data->searchResults->timedOut));
        $generator->endValueElement('timedOut');
        $generator->startValueElement('maxScore', $data->searchResults->maxScore);
        $generator->endValueElement('maxScore');
        // END Result metadata
        // BEGIN searchHits
        $generator->startHashElement('searchHits');
        $generator->startList('searchHit');
        foreach ($data->searchResults->searchHits as $searchHit) {
            $generator->startObjectElement('searchHit');
            $generator->startAttribute('score', (double) $searchHit->score);
            $generator->endAttribute('score');
            $generator->startAttribute('index', (string) $searchHit->index);
            $generator->endAttribute('index');
            $generator->startObjectElement('value');
            // @todo Refactor
            if ($searchHit->valueObject instanceof ApiValues\Content) {
                /** @var \eZ\Publish\API\Repository\Values\Content\ContentInfo $contentInfo */
                $contentInfo = $searchHit->valueObject->contentInfo;
                $valueObject = new RestContentValue($contentInfo, $this->locationService->loadLocation($contentInfo->mainLocationId), $searchHit->valueObject, $this->contentTypeService->loadContentType($contentInfo->contentTypeId), $this->contentService->loadRelations($searchHit->valueObject->getVersionInfo()));
            } elseif ($searchHit->valueObject instanceof ApiValues\Location) {
                $valueObject = $searchHit->valueObject;
            } elseif ($searchHit->valueObject instanceof ApiValues\ContentInfo) {
                $valueObject = new RestContentValue($searchHit->valueObject);
            } else {
                throw new Exceptions\InvalidArgumentException('Unhandled object type');
            }
            $visitor->visitValueObject($valueObject);
            $generator->endObjectElement('value');
            $generator->endObjectElement('searchHit');
        }
        $generator->endList('searchHit');
        $generator->endHashElement('searchHits');
        // END searchHits
        $generator->endObjectElement('Result');
        // END Result
        $generator->endObjectElement('View');
    }
RestExecutedView