from maildroprc(5) : The exit statement causes *maildrop* to terminate
[old-projects.git] / philter / philter / include / rule.inc.php
index dbb7b26..a449918 100644 (file)
@@ -88,37 +88,22 @@ class Rule {
 
     function to_string() {
         global $philter;
-        
-        $res = $this->block  ? ":0\n" : ":0 c\n";
+        $tmp = array();
 
-        if($this->all) {
-            foreach($this->matches as $match)
-                $res .= $philter->config['match_plugins'][$match[0]]->to_string($match);
-        } else {
-            $i = 0; $res = '';
-            foreach($this->matches as $match) {
-                $res .= (empty($i) ? ":0 f\n" : ":0 fE");
-                $res .= $philter->config['match_plugins'][$match[0]]->to_string($match);
-                $res .= "| formail -I'X-Philter-Or: yes'\n";
-                $i++;
-            }
-
-            $res.= "\n"
-                .  ":0 f\n"
-                .  "* ^X-Philter-Or: yes\n"
-                .  "| formail -I'X-Philter-Or'\n"
-                .  "\n"
-                .  ($this->block ? ":0\n" : ":0 c\n");
-        }
+        foreach($this->matches as $match)
+            $tmp[] = $philter->config['match_plugins'][$match[0]]->to_string($match);
+        
+        $connector = ($this->all ? ' && ' : ' || ');
+        $res = "if( ".implode($connector, $tmp)." )\n"
+            .  "{\n";
         
-        $res.= "{\n";
         foreach($this->actions as $action)
             $res .= $philter->config['action_plugins'][$action[0]]->to_string($action);
-        $res.= "    :0\n"
-            .  "    /dev/null\n"
-            .  "}\n\n";
 
-        return $res;
+        if($this->block)
+            $res .= "    exit\n";
+        
+        return $res."}\n\n";
     }
 
     function sql_clean($_uid, $_rid) {