From: Pierre Habouzit Date: Mon, 13 Oct 2003 09:22:35 +0000 (+0000) Subject: writing the procmail rcfile X-Git-Tag: procmail~9 X-Git-Url: http://git.polytechnique.org/?p=old-projects.git;a=commitdiff_plain;h=5d6c0389efb5e0c7bfbe09ab733b595e2e797ae9 writing the procmail rcfile --- diff --git a/philter/philter/include/philter.inc.php b/philter/philter/include/philter.inc.php index 3b89bff..4d3c4f9 100644 --- a/philter/philter/include/philter.inc.php +++ b/philter/philter/include/philter.inc.php @@ -83,10 +83,16 @@ class Philter { } /** function that writes the procmailrc. + * @param &$procmail the string containing the procmail filter + * @param $filename the base filename of the procmailrc filter * @return true if all is ok */ - function write_procmailrc() { - // TODO + function write_procmailrc(&$procmail, $filename) { + $file = $philter->config['path']['spool']."/".$filename; + $f = fopen($file.".tmp", "w"); + fwrite($f, $procmail, strlen($procmail)); + fclose($f); + rename($file.".tmp", $file); return true; } diff --git a/philter/philter/include/rule.inc.php b/philter/philter/include/rule.inc.php index 6bb70f4..5f1736d 100644 --- a/philter/philter/include/rule.inc.php +++ b/philter/philter/include/rule.inc.php @@ -91,10 +91,10 @@ class Rule { $res = ($this->block ? ":0\n" : ":0 c\n"); foreach($this->matches as $match) - $res .= $philter->['config']['match_plugins'][$match[0]]->to_string($match); + $res .= $philter->config['match_plugins'][$match[0]]->to_string($match); $res.= "{\n"; foreach($this->actions as $action) - $res .= $philter->['config']['actioh_plugins'][$action[0]]->to_string($action); + $res .= $philter->config['actioh_plugins'][$action[0]]->to_string($action); $res.= "}\n\n"; return $res; diff --git a/philter/philter/index.php b/philter/philter/index.php index 8c0cf61..b99f3a9 100644 --- a/philter/philter/index.php +++ b/philter/philter/index.php @@ -42,6 +42,7 @@ if(isset($_POST['set_adv']) && !$philter->is_advanced()) { if(isset($_POST['filter_valid']) && $philter->is_advanced()) { $philter->del_advanced(); to_main(get_user_id()); + $PHILTER_HAS_TO_BE_WRITTEN=true; } if(isset($_POST['filter_cancel']) && $philter->is_advanced()) { @@ -52,6 +53,11 @@ if(isset($_POST['filter_cancel']) && $philter->is_advanced()) { $mail_pool = new EmailPool(get_user_id()); $filter = new Filter(get_user_id()); +if(isset($PHILTER_HAS_TO_BE_WRITTEN) && $PHILTER_HAS_TO_BE_WRITTEN) { + unset($PHILTER_HAS_TO_BE_WRITTEN); + $philter->write_procmailrc($filter->to_string(), get_filename()); +} + if($philter->is_advanced()) require("include/form_filter.inc.php"); else diff --git a/philter/philter/install.d/header.inc.php b/philter/philter/install.d/header.inc.php index b810861..352ac56 100644 --- a/philter/philter/install.d/header.inc.php +++ b/philter/philter/install.d/header.inc.php @@ -16,6 +16,8 @@ function is_auth() { return false; } +function get_filename() { return get_user_id(); }; + session_start(); ?>