diff --git a/include/class.filter.php b/include/class.filter.php index 05f93c7845b7c713eac3690684d1e5815f022918..360d5bc791d2a1ab75f61dd3ece23163a82fdf94 100644 --- a/include/class.filter.php +++ b/include/class.filter.php @@ -153,6 +153,10 @@ class Filter { $this->update($this->ht, $errors); } + function hasFlag($flag) { + return 0 !== ($this->ht['flags'] & $flag); + } + function stopOnMatch() { return ($this->ht['stop_onmatch']); } @@ -504,6 +508,10 @@ class Filter { $vars['target'] = 'Email'; } + //Note: this will be set when validating filters + if ($vars['email_id']) + $emailId = $vars['email_id']; + $sql=' updated=NOW() ' .',isactive='.db_input($vars['isactive']) .',flags='.db_input($vars['flags']) diff --git a/include/class.filter_action.php b/include/class.filter_action.php index 3adcac43c07b53a2d1a88bcdb3354ed49da44825..88aa0d091a0499d38a6bd711f20c381cba12a5ae 100644 --- a/include/class.filter_action.php +++ b/include/class.filter_action.php @@ -82,10 +82,10 @@ class FilterAction extends VerySimpleModel { function setFilterFlag($actions, $flag, $bool) { foreach ($actions as $action) { $filter = Filter::lookup($action->filter_id); - if ($filter) { - if ($flag == 'dept') $filter->setFlag(Filter::FLAG_INACTIVE_DEPT, $bool); - if ($flag == 'topic') $filter->setFlag(Filter::FLAG_INACTIVE_HT, $bool); - } + if ($filter && ($flag == 'dept') && ($filter->hasFlag(Filter::FLAG_INACTIVE_DEPT) != $bool)) + $filter->setFlag(Filter::FLAG_INACTIVE_DEPT, $bool); + if ($filter && ($flag == 'topic') && ($filter->hasFlag(Filter::FLAG_INACTIVE_HT) != $bool)) + $filter->setFlag(Filter::FLAG_INACTIVE_HT, $bool); } } diff --git a/scp/filters.php b/scp/filters.php index c83f9eac074175b908b3cea6cf3eaaa75778f64a..25f22df4c2b9557ec061a954749dd5fc1da4162d 100644 --- a/scp/filters.php +++ b/scp/filters.php @@ -31,8 +31,6 @@ if($_POST){ if(!$filter){ $errors['err']=sprintf(__('%s: Unknown or invalid'), __('ticket filter')); }elseif($filter->update($_POST,$errors)){ - $filter->setFlag(Filter::FLAG_INACTIVE_DEPT, false); - $filter->setFlag(Filter::FLAG_INACTIVE_HT, false); $msg=sprintf(__('Successfully updated %s.'), __('this ticket filter')); }elseif(!$errors['err']){ $errors['err']=sprintf('%s %s',