Files
crm.e5.pl/modules/EditCustomFields/EditCustomFields.php
2024-04-27 09:23:34 +02:00

187 lines
6.6 KiB
PHP
Executable File

<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
/*********************************************************************************
* SugarCRM is a customer relationship management program developed by
* SugarCRM, Inc. Copyright (C) 2004-2010 SugarCRM Inc.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License version 3 as published by the
* Free Software Foundation with the addition of the following permission added
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License along with
* this program; if not, see http://www.gnu.org/licenses or write to the Free
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*
* You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
* SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "Powered by
* SugarCRM" logo. If the display of the logo is not reasonably feasible for
* technical reasons, the Appropriate Legal Notices must display the words
* "Powered by SugarCRM".
********************************************************************************/
require_once('CustomFieldsTable.php');
require_once('CustomFieldsTableSchema.php');
require_once('FieldsMetaData.php');
define('CUSTOMFIELDSTABLE_CUSTOM_TABLE_SUFFIX', '_cstm');
class EditCustomFields
{
var $module_name;
function EditCustomFields($module_name)
{
$this->module_name = $module_name;
}
function _get_custom_tbl_name()
{
return strtolower($this->module_name)
. CUSTOMFIELDSTABLE_CUSTOM_TABLE_SUFFIX;
}
function module_custom_fields()
{
global $moduleList;
$ret_val = array();
$module_name = $this->module_name;
if(in_array($module_name, $moduleList))
{
$fields_meta_data = new FieldsMetaData();
$ret_val = $fields_meta_data->select_by_module($module_name);
}
return $ret_val;
}
function add_custom_field($name, $label, $data_type, $max_size,
$required_option, $default_value, $deleted, $ext1, $ext2, $ext3, $audited, $mass_update=0, $duplicate_merge=0, $reportable = true)
{
$module_name = $this->module_name;
$fields_meta_data = new FieldsMetaData();
$fields_meta_data->name = $name;
$fields_meta_data->label = $label;
$fields_meta_data->module = $module_name;
$fields_meta_data->data_type = $data_type;
$fields_meta_data->max_size = $max_size;
$fields_meta_data->required_option = $required_option;
$fields_meta_data->default_value = $default_value;
$fields_meta_data->deleted = $deleted;
$fields_meta_data->ext1 = $ext1;
$fields_meta_data->ext2 = $ext2;
$fields_meta_data->ext3 = $ext3;
$fields_meta_data->audited = $audited;
$fields_meta_data->duplicate_merge = $duplicate_merge;
$fields_meta_data->mass_update = $mass_update;
$fields_meta_date->reportable = $reportable;
$fields_meta_data->insert();
$custom_table_name = $this->_get_custom_tbl_name();
$custom_table_exists =
CustomFieldsTableSchema::custom_table_exists($custom_table_name);
$custom_fields_table_schema =
new CustomFieldsTableSchema($custom_table_name);
if(!$custom_table_exists)
{
$custom_fields_table_schema->create_table();
}
$result = $custom_fields_table_schema->add_column($name, $data_type,
$required_option, $default_value);
return $result;
}
function get_custom_field($id, &$name, &$label, &$data_type, &$max_size,
&$required_option, &$default_value, &$deleted, &$ext1, &$ext2, &$ext3, &$audited,&$duplicate_merge,&$reportable)
{
$fields_meta_data = new FieldsMetaData($id);
$name = $fields_meta_data->name;
$label = $fields_meta_data->label;
$data_type = $fields_meta_data->data_type;
$max_size = $fields_meta_data->max_size;
$required_option = $fields_meta_data->required_option;
$default_value = $fields_meta_data->default_value;
$deleted = $fields_meta_data->deleted;
$ext1 = $fields_meta_data->ext1;
$ext2 = $fields_meta_data->ext2;
$ext3 = $fields_meta_data->ext3;
$audited = $fields_meta_data->audited;
$duplicate_merge=$fields_meta_data->duplicate_merge;
$reportable = $fields_meta_data->reportable;
}
function edit_custom_field($id, $name, $label, $data_type, $max_size,
$required_option, $default_value, $deleted, $ext1, $ext2, $ext3, $audited,$duplicate_merge,$reportable)
{
$module_name = $this->module_name;
// update the meta data
$fields_meta_data = new FieldsMetaData();
$fields_meta_data->id = $id;
$fields_meta_data->name = $name;
$fields_meta_data->label = $label;
$fields_meta_data->module = $module_name;
$fields_meta_data->data_type = $data_type;
$fields_meta_data->max_size = $max_size;
$fields_meta_data->required_option = $required_option;
$fields_meta_data->default_value = $default_value;
$fields_meta_data->deleted = $deleted;
$fields_meta_data->ext1 = $ext1;
$fields_meta_data->ext2 = $ext2;
$fields_meta_data->ext3 = $ext3;
$fields_meta_data->audited=$audited;
$fields_meta_data->duplicate_merge=$duplicate_merge;
$fields_meta_data->reportable = $reportable;
$fields_meta_data->update();
// update the schema of the custom table
$custom_table_name = $this->_get_custom_tbl_name();
$custom_fields_table_schema =
new CustomFieldsTableSchema($custom_table_name);
$custom_fields_table_schema->modify_column($name, $data_type,
$required_option, $default_value);
}
function delete_custom_field($id)
{
$module_name = $this->module_name;
$fields_meta_data = new FieldsMetaData($id);
$column_name = $fields_meta_data->name;
$fields_meta_data->delete();
$custom_table_name = $this->_get_custom_tbl_name();
$custom_fields_table_schema =
new CustomFieldsTableSchema($custom_table_name);
$custom_fields_table_schema->drop_column($column_name);
}
}
?>