$indexExist = FALSE;
//as during create if field is_searchable we had created index.
- if (CRM_Utils_Array::value('id', $params)) {
+ if (!empty($params['id'])) {
$indexExist = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField', $params['id'], 'is_searchable');
}
}
}
else {
- if (CRM_Utils_Array::value('default_option', $params)
- && isset($params['option_value'][$params['default_option']])
+ if (!empty($params['default_option']) && isset($params['option_value'][$params['default_option']])
) {
$params['default_value'] = $params['option_value'][$params['default_option']];
}
}
// check for orphan option groups
- if (CRM_Utils_Array::value('option_group_id', $params)) {
- if (CRM_Utils_Array::value('id', $params)) {
+ if (!empty($params['option_group_id'])) {
+ if (!empty($params['id'])) {
self::fixOptionGroups($params['id'], $params['option_group_id']);
}
// if we dont have a default value
// retrive it from one of the other custom fields which use this option group
- if (!CRM_Utils_Array::value('default_value', $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']
$customField->find(TRUE);
//create/drop the index when we toggle the is_searchable flag
- if (CRM_Utils_Array::value('id', $params)) {
+ if (!empty($params['id'])) {
self::createField($customField, 'modify', $indexExist);
}
else {
foreach ($fields as $id => $values) {
// for now we should not allow multiple fields in profile / export etc, hence unsetting
if (!$search &&
- (CRM_Utils_Array::value('is_multiple', $values) && !$withMultiple)
+ (!empty($values['is_multiple']) && !$withMultiple)
) {
continue;
}
}
$field = self::getFieldObject($fieldId);
-
+
// Custom field HTML should indicate group+field name
$groupName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $field->custom_group_id);
$dataCrmCustomVal = $groupName.':'.$field->name;
$dataCrmCustomAttr = 'data-crm-custom="'.$dataCrmCustomVal.'"';
$field->attributes .= $dataCrmCustomAttr;
-
+
// Fixed for Issue CRM-2183
if ($field->html_type == 'TextArea' && $search) {
$field->html_type = 'Text';
}
+ // FIXME: Why are select state/country separate widget types?
+ if (in_array($field->html_type, array('Select', 'Multi-Select', 'Select State/Province', 'Multi-Select State/Province', 'Select Country', 'Multi-Select Country'))) {
+ $selectAttributes = array(
+ 'data-crm-custom' => $dataCrmCustomVal,
+ 'class' => 'crm-select2',
+ );
+ if (strpos($field->html_type, 'Multi') === 0) {
+ $selectAttributes['multiple'] = 'multiple';
+ }
+ }
+ // Add data so popup link. Normally this is handled by CRM_Core_Form->addSelect
+ if (in_array($field->html_type, array('Select', 'Multi-Select')) && !$search && CRM_Core_Permission::check('administer CiviCRM')) {
+ $selectAttributes += array(
+ 'data-api-entity' => 'contact', // FIXME: This works because the getoptions api isn't picky about custom fields, but it's WRONG
+ 'data-api-field' => 'custom_' . $field->id,
+ 'data-option-edit-path' => 'civicrm/admin/options/' . CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', $field->option_group_id),
+ );
+ }
+
if (!isset($label)) {
$label = $field->label;
}
'timeFormat' => $field->time_format,
'startOffset' => $field->start_date_years,
'endOffset' => $field->end_date_years,
- 'data-crm-custom' => $dataCrmCustomVal,
+ 'data-crm-custom' => $dataCrmCustomVal,
));
}
break;
foreach ($customOption as $v => $l) {
$choice[] = $qf->createElement('radio', NULL, '', $l, (string)$v, $field->attributes);
}
- $qf->addGroup($choice, $elementName, $label);
+ $group = $qf->addGroup($choice, $elementName, $label);
}
else {
$choice[] = $qf->createElement('radio', NULL, '', ts('Yes'), '1', $field->attributes);
$choice[] = $qf->createElement('radio', NULL, '', ts('No'), '0', $field->attributes);
- $qf->addGroup($choice, $elementName, $label);
+ $group = $qf->addGroup($choice, $elementName, $label);
}
if ($useRequired && !$search) {
$qf->addRule($elementName, ts('%1 is a required field.', array(1 => $label)), 'required');
}
+ else {
+ $group->setAttribute('unselectable', TRUE);
+ }
break;
case 'Select':
array(
'' => ts('- select -')) + $selectOption,
$useRequired && !$search,
- $dataCrmCustomAttr
+ $selectAttributes
);
break;
'size' => 5,
'style' => '',
'class' => 'advmultiselect',
- 'data-crm-custom' => $dataCrmCustomVal,
+ 'data-crm-custom' => $dataCrmCustomVal,
)
);
) {
$selectOption['CiviCRM_OP_OR'] = ts('Select to match ANY; unselect to match ALL');
}
- $qf->addElement('select', $elementName, $label, $selectOption, array('size' => '5', 'multiple', 'data-crm-custom' => $dataCrmCustomVal));
+ $qf->addElement('select', $elementName, $label, $selectOption, $selectAttributes);
if ($useRequired && !$search) {
$qf->addRule($elementName, ts('%1 is a required field.', array(1 => $label)), 'required');
$stateOption = array('' => ts('- select -')) + CRM_Core_PseudoConstant::stateProvince();
$qf->add('select', $elementName, $label, $stateOption,
$useRequired && !$search,
- $dataCrmCustomAttr
+ $selectAttributes
);
$qf->_stateCountryMap['state_province'][] = $elementName;
break;
//Add Multi-select State/Province
$stateOption = CRM_Core_PseudoConstant::stateProvince();
- $qf->addElement('select', $elementName, $label, $stateOption, array('size' => '5', 'multiple', 'data-crm-custom' => $dataCrmCustomVal));
+ $qf->addElement('select', $elementName, $label, $stateOption, $selectAttributes);
if ($useRequired && !$search) {
$qf->addRule($elementName, ts('%1 is a required field.', array(1 => $label)), 'required');
}
$countryOption = array('' => ts('- select -')) + CRM_Core_PseudoConstant::country();
$qf->add('select', $elementName, $label, $countryOption,
$useRequired && !$search,
- $dataCrmCustomAttr
+ $selectAttributes
);
$qf->_stateCountryMap['country'][] = $elementName;
break;
case 'Multi-Select Country':
//Add Country
$countryOption = CRM_Core_PseudoConstant::country();
- $qf->addElement('select', $elementName, $label, $countryOption, array('size' => '5', 'multiple', 'data-crm-custom' => $dataCrmCustomVal));
+ $qf->addElement('select', $elementName, $label, $countryOption, $selectAttributes);
if ($useRequired && !$search) {
$qf->addRule($elementName, ts('%1 is a required field.', array(1 => $label)), 'required');
}
if (is_array($customFieldExtend)) {
$customFieldExtend = $customFieldExtend[0];
}
-
+
if (in_array($customFieldExtend,
CRM_Contact_BAO_ContactType::subTypes()
)) {
}
// return if field is a 'code' field
- if (CRM_Utils_Array::value('is_view', $customFields[$customFieldId])) {
+ if (!empty($customFields[$customFieldId]['is_view'])) {
return;
}
$customOptionGroup[$cacheKey] = NULL;
}
- if (!CRM_Utils_Array::value($cacheKey, $customOptionGroup)) {
+ if (empty($customOptionGroup[$cacheKey])) {
$whereClause = '( g.is_active = 1 AND f.is_active = 1 )';
//support for single as well as array format.