From 5d129bb104471423d2a75f1b22550c13f2e917e6 Mon Sep 17 00:00:00 2001 From: yashodha Date: Mon, 20 Mar 2017 09:39:13 +0530 Subject: [PATCH] CRM-20304 - Add option to alphabetize option values --- CRM/Custom/Page/Option.php | 44 ++++++++++++++++++++++++++++ templates/CRM/Custom/Page/Option.tpl | 1 + 2 files changed, 45 insertions(+) diff --git a/CRM/Custom/Page/Option.php b/CRM/Custom/Page/Option.php index 8fe3a8841a..0befb9988e 100644 --- a/CRM/Custom/Page/Option.php +++ b/CRM/Custom/Page/Option.php @@ -108,6 +108,47 @@ class CRM_Custom_Page_Option extends CRM_Core_Page { return self::$_actionLinks; } + /** + * Alphabetize multiple option values + * + * @return void + */ + public function alphabetize() { + $optionGroupID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField', + $this->_fid, + 'option_group_id' + ); + $query = " +SELECT id, label +FROM civicrm_option_value +WHERE option_group_id = %1"; + $params = array( + 1 => array($optionGroupID, 'Integer'), + ); + $dao = CRM_Core_DAO::executeQuery($query, $params); + $optionValue = array(); + while ($dao->fetch()) { + $optionValue[$dao->id] = $dao->label; + } + asort($optionValue, SORT_STRING | SORT_FLAG_CASE | SORT_NATURAL); + + $i = 1; + foreach ($optionValue as $key => $_) { + $clause[] = "WHEN $key THEN $i"; + $i++; + } + + $when = implode(' ', $clause); + $sql = " +UPDATE civicrm_option_value +SET weight = CASE id +$when +END +WHERE option_group_id = %1"; + + $dao = CRM_Core_DAO::executeQuery($sql, $params); + } + /** * Browse all custom group fields. * @@ -232,6 +273,9 @@ WHERE option_group_id = %1"; // no browse for edit/update/view $this->edit($action); } + else if ($action & CRM_Core_Action::MAP) { + $this->alphabetize(); + } else { $this->browse(); } diff --git a/templates/CRM/Custom/Page/Option.tpl b/templates/CRM/Custom/Page/Option.tpl index 7cd373f67d..68463ef816 100644 --- a/templates/CRM/Custom/Page/Option.tpl +++ b/templates/CRM/Custom/Page/Option.tpl @@ -157,6 +157,7 @@ {/literal} -- 2.25.1