public function findLocations(LocationQuery $query) { $searchResult = $this->searchService->findLocations($query, ['languages' => $this->prioritizedLanguages, 'useAlwaysAvailable' => $this->useAlwaysAvailable]); foreach ($searchResult->searchHits as $searchHit) { /** @var \eZ\Publish\API\Repository\Values\Content\Location $location */ $location = $searchHit->valueObject; $searchHit->valueObject = $this->domainObjectMapper->mapLocation($location, $this->contentService->loadVersionInfo($location->contentInfo, $location->contentInfo->currentVersionNo), $searchHit->matchedTranslation); } return $searchResult; }
/** * Returns content name, translated, from a ContentInfo object. * By default this method uses prioritized languages, unless $forcedLanguage is provided. * * @param \eZ\Publish\API\Repository\Values\Content\ContentInfo $contentInfo * @param string $forcedLanguage Locale we want the content name translation in (e.g. "fre-FR"). Null by default (takes current locale) * * @todo Remove ContentService usage when translated names are available in ContentInfo (see https://jira.ez.no/browse/EZP-21755) * * @return string */ public function getTranslatedContentNameByContentInfo(ContentInfo $contentInfo, $forcedLanguage = null) { if (isset($forcedLanguage) && $forcedLanguage === $contentInfo->mainLanguageCode) { return $contentInfo->name; } return $this->getTranslatedContentNameByVersionInfo($this->contentService->loadVersionInfo($contentInfo), $forcedLanguage); }
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 a version info of the given content object. * * If no version number is given, the method returns the current version * * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException - if the version with the given number does not exist * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to load this version * * @param \eZ\Publish\API\Repository\Values\Content\ContentInfo $contentInfo * @param int $versionNo the version number. If not given the current version is returned. * * @return \eZ\Publish\API\Repository\Values\Content\VersionInfo */ public function loadVersionInfo(ContentInfo $contentInfo, $versionNo = null) { return $this->service->loadVersionInfo($contentInfo, $versionNo); }