name = $name; $this->label = $label; $this->type = $type; $this->permission = is_callable($permission) ? Closure::fromCallable($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 setMin(int $min):void { $this->min = $min; } public function setMax(int $max):void { $this->max = $max; } public function setPlaceholder(string $string):void { $this->placeholder = sanitize_text_field($string); } 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; } if (isset($this->min)) { $conf['min'] = $this->min; } if (isset($this->max)) { $conf['max'] = $this->max; } if (isset($this->placeholder)) { $conf['placeholder'] = $this->placeholder; } return $conf; } }