From 9e39099940a94c91b9bd09aa1b241da72b0c482e Mon Sep 17 00:00:00 2001 From: monishdeb Date: Thu, 24 Sep 2015 18:48:18 +0530 Subject: [PATCH] CRM-17270 fix - Custom country multi-select fields used in a Drupal View display the four digit ID number instead of the name of the country https://issues.civicrm.org/jira/browse/CRM-17270 --- CRM/Core/BAO/CustomField.php | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/CRM/Core/BAO/CustomField.php b/CRM/Core/BAO/CustomField.php index 7063107b6f..3d5b8b6eaf 100644 --- a/CRM/Core/BAO/CustomField.php +++ b/CRM/Core/BAO/CustomField.php @@ -1265,19 +1265,22 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { case 'Select State/Province': case 'Multi-Select State/Province': - $display = NULL; - $option = CRM_Core_PseudoConstant::stateProvince(FALSE, FALSE); - foreach ((array) $value as $data) { - $display .= $display ? ', ' . $option[$data] : $option[$data]; - } - break; - case 'Select Country': case 'Multi-Select Country': - $countries = CRM_Core_PseudoConstant::country(FALSE, FALSE); + if (strstr($html_type, 'State/Province')) { + $option = CRM_Core_PseudoConstant::stateProvince(FALSE, FALSE); + } + else { + $option = CRM_Core_PseudoConstant::country(FALSE, FALSE); + } + // process multi-select state/country field values + if (!is_array($value)) { + $value = explode(CRM_Core_DAO::VALUE_SEPARATOR, $value); + } + $display = NULL; - foreach ((array) $value as $countryID) { - $display .= $display ? ', ' . $countries[$countryID] : $countries[$countryID]; + foreach ($value as $data) { + $display .= ($display && !empty($option[$data])) ? ', ' . $option[$data] : $option[$data]; } break; -- 2.25.1