/** * 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\Content\URLAlias $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $generator->startObjectElement('UrlAlias'); $visitor->setHeader('Content-Type', $generator->getMediaType('UrlAlias')); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadURLAlias', array('urlAliasId' => $data->id))); $generator->endAttribute('href'); $generator->startAttribute('id', $data->id); $generator->endAttribute('id'); $generator->startAttribute('type', $this->serializeType($data->type)); $generator->endAttribute('type'); if ($data->type === Values\Content\URLAlias::LOCATION) { $generator->startObjectElement('location', 'Location'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadLocation', array('locationPath' => $data->destination))); $generator->endAttribute('href'); $generator->endObjectElement('location'); } else { $generator->startValueElement('resource', $data->destination); $generator->endValueElement('resource'); } $generator->startValueElement('path', $data->path); $generator->endValueElement('path'); $generator->startValueElement('languageCodes', implode(',', $data->languageCodes)); $generator->endValueElement('languageCodes'); $generator->startValueElement('alwaysAvailable', $this->serializeBool($generator, $data->alwaysAvailable)); $generator->endValueElement('alwaysAvailable'); $generator->startValueElement('isHistory', $this->serializeBool($generator, $data->isHistory)); $generator->endValueElement('isHistory'); $generator->startValueElement('forward', $this->serializeBool($generator, $data->forward)); $generator->endValueElement('forward'); $generator->startValueElement('custom', $this->serializeBool($generator, $data->isCustom)); $generator->endValueElement('custom'); $generator->endObjectElement('UrlAlias'); }
/** * 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'); }
/** * 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\Common\Values\RestObjectState $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $generator->startObjectElement('ObjectState'); $visitor->setHeader('Content-Type', $generator->getMediaType('ObjectState')); $visitor->setHeader('Accept-Patch', $generator->getMediaType('ObjectStateUpdate')); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadObjectState', array('objectStateGroupId' => $data->groupId, 'objectStateId' => $data->objectState->id))); $generator->endAttribute('href'); $generator->startValueElement('id', $data->objectState->id); $generator->endValueElement('id'); $generator->startValueElement('identifier', $data->objectState->identifier); $generator->endValueElement('identifier'); $generator->startValueElement('priority', $data->objectState->priority); $generator->endValueElement('priority'); $generator->startObjectElement('ObjectStateGroup'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadObjectStateGroup', array('objectStateGroupId' => $data->groupId))); $generator->endAttribute('href'); $generator->endObjectElement('ObjectStateGroup'); $generator->startValueElement('defaultLanguageCode', $data->objectState->defaultLanguageCode); $generator->endValueElement('defaultLanguageCode'); $generator->startValueElement('languageCodes', implode(',', $data->objectState->languageCodes)); $generator->endValueElement('languageCodes'); $this->visitNamesList($generator, $data->objectState->getNames()); $this->visitDescriptionsList($generator, $data->objectState->getDescriptions()); $generator->endObjectElement('ObjectState'); }
/** * 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\User\Policy $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $generator->startObjectElement('Policy'); $visitor->setHeader('Content-Type', $generator->getMediaType('Policy')); $visitor->setHeader('Accept-Patch', $generator->getMediaType('PolicyUpdate')); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadPolicy', array('roleId' => $data->roleId, 'policyId' => $data->id))); $generator->endAttribute('href'); $generator->startValueElement('id', $data->id); $generator->endValueElement('id'); $generator->startValueElement('module', $data->module); $generator->endValueElement('module'); $generator->startValueElement('function', $data->function); $generator->endValueElement('function'); $limitations = $data->getLimitations(); if (!empty($limitations)) { $generator->startHashElement('limitations'); $generator->startList('limitation'); foreach ($limitations as $limitation) { $this->visitLimitation($generator, $limitation); } $generator->endList('limitation'); $generator->endHashElement('limitations'); } $generator->endObjectElement('Policy'); }
/** * @param \eZ\Publish\SPI\Variation\Values\ImageVariation $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $generator->startObjectElement('ContentImageVariation'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_binaryContent_getImageVariation', array('imageId' => $data->imageId, 'variationIdentifier' => $data->name))); $generator->endAttribute('href'); $generator->startValueElement('uri', $data->uri); $generator->endValueElement('uri'); if ($data->mimeType) { $generator->startValueElement('contentType', $data->mimeType); $generator->endValueElement('contentType'); } if ($data->width) { $generator->startValueElement('width', $data->width); $generator->endValueElement('width'); } if ($data->height) { $generator->startValueElement('height', $data->height); $generator->endValueElement('height'); } if ($data->fileSize) { $generator->startValueElement('fileSize', $data->fileSize); $generator->endValueElement('fileSize'); } $generator->endObjectElement('ContentImageVariation'); }
/** * 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\ContentTypeGroup $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $generator->startObjectElement('ContentTypeGroup'); $visitor->setHeader('Content-Type', $generator->getMediaType('ContentTypeGroup')); $visitor->setHeader('Accept-Patch', $generator->getMediaType('ContentTypeGroupInput')); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContentTypeGroup', array('contentTypeGroupId' => $data->id))); $generator->endAttribute('href'); $generator->startValueElement('id', $data->id); $generator->endValueElement('id'); $generator->startValueElement('identifier', $data->identifier); $generator->endValueElement('identifier'); $generator->startValueElement('created', $data->creationDate->format('c')); $generator->endValueElement('created'); $generator->startValueElement('modified', $data->modificationDate->format('c')); $generator->endValueElement('modified'); $generator->startObjectElement('Creator', 'User'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadUser', array('userId' => $data->creatorId))); $generator->endAttribute('href'); $generator->endObjectElement('Creator'); $generator->startObjectElement('Modifier', 'User'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadUser', array('userId' => $data->modifierId))); $generator->endAttribute('href'); $generator->endObjectElement('Modifier'); $generator->startObjectElement('ContentTypes', 'ContentTypeInfoList'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_listContentTypesForGroup', array('contentTypeGroupId' => $data->id))); $generator->endAttribute('href'); $generator->endObjectElement('ContentTypes'); $generator->endObjectElement('ContentTypeGroup'); }
/** * 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('ObjectStateCreate'); $visitor->setHeader('Content-Type', $generator->getMediaType('ObjectStateCreate')); $generator->startValueElement('identifier', $data->identifier); $generator->endValueElement('identifier'); $generator->startValueElement('priority', $data->priority); $generator->endValueElement('priority'); $generator->startValueElement('defaultLanguageCode', $data->defaultLanguageCode); $generator->endValueElement('defaultLanguageCode'); $generator->startHashElement('names'); $generator->startList('value'); foreach ($data->names as $languageCode => $name) { $generator->startValueElement('value', $name, array('languageCode' => $languageCode)); $generator->endValueElement('value'); } $generator->endList('value'); $generator->endHashElement('names'); $generator->startHashElement('descriptions'); foreach ($data->descriptions as $languageCode => $description) { $generator->startValueElement('value', $description, array('languageCode' => $languageCode)); $generator->endValueElement('value'); } $generator->endHashElement('descriptions'); $generator->endObjectElement('ObjectStateCreate'); }
/** * 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 mixed $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $generator->startObjectElement('SessionInput'); $visitor->setHeader('Content-Type', $generator->getMediaType('SessionInput')); $generator->startValueElement('login', $data->login); $generator->endValueElement('login'); $generator->startValueElement('password', $data->password); $generator->endValueElement('password'); $generator->endObjectElement('SessionInput'); }
/** * 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('SectionInput'); $visitor->setHeader('Content-Type', $generator->getMediaType('SectionInput')); $generator->startValueElement('identifier', $data->identifier); $generator->endValueElement('identifier'); $generator->startValueElement('name', $data->name); $generator->endValueElement('name'); $generator->endObjectElement('SectionInput'); }
/** * Visits a single content field and generates its content. * * @param \eZ\Publish\Core\REST\Common\Output\Generator $generator * @param \eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType * @param \eZ\Publish\API\Repository\Values\Content\Field $field */ public function visitField(Generator $generator, ContentType $contentType, Field $field) { $generator->startHashElement('field'); $generator->startValueElement('fieldDefinitionIdentifier', $field->fieldDefIdentifier); $generator->endValueElement('fieldDefinitionIdentifier'); $generator->startValueElement('languageCode', $field->languageCode); $generator->endValueElement('languageCode'); $this->fieldTypeSerializer->serializeFieldValue($generator, $contentType, $field); $generator->endHashElement('field'); }
/** * 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 mixed $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $generator->startObjectElement('LocationUpdate'); $visitor->setHeader('Content-Type', $generator->getMediaType('LocationUpdate')); $generator->startValueElement('priority', $data->priority); $generator->endValueElement('priority'); $generator->startValueElement('remoteId', $data->remoteId); $generator->endValueElement('remoteId'); $generator->startValueElement('sortField', $this->getSortFieldName($data->sortField)); $generator->endValueElement('sortField'); $generator->startValueElement('sortOrder', $data->sortOrder == Location::SORT_ORDER_ASC ? 'ASC' : 'DESC'); $generator->endValueElement('sortOrder'); $generator->endObjectElement('LocationUpdate'); }
/** * @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) { $visitor->setHeader('Content-Type', $generator->getMediaType('ContentList')); if (empty($data->contents)) { $visitor->setStatus(204); return; } $generator->startObjectElement('contentList'); $generator->startList('content'); foreach ($data->contents as $content) { $generator->startObjectElement('content'); $generator->startValueElement('contentId', $content['contentId']); $generator->endValueElement('contentId'); $generator->startValueElement('contentTypeId', $content['contentTypeId']); $generator->endValueElement('contentTypeId'); $generator->startValueElement('identifier', $content['identifier']); $generator->endValueElement('identifier'); $generator->startValueElement('language', $content['language']); $generator->endValueElement('language'); $generator->startValueElement('publishedDate', $content['publishedDate']); $generator->endValueElement('publishedDate'); $generator->startValueElement('author', $content['author']); $generator->endValueElement('author'); $generator->startValueElement('uri', $content['uri']); $generator->endValueElement('uri'); $generator->startValueElement('categoryPath', $content['categoryPath']); $generator->endValueElement('categoryPath'); $generator->startObjectElement('mainLocation'); $generator->startAttribute('href', $content['mainLocation']['href']); $generator->endAttribute('href'); $generator->endObjectElement('mainLocation'); $generator->startObjectElement('locations'); $generator->startAttribute('href', $content['locations']['href']); $generator->endAttribute('href'); $generator->endObjectElement('locations'); $generator->startList('fields'); foreach ($content['fields'] as $field) { $generator->startHashElement('fields'); $generator->startValueElement('key', $field['key']); $generator->endValueElement('key'); $generator->startValueElement('value', $field['value']); $generator->endValueElement('value'); $generator->endHashElement('fields'); } $generator->endList('fields'); $generator->endObjectElement('content'); } $generator->endList('content'); $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\API\Repository\Values\Content\Section $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $generator->startObjectElement('Section'); $visitor->setHeader('Content-Type', $generator->getMediaType('Section')); $visitor->setHeader('Accept-Patch', $generator->getMediaType('SectionInput')); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadSection', array('sectionId' => $data->id))); $generator->endAttribute('href'); $generator->startValueElement('sectionId', $data->id); $generator->endValueElement('sectionId'); $generator->startValueElement('identifier', $data->identifier); $generator->endValueElement('identifier'); $generator->startValueElement('name', $data->name); $generator->endValueElement('name'); $generator->endObjectElement('Section'); }
/** * 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\Content\URLWildcard $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $generator->startObjectElement('UrlWildcard'); $visitor->setHeader('Content-Type', $generator->getMediaType('UrlWildcard')); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadURLWildcard', array('urlWildcardId' => $data->id))); $generator->endAttribute('href'); $generator->startAttribute('id', $data->id); $generator->endAttribute('id'); $generator->startValueElement('sourceUrl', $data->sourceUrl); $generator->endValueElement('sourceUrl'); $generator->startValueElement('destinationUrl', $data->destinationUrl); $generator->endValueElement('destinationUrl'); $generator->startValueElement('forward', $this->serializeBool($generator, $data->forward)); $generator->endValueElement('forward'); $generator->endObjectElement('UrlWildcard'); }
/** * 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\RestTag $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $generator->startObjectElement('Tag'); $visitor->setHeader('Content-Type', $generator->getMediaType('Tag')); $visitor->setHeader('Accept-Patch', $generator->getMediaType('TagUpdate')); $tag = $data->tag; $generator->startAttribute('href', $this->router->generate('ezpublish_rest_eztags_loadTag', array('tagPath' => trim($tag->pathString, '/')))); $generator->endAttribute('href'); $generator->startValueElement('id', $tag->id); $generator->endValueElement('id'); $tagPath = explode('/', trim($tag->pathString, '/')); $parentPathString = implode('/', array_slice($tagPath, 0, count($tagPath) - 1)); if (!empty($tag->parentTagId)) { $generator->startObjectElement('ParentTag', 'Tag'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_eztags_loadTag', array('tagPath' => $parentPathString))); $generator->endAttribute('href'); $generator->endObjectElement('ParentTag'); } if (!empty($tag->mainTagId)) { $generator->startObjectElement('MainTag', 'Tag'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_eztags_loadTag', array('tagPath' => $parentPathString . '/' . $tag->mainTagId))); $generator->endAttribute('href'); $generator->endObjectElement('MainTag'); } $this->visitTranslatedList($generator, $tag->keywords, 'keywords'); $generator->startValueElement('depth', $tag->depth); $generator->endValueElement('depth'); $generator->startValueElement('pathString', $tag->pathString); $generator->endValueElement('pathString'); $generator->startValueElement('modificationDate', $tag->modificationDate->format('c')); $generator->endValueElement('modificationDate'); $generator->startValueElement('remoteId', $tag->remoteId); $generator->endValueElement('remoteId'); $generator->startValueElement('alwaysAvailable', $this->serializeBool($generator, $tag->alwaysAvailable)); $generator->endValueElement('alwaysAvailable'); $generator->startValueElement('mainLanguageCode', $tag->mainLanguageCode); $generator->endValueElement('mainLanguageCode'); $generator->startValueElement('languageCodes', implode(',', $tag->languageCodes)); $generator->endValueElement('languageCodes'); if (empty($tag->mainTagId)) { $generator->startValueElement('childrenCount', $data->childrenCount); $generator->endValueElement('childrenCount'); $generator->startObjectElement('Children', 'TagList'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_eztags_loadTagChildren', array('tagPath' => trim($tag->pathString, '/')))); $generator->endAttribute('href'); $generator->endObjectElement('Children'); $generator->startValueElement('synonymsCount', $data->synonymsCount); $generator->endValueElement('synonymsCount'); $generator->startObjectElement('Synonyms', 'TagList'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_eztags_loadTagSynonyms', array('tagPath' => trim($tag->pathString, '/')))); $generator->endAttribute('href'); $generator->endObjectElement('Synonyms'); } $generator->startObjectElement('RelatedContent', 'ContentList'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_eztags_getRelatedContent', array('tagPath' => trim($tag->pathString, '/')))); $generator->endAttribute('href'); $generator->endObjectElement('RelatedContent'); $generator->endObjectElement('Tag'); }
/** * @param \eZ\Publish\Core\REST\Common\Output\Generator $generator * @param array $contentList * * @return Generator */ public function generateElement(Generator $generator, array $contentList = []) { $generator->startObjectElement('contentList'); $generator->startList('content'); foreach ($contentList as $content) { $generator->startObjectElement('content'); $generator->startValueElement('contentId', $content['contentId']); $generator->endValueElement('contentId'); $generator->startValueElement('contentTypeId', $content['contentTypeId']); $generator->endValueElement('contentTypeId'); $generator->startValueElement('identifier', $content['identifier']); $generator->endValueElement('identifier'); $generator->startValueElement('language', $content['language']); $generator->endValueElement('language'); $generator->startValueElement('publishedDate', $content['publishedDate']); $generator->endValueElement('publishedDate'); $generator->startValueElement('author', $content['author']); $generator->endValueElement('author'); $generator->startValueElement('uri', $content['uri']); $generator->endValueElement('uri'); $generator->startValueElement('categoryPath', $content['categoryPath']); $generator->endValueElement('categoryPath'); $generator->startObjectElement('mainLocation'); $generator->startAttribute('href', $content['mainLocation']['href']); $generator->endAttribute('href'); $generator->endObjectElement('mainLocation'); $generator->startObjectElement('locations'); $generator->startAttribute('href', $content['locations']['href']); $generator->endAttribute('href'); $generator->endObjectElement('locations'); $generator->startList('fields'); foreach ($content['fields'] as $field) { $generator->startHashElement('fields'); $generator->startValueElement('key', $field['key']); $generator->endValueElement('key'); $generator->startValueElement('value', $field['value']); $generator->endValueElement('value'); $generator->endHashElement('fields'); } $generator->endList('fields'); $generator->endObjectElement('content'); } $generator->endList('content'); $generator->endObjectElement('contentList'); return $generator; }
/** * 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\API\Repository\Values\Content\VersionInfo $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $versionInfo = $data; $generator->startHashElement('VersionInfo'); $generator->startValueElement('id', $versionInfo->id); $generator->endValueElement('id'); $generator->startValueElement('versionNo', $versionInfo->versionNo); $generator->endValueElement('versionNo'); $generator->startValueElement('status', $this->getStatusString($versionInfo->status)); $generator->endValueElement('status'); $generator->startValueElement('modificationDate', $versionInfo->modificationDate->format('c')); $generator->endValueElement('modificationDate'); $generator->startObjectElement('Creator', 'User'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadUser', array('userId' => $versionInfo->creatorId))); $generator->endAttribute('href'); $generator->endObjectElement('Creator'); $generator->startValueElement('creationDate', $versionInfo->creationDate->format('c')); $generator->endValueElement('creationDate'); $generator->startValueElement('initialLanguageCode', $versionInfo->initialLanguageCode); $generator->endValueElement('initialLanguageCode'); $generator->startValueElement('languageCodes', implode(',', $versionInfo->languageCodes)); $generator->endValueElement('languageCodes'); $this->visitNamesList($generator, $versionInfo->names); $generator->startObjectElement('Content', 'ContentInfo'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContent', array('contentId' => $versionInfo->getContentInfo()->id))); $generator->endAttribute('href'); $generator->endObjectElement('Content'); $generator->endHashElement('VersionInfo'); }
/** * 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('LocationCreate'); $visitor->setHeader('Content-Type', $generator->getMediaType('LocationCreate')); $generator->startObjectElement('ParentLocation', 'Location'); $generator->startAttribute('href', $data->parentLocationId); $generator->endAttribute('href'); $generator->endObjectElement('ParentLocation'); $generator->startValueElement('priority', $data->priority); $generator->endValueElement('priority'); $generator->startValueElement('hidden', $data->hidden ? 'true' : 'false'); $generator->endValueElement('hidden'); $generator->startValueElement('sortField', $this->getSortFieldName($data->sortField)); $generator->endValueElement('sortField'); $generator->startValueElement('sortOrder', $data->sortOrder == Location::SORT_ORDER_ASC ? 'ASC' : 'DESC'); $generator->endValueElement('sortOrder'); $generator->endObjectElement('LocationCreate'); }
/** * 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('ContentTypeGroupInput'); $visitor->setHeader('Content-Type', $generator->getMediaType('ContentTypeGroupInput')); $generator->startValueElement('identifier', $data->identifier); $generator->endValueElement('identifier'); if ($data->creatorId !== null) { $generator->startObjectElement('User'); $generator->startAttribute('href', $data->creatorId); $generator->endAttribute('href'); $generator->endObjectElement('User'); } if ($data->creationDate !== null) { $generator->startValueElement('modificationDate', $data->creationDate->format('c')); $generator->endValueElement('modificationDate'); } $generator->endObjectElement('ContentTypeGroupInput'); }
/** * @param Visitor $visitor * @param Generator $generator * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion\ContentTypeIdentifier $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $contentTypeIdentifiers = is_array($data->value) ? $data->value : [$data->value]; $generator->startList('ContentTypeIdentifierCriterion'); foreach ($contentTypeIdentifiers as $contentTypeIdentifier) { $generator->startValueElement('ContentTypeIdentifierCriterion', $contentTypeIdentifier); $generator->endValueElement('ContentTypeIdentifierCriterion'); } $generator->endList('ContentTypeIdentifierCriterion'); }
/** * 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('PolicyCreate'); $visitor->setHeader('Content-Type', $generator->getMediaType('PolicyCreate')); $generator->startValueElement('module', $data->module); $generator->endValueElement('module'); $generator->startValueElement('function', $data->function); $generator->endValueElement('function'); $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('PolicyCreate'); }
/** * 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\RestFieldDefinition $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $restFieldDefinition = $data; $fieldDefinition = $restFieldDefinition->fieldDefinition; $contentType = $restFieldDefinition->contentType; $urlTypeSuffix = $this->getUrlTypeSuffix($contentType->status); $generator->startObjectElement('FieldDefinition'); $visitor->setHeader('Content-Type', $generator->getMediaType('FieldDefinition')); if ($contentType->status === APIContentType::STATUS_DRAFT) { $visitor->setHeader('Accept-Patch', $generator->getMediaType('FieldDefinitionUpdate')); } $generator->startAttribute('href', $this->router->generate("ezpublish_rest_loadContentType{$urlTypeSuffix}FieldDefinition", array('contentTypeId' => $contentType->id, 'fieldDefinitionId' => $fieldDefinition->id))); $generator->endAttribute('href'); $generator->startValueElement('id', $fieldDefinition->id); $generator->endValueElement('id'); $generator->startValueElement('identifier', $fieldDefinition->identifier); $generator->endValueElement('identifier'); $generator->startValueElement('fieldType', $fieldDefinition->fieldTypeIdentifier); $generator->endValueElement('fieldType'); $generator->startValueElement('fieldGroup', $fieldDefinition->fieldGroup); $generator->endValueElement('fieldGroup'); $generator->startValueElement('position', $fieldDefinition->position); $generator->endValueElement('position'); $generator->startValueElement('isTranslatable', $this->serializeBool($generator, $fieldDefinition->isTranslatable)); $generator->endValueElement('isTranslatable'); $generator->startValueElement('isRequired', $this->serializeBool($generator, $fieldDefinition->isRequired)); $generator->endValueElement('isRequired'); $generator->startValueElement('isInfoCollector', $this->serializeBool($generator, $fieldDefinition->isInfoCollector)); $generator->endValueElement('isInfoCollector'); $this->fieldTypeSerializer->serializeFieldDefaultValue($generator, $fieldDefinition->fieldTypeIdentifier, $fieldDefinition->defaultValue); $generator->startValueElement('isSearchable', $this->serializeBool($generator, $fieldDefinition->isSearchable)); $generator->endValueElement('isSearchable'); $this->visitNamesList($generator, $fieldDefinition->getNames()); $descriptions = $fieldDefinition->getDescriptions(); if (is_array($descriptions)) { $this->visitDescriptionsList($generator, $descriptions); } $this->fieldTypeSerializer->serializeFieldSettings($generator, $fieldDefinition->fieldTypeIdentifier, $fieldDefinition->getFieldSettings()); $this->fieldTypeSerializer->serializeValidatorConfiguration($generator, $fieldDefinition->fieldTypeIdentifier, $fieldDefinition->getValidatorConfiguration()); $generator->endObjectElement('FieldDefinition'); }
/** * 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\RestRelation $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $generator->startObjectElement('Relation'); $visitor->setHeader('Content-Type', $generator->getMediaType('Relation')); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadVersionRelation', array('contentId' => $data->contentId, 'versionNumber' => $data->versionNo, 'relationId' => $data->relation->id))); $generator->endAttribute('href'); $generator->startObjectElement('SourceContent', 'ContentInfo'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContent', array('contentId' => $data->contentId))); $generator->endAttribute('href'); $generator->endObjectElement('SourceContent'); $generator->startObjectElement('DestinationContent', 'ContentInfo'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadContent', array('contentId' => $data->relation->getDestinationContentInfo()->id))); $generator->endAttribute('href'); $generator->endObjectElement('DestinationContent'); if ($data->relation->sourceFieldDefinitionIdentifier !== null) { $generator->startValueElement('SourceFieldDefinitionIdentifier', $data->relation->sourceFieldDefinitionIdentifier); $generator->endValueElement('SourceFieldDefinitionIdentifier'); } $generator->startValueElement('RelationType', $this->getRelationTypeString($data->relation->type)); $generator->endValueElement('RelationType'); $generator->endObjectElement('Relation'); }
/** * 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\Exceptions\ContentFieldValidationException $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'); $generator->startValueElement('errorDescription', $data->getMessage()); $generator->endValueElement('errorDescription'); $generator->startHashElement('errorDetails'); $generator->startList('fields'); foreach ($data->getFieldErrors() as $fieldTypeId => $translations) { foreach ($translations as $languageCode => $validationErrors) { if (!is_array($validationErrors)) { $validationErrors = [$validationErrors]; } foreach ($validationErrors as $validationError) { $generator->startHashElement('field'); $generator->startAttribute('fieldTypeId', $fieldTypeId); $generator->endAttribute('fieldTypeId'); $generator->startList('errors'); $generator->startHashElement('error'); $generator->startValueElement('type', $validationError->getTarget()); $generator->endValueElement('type'); $translation = $validationError->getTranslatableMessage(); $generator->startValueElement('message', $this->translator->trans($this->translationToString($translation), $translation->values, 'repository_exceptions')); $generator->endValueElement('message'); $generator->endHashElement('error'); $generator->endList('errors'); $generator->endHashElement('field'); } } } $generator->endList('fields'); $generator->endHashElement('errorDetails'); 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'); } $generator->endObjectElement('ErrorMessage'); }
/** * 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\CountryList $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $generator->startObjectElement('CountryList'); $visitor->setHeader('Content-Type', $generator->getMediaType('CountryList')); $visitor->setHeader('Accept-Patch', false); $generator->startList('Country'); foreach ($data->countries as $country) { $generator->startObjectElement('Country', 'Country'); $generator->startAttribute('id', $country['Alpha2']); $generator->endAttribute('id'); $generator->startValueElement('name', $country['Name']); $generator->endValueElement('name'); $generator->startValueElement('Alpha2', $country['Alpha2']); $generator->endValueElement('Alpha2'); $generator->startValueElement('Alpha3', $country['Alpha3']); $generator->endValueElement('Alpha3'); $generator->startValueElement('IDC', $country['IDC']); $generator->endValueElement('IDC'); $generator->endObjectElement('Country'); } $generator->endList('Country'); $generator->endObjectElement('CountryList'); }
/** * 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\UserSession $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $status = $data->created ? 201 : 200; $visitor->setStatus($status); $visitor->setHeader('Content-Type', $generator->getMediaType('Session')); $sessionHref = $this->router->generate('ezpublish_rest_deleteSession', array('sessionId' => $data->sessionId)); //@todo Needs refactoring, disabling certain headers should not be done this way $visitor->setHeader('Accept-Patch', false); $generator->startObjectElement('Session'); $generator->startAttribute('href', $sessionHref); $generator->endAttribute('href'); $generator->startValueElement('name', $data->sessionName); $generator->endValueElement('name'); $generator->startValueElement('identifier', $data->sessionId); $generator->endValueElement('identifier'); $generator->startValueElement('csrfToken', $data->csrfToken); $generator->endValueElement('csrfToken'); $generator->startObjectElement('User', 'User'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadUser', array('userId' => $data->user->id))); $generator->endAttribute('href'); $generator->endObjectElement('User'); $generator->endObjectElement('Session'); }
/** * 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\User\Role $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $generator->startObjectElement('Role'); $visitor->setHeader('Content-Type', $generator->getMediaType('Role')); $visitor->setHeader('Accept-Patch', $generator->getMediaType('RoleInput')); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadRole', array('roleId' => $data->id))); $generator->endAttribute('href'); $generator->startValueElement('identifier', $data->identifier); $generator->endValueElement('identifier'); $generator->startObjectElement('Policies', 'PolicyList'); $generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadPolicies', array('roleId' => $data->id))); $generator->endAttribute('href'); $generator->endObjectElement('Policies'); $generator->endObjectElement('Role'); }