From 3d96c53b303cfd720a44ad6f825eb94f7c4a3ca3 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 20 Nov 2013 19:07:50 +0100 Subject: [PATCH] - Function to increment the customer number automatically - Added fields to client, reseller and website to show when a record was added and by which user --- install/sql/incremental/upd_0060.sql | 8 +++ install/sql/ispconfig3.sql | 7 +++ interface/web/client/client_edit.php | 40 +++++++++++++++ interface/web/client/form/client.tform.php | 22 ++++++++ interface/web/client/form/reseller.tform.php | 50 +++++++++++++++++++ interface/web/client/lib/lang/en_client.lng | 2 + interface/web/client/lib/lang/en_reseller.lng | 6 +++ interface/web/client/reseller_edit.php | 19 +++++++ .../client/templates/client_edit_address.htm | 8 +++ .../templates/reseller_edit_address.htm | 8 +++ .../client/templates/reseller_edit_limits.htm | 12 +++++ interface/web/sites/form/web_domain.tform.php | 22 ++++++++ .../web/sites/lib/lang/en_web_domain.lng | 2 + .../sites/templates/web_domain_advanced.htm | 8 +++ interface/web/sites/web_domain_edit.php | 4 +- 15 files changed, 217 insertions(+), 1 deletion(-) create mode 100644 install/sql/incremental/upd_0060.sql diff --git a/install/sql/incremental/upd_0060.sql b/install/sql/incremental/upd_0060.sql new file mode 100644 index 000000000..64c9a0d64 --- /dev/null +++ b/install/sql/incremental/upd_0060.sql @@ -0,0 +1,8 @@ +ALTER TABLE `client` ADD `customer_no_template` VARCHAR( 255 ) NULL DEFAULT 'C[CUSTOMER_NO]' AFTER `ssh_rsa` , +ADD `customer_no_start` INT NOT NULL DEFAULT '1' AFTER `customer_no_template` , +ADD `customer_no_counter` INT NOT NULL DEFAULT '0' AFTER `customer_no_start` , +ADD `added_date` DATE NOT NULL default '0000-00-00' AFTER `customer_no_counter` , +ADD `added_by` VARCHAR( 255 ) NULL AFTER `added_date` ; +ALTER TABLE `web_domain` ADD `added_date` DATE NOT NULL default '0000-00-00' AFTER `rewrite_rules` , +ADD `added_by` VARCHAR( 255 ) NULL AFTER `added_date` ; +ALTER TABLE `sys_session` ADD `permanent` ENUM('n','y') NOT NULL DEFAULT 'n' AFTER `last_updated`; \ No newline at end of file diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 565db7e2a..77425fe73 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -232,6 +232,11 @@ CREATE TABLE `client` ( `tmp_data` mediumblob, `id_rsa` varchar(2000) NOT NULL DEFAULT '', `ssh_rsa` varchar(600) NOT NULL DEFAULT '', + `customer_no_template` varchar(255) DEFAULT 'C[CUSTOMER_NO]', + `customer_no_start` int(11) NOT NULL DEFAULT '1', + `customer_no_counter` int(11) NOT NULL DEFAULT '0', + `added_date` date NOT NULL DEFAULT '0000-00-00', + `added_by` varchar(255) DEFAULT NULL, PRIMARY KEY (`client_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; @@ -1796,6 +1801,8 @@ CREATE TABLE `web_domain` ( `proxy_directives` mediumtext, `last_quota_notification` date NULL default NULL, `rewrite_rules` mediumtext, + `added_date` date NOT NULL DEFAULT '0000-00-00', + `added_by` varchar(255) DEFAULT NULL, PRIMARY KEY (`domain_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php index efbf8ab65..b98a36804 100644 --- a/interface/web/client/client_edit.php +++ b/interface/web/client/client_edit.php @@ -171,6 +171,46 @@ class page_action extends tform_actions { $app->tpl->setVar('template_additional_list', $text); $app->tpl->setVar('app_module', 'client'); + + //* Set the 'customer no' default value + if($this->id == 0) { + + if($app->auth->is_admin()) { + //* Logged in User is admin + //* get the system config + $app->uses('getconf'); + $system_config = $app->getconf->get_global_config(); + if($system_config['misc']['customer_no_template'] != '') { + + //* Set customer no default + $customer_no = $app->functions->intval($system_config['misc']['customer_no_start']+$system_config['misc']['customer_no_counter']); + $customer_no_string = str_replace('[CUSTOMER_NO]',$customer_no,$system_config['misc']['customer_no_template']); + $app->tpl->setVar('customer_no',$customer_no_string); + + //* save new counter value + $system_config['misc']['customer_no_counter']++; + $system_config_str = $app->ini_parser->get_ini_string($system_config); + $app->db->datalogUpdate('sys_ini', "config = '".$app->db->quote($system_config_str)."'", 'sysini_id', 1); + } + } else { + //* Logged in user must be a reseller + //* get the record of the reseller + $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); + $reseller = $app->db->queryOneRecord("SELECT client.client_id, client.customer_no_template, client.customer_no_counter, client.customer_no_start FROM sys_group,client WHERE client.client_id = sys_group.client_id and sys_group.groupid = ".$client_group_id); + + if($reseller['customer_no_template'] != '') { + //* Set customer no default + $customer_no = $app->functions->intval($reseller['customer_no_start']+$reseller['customer_no_counter']); + $customer_no_string = str_replace('[CUSTOMER_NO]',$customer_no,$reseller['customer_no_template']); + $app->tpl->setVar('customer_no',$customer_no_string); + + //* save new counter value + $customer_no_counter = $app->functions->intval($reseller['customer_no_counter']+1); + $app->db->query("UPDATE client SET customer_no_counter = $customer_no_counter WHERE client_id = ".$app->functions->intval($reseller['client_id'])); + echo "UPDATE client SET customer_no_counter = $customer_no_counter WHERE client_id = ".$app->functions->intval($reseller['client_id']); + } + } + } parent::onShowEnd(); diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php index 16e68c01e..586977679 100644 --- a/interface/web/client/form/client.tform.php +++ b/interface/web/client/form/client.tform.php @@ -472,6 +472,28 @@ $form["tabs"]['address'] = array ( 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'added_date' => array ( + 'datatype' => 'DATE', + 'formtype' => 'TEXT', + 'default' => date($app->lng('conf_format_dateshort')), + 'value' => '', + 'separator' => '', + 'width' => '15', + 'maxlength' => '15', + 'rows' => '', + 'cols' => '' + ), + 'added_by' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => $_SESSION['s']['user']['username'], + 'value' => '', + 'separator' => '', + 'width' => '30', + 'maxlength' => '255', + 'rows' => '', + 'cols' => '' + ), //################################# // END Datatable fields //################################# diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php index fad0cd765..77e1f63a6 100644 --- a/interface/web/client/form/reseller.tform.php +++ b/interface/web/client/form/reseller.tform.php @@ -469,6 +469,28 @@ $form["tabs"]['address'] = array ( 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'added_date' => array ( + 'datatype' => 'DATE', + 'formtype' => 'TEXT', + 'default' => date($app->lng('conf_format_dateshort')), + 'value' => '', + 'separator' => '', + 'width' => '15', + 'maxlength' => '15', + 'rows' => '', + 'cols' => '' + ), + 'added_by' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => $_SESSION['s']['user']['username'], + 'value' => '', + 'separator' => '', + 'width' => '30', + 'maxlength' => '255', + 'rows' => '', + 'cols' => '' + ), //################################# // END Datatable fields //################################# @@ -1080,6 +1102,34 @@ $form["tabs"]['limits'] = array ( 'rows' => '', 'cols' => '' ), + 'customer_no_template' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-0\-\_\[\]]{0,50}$/', + 'errmsg'=> 'customer_no_template_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'customer_no_start' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'customer_no_counter' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), //################################# // END Datatable fields //################################# diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng index 7c4ee2688..ad268a787 100644 --- a/interface/web/client/lib/lang/en_client.lng +++ b/interface/web/client/lib/lang/en_client.lng @@ -152,4 +152,6 @@ $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; $wb['gender_f_txt'] = 'Ms.'; +$wb['added_by_txt'] = 'Added by'; +$wb['added_date_txt'] = 'Added date'; ?> diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng index 4076dd5cb..e58d4e3fc 100644 --- a/interface/web/client/lib/lang/en_reseller.lng +++ b/interface/web/client/lib/lang/en_reseller.lng @@ -150,4 +150,10 @@ $wb['canceled_txt'] = 'Canceled'; $wb['gender_m_txt'] = 'Mr.'; $wb['gender_f_txt'] = 'Ms.'; $wb['gender_txt'] = 'Title'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['added_by_txt'] = 'Added by'; +$wb['added_date_txt'] = 'Added date'; ?> diff --git a/interface/web/client/reseller_edit.php b/interface/web/client/reseller_edit.php index 6c67aee5d..20273b763 100644 --- a/interface/web/client/reseller_edit.php +++ b/interface/web/client/reseller_edit.php @@ -139,6 +139,25 @@ class page_action extends tform_actions { } $app->tpl->setVar('template_additional_list', $text); + + //* Set the 'customer no' default value + if($this->id == 0) { + //* get the system config + $app->uses('getconf'); + $system_config = $app->getconf->get_global_config(); + if($system_config['misc']['customer_no_template'] != '') { + + //* Set customer no default + $customer_no = $app->functions->intval($system_config['misc']['customer_no_start']+$system_config['misc']['customer_no_counter']); + $customer_no_string = str_replace('[CUSTOMER_NO]',$customer_no,$system_config['misc']['customer_no_template']); + $app->tpl->setVar('customer_no',$customer_no_string); + + //* save new counter value + $system_config['misc']['customer_no_counter']++; + $system_config_str = $app->ini_parser->get_ini_string($system_config); + $app->db->datalogUpdate('sys_ini', "config = '".$app->db->quote($system_config_str)."'", 'sysini_id', 1); + } + } parent::onShowEnd(); diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm index 018d1d5b6..839282072 100644 --- a/interface/web/client/templates/client_edit_address.htm +++ b/interface/web/client/templates/client_edit_address.htm @@ -135,6 +135,14 @@
+
+
+ + +
+
+ +
diff --git a/interface/web/client/templates/reseller_edit_address.htm b/interface/web/client/templates/reseller_edit_address.htm index 4ffd78a83..86acccd82 100644 --- a/interface/web/client/templates/reseller_edit_address.htm +++ b/interface/web/client/templates/reseller_edit_address.htm @@ -135,6 +135,14 @@
+
+
+ + +
+
+ +
diff --git a/interface/web/client/templates/reseller_edit_limits.htm b/interface/web/client/templates/reseller_edit_limits.htm index 6a9336925..a115dc836 100644 --- a/interface/web/client/templates/reseller_edit_limits.htm +++ b/interface/web/client/templates/reseller_edit_limits.htm @@ -29,6 +29,18 @@
+
+
+ + +
+
+ + +
+
+ +
{tmpl_var name='web_limits_txt'}
diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php index 9907956f6..59ecba440 100644 --- a/interface/web/sites/form/web_domain.tform.php +++ b/interface/web/sites/form/web_domain.tform.php @@ -717,6 +717,28 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 'width' => '30', 'maxlength' => '255' ), + 'added_date' => array ( + 'datatype' => 'DATE', + 'formtype' => 'TEXT', + 'default' => date($app->lng('conf_format_dateshort')), + 'value' => '', + 'separator' => '', + 'width' => '15', + 'maxlength' => '15', + 'rows' => '', + 'cols' => '' + ), + 'added_by' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => $_SESSION['s']['user']['username'], + 'value' => '', + 'separator' => '', + 'width' => '30', + 'maxlength' => '255', + 'rows' => '', + 'cols' => '' + ), //################################# // ENDE Datatable fields //################################# diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng index ad32a9000..b35236ce7 100644 --- a/interface/web/sites/lib/lang/en_web_domain.lng +++ b/interface/web/sites/lib/lang/en_web_domain.lng @@ -121,4 +121,6 @@ $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; $wb['configuration_error_txt'] = "CONFIGURATION ERROR"; $wb['variables_txt'] = 'Variables'; +$wb['added_by_txt'] = 'Added by'; +$wb['added_date_txt'] = 'Added date'; ?> \ No newline at end of file diff --git a/interface/web/sites/templates/web_domain_advanced.htm b/interface/web/sites/templates/web_domain_advanced.htm index 3cc7d2e81..0afe57a71 100644 --- a/interface/web/sites/templates/web_domain_advanced.htm +++ b/interface/web/sites/templates/web_domain_advanced.htm @@ -16,6 +16,14 @@
+ + +
+
+ + +
+
diff --git a/interface/web/sites/web_domain_edit.php b/interface/web/sites/web_domain_edit.php index e1a8611ff..ccb356c26 100644 --- a/interface/web/sites/web_domain_edit.php +++ b/interface/web/sites/web_domain_edit.php @@ -775,8 +775,10 @@ class page_action extends tform_actions { $php_open_basedir = str_replace("[website_path]", $document_root, $web_config["php_open_basedir"]); $php_open_basedir = $app->db->quote(str_replace("[website_domain]", $web_rec['domain'], $php_open_basedir)); $htaccess_allow_override = $app->db->quote($web_config["htaccess_allow_override"]); + $added_date = date($app->lng('conf_format_dateshort')); + $added_by = $app->db->quote($_SESSION['s']['user']['username']); - $sql = "UPDATE web_domain SET system_user = '$system_user', system_group = '$system_group', document_root = '$document_root', allow_override = '$htaccess_allow_override', php_open_basedir = '$php_open_basedir' WHERE domain_id = ".$this->id; + $sql = "UPDATE web_domain SET system_user = '$system_user', system_group = '$system_group', document_root = '$document_root', allow_override = '$htaccess_allow_override', php_open_basedir = '$php_open_basedir', added_date = '$added_date', added_by = '$added_by' WHERE domain_id = ".$this->id; $app->db->query($sql); } -- GitLab