| | |
| | | protected bool $quickEdit = true; // whether to show in quick edit table |
| | | protected bool $quill; // whether to use quill |
| | | protected int $maxLength; // of characters |
| | | protected string $subtype; |
| | | protected array $allowedSubtype = ['text', 'url','number','tel','email','number']; |
| | | /** |
| | | * @var ?bool For timeline post types. Indicates whether all posts get this field, or just the parent |
| | | */ |
| | |
| | | return; |
| | | } |
| | | } |
| | | $current = get_class($this); |
| | | $class = match($config['type']) { |
| | | 'group' => ($current !== GroupedField::class) ? new GroupedField($name, $config) : $this, |
| | | 'select', 'radio', 'checkbox' => ($current !== OptionsField::class) ? new OptionsField($name, $config) : $this, |
| | | 'repeater' => ($current !== RepeaterField::class) ? new RepeaterField($name, $config) : $this, |
| | | 'taglist' => ($current !== TagListField::class) ? new TagListField($name, $config) : $this, |
| | | 'taxonomy', 'post', 'user', 'selector' => ($current !== SelectorField::class) ? new SelectorField($name, $config) : $this, |
| | | 'upload' => ($current !== UploadField::class) ? new UploadField($name, $config) : $this, |
| | | default => $this |
| | | }; |
| | | |
| | | foreach ($config as $key => $value) { |
| | | if (property_exists($this, $key)) { |
| | | $method = 'set' . ucfirst($key); |
| | | $this->$method($value); |
| | | if (property_exists($class, $key)) { |
| | | $method = 'set'.implode('',array_map('ucfirst',explode('_', $key)));; |
| | | $class->$method($value); |
| | | } else { |
| | | error_log('Instance: '.print_r($this, true)); |
| | | error_log('Instance: '.print_r($class, true)); |
| | | error_log('[JVBase\registrar\Field] Invalid key for '.$name.': '.$key); |
| | | } |
| | | } |
| | |
| | | public function getConfig():array{ |
| | | $config = get_object_vars($this); |
| | | |
| | | $config = array_map(function ($item) { |
| | | return array_map(function ($item) { |
| | | if (is_a($item, Field::class)) { |
| | | return $item->getConfig(); |
| | | } else if (is_array($item)) { |
| | | $temp = []; |
| | | foreach ($item as $v) { |
| | | foreach ($item as $k => $v) { |
| | | if (is_a($v, Field::class)) { |
| | | $temp[] = $v->getConfig(); |
| | | $temp[$k] = $v->getConfig(); |
| | | } else { |
| | | $temp[] = $v; |
| | | $temp[$k] = $v; |
| | | } |
| | | } |
| | | return $temp; |
| | |
| | | return $item; |
| | | } |
| | | }, $config); |
| | | |
| | | return $config; |
| | | } |
| | | public function setSubtype(string $subtype):void |
| | | { |
| | | if (!in_array($subtype, $this->allowedSubtype)) { |
| | | error_log('[SelectorField]Attempted subtype not allowed: '.$subtype); |
| | | return; |
| | | } |
| | | $this->subtype = $subtype; |
| | | } |
| | | public function getSubtype():string |
| | | { |
| | | return $this->subtype; |
| | | } |
| | | } |