vendor/pimcore/pimcore/models/Tool/SettingsStore.php line 128

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Commercial License (PCL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  13.  */
  14. namespace Pimcore\Model\Tool;
  15. use Pimcore\Model;
  16. use Pimcore\Model\Tool\SettingsStore\Dao;
  17. /**
  18.  * @method Dao getDao()
  19.  */
  20. final class SettingsStore extends Model\AbstractModel
  21. {
  22.     protected static $allowedTypes = ['bool''int''float''string'];
  23.     /**
  24.      * @internal
  25.      *
  26.      * @var string
  27.      */
  28.     protected $id;
  29.     /**
  30.      * @internal
  31.      *
  32.      * @var string|null
  33.      */
  34.     protected $scope;
  35.     /**
  36.      * @internal
  37.      *
  38.      * @var string
  39.      */
  40.     protected $type;
  41.     /**
  42.      * @internal
  43.      *
  44.      * @var mixed
  45.      */
  46.     protected $data;
  47.     /**
  48.      * @internal
  49.      *
  50.      * @var self|null
  51.      */
  52.     protected static ?self $instance null;
  53.     /**
  54.      * @return self
  55.      */
  56.     private static function getInstance(): self
  57.     {
  58.         if (!self::$instance) {
  59.             self::$instance = new self();
  60.         }
  61.         return self::$instance;
  62.     }
  63.     /**
  64.      * @param string $type
  65.      *
  66.      * @return bool
  67.      *
  68.      * @throws \Exception
  69.      */
  70.     private static function validateType(string $type): bool
  71.     {
  72.         if (!in_array($typeself::$allowedTypes)) {
  73.             throw new \Exception(sprintf('Invalid type `%s`, allowed types are %s'$typeimplode(','self::$allowedTypes)));
  74.         }
  75.         return true;
  76.     }
  77.     /**
  78.      * @param string $id
  79.      * @param int|string|bool|float $data
  80.      * @param string $type
  81.      * @param string|null $scope
  82.      *
  83.      * @return bool
  84.      *
  85.      * @throws \Exception
  86.      */
  87.     public static function set(string $id$datastring $type 'string', ?string $scope null): bool
  88.     {
  89.         self::validateType($type);
  90.         $instance self::getInstance();
  91.         return $instance->getDao()->set($id$data$type$scope);
  92.     }
  93.     /**
  94.      * @param string $id
  95.      * @param string|null $scope
  96.      *
  97.      * @return mixed
  98.      */
  99.     public static function delete(string $id, ?string $scope null)
  100.     {
  101.         $instance self::getInstance();
  102.         return $instance->getDao()->delete($id$scope);
  103.     }
  104.     /**
  105.      * @param string $id
  106.      * @param string|null $scope
  107.      *
  108.      * @return SettingsStore|null
  109.      */
  110.     public static function get(string $id, ?string $scope null): ?SettingsStore
  111.     {
  112.         $item = new self();
  113.         if ($item->getDao()->getById($id$scope)) {
  114.             return $item;
  115.         }
  116.         return null;
  117.     }
  118.     /**
  119.      * @param string $scope
  120.      *
  121.      * @return string[]
  122.      */
  123.     public static function getIdsByScope(string $scope): array
  124.     {
  125.         $instance self::getInstance();
  126.         return $instance->getDao()->getIdsByScope($scope);
  127.     }
  128.     /**
  129.      * @return string
  130.      */
  131.     public function getId(): string
  132.     {
  133.         return $this->id;
  134.     }
  135.     /**
  136.      * @param string $id
  137.      */
  138.     public function setId(string $id): void
  139.     {
  140.         $this->id $id;
  141.     }
  142.     /**
  143.      * @return string|null
  144.      */
  145.     public function getScope(): ?string
  146.     {
  147.         return $this->scope;
  148.     }
  149.     /**
  150.      * @param string|null $scope
  151.      */
  152.     public function setScope(?string $scope): void
  153.     {
  154.         $this->scope = (string) $scope;
  155.     }
  156.     /**
  157.      * @return string|null
  158.      */
  159.     public function getType(): ?string
  160.     {
  161.         return $this->type;
  162.     }
  163.     /**
  164.      * @param string $type
  165.      *
  166.      * @throws \Exception
  167.      */
  168.     public function setType(string $type): void
  169.     {
  170.         self::validateType($type);
  171.         $this->type $type;
  172.     }
  173.     /**
  174.      * @return int|string|bool|float
  175.      */
  176.     public function getData()
  177.     {
  178.         return $this->data;
  179.     }
  180.     /**
  181.      * @param int|string|bool|float $data
  182.      */
  183.     public function setData($data): void
  184.     {
  185.         if (!empty($this->getType())) {
  186.             settype($data$this->getType());
  187.         }
  188.         $this->data $data;
  189.     }
  190. }