public function onContentCacheClear(ContentCacheClearEvent $event)
 {
     $contentInfo = $event->getContentInfo();
     foreach ($this->locationService->loadLocations($contentInfo) as $location) {
         $event->addLocationToClear($location);
     }
 }
 /**
  * Loads all locations for content object.
  *
  * @param mixed $contentId
  *
  * @return \eZ\Publish\Core\REST\Server\Values\LocationList
  */
 public function loadLocationsForContent($contentId, Request $request)
 {
     $restLocations = array();
     $contentInfo = $this->contentService->loadContentInfo($contentId);
     foreach ($this->locationService->loadLocations($contentInfo) as $location) {
         $restLocations[] = new Values\RestLocation($location, $this->locationService->getLocationChildCount($location));
     }
     return new Values\CachedValue(new Values\LocationList($restLocations, $request->getPathInfo()), array('locationId' => $contentInfo->mainLocationId));
 }
 public function onContentCacheClear(ContentCacheClearEvent $event)
 {
     $contentInfo = $event->getContentInfo();
     $versionInfo = $this->contentService->loadVersionInfo($contentInfo);
     foreach ($this->contentService->loadRelations($versionInfo) as $relation) {
         foreach ($this->locationService->loadLocations($relation->getDestinationContentInfo()) as $relatedLocation) {
             $event->addLocationToClear($relatedLocation);
         }
     }
     // Using sudo since loading reverse relations is conditioned to content/reverserelatedlist permission and we don't need this check here.
     /** @var \eZ\Publish\API\Repository\Values\Content\Relation[] $reverseRelations */
     $reverseRelations = $this->repository->sudo(function () use($contentInfo) {
         return $this->contentService->loadReverseRelations($contentInfo);
     });
     foreach ($reverseRelations as $reverseRelation) {
         foreach ($this->locationService->loadLocations($reverseRelation->getSourceContentInfo()) as $relatedLocation) {
             $event->addLocationToClear($relatedLocation);
         }
     }
 }
 /**
  * Loads the locations for the given content object.
  *
  * If a $rootLocation is given, only locations that belong to this location are returned.
  * The location list is also filtered by permissions on reading locations.
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\BadStateException if there is no published version yet
  *
  * @param \eZ\Publish\API\Repository\Values\Content\ContentInfo $contentInfo
  * @param \eZ\Publish\API\Repository\Values\Content\Location $rootLocation
  *
  * @return \eZ\Publish\API\Repository\Values\Content\Location[] An array of {@link Location}
  */
 public function loadLocations(ContentInfo $contentInfo, Location $rootLocation = null)
 {
     return $this->service->loadLocations($contentInfo, $rootLocation);
 }