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); }