Exemplo n.º 1
0
 static function createField($field, $operation, $indexExist = false)
 {
     require_once 'CRM/Core/BAO/CustomValueTable.php';
     $tableName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $field->custom_group_id, 'table_name');
     $params = array('table_name' => $tableName, 'operation' => $operation, 'name' => $field->column_name, 'type' => CRM_Core_BAO_CustomValueTable::fieldToSQLType($field->data_type, $field->text_length), 'required' => $field->is_required, 'searchable' => $field->is_searchable);
     if ($operation == 'delete') {
         $fkName = "{$tableName}_{$field->column_name}";
         if (strlen($fkName) >= 48) {
             $fkName = substr($fkName, 0, 32) . "_" . substr(md5($fkName), 0, 16);
         }
         $params['fkName'] = $fkName;
     }
     if ($field->data_type == 'Country' && $field->html_type == 'Select Country') {
         $params['fk_table_name'] = 'civicrm_country';
         $params['fk_field_name'] = 'id';
         $params['fk_attributes'] = 'ON DELETE SET NULL';
     } else {
         if ($field->data_type == 'Country' && $field->html_type == 'Multi-Select Country') {
             $params['type'] = 'varchar(255)';
         } else {
             if ($field->data_type == 'StateProvince' && $field->html_type == 'Select State/Province') {
                 $params['fk_table_name'] = 'civicrm_state_province';
                 $params['fk_field_name'] = 'id';
                 $params['fk_attributes'] = 'ON DELETE SET NULL';
             } else {
                 if ($field->data_type == 'StateProvince' && $field->html_type == 'Multi-Select State/Province') {
                     $params['type'] = 'varchar(255)';
                 } else {
                     if ($field->data_type == 'File') {
                         $params['fk_table_name'] = 'civicrm_file';
                         $params['fk_field_name'] = 'id';
                         $params['fk_attributes'] = 'ON DELETE SET NULL';
                     } else {
                         if ($field->data_type == 'ContactReference') {
                             $params['fk_table_name'] = 'civicrm_contact';
                             $params['fk_field_name'] = 'id';
                             $params['fk_attributes'] = 'ON DELETE SET NULL';
                         }
                     }
                 }
             }
         }
     }
     if ($field->default_value) {
         $params['default'] = "'{$field->default_value}'";
     }
     require_once 'CRM/Core/BAO/SchemaHandler.php';
     CRM_Core_BAO_SchemaHandler::alterFieldSQL($params, $indexExist);
 }