interface/lib/classes/db_mysql.inc.php | ●●●●● patch | view | raw | blame | history | |
interface/lib/classes/tform.inc.php | ●●●●● patch | view | raw | blame | history | |
interface/lib/classes/tform_actions.inc.php | ●●●●● patch | view | raw | blame | history | |
interface/web/mail/mail_domain_del.php | ●●●●● patch | view | raw | blame | history |
interface/lib/classes/db_mysql.inc.php
@@ -4,7 +4,7 @@ * * @author Till Brehm * @copyright 2005, Till Brehm, projektfarm Gmbh * @version 0.1 * @version 0.2 * @package ISPConfig */ /* @@ -183,7 +183,8 @@ return $out; } // deprecated /* public function insert($tablename, $form, $debug = 0) { if(is_array($form)){ @@ -201,6 +202,7 @@ } } // Deprecated public function update($tablename, $form, $bedingung, $debug = 0) { if(is_array($form)){ @@ -214,6 +216,7 @@ if($debug == 1){ echo 'mySQL Error Message: '.$this->errorMessage; } } } */ //** Function to fill the datalog with a full differential record. public function datalogSave($db_table, $action, $primary_field, $primary_id, $record_old, $record_new) { @@ -231,7 +234,7 @@ if(is_array($record_old) && count($record_old) > 0) { foreach($record_old as $key => $val) { if(isset($record_new[$key]) && $record_new[$key] != $val) { if(!isset($record_new[$key]) || $record_new[$key] != $val) { // Record has changed $diffrec_full['old'][$key] = $val; $diffrec_full['new'][$key] = $record_new[$key]; @@ -259,6 +262,7 @@ $server_id = (isset($record_old["server_id"]) && $record_old["server_id"] > 0)?$record_old["server_id"]:0; if(isset($record_new["server_id"])) $server_id = $record_new["server_id"]; if($diff_num > 0) { $diffstr = $app->db->quote(serialize($diffrec_full)); $username = $app->db->quote($_SESSION["s"]["user"]["username"]); @@ -274,7 +278,20 @@ return true; } //** Updates a record and saves the cahnges into the datalog //** Updates a record and saves the changes into the datalog public function datalogInsert($tablename, $insert_data, $index_field) { global $app; $old_rec = array(); $this->query("INSERT INTO $tablename $insert_data"); $index_value = $this->insertID(); $new_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'"); $this->datalogSave($tablename, 'INSERT', $index_field, $index_value, $old_rec, $new_rec); return true; } //** Updates a record and saves the changes into the datalog public function datalogUpdate($tablename, $update_data, $index_field, $index_value) { global $app; @@ -285,6 +302,20 @@ return true; } //** Deletes a record and saves the changes into the datalog public function datalogDelete($tablename, $index_field, $index_value) { global $app; $old_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'"); $this->query("DELETE FROM $tablename WHERE $index_field = '$index_value'"); $new_rec = array(); $this->datalogSave($tablename, 'DELETE', $index_field, $index_value, $old_rec, $new_rec); return true; } public function closeConn() { @@ -305,14 +336,18 @@ } } /* public function delete() { } */ /* public function Transaction($action) { //action = begin, commit oder rollback } */ /** Creates a database table with the following format for the $columns array * <code> @@ -327,6 +362,8 @@ * option => unique | primary | index) * </code> */ public function createTable($table_name, $columns) { $index = ''; interface/lib/classes/tform.inc.php
@@ -903,7 +903,8 @@ if(is_array($record_old) && count($record_old) > 0) { foreach($record_old as $key => $val) { if(isset($record_new[$key]) && $record_new[$key] != $val) { //if(isset($record_new[$key]) && $record_new[$key] != $val) { if(!isset($record_new[$key]) || $record_new[$key] != $val) { // Record has changed $diffrec_full['old'][$key] = $val; $diffrec_full['new'][$key] = $record_new[$key]; interface/lib/classes/tform_actions.inc.php
@@ -301,6 +301,8 @@ //$this->dataRecord = $app->db->queryOneRecord("SELECT * FROM ".$liste["table"]." WHERE ".$liste["table_idx"]." = ".$this->id); $this->dataRecord = $app->tform->getDataRecord($this->id); $this->onBeforeDelete(); // Saving record to datalog when db_history enabled if($app->tform->formDef["db_history"] == 'yes') { //$old_data_record = $app->tform->getDataRecord($this->id); @@ -337,6 +339,10 @@ } function onBeforeDelete() { global $app, $conf; } function onAfterDelete() { global $app, $conf; } interface/web/mail/mail_domain_del.php
@@ -48,7 +48,44 @@ exit; } $app->uses("tform_actions"); $app->tform_actions->onDelete(); // Loading classes $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); class page_action extends tform_actions { function onBeforeDelete() { global $app; $conf; $domain = $this->dataRecord['domain']; // Before we delete the email domain, // we will delete all depending records. // Delete all forwardings where the osurce or destination belongs to this domain $records = $app->db->queryAllRecords("SELECT forwarding_id as id FROM mail_forwarding WHERE source like '%@".$app->db->quote($domain)."' OR destination like '%@".$app->db->quote($domain)."'"); foreach($records as $rec) { $app->db->datalogDelete('mail_forwarding','forwarding_id',$rec['id']); } // Delete all fetchmail accounts where destination belongs to this domain $records = $app->db->queryAllRecords("SELECT mailget_id as id FROM mail_get WHERE destination like '%@".$app->db->quote($domain)."'"); foreach($records as $rec) { $app->db->datalogDelete('mail_get','mailget_id',$rec['id']); } // Delete all mailboxes where destination belongs to this domain $records = $app->db->queryAllRecords("SELECT mailuser_id as id FROM mail_user WHERE email like '%@".$app->db->quote($domain)."'"); foreach($records as $rec) { $app->db->datalogDelete('mail_user','mailuser_id',$rec['id']); } } } $page = new page_action; $page->onDelete(); ?>