- <?php
-
-
- namespace Lc\CaracoleBundle\Definition;
-
-
- abstract class AbstractSettingDefinition
- {
- protected $settings = [];
-
- public function addSettingText(array $params): self
- {
- $params['type'] = 'text';
- $params['field'] = 'text';
- return $this->addSetting($params);
- }
-
- public function addSettingTextarea(array $params): self
- {
- $params['type'] = 'textarea';
- $params['field'] = 'text';
- return $this->addSetting($params);
- }
-
- public function addSettingTextareaAdvanced(array $params): self
- {
- $params['type'] = 'textarea_advanced';
- $params['field'] = 'text';
- return $this->addSetting($params);
- }
-
- public function addSettingDate(array $params): self
- {
- $params['type'] = 'date';
- $params['field'] = 'date';
- return $this->addSetting($params);
- }
-
- public function addSettingTime(array $params): self
- {
- $params['type'] = 'time';
- $params['field'] = 'date';
- return $this->addSetting($params);
- }
-
- public function addSettingFile(array $params): self
- {
- $params['type'] = 'file';
- $params['field'] = 'file';
- return $this->addSetting($params);
- }
-
- public function addSettingImage(array $params): self
- {
- $params['type'] = 'image';
- $params['field'] = 'file';
- return $this->addSetting($params);
- }
-
- public function addSettingSelect(array $params): self
- {
- $params['type'] = 'select';
- $params['field'] = 'text';
- return $this->addSetting($params);
- }
-
- public function addSettingRadio(array $params): self
- {
- $params['type'] = 'radio';
- $params['field'] = 'text';
- return $this->addSetting($params);
- }
-
- public function addSetting($params)
- {
- $name = $params['name'];
- $category = $params['category'];
-
- if (!isset($this->settings[$category])) {
- $this->settings[$category] = [];
- }
-
- $this->settings[$category][$name] = $params;
-
- return $this;
- }
-
- public function getSettings(): array
- {
- return $this->settings;
- }
-
- public function getSettingsByCategory($category)
- {
- $settings = $this->getSettings();
-
- if (isset($settings[$category])) {
- return $settings[$category];
- }
-
- return [];
- }
-
- public function getSettingByName($name): ?array
- {
- $settings = $this->getSettings();
-
- foreach ($settings as $category => $settingsCategory) {
- foreach ($settingsCategory as $nameSetting => $setting) {
- if ($nameSetting == $name) {
- return $setting;
- }
- }
- }
-
- return null;
- }
-
- public function getSettingType($name): ?string
- {
- $setting = $this->getSettingByName($name);
-
- if ($setting) {
- return $setting['type'];
- }
-
- return null;
- }
- }
|