/** * 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)); }
/** * Updates $location in the content repository * * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException If the current user user is not allowed to update this location * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if if set the remoteId exists already * * @param \eZ\Publish\API\Repository\Values\Content\Location $location * @param \eZ\Publish\API\Repository\Values\Content\LocationUpdateStruct $locationUpdateStruct * * @return \eZ\Publish\API\Repository\Values\Content\Location the updated Location */ public function updateLocation(Location $location, LocationUpdateStruct $locationUpdateStruct) { $returnValue = $this->service->updateLocation($location, $locationUpdateStruct); $this->signalDispatcher->emit(new UpdateLocationSignal(array('contentId' => $location->contentId, 'locationId' => $location->id))); return $returnValue; }