vendor/pimcore/pimcore/models/DataObject/ClassDefinition/Layout.php line 333

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\DataObject\ClassDefinition;
  15. use Pimcore\Model;
  16. use Pimcore\Model\Element;
  17. class Layout implements Model\DataObject\ClassDefinition\Data\VarExporterInterface
  18. {
  19.     use Model\DataObject\ClassDefinition\Helper\VarExport {
  20.         __set_state as private _VarExport__set_state;
  21.     }
  22.     use Element\ChildsCompatibilityTrait;
  23.     /**
  24.      * @internal
  25.      *
  26.      * @var string
  27.      */
  28.     public $name;
  29.     /**
  30.      * @internal
  31.      *
  32.      * @var string
  33.      */
  34.     public $type;
  35.     /**
  36.      * @internal
  37.      *
  38.      * @var string
  39.      */
  40.     public $region;
  41.     /**
  42.      * @internal
  43.      *
  44.      * @var string
  45.      */
  46.     public $title;
  47.     /**
  48.      * @internal
  49.      *
  50.      * @var string|int
  51.      */
  52.     public $width 0;
  53.     /**
  54.      * @internal
  55.      *
  56.      * @var string|int
  57.      */
  58.     public $height 0;
  59.     /**
  60.      * @internal
  61.      *
  62.      * @var bool
  63.      */
  64.     public $collapsible false;
  65.     /**
  66.      * @internal
  67.      *
  68.      * @var bool
  69.      */
  70.     public $collapsed false;
  71.     /**
  72.      * @internal
  73.      *
  74.      * @var string
  75.      */
  76.     public $bodyStyle;
  77.     /**
  78.      * @internal
  79.      *
  80.      * @var string
  81.      */
  82.     public $datatype 'layout';
  83.     /**
  84.      * @internal
  85.      *
  86.      * @var array
  87.      */
  88.     public $permissions;
  89.     /**
  90.      * @internal
  91.      *
  92.      * @var array
  93.      */
  94.     public $children = [];
  95.     /**
  96.      * @internal
  97.      *
  98.      * @var bool
  99.      */
  100.     public $locked false;
  101.     /**
  102.      * @return string
  103.      */
  104.     public function getName()
  105.     {
  106.         return $this->name;
  107.     }
  108.     /**
  109.      * @return string
  110.      */
  111.     public function getType()
  112.     {
  113.         return $this->type;
  114.     }
  115.     /**
  116.      * @return string
  117.      */
  118.     public function getRegion()
  119.     {
  120.         return $this->region;
  121.     }
  122.     /**
  123.      * @return string
  124.      */
  125.     public function getTitle()
  126.     {
  127.         return $this->title;
  128.     }
  129.     /**
  130.      * @return int
  131.      */
  132.     public function getWidth()
  133.     {
  134.         return $this->width;
  135.     }
  136.     /**
  137.      * @return int
  138.      */
  139.     public function getHeight()
  140.     {
  141.         return $this->height;
  142.     }
  143.     /**
  144.      * @return bool
  145.      */
  146.     public function getCollapsible()
  147.     {
  148.         return $this->collapsible;
  149.     }
  150.     /**
  151.      * @return array
  152.      */
  153.     public function getPermissions()
  154.     {
  155.         return $this->permissions;
  156.     }
  157.     /**
  158.      * @param string $name
  159.      *
  160.      * @return $this
  161.      */
  162.     public function setName($name)
  163.     {
  164.         $this->name $name;
  165.         return $this;
  166.     }
  167.     /**
  168.      * @param string $type
  169.      *
  170.      * @return $this
  171.      */
  172.     public function setType($type)
  173.     {
  174.         $this->type $type;
  175.         return $this;
  176.     }
  177.     /**
  178.      * @param string $region
  179.      *
  180.      * @return $this
  181.      */
  182.     public function setRegion($region)
  183.     {
  184.         $this->region $region;
  185.         return $this;
  186.     }
  187.     /**
  188.      * @param string $title
  189.      *
  190.      * @return $this
  191.      */
  192.     public function setTitle($title)
  193.     {
  194.         $this->title $title;
  195.         return $this;
  196.     }
  197.     /**
  198.      * @param string|int $width
  199.      *
  200.      * @return $this
  201.      */
  202.     public function setWidth($width)
  203.     {
  204.         if (is_numeric($width)) {
  205.             $width = (int)$width;
  206.         }
  207.         $this->width $width;
  208.         return $this;
  209.     }
  210.     /**
  211.      * @param string|int $height
  212.      *
  213.      * @return $this
  214.      */
  215.     public function setHeight($height)
  216.     {
  217.         if (is_numeric($height)) {
  218.             $height = (int)$height;
  219.         }
  220.         $this->height $height;
  221.         return $this;
  222.     }
  223.     /**
  224.      * @param bool $collapsible
  225.      *
  226.      * @return $this
  227.      */
  228.     public function setCollapsible($collapsible)
  229.     {
  230.         $this->collapsible = (bool) $collapsible;
  231.         $this->filterCollapsibleValue();
  232.         return $this;
  233.     }
  234.     /**
  235.      * @param array $permissions
  236.      *
  237.      * @return $this
  238.      */
  239.     public function setPermissions($permissions)
  240.     {
  241.         $this->permissions $permissions;
  242.         return $this;
  243.     }
  244.     /**
  245.      * @return array
  246.      */
  247.     public function getChildren()
  248.     {
  249.         return $this->children;
  250.     }
  251.     /**
  252.      * @param array $children
  253.      *
  254.      * @return $this
  255.      */
  256.     public function setChildren($children)
  257.     {
  258.         $this->children $children;
  259.         return $this;
  260.     }
  261.     /**
  262.      * @return bool
  263.      */
  264.     public function hasChildren()
  265.     {
  266.         if (is_array($this->children) && count($this->children) > 0) {
  267.             return true;
  268.         }
  269.         return false;
  270.     }
  271.     /**
  272.      * @param Data|Layout $child
  273.      */
  274.     public function addChild($child)
  275.     {
  276.         $this->children[] = $child;
  277.     }
  278.     /**
  279.      * @param array $data
  280.      * @param array $blockedKeys
  281.      *
  282.      * @return $this
  283.      */
  284.     public function setValues($data = [], $blockedKeys = [])
  285.     {
  286.         foreach ($data as $key => $value) {
  287.             if (!in_array($key$blockedKeys)) {
  288.                 $method 'set' ucfirst($key);
  289.                 if (method_exists($this$method)) {
  290.                     $this->$method($value);
  291.                 }
  292.             }
  293.         }
  294.         return $this;
  295.     }
  296.     /**
  297.      * @return string
  298.      */
  299.     public function getDatatype()
  300.     {
  301.         return $this->datatype;
  302.     }
  303.     /**
  304.      * @param string $datatype
  305.      *
  306.      * @return $this
  307.      */
  308.     public function setDatatype($datatype)
  309.     {
  310.         $this->datatype $datatype;
  311.         return $this;
  312.     }
  313.     /**
  314.      *
  315.      * @return bool
  316.      */
  317.     public function getLocked()
  318.     {
  319.         return $this->locked;
  320.     }
  321.     /**
  322.      * @param bool $locked
  323.      *
  324.      * @return $this
  325.      */
  326.     public function setLocked($locked)
  327.     {
  328.         $this->locked = (bool) $locked;
  329.         return $this;
  330.     }
  331.     /**
  332.      * @param bool $collapsed
  333.      *
  334.      * @return $this
  335.      */
  336.     public function setCollapsed($collapsed)
  337.     {
  338.         $this->collapsed = (bool) $collapsed;
  339.         $this->filterCollapsibleValue();
  340.         return $this;
  341.     }
  342.     /**
  343.      * @return bool
  344.      */
  345.     public function getCollapsed()
  346.     {
  347.         return $this->collapsed;
  348.     }
  349.     /**
  350.      * @param string $bodyStyle
  351.      *
  352.      * @return $this
  353.      */
  354.     public function setBodyStyle($bodyStyle)
  355.     {
  356.         $this->bodyStyle $bodyStyle;
  357.         return $this;
  358.     }
  359.     /**
  360.      * @return string
  361.      */
  362.     public function getBodyStyle()
  363.     {
  364.         return $this->bodyStyle;
  365.     }
  366.     /**
  367.      * @return Layout
  368.      */
  369.     protected function filterCollapsibleValue()
  370.     {
  371.         //if class definition set as collapsed the code below forces collapsible, issue: #778
  372.         $this->collapsible $this->getCollapsed() || $this->getCollapsible();
  373.         return $this;
  374.     }
  375.     /**
  376.      * @return array
  377.      */
  378.     public function getBlockedVarsForExport(): array
  379.     {
  380.         return ['blockedVarsForExport''childs'];
  381.     }
  382.     public function __sleep(): array
  383.     {
  384.         $vars get_object_vars($this);
  385.         foreach ($this->getBlockedVarsForExport() as $blockedVar) {
  386.             unset($vars[$blockedVar]);
  387.         }
  388.         return array_keys($vars);
  389.     }
  390.     public static function __set_state($data)
  391.     {
  392.         $obj = new static();
  393.         $obj->setValues($data);
  394.         $obj->childs $obj->children;  // @phpstan-ignore-line
  395.         return $obj;
  396.     }
  397. }