From 7ea896a54487e37878a880bf5d9360e0f7257f93 Mon Sep 17 00:00:00 2001 From: colemanw Date: Fri, 21 Jul 2023 12:32:48 -0400 Subject: [PATCH] Pseudoconstant - Standardize callback params Before: pseudoconstant callbacks received different params depending on where they were being called from After: Standardized on ($fieldName, $params) Note: The previous $context arg is useless and also contained in $params if it's really needed. --- CRM/ACL/BAO/ACL.php | 9 ++++++++- CRM/Core/BAO/CustomGroup.php | 4 ++-- CRM/Core/PseudoConstant.php | 2 +- Civi/Api4/Generic/BasicGetFieldsAction.php | 2 +- Civi/Api4/Service/Spec/SpecFormatter.php | 2 +- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CRM/ACL/BAO/ACL.php b/CRM/ACL/BAO/ACL.php index 2c8e39a67e..ab6495a157 100644 --- a/CRM/ACL/BAO/ACL.php +++ b/CRM/ACL/BAO/ACL.php @@ -540,7 +540,14 @@ SELECT g.* ]; } - public static function getObjectIdOptions($context, $params): array { + /** + * Provides pseudoconstant list for `object_id` field. + * + * @param string $fieldName + * @param array $params + * @return array + */ + public static function getObjectIdOptions(string $fieldName, array $params): array { $values = self::fillValues($params['values'], ['object_table']); $tableName = $values['object_table']; if (!$tableName) { diff --git a/CRM/Core/BAO/CustomGroup.php b/CRM/Core/BAO/CustomGroup.php index 6dae9a983b..2673214a86 100644 --- a/CRM/Core/BAO/CustomGroup.php +++ b/CRM/Core/BAO/CustomGroup.php @@ -2145,11 +2145,11 @@ SELECT civicrm_custom_group.id as groupID, civicrm_custom_group.title as groupT /** * Loads pseudoconstant option values for the `extends_entity_column_id` field. * - * @param string $context + * @param string $fieldName * @param array $params * @return array */ - public static function getExtendsEntityColumnIdOptions($context = NULL, $params = []) { + public static function getExtendsEntityColumnIdOptions(string $fieldName = NULL, array $params = []) { $props = $params['values'] ?? []; $ogId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'custom_data_type', 'id', 'name'); $optionValues = CRM_Core_BAO_OptionValue::getOptionValuesArray($ogId); diff --git a/CRM/Core/PseudoConstant.php b/CRM/Core/PseudoConstant.php index 46073b964a..35bc3cae68 100644 --- a/CRM/Core/PseudoConstant.php +++ b/CRM/Core/PseudoConstant.php @@ -225,7 +225,7 @@ class CRM_Core_PseudoConstant { // if callback is specified.. if (!empty($pseudoconstant['callback'])) { - $fieldOptions = call_user_func(Civi\Core\Resolver::singleton()->get($pseudoconstant['callback']), $context, $params); + $fieldOptions = call_user_func(Civi\Core\Resolver::singleton()->get($pseudoconstant['callback']), $fieldName, $params); $fieldOptions = self::formatArrayOptions($context, $fieldOptions); //CRM-18223: Allow additions to field options via hook. CRM_Utils_Hook::fieldOptions($entity, $fieldName, $fieldOptions, $params); diff --git a/Civi/Api4/Generic/BasicGetFieldsAction.php b/Civi/Api4/Generic/BasicGetFieldsAction.php index c3f34416f6..acf0f27854 100644 --- a/Civi/Api4/Generic/BasicGetFieldsAction.php +++ b/Civi/Api4/Generic/BasicGetFieldsAction.php @@ -171,7 +171,7 @@ class BasicGetFieldsAction extends BasicGetAction { $field['options'] = self::pseudoconstantOptions($field['pseudoconstant']['optionGroupName']); } elseif (!empty($field['pseudoconstant']['callback'])) { - $field['options'] = call_user_func(\Civi\Core\Resolver::singleton()->get($field['pseudoconstant']['callback'])); + $field['options'] = call_user_func(\Civi\Core\Resolver::singleton()->get($field['pseudoconstant']['callback']), $field['name'], []); } else { throw new \CRM_Core_Exception('Unsupported pseudoconstant type for field "' . $field['name'] . '"'); diff --git a/Civi/Api4/Service/Spec/SpecFormatter.php b/Civi/Api4/Service/Spec/SpecFormatter.php index a415fb403d..efcb8b0d65 100644 --- a/Civi/Api4/Service/Spec/SpecFormatter.php +++ b/Civi/Api4/Service/Spec/SpecFormatter.php @@ -240,7 +240,7 @@ class SpecFormatter { } } elseif ($returnFormat && !empty($pseudoconstant['callback'])) { - $callbackOptions = call_user_func(\Civi\Core\Resolver::singleton()->get($pseudoconstant['callback']), NULL, [], $values); + $callbackOptions = call_user_func(\Civi\Core\Resolver::singleton()->get($pseudoconstant['callback']), $fieldName, ['values' => $values]); foreach ($callbackOptions as $callbackOption) { if (is_array($callbackOption) && !empty($callbackOption['id']) && isset($optionIndex[$callbackOption['id']])) { $options[$optionIndex[$callbackOption['id']]] += $callbackOption; -- 2.25.1