vendor/sulu/form-bundle/Entity/Dynamic.php line 17

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of Sulu.
  4.  *
  5.  * (c) Sulu GmbH
  6.  *
  7.  * This source file is subject to the MIT license that is bundled
  8.  * with this source code in the file LICENSE.
  9.  */
  10. namespace Sulu\Bundle\FormBundle\Entity;
  11. use Sulu\Component\Persistence\Model\AuditableInterface;
  12. use Sulu\Component\Persistence\Model\AuditableTrait;
  13. class Dynamic implements AuditableInterface
  14. {
  15.     use AuditableTrait;
  16.     public const TYPE_ATTACHMENT 'attachment';
  17.     public const TYPE_EMAIL 'email';
  18.     /**
  19.      * @var string[]
  20.      */
  21.     protected static $ARRAY_TYPES = [
  22.         'checkboxMultiple',
  23.         'dropdownMultiple',
  24.         self::TYPE_ATTACHMENT,
  25.     ];
  26.     /**
  27.      * @var string[]
  28.      */
  29.     public static $HIDDEN_TYPES = [
  30.         'spacer',
  31.         'headline',
  32.         'freeText',
  33.         'recaptcha',
  34.     ];
  35.     /**
  36.      * @var null|int
  37.      */
  38.     private $id;
  39.     /**
  40.      * @var string
  41.      */
  42.     private $type;
  43.     /**
  44.      * @var string
  45.      */
  46.     private $typeId;
  47.     /**
  48.      * @var string|null
  49.      */
  50.     private $typeName;
  51.     /**
  52.      * @var string
  53.      */
  54.     private $locale;
  55.     /**
  56.      * @var null|Form
  57.      */
  58.     private $form;
  59.     /**
  60.      * @var string
  61.      */
  62.     private $webspaceKey;
  63.     /**
  64.      * @var string|null
  65.      */
  66.     private $data;
  67.     /**
  68.      * Dynamic constructor.
  69.      *
  70.      * @param mixed[] $data
  71.      */
  72.     public function __construct(string $typestring $typeIdstring $locale, ?Form $form, array $data = [], ?string $webspaceKey null, ?string $typeName null)
  73.     {
  74.         $this->type $type;
  75.         $this->typeId $typeId;
  76.         $this->locale $locale;
  77.         $this->form $form;
  78.         $this->webspaceKey $webspaceKey;
  79.         $this->typeName $typeName;
  80.         $this->setData($data);
  81.     }
  82.     /**
  83.      * @return mixed[]
  84.      */
  85.     public function getData(): array
  86.     {
  87.         return \json_decode($this->data ?: '[]'true);
  88.     }
  89.     /**
  90.      * @param mixed[] $data
  91.      */
  92.     public function setData(array $data): self
  93.     {
  94.         $this->data \json_encode($data\JSON_UNESCAPED_UNICODE);
  95.         return $this;
  96.     }
  97.     /**
  98.      * @param mixed $value
  99.      */
  100.     public function setField(string $key$value): self
  101.     {
  102.         $array $this->getData();
  103.         $array[$key] = $value;
  104.         $this->data \json_encode($array\JSON_UNESCAPED_UNICODE);
  105.         return $this;
  106.     }
  107.     /**
  108.      * @return string|mixed|null
  109.      */
  110.     public function getField(string $key)
  111.     {
  112.         $array $this->getData();
  113.         if (isset($array[$key])) {
  114.             return $array[$key];
  115.         }
  116.         return null;
  117.     }
  118.     /**
  119.      * @return mixed[]
  120.      */
  121.     public function getFields(bool $hideHidden false): array
  122.     {
  123.         $entry = [];
  124.         if (!$this->form) {
  125.             return [];
  126.         }
  127.         foreach ($this->form->getFields() as $field) {
  128.             if ($hideHidden && \in_array($field->getType(), self::$HIDDEN_TYPES)) {
  129.                 continue;
  130.             }
  131.             $entry[$field->getKey()] = $this->getField($field->getKey());
  132.         }
  133.         return $entry;
  134.     }
  135.     /**
  136.      * @return mixed[]
  137.      */
  138.     public function getFieldsByType(string $type): array
  139.     {
  140.         $entry = [];
  141.         if (!$this->form) {
  142.             return [];
  143.         }
  144.         foreach ($this->form->getFieldsByType($type) as $field) {
  145.             $entry[$field->getKey()] = $this->getField($field->getKey());
  146.         }
  147.         return $entry;
  148.     }
  149.     public function getFieldType(string $key): ?string
  150.     {
  151.         if (!$this->form) {
  152.             return null;
  153.         }
  154.         return $this->form->getFieldType($key);
  155.     }
  156.     public function getId(): ?int
  157.     {
  158.         return $this->id;
  159.     }
  160.     public function getForm(): Form
  161.     {
  162.         return $this->form;
  163.     }
  164.     public function getLocale(): string
  165.     {
  166.         return $this->locale;
  167.     }
  168.     public function setLocale(string $locale): self
  169.     {
  170.         $this->locale $locale;
  171.         return $this;
  172.     }
  173.     public function getType(): string
  174.     {
  175.         return $this->type;
  176.     }
  177.     public function getTypeId(): string
  178.     {
  179.         return $this->typeId;
  180.     }
  181.     public function getTypeName(): ?string
  182.     {
  183.         return $this->typeName;
  184.     }
  185.     public function getWebspaceKey(): ?string
  186.     {
  187.         return $this->webspaceKey;
  188.     }
  189.     /**
  190.      * @return string
  191.      */
  192.     public function getSalutation(): ?string
  193.     {
  194.         return $this->getField('salutation');
  195.     }
  196.     /**
  197.      * @return string
  198.      */
  199.     public function getTitle(): ?string
  200.     {
  201.         return $this->getField('title');
  202.     }
  203.     /**
  204.      * @return string
  205.      */
  206.     public function getFirstName(): ?string
  207.     {
  208.         return $this->getField('firstName');
  209.     }
  210.     /**
  211.      * @return string
  212.      */
  213.     public function getLastName(): ?string
  214.     {
  215.         return $this->getField('lastName');
  216.     }
  217.     /**
  218.      * @return string
  219.      */
  220.     public function getEmail(): ?string
  221.     {
  222.         return $this->getField('email');
  223.     }
  224.     /**
  225.      * @return string
  226.      */
  227.     public function getPhone(): ?string
  228.     {
  229.         return $this->getField('phone');
  230.     }
  231.     /**
  232.      * @return string
  233.      */
  234.     public function getFax(): ?string
  235.     {
  236.         return $this->getField('fax');
  237.     }
  238.     /**
  239.      * @return string
  240.      */
  241.     public function getStreet(): ?string
  242.     {
  243.         return $this->getField('street');
  244.     }
  245.     /**
  246.      * @return string
  247.      */
  248.     public function getZip(): ?string
  249.     {
  250.         return $this->getField('zip');
  251.     }
  252.     /**
  253.      * @return string
  254.      */
  255.     public function getCity(): ?string
  256.     {
  257.         return $this->getField('city');
  258.     }
  259.     /**
  260.      * @return string
  261.      */
  262.     public function getState(): ?string
  263.     {
  264.         return $this->getField('state');
  265.     }
  266.     /**
  267.      * @return string
  268.      */
  269.     public function getCountry(): ?string
  270.     {
  271.         return $this->getField('country');
  272.     }
  273.     /**
  274.      * @return string
  275.      */
  276.     public function getFunction(): ?string
  277.     {
  278.         return $this->getField('function');
  279.     }
  280.     /**
  281.      * @return string
  282.      */
  283.     public function getCompany(): ?string
  284.     {
  285.         return $this->getField('company');
  286.     }
  287.     /**
  288.      * @return string
  289.      */
  290.     public function getText(): ?string
  291.     {
  292.         return $this->getField('text');
  293.     }
  294.     /**
  295.      * @return string
  296.      */
  297.     public function getTextarea(): ?string
  298.     {
  299.         return $this->getField('textarea');
  300.     }
  301.     /**
  302.      * @return string
  303.      */
  304.     public function getDate(): ?string
  305.     {
  306.         return $this->getField('data');
  307.     }
  308.     /**
  309.      * @return int[]|null
  310.      */
  311.     public function getAttachment(): ?array
  312.     {
  313.         return $this->getField('attachment');
  314.     }
  315.     /**
  316.      * @return string
  317.      */
  318.     public function getCheckbox(): ?string
  319.     {
  320.         return $this->getField('checkbox');
  321.     }
  322.     /**
  323.      * @return string
  324.      */
  325.     public function getCheckboxMultiple(): ?string
  326.     {
  327.         return $this->getField('checkboxMultiple');
  328.     }
  329.     /**
  330.      * @return string
  331.      */
  332.     public function getDropdown(): ?string
  333.     {
  334.         return $this->getField('dropdown');
  335.     }
  336.     /**
  337.      * @return string
  338.      */
  339.     public function getDropdownMultiple(): ?string
  340.     {
  341.         return $this->getField('dropdownMultiple');
  342.     }
  343.     /**
  344.      * @return string
  345.      */
  346.     public function getRadioButtons(): ?string
  347.     {
  348.         return $this->getField('radioButtons');
  349.     }
  350. }