diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php index d83ec0d3d78a89bebedb1e1011158ed22aae7b5c..0053be26634e0b8e172d143c48b7eb7653b541de 100644 --- a/interface/lib/classes/tform_actions.inc.php +++ b/interface/lib/classes/tform_actions.inc.php @@ -141,6 +141,8 @@ class tform_actions { $app->tform->datalogSave('UPDATE', $this->id, $this->oldDataRecord, $new_data_record); unset($new_data_record); unset($old_data_record); + + $this->onAfterDatalogSave(); } if($_REQUEST["next_tab"] == '') { @@ -222,6 +224,7 @@ class tform_actions { $new_data_record = $app->tform->getDataRecord($this->id); $app->tform->datalogSave('INSERT', $this->id, array(), $new_data_record); unset($new_data_record); + $this->onAfterDatalogSave(true); } @@ -264,21 +267,19 @@ class tform_actions { } function onBeforeUpdate() { - global $app, $conf; } function onBeforeInsert() { - global $app, $conf; } function onAfterUpdate() { - global $app, $conf; } function onAfterInsert() { - global $app, $conf; } + function onAfterDatalogSave($insert = false) { + } /** * Function called on data insert or update error @@ -297,7 +298,7 @@ class tform_actions { */ function onDelete() { global $app, $conf, $list_def_file, $tform_def_file; - + // Check CSRF Token $app->auth->csrf_token_check('GET'); diff --git a/interface/web/mail/spamfilter_policy_edit.php b/interface/web/mail/spamfilter_policy_edit.php index 572a184020c28cef8f219fae5879a6231ff69fed..8b15f2fac6637e167a4e266232f1cfb21b4d8c55 100644 --- a/interface/web/mail/spamfilter_policy_edit.php +++ b/interface/web/mail/spamfilter_policy_edit.php @@ -49,7 +49,9 @@ $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); class page_action extends tform_actions { - + + private $record_has_changed = false; + function onShowNew() { global $app; @@ -87,30 +89,32 @@ class page_action extends tform_actions { parent::onSubmit(); } - + function onAfterUpdate() { - global $app; - - $record_has_changed = false; + $this->record_has_changed = false; foreach($this->dataRecord as $key => $val) { if(isset($this->oldDataRecord[$key]) && @$this->oldDataRecord[$key] != $val) { // Record has changed - $record_has_changed = true; + $this->record_has_changed = true; } } + } - if($record_has_changed){ + function onAfterDatalogSave($insert = false) { + global $app; + + if(!$insert && $this->record_has_changed){ $spamfilter_users = $app->db->queryAllRecords("SELECT * FROM spamfilter_users WHERE policy_id = ?", intval($this->id)); if(is_array($spamfilter_users) && !empty($spamfilter_users)){ foreach($spamfilter_users as $spamfilter_user){ $app->db->datalogUpdate('spamfilter_users', $spamfilter_user, 'id', $spamfilter_user["id"], true); - + // check if this is an email domain if(substr($spamfilter_user['email'],0,1) == '@') { $domain = substr($spamfilter_user['email'],1); $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source LIKE ? OR destination LIKE ?", "%@" . $domain, "%@" . $domain); - + // Force-update aliases and forwards if(is_array($forwardings)) { foreach($forwardings as $rec) { @@ -118,7 +122,7 @@ class page_action extends tform_actions { } } } - + } } }