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

visit() public method

Visit struct returned by controllers.
public visit ( Visitor $visitor, Generator $generator, RestContentType $data )
$visitor eZ\Publish\Core\REST\Common\Output\Visitor
$generator eZ\Publish\Core\REST\Common\Output\Generator
$data eZ\Publish\Core\REST\Server\Values\RestContentType
    public function visit(Visitor $visitor, Generator $generator, $data)
    {
        $contentType = $data->contentType;
        $urlTypeSuffix = $this->getUrlTypeSuffix($contentType->status);
        $mediaType = $data->fieldDefinitions !== null ? 'ContentType' : 'ContentTypeInfo';
        $generator->startObjectElement($mediaType);
        $visitor->setHeader('Content-Type', $generator->getMediaType($mediaType));
        if ($contentType->status === APIContentType::STATUS_DRAFT) {
            $visitor->setHeader('Accept-Patch', $generator->getMediaType('ContentTypeUpdate'));
        }
        $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContentType' . $urlTypeSuffix, array('contentTypeId' => $contentType->id)));
        $generator->endAttribute('href');
        $generator->startValueElement('id', $contentType->id);
        $generator->endValueElement('id');
        $generator->startValueElement('status', $this->serializeStatus($contentType->status));
        $generator->endValueElement('status');
        $generator->startValueElement('identifier', $contentType->identifier);
        $generator->endValueElement('identifier');
        $this->visitNamesList($generator, $contentType->getNames());
        $descriptions = $contentType->getDescriptions();
        if (is_array($descriptions)) {
            $this->visitDescriptionsList($generator, $descriptions);
        }
        $generator->startValueElement('creationDate', $contentType->creationDate->format('c'));
        $generator->endValueElement('creationDate');
        $generator->startValueElement('modificationDate', $contentType->modificationDate->format('c'));
        $generator->endValueElement('modificationDate');
        $generator->startObjectElement('Creator', 'User');
        $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadUser', array('userId' => $contentType->creatorId)));
        $generator->endAttribute('href');
        $generator->endObjectElement('Creator');
        $generator->startObjectElement('Modifier', 'User');
        $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadUser', array('userId' => $contentType->modifierId)));
        $generator->endAttribute('href');
        $generator->endObjectElement('Modifier');
        $generator->startObjectElement('Groups', 'ContentTypeGroupRefList');
        $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadGroupsOfContentType', array('contentTypeId' => $contentType->id)));
        $generator->endAttribute('href');
        $generator->endObjectElement('Groups');
        $generator->startObjectElement('Draft', 'ContentType');
        $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContentTypeDraft', array('contentTypeId' => $contentType->id)));
        $generator->endAttribute('href');
        $generator->endObjectElement('Draft');
        $generator->startValueElement('remoteId', $contentType->remoteId);
        $generator->endValueElement('remoteId');
        $generator->startValueElement('urlAliasSchema', $contentType->urlAliasSchema);
        $generator->endValueElement('urlAliasSchema');
        $generator->startValueElement('nameSchema', $contentType->nameSchema);
        $generator->endValueElement('nameSchema');
        $generator->startValueElement('isContainer', $this->serializeBool($generator, $contentType->isContainer));
        $generator->endValueElement('isContainer');
        $generator->startValueElement('mainLanguageCode', $contentType->mainLanguageCode);
        $generator->endValueElement('mainLanguageCode');
        $generator->startValueElement('defaultAlwaysAvailable', $this->serializeBool($generator, $contentType->defaultAlwaysAvailable));
        $generator->endValueElement('defaultAlwaysAvailable');
        $generator->startValueElement('defaultSortField', $this->serializeSortField($contentType->defaultSortField));
        $generator->endValueElement('defaultSortField');
        $generator->startValueElement('defaultSortOrder', $this->serializeSortOrder($contentType->defaultSortOrder));
        $generator->endValueElement('defaultSortOrder');
        if ($data->fieldDefinitions !== null) {
            $visitor->visitValueObject(new Values\FieldDefinitionList($contentType, $data->fieldDefinitions));
        }
        $generator->endObjectElement($mediaType);
    }

Usage Example

 /**
  * Visit struct returned by controllers
  *
  * @param \eZ\Publish\Core\REST\Common\Output\Visitor $visitor
  * @param \eZ\Publish\Core\REST\Common\Output\Generator $generator
  * @param \eZ\Publish\Core\REST\Server\Values\CreatedContentType $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $restContentType = $data->contentType;
     parent::visit($visitor, $generator, $restContentType);
     $visitor->setHeader('Location', $this->router->generate('ezpublish_rest_loadContentType' . $this->getUrlTypeSuffix($restContentType->contentType->status), array('contentTypeId' => $restContentType->contentType->id)));
     $visitor->setStatus(201);
 }
RestContentType