From 60142ef954b832379f35e6024809e019dc27fe34 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Fri, 20 Mar 2020 12:29:05 -0400 Subject: [PATCH] APIv4 - Generic handler for domain_id field. This field should be treated the same across all entities for consistency. --- ...ider.php => FieldDomainIdSpecProvider.php} | 11 +++-- .../Spec/Provider/NavigationSpecProvider.php | 4 ++ .../PaymentProcessorCreationSpecProvider.php | 1 - .../Provider/UFMatchCreationSpecProvider.php | 42 ------------------- 4 files changed, 11 insertions(+), 47 deletions(-) rename Civi/Api4/Service/Spec/Provider/{StatusPreferenceCreationSpecProvider.php => FieldDomainIdSpecProvider.php} (69%) delete mode 100644 Civi/Api4/Service/Spec/Provider/UFMatchCreationSpecProvider.php diff --git a/Civi/Api4/Service/Spec/Provider/StatusPreferenceCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/FieldDomainIdSpecProvider.php similarity index 69% rename from Civi/Api4/Service/Spec/Provider/StatusPreferenceCreationSpecProvider.php rename to Civi/Api4/Service/Spec/Provider/FieldDomainIdSpecProvider.php index 7e7b4c4c24..f4135f21d7 100644 --- a/Civi/Api4/Service/Spec/Provider/StatusPreferenceCreationSpecProvider.php +++ b/Civi/Api4/Service/Spec/Provider/FieldDomainIdSpecProvider.php @@ -23,20 +23,23 @@ namespace Civi\Api4\Service\Spec\Provider; use Civi\Api4\Service\Spec\RequestSpec; -class StatusPreferenceCreationSpecProvider implements Generic\SpecProviderInterface { +class FieldDomainIdSpecProvider implements Generic\SpecProviderInterface { /** - * @inheritDoc + * Generic create spec function to set sensible defaults for any entity with a "domain_id" field. */ public function modifySpec(RequestSpec $spec) { - $spec->getFieldByName('domain_id')->setRequired(FALSE); + $domainIdField = $spec->getFieldByName('domain_id'); + if ($domainIdField) { + $domainIdField->setRequired(FALSE)->setDefaultValue('current_domain');; + } } /** * @inheritDoc */ public function applies($entity, $action) { - return $entity === 'StatusPreference' && $action === 'create'; + return $action === 'create'; } } diff --git a/Civi/Api4/Service/Spec/Provider/NavigationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/NavigationSpecProvider.php index 7c956a33ea..b6cc8cfb16 100644 --- a/Civi/Api4/Service/Spec/Provider/NavigationSpecProvider.php +++ b/Civi/Api4/Service/Spec/Provider/NavigationSpecProvider.php @@ -28,6 +28,10 @@ class NavigationSpecProvider implements Generic\SpecProviderInterface { /** * This runs for both create and get actions * + * @fixme - for 'create', this is redundant with FieldDomainIdSpecProvider. + * @fixme - for 'get', this is inconsistent with other entities which do not set this default. We should standardize on setting or not setting it. + * @see FieldDomainIdSpecProvider + * * @inheritDoc */ public function modifySpec(RequestSpec $spec) { diff --git a/Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php index ec6a236080..e94c7f4d20 100644 --- a/Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php +++ b/Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php @@ -28,7 +28,6 @@ class PaymentProcessorCreationSpecProvider implements Generic\SpecProviderInterf * @inheritDoc */ public function modifySpec(RequestSpec $spec) { - $spec->getFieldByName('domain_id')->setRequired(FALSE)->setDefaultValue('current_domain'); // Billing mode is copied across from the payment processor type field in the BAO::create function. $spec->getFieldByName('billing_mode')->setRequired(FALSE); diff --git a/Civi/Api4/Service/Spec/Provider/UFMatchCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/UFMatchCreationSpecProvider.php deleted file mode 100644 index 2ed93e4141..0000000000 --- a/Civi/Api4/Service/Spec/Provider/UFMatchCreationSpecProvider.php +++ /dev/null @@ -1,42 +0,0 @@ -getFieldByName('domain_id')->setRequired(FALSE); - } - - /** - * @inheritDoc - */ - public function applies($entity, $action) { - return $entity === 'UFMatch' && $action === 'create'; - } - -} -- 2.25.1