tbrehm
2012-01-10 04aac94637c26e71a90ebdf5f139b0f2406f764e
Fixed: FS#1968 - Deleting mail filter via remote API does not delete associated Custom Rules entry
2 files modified
29 ■■■■■ changed files
interface/lib/plugins/mail_user_filter_plugin.inc.php 26 ●●●●● patch | view | raw | blame | history
interface/web/mail/mail_user_filter_del.php 3 ●●●●● patch | view | raw | blame | history
interface/lib/plugins/mail_user_filter_plugin.inc.php
@@ -46,7 +46,7 @@
        
        $app->plugin->registerEvent('mail:mail_user_filter:on_after_insert','mail_user_filter_plugin','mail_user_filter_edit');
        $app->plugin->registerEvent('mail:mail_user_filter:on_after_update','mail_user_filter_plugin','mail_user_filter_edit');
        $app->plugin->registerEvent('mail:mail_user_filter:on_after_delete','mail_user_filter_plugin','mail_user_filter_del');
        
    }
    
@@ -89,6 +89,30 @@
        
    }
    
    function mail_user_filter_del($event_name,$page_form) {
        global $app, $conf;
        $mailuser = $app->db->queryOneRecord("SELECT custom_mailfilter FROM mail_user WHERE mailuser_id = ".$page_form->dataRecord["mailuser_id"]);
        $skip = false;
        $lines = explode("\n",$mailuser['custom_mailfilter']);
        $out = '';
        foreach($lines as $line) {
            $line = trim($line);
            if($line == '### BEGIN FILTER_ID:'.$page_form->id) {
                $skip = true;
            }
            if($skip == false && $line != '') $out .= $line ."\n";
            if($line == '### END FILTER_ID:'.$page_form->id) {
                $skip = false;
            }
        }
        $out = mysql_real_escape_string($out);
        $app->db->datalogUpdate('mail_user', "custom_mailfilter = '$out'", 'mailuser_id', $page_form->dataRecord["mailuser_id"]);
    }
    /*
        private function to create the mail filter rules in maildrop or sieve format.
    */
interface/web/mail/mail_user_filter_del.php
@@ -51,6 +51,8 @@
class page_action extends tform_actions {
    
    /*
    //* Code moved to mailfilter plugin
    function onAfterDelete() {
        global $app, $conf;
        
@@ -74,6 +76,7 @@
        $app->db->datalogUpdate('mail_user', "custom_mailfilter = '$out'", 'mailuser_id', $this->dataRecord["mailuser_id"]);
    
    }
    */
    
}