Marius Cramer
2013-11-14 b1a6a5a3991cec5cd08873b01376e45d0b247f18
interface/lib/plugins/mail_user_filter_plugin.inc.php
@@ -29,44 +29,44 @@
*/
class mail_user_filter_plugin {
   var $plugin_name = 'mail_user_filter_plugin';
   var $class_name = 'mail_user_filter_plugin';
   /*
       This function is called when the plugin is loaded
   */
   function onLoad() {
      global $app;
      /*
      Register for the events
      */
      $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');
      $app->plugin->registerEvent('mailuser:mail_user_filter:on_after_insert','mail_user_filter_plugin','mail_user_filter_edit');
      $app->plugin->registerEvent('mailuser:mail_user_filter:on_after_update','mail_user_filter_plugin','mail_user_filter_edit');
      $app->plugin->registerEvent('mailuser:mail_user_filter:on_after_delete','mail_user_filter_plugin','mail_user_filter_del');
      $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');
      $app->plugin->registerEvent('mailuser:mail_user_filter:on_after_insert', 'mail_user_filter_plugin', 'mail_user_filter_edit');
      $app->plugin->registerEvent('mailuser:mail_user_filter:on_after_update', 'mail_user_filter_plugin', 'mail_user_filter_edit');
      $app->plugin->registerEvent('mailuser:mail_user_filter:on_after_delete', 'mail_user_filter_plugin', 'mail_user_filter_del');
   }
   /*
      function to create the mail filter rule and insert it into the custom rules
      function to create the mail filter rule and insert it into the custom rules
      field when a new mail filter is added or modified.
   */
   function mail_user_filter_edit($event_name,$page_form) {
   function mail_user_filter_edit($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']);
      $lines = explode("\n", $mailuser['custom_mailfilter']);
      $out = '';
      $found = false;
      foreach($lines as $line) {
         $line = rtrim($line);
         if($line == '### BEGIN FILTER_ID:'.$page_form->id) {
@@ -79,27 +79,27 @@
            $skip = false;
         }
      }
      // We did not found our rule, so we add it now as first rule.
      if($found == false && $page_form->dataRecord["active"] == 'y') {
         $new_rule = $this->mail_user_filter_get_rule($page_form);
         $out = $new_rule . $out;
      }
      $out = $app->db->quote($out);
      $app->db->datalogUpdate('mail_user', "custom_mailfilter = '$out'", 'mailuser_id', $page_form->dataRecord["mailuser_id"]);
   }
   function mail_user_filter_del($event_name,$page_form) {
   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']);
      $lines = explode("\n", $mailuser['custom_mailfilter']);
      $out = '';
      foreach($lines as $line) {
         $line = trim($line);
         if($line == '### BEGIN FILTER_ID:'.$page_form->id) {
@@ -110,40 +110,40 @@
            $skip = false;
         }
      }
      $out = $app->db->quote($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.
   */
   private function mail_user_filter_get_rule($page_form) {
      global $app,$conf;
      global $app, $conf;
      $app->uses("getconf");
      $mailuser_rec = $app->db->queryOneRecord("SELECT server_id FROM mail_user WHERE mailuser_id = ".$app->functions->intval($page_form->dataRecord["mailuser_id"]));
      $mail_config = $app->getconf->get_server_config($app->functions->intval($mailuser_rec["server_id"]),'mail');
      $mail_config = $app->getconf->get_server_config($app->functions->intval($mailuser_rec["server_id"]), 'mail');
      if($mail_config['mail_filter_syntax'] == 'sieve') {
         // #######################################################
         // Filter in Sieve Syntax
         // #######################################################
         $content = '';
         $content .= '### BEGIN FILTER_ID:'.$page_form->id."\n";
         //$content .= 'require ["fileinto", "regex", "vacation"];'."\n";
         $content .= 'if header :regex    ["'.strtolower($page_form->dataRecord["source"]).'"] ["';
         $searchterm = preg_quote($page_form->dataRecord["searchterm"]);
         $searchterm = str_replace('\\[','\\\\[',$searchterm);
         $searchterm = str_replace('\\]','\\\\]',$searchterm);
         $searchterm = str_replace('\\[', '\\\\[', $searchterm);
         $searchterm = str_replace('\\]', '\\\\]', $searchterm);
         if($page_form->dataRecord["op"] == 'contains') {
            $content .= ".*".$searchterm;
         } elseif ($page_form->dataRecord["op"] == 'is') {
@@ -153,21 +153,21 @@
         } elseif ($page_form->dataRecord["op"] == 'ends') {
            $content .= ".*".$searchterm."$";
         }
         $content .= '"] {'."\n";
         if($page_form->dataRecord["action"] == 'move') {
            $content .= '    fileinto "'.$page_form->dataRecord["target"].'";' . "\n";
         } else {
            $content .= "    discard;\n";
         }
         $content .= "    stop;\n}\n";
         $content .= '### END FILTER_ID:'.$page_form->id."\n";
      } else {
         // #######################################################
         // Filter in Maildrop Syntax
         // #######################################################
@@ -187,7 +187,7 @@
         if($page_form->dataRecord["action"] == 'move') {
         $content .= "
            $content .= "
`test -e ".$TestChDirQuotes." && exit 1 || exit 0`
if ( ".'$RETURNCODE'." != 1 )
{
@@ -224,19 +224,19 @@
         $content .= "}\n";
         $content .= "}\n";
         //}
         $content .= '### END FILTER_ID:'.$page_form->id."\n";
      }
      return $content;
   }
} // end class
?>
?>