public static function &stateProvinceForCountry($countryID, $field = 'name') { static $_cache = NULL; $cacheKey = "{$countryID}_{$field}"; if (!$_cache) { $_cache = array(); } if (!empty($_cache[$cacheKey])) { return $_cache[$cacheKey]; } $query = "\nSELECT civicrm_state_province.{$field} name, civicrm_state_province.id id\n FROM civicrm_state_province\nWHERE country_id = %1\nORDER BY name"; $params = array(1 => array($countryID, 'Integer')); $dao = CRM_Core_DAO::executeQuery($query, $params); $result = array(); while ($dao->fetch()) { $result[$dao->id] = $dao->name; } // localise the stateProvince names if in an non-en_US locale $config = CRM_Core_Config::singleton(); global $tsLocale; if ($tsLocale != '' and $tsLocale != 'en_US') { $i18n = CRM_Core_I18n::singleton(); $i18n->localizeArray($result, array('context' => 'province')); $result = CRM_Utils_Array::asort($result); } $_cache[$cacheKey] = $result; CRM_Utils_Hook::buildStateProvinceForCountry($countryID, $result); return $result; }