$state) { $valid = array_key_exists(strtolower(trim($state)), array_change_key_case(array_flip(CRM_Core_PseudoConstant::stateProvinceAbbreviation()), CASE_LOWER) ) || array_key_exists(strtolower(trim($state)), array_change_key_case(array_flip(CRM_Core_PseudoConstant::stateProvince()), CASE_LOWER) ); if (!$valid) { break; } } return $valid; case 'Country': //fix multi select country, CRM-3437 $valid = FALSE; $mulValues = explode(',', $value); foreach ($mulValues as $key => $country) { $valid = array_key_exists(strtolower(trim($country)), array_change_key_case(array_flip(CRM_Core_PseudoConstant::countryIsoCode()), CASE_LOWER) ) || array_key_exists(strtolower(trim($country)), array_change_key_case(array_flip(CRM_Core_PseudoConstant::country()), CASE_LOWER) ); if (!$valid) { break; } } return $valid; case 'Link': return CRM_Utils_Rule::url($value); } return FALSE; } /** * Given a 'civicrm' type string, return the mysql data store area * * @param string $type * The civicrm type string. * * @return the mysql data store placeholder * @static */ public static function typeToField($type) { switch ($type) { case 'String': case 'File': return 'char_data'; case 'Boolean': case 'Int': case 'StateProvince': case 'Country': case 'Auto-complete': return 'int_data'; case 'Float': return 'float_data'; case 'Money': return 'decimal_data'; case 'Memo': return 'memo_data'; case 'Date': return 'date_data'; case 'Link': return 'char_data'; default: return NULL; } } /** * @param $formValues */ public static function fixFieldValueOfTypeMemo(&$formValues) { if (empty($formValues)) { return NULL; } foreach (array_keys($formValues) as $key) { if (substr($key, 0, 7) != 'custom_') { continue; } elseif (empty($formValues[$key])) { continue; } $htmlType = CRM_Core_DAO::getFieldValue('CRM_Core_BAO_CustomField', substr($key, 7), 'html_type' ); if (($htmlType == 'TextArea') && !((substr($formValues[$key], 0, 1) == '%') || (substr($formValues[$key], -1, 1) == '%') ) ) { $formValues[$key] = '%' . $formValues[$key] . '%'; } } } /** * Delet option value give an option value and custom group id * * @param int $customValueID * Custom value ID. * @param int $customGroupID * Custom group ID. * * @return void * @static */ public static function deleteCustomValue($customValueID, $customGroupID) { // first we need to find custom value table, from custom group ID $tableName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $customGroupID, 'table_name'); // delete custom value from corresponding custom value table $sql = "DELETE FROM {$tableName} WHERE id = {$customValueID}"; CRM_Core_DAO::executeQuery($sql); CRM_Utils_Hook::custom('delete', $customGroupID, NULL, $customValueID ); } }