Esempio n. 1
0
 /**
  * Visit struct returned by controllers.
  *
  * @param \eZ\Publish\Core\REST\Common\Output\Visitor $visitor
  * @param \eZ\Publish\Core\REST\Common\Output\Generator $generator
  * @param \eZ\Publish\API\Repository\Values\Content\Location $location
  */
 public function visit(Visitor $visitor, Generator $generator, $location)
 {
     $generator->startObjectElement('Location');
     $visitor->setHeader('Content-Type', $generator->getMediaType('Location'));
     $visitor->setHeader('Accept-Patch', $generator->getMediaType('LocationUpdate'));
     $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', $this->locationService->getLocationChildCount($location));
     $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' => $location->contentId)));
     $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' => $location->contentId)));
     $generator->endAttribute('href');
     $visitor->visitValueObject(new RestContentValue($location->contentInfo));
     $generator->endObjectElement('ContentInfo');
     $generator->endObjectElement('Location');
 }
Esempio n. 2
0
 /**
  * Updates a location.
  *
  * @param string $locationPath
  *
  * @return \eZ\Publish\Core\REST\Server\Values\RestLocation
  */
 public function updateLocation($locationPath, Request $request)
 {
     $locationUpdate = $this->inputDispatcher->parse(new Message(array('Content-Type' => $request->headers->get('Content-Type')), $request->getContent()));
     $location = $this->locationService->loadLocation($this->extractLocationIdFromPath($locationPath));
     // First handle hiding/unhiding so that updating location afterwards
     // will return updated location with hidden/visible status correctly updated
     // Exact check for true/false is needed as null signals that no hiding/unhiding
     // is to be performed
     if ($locationUpdate->hidden === true) {
         $this->locationService->hideLocation($location);
     } elseif ($locationUpdate->hidden === false) {
         $this->locationService->unhideLocation($location);
     }
     return new Values\RestLocation($location = $this->locationService->updateLocation($location, $locationUpdate->locationUpdateStruct), $this->locationService->getLocationChildCount($location));
 }
 /**
  * Returns the number of children which are readable by the current user of a location object
  *
  * @param \eZ\Publish\API\Repository\Values\Content\Location $location
  *
  * @return int
  */
 public function getLocationChildCount(Location $location)
 {
     return $this->service->getLocationChildCount($location);
 }
Esempio n. 4
0
 /**
  * Returns the trash item given by id.
  *
  * @param $trashItemId
  *
  * @return \eZ\Publish\Core\REST\Server\Values\RestTrashItem
  */
 public function loadTrashItem($trashItemId)
 {
     return new Values\RestTrashItem($trashItem = $this->trashService->loadTrashItem($trashItemId), $this->locationService->getLocationChildCount($trashItem));
 }