|
|
@@ -43,40 +43,45 @@ class DefinitionParameter implements \JsonSerializable { |
|
|
|
public const FLAG_USER_PROVIDED = 2; |
|
|
|
|
|
|
|
/** @var string name of parameter */ |
|
|
|
private $name; |
|
|
|
private string $name; |
|
|
|
|
|
|
|
/** @var string human-readable parameter text */ |
|
|
|
private $text; |
|
|
|
private string $text; |
|
|
|
|
|
|
|
/** @var string human-readable parameter tooltip */ |
|
|
|
private $tooltip = ''; |
|
|
|
private string $tooltip = ''; |
|
|
|
|
|
|
|
/** @var int value type, see self::VALUE_* constants */ |
|
|
|
private $type = self::VALUE_TEXT; |
|
|
|
private int $type = self::VALUE_TEXT; |
|
|
|
|
|
|
|
/** @var int flags, see self::FLAG_* constants */ |
|
|
|
private $flags = self::FLAG_NONE; |
|
|
|
private int $flags = self::FLAG_NONE; |
|
|
|
|
|
|
|
/** @var mixed */ |
|
|
|
private $defaultValue; |
|
|
|
|
|
|
|
/** |
|
|
|
* @param string $name |
|
|
|
* @param string $text |
|
|
|
* @param string $name parameter name |
|
|
|
* @param string $text parameter description |
|
|
|
* @param mixed $defaultValue default value |
|
|
|
*/ |
|
|
|
public function __construct($name, $text) { |
|
|
|
public function __construct(string $name, string $text, $defaultValue = null) { |
|
|
|
$this->name = $name; |
|
|
|
$this->text = $text; |
|
|
|
$this->defaultValue = $defaultValue; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @return string |
|
|
|
*/ |
|
|
|
public function getName() { |
|
|
|
public function getName(): string { |
|
|
|
return $this->name; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @return string |
|
|
|
*/ |
|
|
|
public function getText() { |
|
|
|
public function getText(): string { |
|
|
|
return $this->text; |
|
|
|
} |
|
|
|
|
|
|
@@ -85,7 +90,7 @@ class DefinitionParameter implements \JsonSerializable { |
|
|
|
* |
|
|
|
* @return int |
|
|
|
*/ |
|
|
|
public function getType() { |
|
|
|
public function getType(): int { |
|
|
|
return $this->type; |
|
|
|
} |
|
|
|
|
|
|
@@ -95,15 +100,31 @@ class DefinitionParameter implements \JsonSerializable { |
|
|
|
* @param int $type |
|
|
|
* @return self |
|
|
|
*/ |
|
|
|
public function setType($type) { |
|
|
|
public function setType(int $type) { |
|
|
|
$this->type = $type; |
|
|
|
return $this; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @return mixed default value |
|
|
|
*/ |
|
|
|
public function getDefaultValue() { |
|
|
|
return $this->defaultValue; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param mixed $defaultValue default value |
|
|
|
* @return self |
|
|
|
*/ |
|
|
|
public function setDefaultValue($defaultValue) { |
|
|
|
$this->defaultValue = $defaultValue; |
|
|
|
return $this; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @return string |
|
|
|
*/ |
|
|
|
public function getTypeName() { |
|
|
|
public function getTypeName(): string { |
|
|
|
switch ($this->type) { |
|
|
|
case self::VALUE_BOOLEAN: |
|
|
|
return 'boolean'; |
|
|
@@ -119,7 +140,7 @@ class DefinitionParameter implements \JsonSerializable { |
|
|
|
/** |
|
|
|
* @return int |
|
|
|
*/ |
|
|
|
public function getFlags() { |
|
|
|
public function getFlags(): int { |
|
|
|
return $this->flags; |
|
|
|
} |
|
|
|
|
|
|
@@ -127,7 +148,7 @@ class DefinitionParameter implements \JsonSerializable { |
|
|
|
* @param int $flags |
|
|
|
* @return self |
|
|
|
*/ |
|
|
|
public function setFlags($flags) { |
|
|
|
public function setFlags(int $flags) { |
|
|
|
$this->flags = $flags; |
|
|
|
return $this; |
|
|
|
} |
|
|
@@ -136,7 +157,7 @@ class DefinitionParameter implements \JsonSerializable { |
|
|
|
* @param int $flag |
|
|
|
* @return self |
|
|
|
*/ |
|
|
|
public function setFlag($flag) { |
|
|
|
public function setFlag(int $flag) { |
|
|
|
$this->flags |= $flag; |
|
|
|
return $this; |
|
|
|
} |
|
|
@@ -145,7 +166,7 @@ class DefinitionParameter implements \JsonSerializable { |
|
|
|
* @param int $flag |
|
|
|
* @return bool |
|
|
|
*/ |
|
|
|
public function isFlagSet($flag) { |
|
|
|
public function isFlagSet(int $flag): bool { |
|
|
|
return (bool)($this->flags & $flag); |
|
|
|
} |
|
|
|
|
|
|
@@ -169,15 +190,20 @@ class DefinitionParameter implements \JsonSerializable { |
|
|
|
* Serialize into JSON for client-side JS |
|
|
|
*/ |
|
|
|
public function jsonSerialize(): array { |
|
|
|
return [ |
|
|
|
$result = [ |
|
|
|
'value' => $this->getText(), |
|
|
|
'flags' => $this->getFlags(), |
|
|
|
'type' => $this->getType(), |
|
|
|
'tooltip' => $this->getTooltip(), |
|
|
|
]; |
|
|
|
$defaultValue = $this->getDefaultValue(); |
|
|
|
if ($defaultValue) { |
|
|
|
$result['defaultValue'] = $defaultValue; |
|
|
|
} |
|
|
|
return $result; |
|
|
|
} |
|
|
|
|
|
|
|
public function isOptional() { |
|
|
|
public function isOptional(): bool { |
|
|
|
return $this->isFlagSet(self::FLAG_OPTIONAL) || $this->isFlagSet(self::FLAG_USER_PROVIDED); |
|
|
|
} |
|
|
|
|
|
|
@@ -188,7 +214,7 @@ class DefinitionParameter implements \JsonSerializable { |
|
|
|
* @param mixed $value Value to check |
|
|
|
* @return bool success |
|
|
|
*/ |
|
|
|
public function validateValue(&$value) { |
|
|
|
public function validateValue(&$value): bool { |
|
|
|
switch ($this->getType()) { |
|
|
|
case self::VALUE_BOOLEAN: |
|
|
|
if (!is_bool($value)) { |