}
$transaction = new CRM_Core_Transaction();
- // create any option group & values if required
- if ($params['html_type'] != 'Text' &&
- in_array($params['data_type'], array(
- 'String',
- 'Int',
- 'Float',
- 'Money',
- ))
- ) {
- $tableName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup',
- $params['custom_group_id'],
- 'table_name'
- );
+ $htmlType = CRM_Utils_Array::value('html_type', $params);
+ $dataType = CRM_Utils_Array::value('data_type', $params);
+ $allowedOptionTypes = array('String', 'Int', 'Float', 'Money');
+ // create any option group & values if required
+ if ($htmlType != 'Text' && in_array($dataType, $allowedOptionTypes)
+ ) {
//CRM-16659: if option_value then create an option group for this custom field.
if ($params['option_type'] == 1 && (empty($params['option_group_id']) || !empty($params['option_value']))) {
// first create an option group for this custom group
$optionGroup->name = "{$columnName}_" . date('YmdHis');
$optionGroup->title = $params['label'];
$optionGroup->is_active = 1;
- $optionGroup->data_type = $params['data_type'];
+ $optionGroup->data_type = $dataType;
$optionGroup->save();
$params['option_group_id'] = $optionGroup->id;
if (!empty($params['option_value']) && is_array($params['option_value'])) {
$optionValue->option_group_id = $optionGroup->id;
$optionValue->label = $params['option_label'][$k];
$optionValue->name = CRM_Utils_String::titleToVar($params['option_label'][$k]);
- switch ($params['data_type']) {
+ switch ($dataType) {
case 'Money':
$optionValue->value = CRM_Utils_Rule::cleanMoney($v);
break;
if (empty($params['default_value'])) {
//don't insert only value separator as default value, CRM-4579
$defaultValue = self::getOptionGroupDefault($params['option_group_id'],
- $params['html_type']
+ $htmlType
);
if (!CRM_Utils_System::isNull(explode(CRM_Core_DAO::VALUE_SEPARATOR,
}
// since we need to save option group id :)
- if (!isset($params['attributes']) && strtolower($params['html_type']) == 'textarea') {
+ if (!isset($params['attributes']) && strtolower($htmlType) == 'textarea') {
$params['attributes'] = 'rows=4, cols=60';
}
$this->assertEquals($attachment['id'], $result[$cfId]);
}
+ public function testUpdateCustomField() {
+ $customGroup = $this->customGroupCreate(array('extends' => 'Individual'));
+ $params = array('id' => $customGroup['id'], 'is_active' => 0);
+ $result = $this->callAPISuccess('CustomGroup', 'create', $params);
+ $result = array_shift($result['values']);
+
+ $this->assertEquals(0, $result['is_active']);
+
+ $this->customGroupDelete($customGroup['id']);
+ }
+
/**
* @param $getFieldsResult
*