vendor/ezsystems/ezplatform-kernel/eZ/Publish/Core/Repository/Values/Content/VersionInfo.php line 31

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. namespace eZ\Publish\Core\Repository\Values\Content;
  7. use eZ\Publish\API\Repository\Values\Content\ContentInfo;
  8. use eZ\Publish\API\Repository\Values\Content\Language;
  9. use eZ\Publish\API\Repository\Values\Content\VersionInfo as APIVersionInfo;
  10. use eZ\Publish\API\Repository\Values\User\User;
  11. /**
  12.  * This class holds version information data. It also contains the corresponding {@link Content} to
  13.  * which the version belongs to.
  14.  *
  15.  * @property-read string[] $names returns an array with language code keys and name values
  16.  * @property-read \eZ\Publish\API\Repository\Values\Content\ContentInfo $contentInfo calls getContentInfo()
  17.  * @property-read int $id the internal id of the version
  18.  * @property-read int $versionNo the version number of this version (which only increments in scope of a single Content object)
  19.  * @property-read \DateTime $modifiedDate the last modified date of this version
  20.  * @property-read \DateTime $createdDate the creation date of this version
  21.  * @property-read int $creatorId the user id of the user which created this version
  22.  * @property-read int $status the status of this version. One of VersionInfo::STATUS_DRAFT, VersionInfo::STATUS_PUBLISHED, VersionInfo::STATUS_ARCHIVED
  23.  * @property-read string $initialLanguageCode the language code of the version. This value is used to flag a version as a translation to specific language
  24.  * @property-read string[] $languageCodes a collection of all languages which exist in this version.
  25.  *
  26.  * @internal Meant for internal use by Repository, type hint against API object instead.
  27.  */
  28. class VersionInfo extends APIVersionInfo
  29. {
  30.     /** @var string[] */
  31.     protected $names;
  32.     /** @var \eZ\Publish\API\Repository\Values\Content\ContentInfo */
  33.     protected $contentInfo;
  34.     /** @var \eZ\Publish\API\Repository\Values\User\User */
  35.     protected $creator;
  36.     /** @var \eZ\Publish\API\Repository\Values\Content\Language */
  37.     protected $initialLanguage;
  38.     /** @var \eZ\Publish\API\Repository\Values\Content\Language[] */
  39.     protected $languages;
  40.     /**
  41.      * The first matched name language among user provided prioritized languages.
  42.      *
  43.      * The first matched language among user provided prioritized languages on object retrieval, or null if none
  44.      * provided (all languages) or on main fallback.
  45.      *
  46.      * @internal
  47.      *
  48.      * @var string|null
  49.      */
  50.     protected $prioritizedNameLanguageCode;
  51.     /**
  52.      * {@inheritdoc}
  53.      */
  54.     public function getContentInfo(): ContentInfo
  55.     {
  56.         return $this->contentInfo;
  57.     }
  58.     /**
  59.      * {@inheritdoc}
  60.      */
  61.     public function getCreator(): User
  62.     {
  63.         return $this->creator;
  64.     }
  65.     /**
  66.      * {@inheritdoc}
  67.      */
  68.     public function getInitialLanguage(): Language
  69.     {
  70.         return $this->initialLanguage;
  71.     }
  72.     /**
  73.      * {@inheritdoc}
  74.      */
  75.     public function getLanguages(): iterable
  76.     {
  77.         return $this->languages;
  78.     }
  79.     /**
  80.      * {@inheritdoc}
  81.      */
  82.     public function getNames()
  83.     {
  84.         return $this->names;
  85.     }
  86.     /**
  87.      * {@inheritdoc}
  88.      */
  89.     public function getName($languageCode null)
  90.     {
  91.         if ($languageCode) {
  92.             return isset($this->names[$languageCode]) ? $this->names[$languageCode] : null;
  93.         }
  94.         if ($this->prioritizedNameLanguageCode) {
  95.             return $this->names[$this->prioritizedNameLanguageCode];
  96.         } elseif (!empty($this->contentInfo->alwaysAvailable) && isset($this->names[$this->contentInfo->mainLanguageCode])) {
  97.             return $this->names[$this->contentInfo->mainLanguageCode];
  98.         }
  99.         // Versioned name should always exists in initial language for a version so we use that as final fallback
  100.         return $this->names[$this->initialLanguageCode];
  101.     }
  102. }