* @copyright 2004-2007 Alexandros Vellis
* @package plugins
* @subpackage avelsieve
*/
/** Includes */
include_once(SM_PATH . 'plugins/avelsieve/include/html_main.inc.php');
include_once(SM_PATH . 'plugins/avelsieve/include/html_ruleedit.inc.php');
include_once(SM_PATH . 'plugins/avelsieve/include/sieve_rule_spam.inc.php');
include_once(SM_PATH . 'plugins/avelsieve/include/sieve_buildrule.11.inc.php');
include_once(SM_PATH . 'plugins/avelsieve/include/junkmail.inc.php');
/**
* Rule #11: Customized Junk Mail rule with features such as RBL
* checking, Sender Address Verification (SAV) etc.
*
* @package plugins
* @subpackage avelsieve
*/
class avelsieve_html_edit_11 extends avelsieve_html_edit_spamrule {
/**
* Constructor, that just calls the parent one.
*/
function avelsieve_html_edit_11(&$s, $mode = 'edit', $rule = array(), $popup = false, $errmsg = '') {
global $avelsieve_rules_settings;
$this->settings = $avelsieve_rules_settings[11];
$this->avelsieve_html_edit($s, $mode, $rule, $popup, $errmsg);
if($this->settings['spamrule_tests_ldap'] == true) {
$ldap_rbls = avelsieve_askldapforrbls();
if(is_array($ldap_rbls)) {
// 1) Overwrite Settings to put ALL tests.
$this->settings['spamrule_tests']['rbls']['available'] = array();
foreach($ldap_rbls as $no=>$info) {
$this->settings['spamrule_tests']['rbls']['available'][$info['test']] = $info['name'];
// 2) Overwrite default rule to put ALL tests.
$this->settings['default_rule']['tests'][$info['test']] =
$this->settings['spamrule_tests']['rbls']['fail_values'][0];
}
}
}
}
/**
* Submit buttons for Junk Mail: For Usability, just use "Apply Changes"
* string always.
*
* @return string
*/
function submit_buttons() {
$out = '
'.
'
';
if($this->popup) {
$out .= '
';
} else {
$out .= '
';
}
return $out;
}
/**
* Spamrule module settings (Reusable function)
*
* @return string
*/
function module_settings($module) {
$out = '';
$t = &$this->rule['tests']; // Handy reference to current rule's tests
foreach($this->settings['spamrule_tests'][$module]['available'] as $key=>$val) {
$radio = false;
if(sizeof($this->settings['spamrule_tests'][$module]['fail_values']) > 1 ) {
$radio = true;
}
foreach($this->settings['spamrule_tests'][$module]['fail_values'] as $fv) {
$jskey = str_replace('.', '_', $key . '__'.$fv); // because dot (.) is not valid in js
if(isset($this->rule['tests'][$key]) && !empty($this->rule['tests'][$key]) && !is_array($this->rule['tests'][$key])) {
// convert it to array
$tmp = $this->rule['tests'][$key];
$this->rule['tests'][$key] = array($tmp);
unset($tmp);
}
if(isset($this->rule['tests'][$key]) && isset($this->rule['tests'][$key][$fv]) &&
in_array($this->rule['tests'][$key][$fv], $this->settings['spamrule_tests'][$module]['fail_values'])) {
$active_values = $this->rule['tests'][$key];
}
// Checkbox
$out .= '
settings['spamrule_tests'][$module]['fail_values_dependencies']) &&
isset($this->settings['spamrule_tests'][$module]['fail_values_dependencies'][$fv])) {
$out .= ' onclick="alsoCheck(this,\''.$key.'_'.
implode( '\',\''.$key.'_', $this->settings['spamrule_tests'][$module]['fail_values_dependencies'][$fv]) .
'\'); return true;"';
} elseif(isset($this->settings['spamrule_tests'][$module]['fail_values_dependencies_reverse']) &&
isset($this->settings['spamrule_tests'][$module]['fail_values_dependencies_reverse'][$fv])) {
$out .= ' onclick="alsoUnCheck(this,\''.$key.'_'.
implode( '\',\''.$key.'_', $this->settings['spamrule_tests'][$module]['fail_values_dependencies_reverse'][$fv]) .
'\'); return true;"';
}
$out .= (!empty($this->rule['tests'][$key]) && in_array($fv, $this->rule['tests'][$key]) ? ' checked=""' : '') .'/>'.
''.
( isset($this->settings['custom_text'][$key][$fv]) ? $this->settings['custom_text'][$key][$fv] : $val) .
' ' ;
// Js Link to toggle informational text display.
if($this->js && isset($this->settings['spamrule_tests_info'][$key][$fv])) {
$out .= ' ';
$out .= ' '.
_("Information...") . ' ';
}
// Informational text
if(isset($this->settings['spamrule_tests_info'][$key][$fv]['desc'])) {
$out .= ' ';
}
}
$out .= '';
}
return $out;
}
/**
* Main function that outputs a form for editing a whole rule.
*
* @param int $edit Number of rule that editing is based on.
* @return string
*/
function edit_rule($edit = false) {
global $PHP_SELF, $color, $javascript_on, $compose_new_win;
$default_rule = avelsieve_buildrule_11($this->settings['default_rule'], true);
$default_rule_desc = $default_rule[1];
$out = '