name = $name; $this->label = $label; $this->type = $type; $this->permission = $permission; } public function checkPermission():bool { if (is_bool($this->permission)) { return $this->permission; } if (is_string($this->permission)) { return current_user_can($this->permission); } if (is_callable($this->permission)) { return ($this->permission)(); } error_log('Check Permission failed as no permission set. '.print_r([ 'permission' => $this->permission, 'field' => $this->name, ], true)); return false; } public function setRequired():void { $this->required = true; } public function setOptions(array $options):void { $this->options = $options; } public function setDefault(mixed $default):void { $this->default = $default; } public function setHint(string $hint):void { $this->hint = $hint; } public function setHidden(bool $hidden = true):void { $this->hidden = $hidden; } public function setSubType(string $type):void { $this->subType = $type; } public function getConfig():array { $conf = [ 'name' => $this->name, 'label' => $this->label, 'type' => $this->type, ]; if (isset($this->required)) { $conf['required'] = true; } if (isset($this->options)) { $conf['options'] = $this->options; } if (isset($this->default)) { $conf['default'] = $this->default; } if (isset($this->hint)) { $conf['hint'] = $this->hint; } if (isset($this->subType)) { $conf['subtype'] = $this->subType; } if ($this->hidden) { $conf['hidden'] = true; } return $conf; } }