Commit 07ba8004 authored by tbrehm's avatar tbrehm
Browse files

Fixed: FS#1012 - Delete all records (domains, ftp users, etc.) of a client...

Fixed: FS#1012 - Delete all records (domains, ftp users, etc.) of a client when the client gets deleted.
parent 6e2a8dbc
...@@ -482,16 +482,15 @@ class db { ...@@ -482,16 +482,15 @@ class db {
public function tableInfo($table_name) { public function tableInfo($table_name) {
global $go_api,$go_info;
//* Tabellenfelder einlesen ? //* Tabellenfelder einlesen ?
if($rows = $go_api->db->queryAllRecords("SHOW FIELDS FROM $table_name")){ if($rows = $this->queryAllRecords("SHOW FIELDS FROM $table_name")){
foreach($rows as $row) { foreach($rows as $row) {
$name = $row[0]; $name = $row['Field'];
$default = $row[4]; $default = $row['Default'];
$key = $row[3]; $key = $row['Key'];
$extra = $row[5]; $extra = $row['Extra'];
$isnull = $row[2]; $isnull = $row['Null'];
$type = $row[1]; $type = $row['Type'];
$column = array('name' => $name, 'defaultValue' => $default); $column = array('name' => $name, 'defaultValue' => $default);
//$column["type"] = $type; //$column["type"] = $type;
......
...@@ -49,14 +49,71 @@ $app->uses('tpl,tform'); ...@@ -49,14 +49,71 @@ $app->uses('tpl,tform');
$app->load('tform_actions'); $app->load('tform_actions');
class page_action extends tform_actions { class page_action extends tform_actions {
function onDelete() {
global $app, $conf,$list_def_file,$tform_def_file;
if($_POST["confirm"] == 'yes') {
parent::onDelete();
} else {
$app->uses('tpl');
$app->tpl->newTemplate("form.tpl.htm");
$app->tpl->setInclude('content_tpl', 'templates/client_del.htm');
include_once($list_def_file);
// Loading tform framework
if(!is_object($app->tform)) $app->uses('tform');
// Load table definition from file
$app->tform->loadFormDef($tform_def_file);
$this->id = intval($_REQUEST["id"]);
$this->dataRecord = $app->tform->getDataRecord($this->id);
$client_id = intval($this->dataRecord['client_id']);
//$parent_client_id = intval($this->dataRecord['parent_client_id']);
//$parent_user = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE client_id = $parent_client_id");
$client_group = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = $client_id");
// Get all records (sub-clients, mail, web, etc....) of this client.
$tables = 'client,dns_rr,dns_soa,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_domain,web_traffic';
$tables_array = explode(',',$tables);
$client_group_id = intval($client_group['groupid']);
$table_list = array();
if($client_group_id > 1) {
foreach($tables_array as $table) {
if($table != '') {
$records = $app->db->queryAllRecords("SELECT * FROM $table WHERE sys_groupid = ".$client_group_id);
$number = count($records);
if($number > 0) $table_list[] = array('table' => $table."(".$number.")");
}
}
}
$app->tpl->setVar('id',$this->id);
$app->tpl->setLoop('records', $table_list);
//* load language file
$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_client_del.lng';
include($lng_file);
$app->tpl->setVar($wb);
$app->tpl_defaults();
$app->tpl->pparse();
}
}
function onAfterDelete() { function onAfterDelete() {
global $app, $conf; global $app, $conf;
$client_id = intval($this->dataRecord['client_id']); $client_id = intval($this->dataRecord['client_id']);
if($client_id > 0) { if($client_id > 0) {
// TODO: Delete all records (sub-clients, mail, web, etc....) of this client.
// remove the group of the client from the resellers group // remove the group of the client from the resellers group
$parent_client_id = intval($this->dataRecord['parent_client_id']); $parent_client_id = intval($this->dataRecord['parent_client_id']);
$parent_user = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE client_id = $parent_client_id"); $parent_user = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE client_id = $parent_client_id");
...@@ -68,6 +125,36 @@ class page_action extends tform_actions { ...@@ -68,6 +125,36 @@ class page_action extends tform_actions {
// delete the sys user(s) of the client // delete the sys user(s) of the client
$app->db->query("DELETE FROM sys_user WHERE client_id = $client_id"); $app->db->query("DELETE FROM sys_user WHERE client_id = $client_id");
// Delete all records (sub-clients, mail, web, etc....) of this client.
$tables = 'client,dns_rr,dns_soa,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_domain,web_traffic';
$tables_array = explode(',',$tables);
$client_group_id = intval($client_group['groupid']);
if($client_group_id > 1) {
foreach($tables_array as $table) {
if($table != '') {
$records = $app->db->queryAllRecords("SELECT * FROM $table WHERE sys_groupid = ".$client_group_id);
// find the primary ID of the table
$table_info = $app->db->tableInfo($table);
$index_field = '';
foreach($table_info as $tmp) {
if($tmp['option'] == 'primary') $index_field = $tmp['name'];
}
// Delete the records
if($index_field != '') {
if(is_array($records)) {
foreach($records as $rec) {
$app->db->datalogDelete($table, $index_field, $rec[$index_field]);
}
}
}
}
}
}
} }
} }
......
<?php
$wb["confirm_action_txt"] = 'Confirm action';
$wb["delete_explanation"] = 'This action will delete the following number of records associated with this client';
$wb["btn_save_txt"] = 'Delete the client';
$wb["btn_cancel_txt"] = 'Cancel without deleting the client';
?>
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_client_del">
<div class="pnl_formsarea">
<div id="OKMsg">
<tmpl_var name="delete_explanation">:<br /><br />
<tmpl_loop name="records">
<tmpl_var name="table">,
</tmpl_loop>
</div>
<input type="checkbox" name="confirm" value="yes" /> <b><tmpl_var name="confirm_action_txt"></b>
<input type="hidden" name="id" value="{tmpl_var name='id'}">
<div class="buttonHolder buttons">
<button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','client/client_del.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
<button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/client_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
</div>
</div>
</div>
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment