Skip to content

Commit

Permalink
dev/core#81 (NFC) Fix warnings in custom field create
Browse files Browse the repository at this point in the history
  • Loading branch information
mickadoo committed Apr 26, 2018
1 parent d128501 commit 12b07b2
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 17 deletions.
27 changes: 10 additions & 17 deletions CRM/Core/BAO/CustomField.php
Original file line number Diff line number Diff line change
Expand Up @@ -193,29 +193,22 @@ public static function create(&$params) {
}

$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 = new CRM_Core_DAO_OptionGroup();
$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'])) {
Expand All @@ -225,7 +218,7 @@ public static function create(&$params) {
$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;
Expand Down Expand Up @@ -262,7 +255,7 @@ public static function create(&$params) {
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,
Expand All @@ -275,7 +268,7 @@ public static function create(&$params) {
}

// 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';
}

Expand Down
11 changes: 11 additions & 0 deletions tests/phpunit/api/v3/CustomFieldTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -544,6 +544,17 @@ public function testCustomFileField() {
$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
*
Expand Down

0 comments on commit 12b07b2

Please sign in to comment.