Ejemplo n.º 1
0
 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);
 }