vendor/ezsystems/ezplatform-user/src/lib/UserSetting/ValueDefinitionRegistry.php line 16

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) eZ Systems 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 EzSystems\EzPlatformUser\UserSetting;
  8. use eZ\Publish\Core\Base\Exceptions\InvalidArgumentException;
  9. /**
  10.  * @internal
  11.  */
  12. class ValueDefinitionRegistry
  13. {
  14.     /** @var \EzSystems\EzPlatformUser\UserSetting\ValueDefinitionRegistryEntry[] */
  15.     protected $valueDefinitions;
  16.     /**
  17.      * @param \EzSystems\EzPlatformUser\UserSetting\ValueDefinitionRegistryEntry[] $valueDefinitions
  18.      */
  19.     public function __construct(array $valueDefinitions = [])
  20.     {
  21.         $this->valueDefinitions = [];
  22.         foreach ($valueDefinitions as $identifier => $valueDefinition) {
  23.             $this->valueDefinitions[$identifier] = new ValueDefinitionRegistryEntry($valueDefinition);
  24.         }
  25.     }
  26.     /**
  27.      * @param string $identifier
  28.      * @param \EzSystems\EzPlatformUser\UserSetting\ValueDefinitionInterface $valueDefinition
  29.      * @param int $priority
  30.      */
  31.     public function addValueDefinition(
  32.         string $identifier,
  33.         ValueDefinitionInterface $valueDefinition,
  34.         int $priority 0
  35.     ): void {
  36.         $this->valueDefinitions[$identifier] = new ValueDefinitionRegistryEntry($valueDefinition$priority);
  37.     }
  38.     /**
  39.      * @param string $identifier
  40.      *
  41.      * @return \EzSystems\EzPlatformUser\UserSetting\ValueDefinitionInterface
  42.      *
  43.      * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException
  44.      */
  45.     public function getValueDefinition(string $identifier): ValueDefinitionInterface
  46.     {
  47.         if (!isset($this->valueDefinitions[$identifier])) {
  48.             throw new InvalidArgumentException(
  49.                 '$identifier',
  50.                 sprintf('There is no ValueDefinition service registered for \'%s\' identifier'$identifier)
  51.             );
  52.         }
  53.         return $this->valueDefinitions[$identifier]->getDefinition();
  54.     }
  55.     /**
  56.      * @param string $identifier
  57.      *
  58.      * @return bool
  59.      */
  60.     public function hasValueDefinition(string $identifier): bool
  61.     {
  62.         return isset($this->valueDefinitions[$identifier]);
  63.     }
  64.     /**
  65.      * @return \EzSystems\EzPlatformUser\UserSetting\ValueDefinitionInterface[]
  66.      */
  67.     public function getValueDefinitions(): array
  68.     {
  69.         uasort($this->valueDefinitions, function (ValueDefinitionRegistryEntry $aValueDefinitionRegistryEntry $b) {
  70.             return $b->getPriority() <=> $a->getPriority();
  71.         });
  72.         return array_map(function (ValueDefinitionRegistryEntry $entry) {
  73.             return $entry->getDefinition();
  74.         }, $this->valueDefinitions);
  75.     }
  76.     /**
  77.      * @return int
  78.      */
  79.     public function countValueDefinitions(): int
  80.     {
  81.         return \count($this->valueDefinitions);
  82.     }
  83. }