/**
  * 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));
 }
 /**
  * Hides the $location and marks invisible all descendants of $location.
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException If the current user user is not allowed to hide 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 hideLocation(Location $location)
 {
     $returnValue = $this->service->hideLocation($location);
     $this->signalDispatcher->emit(new HideLocationSignal(array('locationId' => $location->id, 'contentId' => $location->contentId, 'currentVersionNo' => $returnValue->getContentInfo()->currentVersionNo)));
     return $returnValue;
 }