visitValueObject() public méthode

Can be called by sub-visitors to visit nested objects.
public visitValueObject ( object $data ) : mixed
$data object
Résultat mixed
Exemple #1
0
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     if ($data instanceof LocationQueryValue) {
         $rootObjectElement = 'LocationQuery';
     } else {
         if ($data instanceof ContentQueryValue) {
             $rootObjectElement = 'ContentQuery';
         } else {
             throw new Exceptions\InvalidArgumentException("ViewInput Query", "No content nor location query found in ViewInput");
         }
     }
     $generator->startObjectElement($rootObjectElement, 'Query');
     if (isset($data->filter)) {
         $generator->startHashElement('Filter');
         $visitor->visitValueObject($data->filter);
         $generator->endHashElement('Filter');
     }
     if (isset($data->query)) {
         $generator->startHashElement('Query');
         $visitor->visitValueObject($data->query);
         $generator->endhashElement('Query');
     }
     // $generator->startObjectElement('SortClauses');
     // foreach ($data->sortClauses as $sortClause) {
     //     $visitor->visitValueObject($sortClause);
     // }
     // $generator->endObjectElement('SortClauses');
     $generator->endObjectElement($rootObjectElement);
 }
Exemple #2
0
 /**
  * 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\Version $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $content = $data->content;
     $versionInfo = $content->getVersionInfo();
     $contentType = $data->contentType;
     $generator->startObjectElement('Version');
     $visitor->setHeader('Content-Type', $generator->getMediaType('Version'));
     $visitor->setHeader('Accept-Patch', $generator->getMediaType('VersionUpdate'));
     $path = $data->path;
     if ($path == null) {
         $path = $this->router->generate('ezpublish_rest_loadContentInVersion', array('contentId' => $content->id, 'versionNumber' => $versionInfo->versionNo));
     }
     $generator->startAttribute('href', $path);
     $generator->endAttribute('href');
     $visitor->visitValueObject($versionInfo);
     $generator->startHashElement('Fields');
     $generator->startList('field');
     foreach ($content->getFields() as $field) {
         $this->visitField($generator, $contentType, $field);
     }
     $generator->endList('field');
     $generator->endHashElement('Fields');
     $visitor->visitValueObject(new RelationListValue($data->relations, $content->id, $versionInfo->versionNo));
     $generator->endObjectElement('Version');
 }
 /**
  * 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\RestLocation $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('Location');
     $visitor->setHeader('Content-Type', $generator->getMediaType('Location'));
     $visitor->setHeader('Accept-Patch', $generator->getMediaType('LocationUpdate'));
     $location = $data->location;
     $contentInfo = $location->getContentInfo();
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadLocation', array('locationPath' => trim($location->pathString, '/'))));
     $generator->endAttribute('href');
     $generator->startValueElement('id', $location->id);
     $generator->endValueElement('id');
     $generator->startValueElement('priority', $location->priority);
     $generator->endValueElement('priority');
     $generator->startValueElement('hidden', $this->serializeBool($generator, $location->hidden));
     $generator->endValueElement('hidden');
     $generator->startValueElement('invisible', $this->serializeBool($generator, $location->invisible));
     $generator->endValueElement('invisible');
     $generator->startObjectElement('ParentLocation', 'Location');
     if (trim($location->pathString, '/') !== '1') {
         $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadLocation', array('locationPath' => implode('/', array_slice($location->path, 0, count($location->path) - 1)))));
         $generator->endAttribute('href');
     }
     $generator->endObjectElement('ParentLocation');
     $generator->startValueElement('pathString', $location->pathString);
     $generator->endValueElement('pathString');
     $generator->startValueElement('depth', $location->depth);
     $generator->endValueElement('depth');
     $generator->startValueElement('childCount', $data->childCount);
     $generator->endValueElement('childCount');
     $generator->startValueElement('remoteId', $location->remoteId);
     $generator->endValueElement('remoteId');
     $generator->startObjectElement('Children', 'LocationList');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadLocationChildren', array('locationPath' => trim($location->pathString, '/'))));
     $generator->endAttribute('href');
     $generator->endObjectElement('Children');
     $generator->startObjectElement('Content');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContent', array('contentId' => $contentInfo->id)));
     $generator->endAttribute('href');
     $generator->endObjectElement('Content');
     $generator->startValueElement('sortField', $this->serializeSortField($location->sortField));
     $generator->endValueElement('sortField');
     $generator->startValueElement('sortOrder', $this->serializeSortOrder($location->sortOrder));
     $generator->endValueElement('sortOrder');
     $generator->startObjectElement('UrlAliases', 'UrlAliasRefList');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_listLocationURLAliases', array('locationPath' => trim($location->pathString, '/'))));
     $generator->endAttribute('href');
     $generator->endObjectElement('UrlAliases');
     $generator->startObjectElement('ContentInfo', 'ContentInfo');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContent', array('contentId' => $contentInfo->id)));
     $generator->endAttribute('href');
     $visitor->visitValueObject(new RestContentValue($contentInfo));
     $generator->endObjectElement('ContentInfo');
     $generator->endObjectElement('Location');
 }
 /**
  * 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\URLAliasList $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('UrlAliasList');
     $visitor->setHeader('Content-Type', $generator->getMediaType('UrlAliasList'));
     $generator->startAttribute('href', $data->path);
     $generator->endAttribute('href');
     $generator->startList('UrlAlias');
     foreach ($data->urlAliases as $urlAlias) {
         $visitor->visitValueObject($urlAlias);
     }
     $generator->endList('UrlAlias');
     $generator->endObjectElement('UrlAliasList');
 }
 /**
  * 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\URLWildcardList $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('UrlWildcardList');
     $visitor->setHeader('Content-Type', $generator->getMediaType('UrlWildcardList'));
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_listURLWildcards'));
     $generator->endAttribute('href');
     $generator->startList('UrlWildcard');
     foreach ($data->urlWildcards as $urlWildcard) {
         $visitor->visitValueObject($urlWildcard);
     }
     $generator->endList('UrlWildcard');
     $generator->endObjectElement('UrlWildcardList');
 }
 /**
  * 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\RoleAssignmentList $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('RoleAssignmentList');
     $visitor->setHeader('Content-Type', $generator->getMediaType('RoleAssignmentList'));
     $generator->startAttribute('href', $data->isGroupAssignment ? $this->router->generate('ezpublish_rest_loadRoleAssignmentsForUserGroup', array('groupPath' => $data->id)) : $this->router->generate('ezpublish_rest_loadRoleAssignmentsForUser', array('userId' => $data->id)));
     $generator->endAttribute('href');
     $generator->startList('RoleAssignment');
     foreach ($data->roleAssignments as $roleAssignment) {
         $visitor->visitValueObject($data->isGroupAssignment ? new Values\RestUserGroupRoleAssignment($roleAssignment, $data->id) : new Values\RestUserRoleAssignment($roleAssignment, $data->id));
     }
     $generator->endList('RoleAssignment');
     $generator->endObjectElement('RoleAssignmentList');
 }
Exemple #7
0
 /**
  * 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\Trash $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('Trash');
     $visitor->setHeader('Content-Type', $generator->getMediaType('Trash'));
     $generator->startAttribute('href', $data->path);
     $generator->endAttribute('href');
     $generator->startList('TrashItem');
     foreach ($data->trashItems as $trashItem) {
         $visitor->visitValueObject($trashItem);
     }
     $generator->endList('TrashItem');
     $generator->endObjectElement('Trash');
 }
 /**
  * Visit struct returned by controllers
  *
  * @param \eZ\Publish\Core\REST\Common\Output\Visitor $visitor
  * @param \eZ\Publish\Core\REST\Common\Output\Generator $generator
  * @param mixed $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('RoleAssignInput');
     $visitor->setHeader('Content-Type', $generator->getMediaType('RoleAssignInput'));
     $generator->startObjectElement('Role');
     $generator->startAttribute('href', $this->requestParser->generate('role', array('role' => $data->getRole()->id)));
     $generator->endAttribute('href');
     $generator->endObjectElement('Role');
     $roleLimitation = $data->getRoleLimitation();
     if ($roleLimitation !== null) {
         $visitor->visitValueObject($roleLimitation);
     }
     $generator->endObjectElement('RoleAssignInput');
 }
 /**
  * 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\ObjectStateList $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('ObjectStateList');
     $visitor->setHeader('Content-Type', $generator->getMediaType('ObjectStateList'));
     //@todo Needs refactoring, disabling certain headers should not be done this way
     $visitor->setHeader('Accept-Patch', false);
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadObjectStates', array('objectStateGroupId' => $data->groupId)));
     $generator->endAttribute('href');
     $generator->startList('ObjectState');
     foreach ($data->states as $state) {
         $visitor->visitValueObject(new RestObjectStateValue($state, $data->groupId));
     }
     $generator->endList('ObjectState');
     $generator->endObjectElement('ObjectStateList');
 }
 /**
  * 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\ContentList $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('ContentList');
     $visitor->setHeader('Content-Type', $generator->getMediaType('ContentList'));
     //@todo Needs refactoring, disabling certain headers should not be done this way
     $visitor->setHeader('Accept-Patch', false);
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_redirectContent'));
     $generator->endAttribute('href');
     $generator->startList('ContentInfo');
     foreach ($data->contents as $content) {
         $visitor->visitValueObject($content);
     }
     $generator->endList('ContentInfo');
     $generator->endObjectElement('ContentList');
 }
 /**
  * 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\ContentTypeInfoList $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('ContentTypeInfoList');
     $visitor->setHeader('Content-Type', $generator->getMediaType('ContentTypeInfoList'));
     //@todo Needs refactoring, disabling certain headers should not be done this way
     $visitor->setHeader('Accept-Patch', false);
     $generator->startAttribute('href', $data->path);
     $generator->endAttribute('href');
     $generator->startList('ContentType');
     foreach ($data->contentTypes as $contentType) {
         $visitor->visitValueObject(new Values\RestContentType($contentType));
     }
     $generator->endList('ContentType');
     $generator->endObjectElement('ContentTypeInfoList');
 }
 /**
  * @param Visitor $visitor
  * @param Generator $generator
  * @param \eZ\Publish\Core\REST\Client\Values\ViewInput $data
  * @throws Exceptions\InvalidArgumentException
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('ViewInput');
     $generator->startValueElement('identifier', $data->identifier);
     $generator->endValueElement('identifier');
     if ($data->locationQuery !== null) {
         $queryElementName = 'locationQuery';
     } elseif ($data->contentQuery !== null) {
         $queryElementName = 'contentQuery';
     } else {
         throw new Exceptions\InvalidArgumentException("ViewInput Query", "No content nor location query found in ViewInput");
     }
     $visitor->visitValueObject($data->{$queryElementName});
     $generator->endObjectElement('ViewInput');
 }
 /**
  * Visit struct returned by controllers
  *
  * @param \eZ\Publish\Core\REST\Common\Output\Visitor $visitor
  * @param \eZ\Publish\Core\REST\Common\Output\Generator $generator
  * @param mixed $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('PolicyUpdate');
     $visitor->setHeader('Content-Type', $generator->getMediaType('PolicyUpdate'));
     $limitations = $data->getLimitations();
     if (!empty($limitations)) {
         $generator->startObjectElement('limitations');
         $generator->startList('limitations');
         foreach ($limitations as $limitation) {
             $visitor->visitValueObject($limitation);
         }
         $generator->endList('limitations');
         $generator->endObjectElement('limitations');
     }
     $generator->endObjectElement('PolicyUpdate');
 }
 /**
  * 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\RelationList $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('Relations', 'RelationList');
     $visitor->setHeader('Content-Type', $generator->getMediaType('RelationList'));
     $path = $data->path;
     if ($path === null) {
         $path = $this->router->generate('ezpublish_rest_loadVersionRelations', array('contentId' => $data->contentId, 'versionNumber' => $data->versionNo));
     }
     $generator->startAttribute('href', $path);
     $generator->endAttribute('href');
     $generator->startList('Relation');
     foreach ($data->relations as $relation) {
         $visitor->visitValueObject(new ValuesRestRelation($relation, $data->contentId, $data->versionNo));
     }
     $generator->endList('Relation');
     $generator->endObjectElement('Relations');
 }
 /**
  * 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\RestTrashItem $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('TrashItem');
     $visitor->setHeader('Content-Type', $generator->getMediaType('TrashItem'));
     $trashItem = $data->trashItem;
     $contentInfo = $trashItem->getContentInfo();
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadTrashItem', array('trashItemId' => $trashItem->id)));
     $generator->endAttribute('href');
     $generator->startValueElement('id', $trashItem->id);
     $generator->endValueElement('id');
     $generator->startValueElement('priority', $trashItem->priority);
     $generator->endValueElement('priority');
     $generator->startValueElement('hidden', $this->serializeBool($generator, $trashItem->hidden));
     $generator->endValueElement('hidden');
     $generator->startValueElement('invisible', $this->serializeBool($generator, $trashItem->invisible));
     $generator->endValueElement('invisible');
     $pathStringParts = explode('/', trim($trashItem->pathString, '/'));
     $pathStringParts = array_slice($pathStringParts, 0, count($pathStringParts) - 1);
     $generator->startObjectElement('ParentLocation', 'Location');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadLocation', array('locationPath' => implode('/', $pathStringParts))));
     $generator->endAttribute('href');
     $generator->endObjectElement('ParentLocation');
     $generator->startValueElement('pathString', $trashItem->pathString);
     $generator->endValueElement('pathString');
     $generator->startValueElement('depth', $trashItem->depth);
     $generator->endValueElement('depth');
     $generator->startValueElement('childCount', $data->childCount);
     $generator->endValueElement('childCount');
     $generator->startValueElement('remoteId', $trashItem->remoteId);
     $generator->endValueElement('remoteId');
     $generator->startObjectElement('Content');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContent', array('contentId' => $contentInfo->id)));
     $generator->endAttribute('href');
     $generator->endObjectElement('Content');
     $generator->startValueElement('sortField', $this->serializeSortField($trashItem->sortField));
     $generator->endValueElement('sortField');
     $generator->startValueElement('sortOrder', $this->serializeSortOrder($trashItem->sortOrder));
     $generator->endValueElement('sortOrder');
     $generator->startObjectElement('ContentInfo', 'ContentInfo');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContent', array('contentId' => $contentInfo->id)));
     $generator->endAttribute('href');
     $visitor->visitValueObject(new RestContentValue($contentInfo));
     $generator->endObjectElement('ContentInfo');
     $generator->endObjectElement('TrashItem');
 }
 /**
  * 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\FieldDefinitionList $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $fieldDefinitionList = $data;
     $contentType = $fieldDefinitionList->contentType;
     $urlTypeSuffix = $this->getUrlTypeSuffix($contentType->status);
     $generator->startObjectElement('FieldDefinitions', 'FieldDefinitionList');
     $visitor->setHeader('Content-Type', $generator->getMediaType('FieldDefinitionList'));
     //@todo Needs refactoring, disabling certain headers should not be done this way
     $visitor->setHeader('Accept-Patch', false);
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContentType' . $urlTypeSuffix . 'FieldDefinitionList', array('contentTypeId' => $contentType->id)));
     $generator->endAttribute('href');
     $generator->startList('FieldDefinition');
     foreach ($fieldDefinitionList->fieldDefinitions as $fieldDefinition) {
         $visitor->visitValueObject(new ValuesRestFieldDefinition($contentType, $fieldDefinition));
     }
     $generator->endList('FieldDefinition');
     $generator->endObjectElement('FieldDefinitions');
 }
 /**
  * @param Visitor   $visitor
  * @param Generator $generator
  * @param \eZ\Publish\Core\REST\Server\Values\CachedValue $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $visitor->visitValueObject($data->value);
     if ($this->getParameter('content.view_cache') !== true) {
         return;
     }
     $response = $visitor->getResponse();
     $response->setPublic();
     $response->setVary('Accept');
     if ($this->getParameter('content.ttl_cache') === true) {
         $response->setSharedMaxAge($this->getParameter('content.default_ttl'));
         if (isset($this->request) && $this->request->headers->has('X-User-Hash')) {
             $response->setVary('X-User-Hash', false);
         }
     }
     if (isset($data->cacheTags['locationId'])) {
         $visitor->getResponse()->headers->set('X-Location-Id', $data->cacheTags['locationId']);
     }
 }
 /**
  * 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\VersionList $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('VersionList');
     $visitor->setHeader('Content-Type', $generator->getMediaType('VersionList'));
     //@todo Needs refactoring, disabling certain headers should not be done this way
     $visitor->setHeader('Accept-Patch', false);
     $generator->startAttribute('href', $data->path);
     $generator->endAttribute('href');
     $generator->startList('VersionItem');
     foreach ($data->versions as $version) {
         $generator->startHashElement('VersionItem');
         $generator->startObjectElement('Version');
         $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContentInVersion', array('contentId' => $version->getContentInfo()->id, 'versionNumber' => $version->versionNo)));
         $generator->endAttribute('href');
         $generator->endObjectElement('Version');
         $visitor->visitValueObject($version);
         $generator->endHashElement('VersionItem');
     }
     $generator->endList('VersionItem');
     $generator->endObjectElement('VersionList');
 }
Exemple #19
0
 /**
  * Visit struct returned by controllers.
  *
  * @param \eZ\Publish\Core\REST\Common\Output\Visitor $visitor
  * @param \eZ\Publish\Core\REST\Common\Output\Generator $generator
  * @param \Netgen\TagsBundle\Core\REST\Server\Values\CachedValue $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $visitor->visitValueObject($data->value);
     if ($this->getParameter('tag_view.cache', 'eztags') !== true) {
         return;
     }
     $response = $visitor->getResponse();
     $response->setPublic();
     $response->setVary('Accept');
     if ($this->getParameter('tag_view.ttl_cache', 'eztags') === true) {
         $response->setSharedMaxAge($this->getParameter('tag_view.default_ttl', 'eztags'));
         $request = $this->getCurrentRequest();
         if ($request instanceof Request && $request->headers->has('X-User-Hash')) {
             $response->setVary('X-User-Hash', false);
         }
     }
     if (isset($data->cacheTags['tagId'])) {
         $response->headers->set('X-Tag-Id', $data->cacheTags['tagId']);
     }
     if (isset($data->cacheTags['tagKeyword'])) {
         $response->headers->set('X-Tag-Keyword', $data->cacheTags['tagKeyword']);
     }
 }
 /**
  * @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\RestContentCreateStruct $restContentCreateStruct
  */
 public function visit(Visitor $visitor, Generator $generator, $restContentCreateStruct)
 {
     $contentCreateStruct = $restContentCreateStruct->contentCreateStruct;
     $generator->startObjectElement('ContentCreate');
     $visitor->setHeader('Content-Type', $generator->getMediaType('TypeCreate'));
     $generator->startValueElement('mainLanguageCode', $contentCreateStruct->mainLanguageCode);
     $generator->endValueElement('mainLanguageCode');
     $generator->startValueElement('alwaysAvailable', $contentCreateStruct->alwaysAvailable ? 'true' : 'false');
     $generator->endValueElement('alwaysAvailable');
     $generator->startValueElement('remoteId', (int) $contentCreateStruct->remoteId);
     $generator->endValueElement('remoteId');
     if ($contentCreateStruct->modificationDate !== null) {
         $generator->startValueElement('modificationDate', $contentCreateStruct->modificationDate->format('c'));
         $generator->endValueElement('modificationDate');
     }
     if ($contentCreateStruct->ownerId !== null) {
         $generator->startObjectElement('User');
         $generator->startAttribute('href', $contentCreateStruct->ownerId);
         $generator->endAttribute('href');
         $generator->endObjectElement('User');
     }
     $generator->startObjectElement('ContentType');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContentType', array('contentTypeId' => $contentCreateStruct->contentType->id)));
     $generator->endAttribute('href');
     $generator->endObjectElement('ContentType');
     if (!empty($contentCreateStruct->fields)) {
         $generator->startHashElement('fields');
         $generator->startList('field');
         foreach ($contentCreateStruct->fields as $field) {
             $this->visitField($generator, $contentCreateStruct->contentType, $field);
         }
         $generator->endList('field');
         $generator->endHashElement('fields');
     }
     $visitor->visitValueObject($restContentCreateStruct->locationCreateStruct);
     $generator->endObjectElement('ContentCreate');
 }
 /**
  * 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\RestContentType $data
  */
 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);
 }
 /**
  * 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\RestExecutedView $data
  */
 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', 0);
         $generator->endAttribute('score');
         $generator->startAttribute('index', 0);
         $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');
 }
 /**
  * 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\API\Repository\Values\ContentType\ContentTypeCreateStruct $contentTypeCreateStruct
  */
 public function visit(Visitor $visitor, Generator $generator, $contentTypeCreateStruct)
 {
     $generator->startObjectElement("ContentTypeCreate");
     $visitor->setHeader("Content-Type", $generator->getMediaType("ContentTypeCreate"));
     $generator->startValueElement("identifier", $contentTypeCreateStruct->identifier);
     $generator->endValueElement("identifier");
     $generator->startValueElement("remoteId", $contentTypeCreateStruct->remoteId);
     $generator->endValueElement("remoteId");
     $generator->startValueElement("urlAliasSchema", $contentTypeCreateStruct->urlAliasSchema);
     $generator->endValueElement("urlAliasSchema");
     $generator->startValueElement("nameSchema", $contentTypeCreateStruct->nameSchema);
     $generator->endValueElement("nameSchema");
     $generator->startValueElement("isContainer", $contentTypeCreateStruct->isContainer ? "true" : "false");
     $generator->endValueElement("isContainer");
     $generator->startValueElement("mainLanguageCode", $contentTypeCreateStruct->mainLanguageCode);
     $generator->endValueElement("mainLanguageCode");
     $generator->startValueElement("defaultAlwaysAvailable", $contentTypeCreateStruct->defaultAlwaysAvailable ? "true" : "false");
     $generator->endValueElement("defaultAlwaysAvailable");
     $generator->startValueElement("defaultSortField", $this->serializeSortField($contentTypeCreateStruct->defaultSortField));
     $generator->endValueElement("defaultSortField");
     $generator->startValueElement("defaultSortOrder", $this->serializeSortOrder($contentTypeCreateStruct->defaultSortOrder));
     $generator->endValueElement("defaultSortOrder");
     if (!empty($contentTypeCreateStruct->names)) {
         $generator->startHashElement("names");
         $generator->startList('value');
         foreach ($contentTypeCreateStruct->names as $languageCode => $name) {
             $generator->startValueElement("value", $name, array("languageCode" => $languageCode));
             $generator->endValueElement("value");
         }
         $generator->endList('value');
         $generator->endHashElement("names");
     }
     if (!empty($contentTypeCreateStruct->descriptions)) {
         $generator->startHashElement("descriptions");
         $generator->startList('value');
         foreach ($contentTypeCreateStruct->descriptions as $languageCode => $description) {
             $generator->startValueElement("value", $description, array("languageCode" => $languageCode));
             $generator->endValueElement("value");
         }
         $generator->endList('value');
         $generator->endHashElement("descriptions");
     }
     if ($contentTypeCreateStruct->creationDate !== null) {
         $generator->startValueElement("modificationDate", $contentTypeCreateStruct->creationDate->format("c"));
         $generator->endValueElement("modificationDate");
     }
     if ($contentTypeCreateStruct->creatorId !== null) {
         $generator->startObjectElement("User");
         $generator->startAttribute("href", $contentTypeCreateStruct->creatorId);
         $generator->endAttribute("href");
         $generator->endObjectElement("User");
     }
     if (!empty($contentTypeCreateStruct->fieldDefinitions)) {
         $generator->startHashElement("FieldDefinitions");
         $generator->startList("FieldDefinition");
         foreach ($contentTypeCreateStruct->fieldDefinitions as $fieldDefinitionCreateStruct) {
             $visitor->visitValueObject($fieldDefinitionCreateStruct);
         }
         $generator->endList("FieldDefinition");
         $generator->endHashElement("FieldDefinitions");
     }
     $generator->endObjectElement("ContentTypeCreate");
 }
 /**
  * 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\API\Repository\Values\ContentType\ContentTypeCreateStruct $contentTypeCreateStruct
  */
 public function visit(Visitor $visitor, Generator $generator, $contentTypeCreateStruct)
 {
     $generator->startObjectElement('ContentTypeCreate');
     $visitor->setHeader('Content-Type', $generator->getMediaType('ContentTypeCreate'));
     $generator->startValueElement('identifier', $contentTypeCreateStruct->identifier);
     $generator->endValueElement('identifier');
     $generator->startValueElement('remoteId', $contentTypeCreateStruct->remoteId);
     $generator->endValueElement('remoteId');
     $generator->startValueElement('urlAliasSchema', $contentTypeCreateStruct->urlAliasSchema);
     $generator->endValueElement('urlAliasSchema');
     $generator->startValueElement('nameSchema', $contentTypeCreateStruct->nameSchema);
     $generator->endValueElement('nameSchema');
     $generator->startValueElement('isContainer', $contentTypeCreateStruct->isContainer ? 'true' : 'false');
     $generator->endValueElement('isContainer');
     $generator->startValueElement('mainLanguageCode', $contentTypeCreateStruct->mainLanguageCode);
     $generator->endValueElement('mainLanguageCode');
     $generator->startValueElement('defaultAlwaysAvailable', $contentTypeCreateStruct->defaultAlwaysAvailable ? 'true' : 'false');
     $generator->endValueElement('defaultAlwaysAvailable');
     $generator->startValueElement('defaultSortField', $this->serializeSortField($contentTypeCreateStruct->defaultSortField));
     $generator->endValueElement('defaultSortField');
     $generator->startValueElement('defaultSortOrder', $this->serializeSortOrder($contentTypeCreateStruct->defaultSortOrder));
     $generator->endValueElement('defaultSortOrder');
     if (!empty($contentTypeCreateStruct->names)) {
         $generator->startHashElement('names');
         $generator->startList('value');
         foreach ($contentTypeCreateStruct->names as $languageCode => $name) {
             $generator->startValueElement('value', $name, array('languageCode' => $languageCode));
             $generator->endValueElement('value');
         }
         $generator->endList('value');
         $generator->endHashElement('names');
     }
     if (!empty($contentTypeCreateStruct->descriptions)) {
         $generator->startHashElement('descriptions');
         $generator->startList('value');
         foreach ($contentTypeCreateStruct->descriptions as $languageCode => $description) {
             $generator->startValueElement('value', $description, array('languageCode' => $languageCode));
             $generator->endValueElement('value');
         }
         $generator->endList('value');
         $generator->endHashElement('descriptions');
     }
     if ($contentTypeCreateStruct->creationDate !== null) {
         $generator->startValueElement('modificationDate', $contentTypeCreateStruct->creationDate->format('c'));
         $generator->endValueElement('modificationDate');
     }
     if ($contentTypeCreateStruct->creatorId !== null) {
         $generator->startObjectElement('User');
         $generator->startAttribute('href', $contentTypeCreateStruct->creatorId);
         $generator->endAttribute('href');
         $generator->endObjectElement('User');
     }
     if (!empty($contentTypeCreateStruct->fieldDefinitions)) {
         $generator->startHashElement('FieldDefinitions');
         $generator->startList('FieldDefinition');
         foreach ($contentTypeCreateStruct->fieldDefinitions as $fieldDefinitionCreateStruct) {
             $visitor->visitValueObject($fieldDefinitionCreateStruct);
         }
         $generator->endList('FieldDefinition');
         $generator->endHashElement('FieldDefinitions');
     }
     $generator->endObjectElement('ContentTypeCreate');
 }
 /**
  * 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\RestExecutedView $data
  */
 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_getView', 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_loadViewResults', array('viewId' => $data->identifier)));
     $generator->endAttribute('href');
     // BEGIN searchHits
     $generator->startHashElement('searchHits');
     $generator->startList('searchHit');
     foreach ($data->searchResults->searchHits as $searchHit) {
         $generator->startObjectElement('searchHit');
         $generator->startAttribute('score', 0);
         $generator->endAttribute('score');
         $generator->startAttribute('index', 0);
         $generator->endAttribute('index');
         $generator->startObjectElement('value');
         /** @var \eZ\Publish\API\Repository\Values\Content\ContentInfo $contentInfo */
         $contentInfo = $searchHit->valueObject->contentInfo;
         $restContent = new RestContentValue($contentInfo, $this->locationService->loadLocation($contentInfo->mainLocationId), $searchHit->valueObject, $this->contentTypeService->loadContentType($contentInfo->contentTypeId), $this->contentService->loadRelations($searchHit->valueObject->getVersionInfo()));
         $visitor->visitValueObject($restContent);
         $generator->endObjectElement('value');
         $generator->endObjectElement('searchHit');
     }
     $generator->endList('searchHit');
     $generator->endHashElement('searchHits');
     // END searchHits
     $generator->endObjectElement('Result');
     // END Result
     $generator->endObjectElement('View');
 }
Exemple #26
0
 /**
  * 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\RestContent $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $restContent = $data;
     $contentInfo = $restContent->contentInfo;
     $contentType = $restContent->contentType;
     $mainLocation = $restContent->mainLocation;
     $currentVersion = $restContent->currentVersion;
     $mediaType = $restContent->currentVersion === null ? 'ContentInfo' : 'Content';
     $generator->startObjectElement('Content', $mediaType);
     $visitor->setHeader('Content-Type', $generator->getMediaType($mediaType));
     $visitor->setHeader('Accept-Patch', $generator->getMediaType('ContentUpdate'));
     $generator->startAttribute('href', $data->path === null ? $this->router->generate('ezpublish_rest_loadContent', array('contentId' => $contentInfo->id)) : $data->path);
     $generator->endAttribute('href');
     $generator->startAttribute('remoteId', $contentInfo->remoteId);
     $generator->endAttribute('remoteId');
     $generator->startAttribute('id', $contentInfo->id);
     $generator->endAttribute('id');
     $generator->startObjectElement('ContentType');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContentType', array('contentTypeId' => $contentInfo->contentTypeId)));
     $generator->endAttribute('href');
     $generator->endObjectElement('ContentType');
     $generator->startValueElement('Name', $contentInfo->name);
     $generator->endValueElement('Name');
     $generator->startObjectElement('Versions', 'VersionList');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContentVersions', array('contentId' => $contentInfo->id)));
     $generator->endAttribute('href');
     $generator->endObjectElement('Versions');
     $generator->startObjectElement('CurrentVersion', 'Version');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_redirectCurrentVersion', array('contentId' => $contentInfo->id)));
     $generator->endAttribute('href');
     // Embed current version, if available
     if ($currentVersion !== null) {
         $visitor->visitValueObject(new VersionValue($currentVersion, $contentType, $restContent->relations));
     }
     $generator->endObjectElement('CurrentVersion');
     $generator->startObjectElement('Section');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadSection', array('sectionId' => $contentInfo->sectionId)));
     $generator->endAttribute('href');
     $generator->endObjectElement('Section');
     // Main location will not exist if we're visiting the content draft
     if ($data->mainLocation !== null) {
         $generator->startObjectElement('MainLocation', 'Location');
         $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadLocation', array('locationPath' => trim($mainLocation->pathString, '/'))));
         $generator->endAttribute('href');
         $generator->endObjectElement('MainLocation');
     }
     $generator->startObjectElement('Locations', 'LocationList');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadLocationsForContent', array('contentId' => $contentInfo->id)));
     $generator->endAttribute('href');
     $generator->endObjectElement('Locations');
     $generator->startObjectElement('Owner', 'User');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadUser', array('userId' => $contentInfo->ownerId)));
     $generator->endAttribute('href');
     $generator->endObjectElement('Owner');
     // Modification date will not exist if we're visiting the content draft
     if ($contentInfo->modificationDate !== null) {
         $generator->startValueElement('lastModificationDate', $contentInfo->modificationDate->format('c'));
         $generator->endValueElement('lastModificationDate');
     }
     // Published date will not exist if we're visiting the content draft
     if ($contentInfo->publishedDate !== null) {
         $generator->startValueElement('publishedDate', $contentInfo->publishedDate !== null ? $contentInfo->publishedDate->format('c') : null);
         $generator->endValueElement('publishedDate');
     }
     $generator->startValueElement('mainLanguageCode', $contentInfo->mainLanguageCode);
     $generator->endValueElement('mainLanguageCode');
     $generator->startValueElement('alwaysAvailable', $this->serializeBool($generator, $contentInfo->alwaysAvailable));
     $generator->endValueElement('alwaysAvailable');
     $generator->startObjectElement('ObjectStates', 'ContentObjectStates');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_getObjectStatesForContent', array('contentId' => $contentInfo->id)));
     $generator->endAttribute('href');
     $generator->endObjectElement('ObjectStates');
     $generator->endObjectElement('Content');
 }
 /**
  * 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\RestUser $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $contentInfo = $data->contentInfo;
     $generator->startObjectElement('User');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadUser', array('userId' => $contentInfo->id)));
     $generator->endAttribute('href');
     $generator->startAttribute('id', $contentInfo->id);
     $generator->endAttribute('id');
     $generator->startAttribute('remoteId', $contentInfo->remoteId);
     $generator->endAttribute('remoteId');
     $visitor->setHeader('Content-Type', $generator->getMediaType('User'));
     $visitor->setHeader('Accept-Patch', $generator->getMediaType('UserUpdate'));
     $generator->startObjectElement('ContentType');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContentType', array('contentTypeId' => $contentInfo->contentTypeId)));
     $generator->endAttribute('href');
     $generator->endObjectElement('ContentType');
     $generator->startValueElement('name', $contentInfo->name);
     $generator->endValueElement('name');
     $generator->startObjectElement('Versions', 'VersionList');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContentVersions', array('contentId' => $contentInfo->id)));
     $generator->endAttribute('href');
     $generator->endObjectElement('Versions');
     $generator->startObjectElement('Section');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadSection', array('sectionId' => $contentInfo->sectionId)));
     $generator->endAttribute('href');
     $generator->endObjectElement('Section');
     $generator->startObjectElement('MainLocation', 'Location');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadLocation', array('locationPath' => trim($data->mainLocation->pathString, '/'))));
     $generator->endAttribute('href');
     $generator->endObjectElement('MainLocation');
     $generator->startObjectElement('Locations', 'LocationList');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadLocationsForContent', array('contentId' => $contentInfo->id)));
     $generator->endAttribute('href');
     $generator->endObjectElement('Locations');
     $generator->startObjectElement('Groups', 'UserGroupRefList');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadUserGroupsOfUser', array('userId' => $contentInfo->id)));
     $generator->endAttribute('href');
     $generator->endObjectElement('Groups');
     $generator->startObjectElement('Owner', 'User');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadUser', array('userId' => $contentInfo->ownerId)));
     $generator->endAttribute('href');
     $generator->endObjectElement('Owner');
     $generator->startValueElement('publishDate', $contentInfo->publishedDate->format('c'));
     $generator->endValueElement('publishDate');
     $generator->startValueElement('lastModificationDate', $contentInfo->modificationDate->format('c'));
     $generator->endValueElement('lastModificationDate');
     $generator->startValueElement('mainLanguageCode', $contentInfo->mainLanguageCode);
     $generator->endValueElement('mainLanguageCode');
     $generator->startValueElement('alwaysAvailable', $this->serializeBool($generator, $contentInfo->alwaysAvailable));
     $generator->endValueElement('alwaysAvailable');
     $visitor->visitValueObject(new VersionValue($data->content, $data->contentType, $data->relations));
     $generator->startValueElement('login', $data->content->login);
     $generator->endValueElement('login');
     $generator->startValueElement('email', $data->content->email);
     $generator->endValueElement('email');
     $generator->startValueElement('enabled', $this->serializeBool($generator, $data->content->enabled));
     $generator->endValueElement('enabled');
     $generator->startObjectElement('UserGroups', 'UserGroupList');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadUserGroupsOfUser', array('userId' => $contentInfo->id)));
     $generator->endAttribute('href');
     $generator->endObjectElement('UserGroups');
     $generator->startObjectElement('Roles', 'RoleAssignmentList');
     $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadRoleAssignmentsForUser', array('userId' => $contentInfo->id)));
     $generator->endAttribute('href');
     $generator->endObjectElement('Roles');
     $generator->endObjectElement('User');
 }
 /**
  * Visit struct returned by controllers.
  *
  * @param \eZ\Publish\Core\REST\Common\Output\Visitor $visitor
  * @param \eZ\Publish\Core\REST\Common\Output\Generator $generator
  * @param \Exception $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $generator->startObjectElement('ErrorMessage');
     $statusCode = $this->getStatus();
     $visitor->setStatus($statusCode);
     $visitor->setHeader('Content-Type', $generator->getMediaType('ErrorMessage'));
     $generator->startValueElement('errorCode', $statusCode);
     $generator->endValueElement('errorCode');
     $generator->startValueElement('errorMessage', $this->httpStatusCodes[$statusCode]);
     $generator->endValueElement('errorMessage');
     if ($data instanceof Translatable && $this->translator) {
         /** @Ignore */
         $errorDescription = $this->translator->trans($data->getMessageTemplate(), $data->getParameters(), 'repository_exceptions');
     } else {
         $errorDescription = $data->getMessage();
     }
     $generator->startValueElement('errorDescription', $errorDescription);
     $generator->endValueElement('errorDescription');
     if ($this->debug) {
         $generator->startValueElement('trace', $data->getTraceAsString());
         $generator->endValueElement('trace');
         $generator->startValueElement('file', $data->getFile());
         $generator->endValueElement('file');
         $generator->startValueElement('line', $data->getLine());
         $generator->endValueElement('line');
     }
     if ($previous = $data->getPrevious()) {
         $generator->startObjectElement('Previous', 'ErrorMessage');
         $visitor->visitValueObject($previous);
         $generator->endObjectElement('Previous');
     }
     $generator->endObjectElement('ErrorMessage');
 }