Skip to content

Commit

Permalink
Pseudoconstant - Standardize callback params
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
colemanw committed Jul 21, 2023
1 parent c1bf8a7 commit 7ea896a
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 6 deletions.
9 changes: 8 additions & 1 deletion CRM/ACL/BAO/ACL.php
Original file line number Diff line number Diff line change
Expand Up @@ -540,7 +540,14 @@ public static function getObjectTableOptions(): array {
];
}

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) {
Expand Down
4 changes: 2 additions & 2 deletions CRM/Core/BAO/CustomGroup.php
Original file line number Diff line number Diff line change
Expand Up @@ -2145,11 +2145,11 @@ public static function getExtendsEntityColumnValueOptions($context, $params) {
/**
* 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);
Expand Down
2 changes: 1 addition & 1 deletion CRM/Core/PseudoConstant.php
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ public static function get($daoName, $fieldName, $params = [], $context = NULL)

// 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);
Expand Down
2 changes: 1 addition & 1 deletion Civi/Api4/Generic/BasicGetFieldsAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ private function formatOptionList(&$field) {
$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'] . '"');
Expand Down
2 changes: 1 addition & 1 deletion Civi/Api4/Service/Spec/SpecFormatter.php
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ private static function addOptionProps(&$options, $spec, $baoName, $fieldName, $
}
}
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;
Expand Down

0 comments on commit 7ea896a

Please sign in to comment.