/** * 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)); }
/** * Unhides the $location. * * This method and marks visible all descendants of $locations * until a hidden location is found. * * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException If the current user user is not allowed to unhide this location * * @param \eZ\Publish\API\Repository\Values\Content\Location $location * * @return \eZ\Publish\API\Repository\Values\Content\Location $location, with updated hidden value */ public function unhideLocation(Location $location) { $returnValue = $this->service->unhideLocation($location); $this->signalDispatcher->emit(new UnhideLocationSignal(array('locationId' => $location->id, 'contentId' => $location->contentId, 'currentVersionNo' => $returnValue->getContentInfo()->currentVersionNo))); return $returnValue; }