From a6f0adec2426d68210d47dbaa393e5be393d289f Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Thu, 15 Jul 2021 23:30:04 -0700 Subject: [PATCH] (REF) APIv4 FieldSpec - Extract OptionsSpecTrait (options, optionsCallback) --- Civi/Api4/Service/Spec/FieldSpec.php | 52 ++---------------- Civi/Schema/Traits/OptionsSpecTrait.php | 72 +++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 48 deletions(-) create mode 100644 Civi/Schema/Traits/OptionsSpecTrait.php diff --git a/Civi/Api4/Service/Spec/FieldSpec.php b/Civi/Api4/Service/Spec/FieldSpec.php index ceefef3a4c..9839029416 100644 --- a/Civi/Api4/Service/Spec/FieldSpec.php +++ b/Civi/Api4/Service/Spec/FieldSpec.php @@ -15,6 +15,7 @@ namespace Civi\Api4\Service\Spec; use Civi\Schema\Traits\BasicSpecTrait; use Civi\Schema\Traits\DataTypeSpecTrait; use Civi\Schema\Traits\GuiSpecTrait; +use Civi\Schema\Traits\OptionsSpecTrait; use Civi\Schema\Traits\SqlSpecTrait; class FieldSpec { @@ -25,6 +26,9 @@ class FieldSpec { // DataTypeSpecTrait: dataType, serialize, fkEntity use DataTypeSpecTrait; + // OptionsSpecTrait: options, optionsCallback + use OptionsSpecTrait; + // GuiSpecTrait: label, inputType, inputAttrs, helpPre, helpPost use GuiSpecTrait; @@ -56,16 +60,6 @@ class FieldSpec { */ public $requiredIf; - /** - * @var array|bool - */ - public $options; - - /** - * @var callable - */ - private $optionsCallback; - /** * @var array */ @@ -223,44 +217,6 @@ class FieldSpec { return $this; } - /** - * @param array $values - * @param array|bool $return - * @param bool $checkPermissions - * @return array - */ - public function getOptions($values = [], $return = TRUE, $checkPermissions = TRUE) { - if (!isset($this->options)) { - if ($this->optionsCallback) { - $this->options = ($this->optionsCallback)($this, $values, $return, $checkPermissions); - } - else { - $this->options = FALSE; - } - } - return $this->options; - } - - /** - * @param array|bool $options - * - * @return $this - */ - public function setOptions($options) { - $this->options = $options; - return $this; - } - - /** - * @param callable $callback - * - * @return $this - */ - public function setOptionsCallback($callback) { - $this->optionsCallback = $callback; - return $this; - } - /** * Gets all public variables, converted to snake_case * diff --git a/Civi/Schema/Traits/OptionsSpecTrait.php b/Civi/Schema/Traits/OptionsSpecTrait.php new file mode 100644 index 0000000000..13a2fa525f --- /dev/null +++ b/Civi/Schema/Traits/OptionsSpecTrait.php @@ -0,0 +1,72 @@ +options)) { + if ($this->optionsCallback) { + $this->options = ($this->optionsCallback)($this, $values, $return, $checkPermissions); + } + else { + $this->options = FALSE; + } + } + return $this->options; + } + + /** + * @param array|bool $options + * + * @return $this + */ + public function setOptions($options) { + $this->options = $options; + return $this; + } + + /** + * @param callable $callback + * + * @return $this + */ + public function setOptionsCallback($callback) { + $this->optionsCallback = $callback; + return $this; + } + +} -- 2.25.1