vendor/ezsystems/ezplatform-kernel/eZ/Publish/Core/Repository/Values/Content/Location.php line 19

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. declare(strict_types=1);
  7. namespace eZ\Publish\Core\Repository\Values\Content;
  8. use eZ\Publish\API\Repository\Values\Content\ContentInfo as APIContentInfo;
  9. use eZ\Publish\API\Repository\Values\Content\Location as APILocation;
  10. /**
  11.  * This class represents a location in the repository.
  12.  *
  13.  * @internal Meant for internal use by Repository, type hint against API object instead.
  14.  */
  15. class Location extends APILocation
  16. {
  17.     /**
  18.      * Content info of the content object of this location.
  19.      *
  20.      * @var \eZ\Publish\API\Repository\Values\Content\ContentInfo
  21.      */
  22.     protected $contentInfo;
  23.     /** @var array */
  24.     protected $path;
  25.     /** @var \eZ\Publish\API\Repository\Values\Content\Location|null */
  26.     protected $parentLocation;
  27.     /**
  28.      * Returns the content info of the content object of this location.
  29.      *
  30.      * @return \eZ\Publish\API\Repository\Values\Content\ContentInfo
  31.      */
  32.     public function getContentInfo(): APIContentInfo
  33.     {
  34.         return $this->contentInfo;
  35.     }
  36.     public function getParentLocation(): ?APILocation
  37.     {
  38.         return $this->parentLocation;
  39.     }
  40.     /**
  41.      * Function where list of properties are returned.
  42.      *
  43.      * Override to add dynamic properties
  44.      *
  45.      * @uses \parent::getProperties()
  46.      *
  47.      * @param array $dynamicProperties
  48.      *
  49.      * @return array
  50.      */
  51.     protected function getProperties($dynamicProperties = ['contentId'])
  52.     {
  53.         return parent::getProperties($dynamicProperties);
  54.     }
  55.     /**
  56.      * Magic getter for retrieving convenience properties.
  57.      *
  58.      * @param string $property The name of the property to retrieve
  59.      *
  60.      * @return mixed
  61.      */
  62.     public function __get($property)
  63.     {
  64.         switch ($property) {
  65.             case 'contentId':
  66.                 return $this->contentInfo->id;
  67.             case 'path':
  68.                 if ($this->path !== null) {
  69.                     return $this->path;
  70.                 }
  71.                 if (isset($this->pathString[1]) && $this->pathString[0] === '/') {
  72.                     return $this->path explode('/'trim($this->pathString'/'));
  73.                 }
  74.                 return $this->path = [];
  75.         }
  76.         return parent::__get($property);
  77.     }
  78.     /**
  79.      * Magic isset for signaling existence of convenience properties.
  80.      *
  81.      * @param string $property
  82.      *
  83.      * @return bool
  84.      */
  85.     public function __isset($property)
  86.     {
  87.         if ($property === 'contentId' || $property === 'path') {
  88.             return true;
  89.         }
  90.         return parent::__isset($property);
  91.     }
  92. }