tbrehm
2008-07-13 eea5cff24c965684882e88632095d725e2d14637
interface/web/mail/mail_user_filter_edit.php
@@ -53,17 +53,105 @@
   function onSubmit() {
      global $app, $conf;
      
      // Get the parent soa record of the domain
      // Get the parent mail_user record
      $mailuser = $app->db->queryOneRecord("SELECT * FROM mail_user WHERE mailuser_id = '".intval($_REQUEST["mailuser_id"])."' AND ".$app->tform->getAuthSQL('r'));
      // Check if Domain belongs to user
      if($mailuser["mailuser_id"] != $_POST["mailuser_id"]) $app->tform->errorMessage .= $app->tform->wordbook["no_mailuser_perm"];
      
      // Set the server ID of the rr record to the same server ID as the parent record.
      // Set the mailuser_id
      $this->dataRecord["mailuser_id"] = $mailuser["mailuser_id"];
      
      parent::onSubmit();
   }
   
   function onAfterInsert() {
      global $app, $conf;
      $mailuser = $app->db->queryOneRecord("SELECT custom_mailfilter FROM mail_user WHERE mailuser_id = ".$this->dataRecord["mailuser_id"]);
      $rule_content = $mailuser['custom_mailfilter']."\n".$app->db->quote($this->getRule());
      $app->db->datalogUpdate('mail_user', "custom_mailfilter = '$rule_content'", 'mailuser_id', $this->dataRecord["mailuser_id"]);
   }
   function onAfterUpdate() {
      global $app, $conf;
      $mailuser = $app->db->queryOneRecord("SELECT custom_mailfilter FROM mail_user WHERE mailuser_id = ".$this->dataRecord["mailuser_id"]);
      $skip = false;
      $lines = explode("\n",$mailuser['custom_mailfilter']);
      $out = '';
      $found = false;
      foreach($lines as $line) {
         $line = trim($line);
         if($line == '### BEGIN FILTER_ID:'.$this->id) {
            $skip = true;
            $found = true;
         }
         if($skip == false && $line != '') $out .= $line ."\n";
         if($line == '### END FILTER_ID:'.$this->id) {
            $out .= $this->getRule();
            $skip = false;
         }
      }
      // We did not found our rule, so we add it now.
      if($found == false) {
         $out .= $this->getRule();
      }
      $out = addslashes($out);
      $app->db->datalogUpdate('mail_user', "custom_mailfilter = '$out'", 'mailuser_id', $this->dataRecord["mailuser_id"]);
   }
   function getRule() {
      $content = '';
      $content .= '### BEGIN FILTER_ID:'.$this->id."\n";
      if($this->dataRecord["action"] == 'move') {
         $content .= "
`test -e ".'$DEFAULT/'.$this->dataRecord["target"]."`
if ( ".'$RETURNCODE'." != 0 )
{
  `maildirmake -f ".$this->dataRecord["target"].' $DEFAULT'."`
  `chmod -R 0700 ".'$DEFAULT/'.$this->dataRecord["target"]."`
}
";
      }
      $content .= "if (/^".$this->dataRecord["source"].":";
      if($this->dataRecord["op"] == 'contains') {
         $content .= ".*".$this->dataRecord["searchterm"]."/:h)\n";
      } elseif ($this->dataRecord["op"] == 'is') {
         $content .= $this->dataRecord["searchterm"]."$/:h)\n";
      } elseif ($this->dataRecord["op"] == 'begins') {
         $content .= $this->dataRecord["searchterm"]."/:h)\n";
      } elseif ($this->dataRecord["op"] == 'ends') {
         $content .= ".*".$this->dataRecord["searchterm"]."$/:h)\n";
      }
      $content .= "{\n";
      $content .= "exception {\n";
      if($this->dataRecord["action"] == 'move') {
         $content .= 'to $DEFAULT/'.$this->dataRecord["target"]."/\n";
      } else {
         $content .= "to /dev/null\n";
      }
      $content .= "}\n";
      $content .= "}\n";
      $content .= '### END FILTER_ID:'.$this->id."\n";
      return $content;
   }
}
$page = new page_action;