public function onContentCacheClear(ContentCacheClearEvent $event) { $contentInfo = $event->getContentInfo(); foreach ($this->locationService->loadLocations($contentInfo) as $location) { $event->addLocationToClear($location); } }
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); } } }
public function setLocationsToClear() { $contentInfo = new ContentInfo(); $event = new ContentCacheClearEvent($contentInfo); $initialLocations = [new Location(), new Location()]; $event->addLocationToClear($initialLocations[0]); $event->addLocationToClear($initialLocations[1]); $this->assertSame($initialLocations, $event->getLocationsToClear()); $otherLocations = [new Location(), new Location()]; $event->setLocationsToClear($otherLocations); $this->assertSame($otherLocations, $event->getLocationsToClear()); }