config = &$config;
$this->parent = &$parent;
$this->filter = $filter;
$this->types = array(
'OR' => _("At least one of the following conditions has to match"),
'AND' => _("All conditions have to match"));
$this->actions = array(
"MOVE" => _("move mail to"),
"COPY" => _("copy mail to"),
"FORWARD" => _("forward message to"),
"MARK" => _("mark mail as "),
"DROP" => _("remove mail"),
"REPLY" => _("reply"));
$this->fields = array(
'subject' => _("Subject"),
'from'=> _("From"),
'body'=> _("Body"),
'date'=> _("Date"),
'priority'=> _("Priority"),
'status'=> _("Status"),
'to'=> _("To"),
'cc'=> _("CC"),
'age'=> _("Age"),
'size'=> _("Size"));
$this->comparators = array(
"is" => _("is"),
"is not" => _("is not"),
"equal" => _("is equal"),
"not equal" => _("is not equal"),
"is empty" => _("is empty"),
"is not empty" => _("is not empty"),
"contains" => _("contains"),
"contains not" => _("does not contain"),
"is in addressbook" => _("is in the addressbook"),
"is not in addressbook" => _("is not in the addressbook"),
"greater than" => _("is greater than"),
"less than" => _("smaller than"));
}
function execute()
{
$smarty = get_smarty();
$smarty->assign('NAME',set_post($this->filter['NAME']));
$smarty->assign('DESC',set_post($this->filter['DESC']));
$smarty->assign('filterStr', $this->renderFilter());
return($smarty->fetch(get_template_path('filterEditor.tpl',TRUE,dirname(__FILE__))));
}
function check()
{
$msgs = array();
return($msgs);
}
function save()
{
// Just return the filter array we've modified
return($this->filter);
}
function renderFilter()
{
$filter = $this->filter;
$cnt = count($filter['CONDITIONS']);
$str = "
"._("Filter conditions")."
";
$str .= _("Condition type")." ";
$str .="\n";
$str.= "";
$str .= " ";
if(count($filter['CONDITIONS']) >= 2){
$str .= " ";
}
$str .= "
";
$str .= ""._("Filter actions")."
";
$str.= "";
$str .= " ";
if(count($filter['ACTION']) >= 2){
$str .= " ";
}
return($str);
}
function save_object()
{
// Do nothing if the dialog wasn't submitted yet
if(!isset($_POST['filterEditorPosted'])) return;
// Get the filter confition type if posted
$this->filter['TYPE'] = (isset($_POST['cType']))? get_post('cType'): $this->filter['TYPE'];
// Get condition modifications
foreach($this->filter['CONDITIONS'] as $id => $value){
foreach(array('cField_' => 'FIELD',
'cComparator_'=>'COMPARATOR',
'cMatch_'=>'MATCH') as $post => $name){
if(isset($_POST[$post.$id])){
$this->filter['CONDITIONS'][$id][$name] = get_post($post.$id);
}
}
}
// Get Action modifications
foreach($this->filter['ACTION'] as $id => $value){
foreach(array('cAction_' => 'ACTIOB','cValue_' => 'VALUE') as $post => $name){
if(isset($_POST[$post.$id])){
$this->filter['ACTION'][$id][$name] = get_post($post.$id);
}
}
}
// Get NAME and DESC if posted
if(isset($_POST['NAME'])) $this->filter['NAME'] = get_post('NAME');
if(isset($_POST['DESC'])) $this->filter['DESC'] = get_post('DESC');
// Add / remove conditions
if(isset($_POST['removeCondition']) && count($this->filter['CONDITIONS']) >= 2){
array_pop($this->filter['CONDITIONS']);
}
if(isset($_POST['addCondition'])){
$this->filter['CONDITIONS'][] = array('FIELD' => key($this->fields),'COMPARATOR' => key($this->comparators), 'MATCH' => '');
}
// Add / remove actions
if(isset($_POST['removeAction']) && count($this->filter['ACTION']) >= 2){
array_pop($this->filter['ACTION']);
}
if(isset($_POST['addAction'])){
$this->filter['ACTION'][] = array('ACTION' => 'MOVE', 'VALUE' => '');
}
}
}
?>