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); }
/** * 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'); }
/** * 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'); }
/** * 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'); }
/** * 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'); }