From eb0359fb06da07697e71fcbfac696638f3fcebba Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Thu, 18 May 2023 00:14:41 -0700 Subject: [PATCH] (REF) Move comparator somewhere better. Tighten visibility. --- CRM/Core/CodeGen/OptionGroup.php | 23 +++++++++++++++++++---- sql/civicrm_option_groups.php | 9 +-------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/CRM/Core/CodeGen/OptionGroup.php b/CRM/Core/CodeGen/OptionGroup.php index 582f63665a..01114bd70f 100644 --- a/CRM/Core/CodeGen/OptionGroup.php +++ b/CRM/Core/CodeGen/OptionGroup.php @@ -6,6 +6,22 @@ */ class CRM_Core_CodeGen_OptionGroup { + /** + * Determine the relative order of two option-groups. + * + * @param \CRM_Core_CodeGen_OptionGroup $a + * @param \CRM_Core_CodeGen_OptionGroup $b + * @return int + */ + public static function compare(CRM_Core_CodeGen_OptionGroup $a, CRM_Core_CodeGen_OptionGroup $b): int { + if ($a->sortKey !== $b->sortKey) { + return strnatcmp($a->sortKey, $b->sortKey); + } + else { + return strnatcmp($a->metadata['name'], $b->metadata['name']); + } + } + /** * OptionGroup properties. * @@ -46,16 +62,15 @@ class CRM_Core_CodeGen_OptionGroup { /** * @var string - * @internal */ - public $historicalId; + private $sortKey; - public static function create(string $name, ?string $historicalId = NULL): CRM_Core_CodeGen_OptionGroup { + public static function create(string $name, ?string $sortKey = NULL): CRM_Core_CodeGen_OptionGroup { $og = new static(); $og->metadata['name'] = $name; // $og->var = '@option_group_id_' . $name; $og->var = '@this_option_group_id'; - $og->historicalId = $historicalId; + $og->sortKey = $sortKey; return $og; } diff --git a/sql/civicrm_option_groups.php b/sql/civicrm_option_groups.php index 3a4e6b0126..8d4ee7eb29 100644 --- a/sql/civicrm_option_groups.php +++ b/sql/civicrm_option_groups.php @@ -7,14 +7,7 @@ $readOptionGroups = function (): array { $basename = preg_replace('/\.sqldata\.php$/', '', basename($file)); $result[$basename] = include $file; } - uasort($result, function(CRM_Core_CodeGen_OptionGroup $a, CRM_Core_CodeGen_OptionGroup $b) { - if ($a->historicalId === $b->historicalId) { - return strnatcmp($a->metadata['name'], $b->metadata['name']); - } - else { - return strnatcmp($a->historicalId, $b->historicalId); - } - }); + uasort($result, ['CRM_Core_CodeGen_OptionGroup', 'compare']); return $result; }; -- 2.25.1