/** * Process the form when submitted * * @return void * @access public */ public function postProcess() { $params = $this->controller->exportValues($this->_name); $tableName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $this->_values['custom_group_id'], 'table_name'); $singleValueOps = array('Text', 'Select', 'Radio', 'Autocomplete-Select'); $mutliValueOps = array('CheckBox', 'Multi-Select', 'AdvMulti-Select'); $srcHtmlType = $this->_values['html_type']; $dstHtmlType = $params['dst_html_type']; $customField = new CRM_Core_DAO_CustomField(); $customField->id = $this->_id; $customField->find(TRUE); if ($dstHtmlType == 'Text' && in_array($srcHtmlType, array('Select', 'Radio', 'Autocomplete-Select'))) { $customField->option_group_id = "NULL"; CRM_Core_BAO_CustomField::checkOptionGroup($this->_values['option_group_id']); } if (in_array($srcHtmlType, $mutliValueOps) && in_array($dstHtmlType, $singleValueOps)) { $this->flattenToFirstValue($tableName, $this->_values['column_name']); } elseif (in_array($srcHtmlType, $singleValueOps) && in_array($dstHtmlType, $mutliValueOps)) { $this->firstValueToFlatten($tableName, $this->_values['column_name']); } $customField->html_type = $dstHtmlType; $customField->save(); // Reset cache for custom fields CRM_Core_BAO_Cache::deleteGroup('contact fields'); CRM_Core_Session::setStatus(ts('Input type of custom field \'%1\' has been successfully changed to \'%2\'.', array(1 => $this->_values['label'], 2 => $dstHtmlType))); }