From bd22f9314b72b06c38a109ce13a3242ed837a1a3 Mon Sep 17 00:00:00 2001 From: aydreeihn <adriane@enhancesoft.com> Date: Mon, 7 Jan 2019 13:14:11 -0600 Subject: [PATCH] Issue: Filters - Make sure we only set Filter Flags if they need to be changed (don't update them every time we save) - Make sure we sure we use the email_id if we have actually set it. Otherwise, we lose what should be set for the Target Channel --- include/class.filter.php | 8 ++++++++ include/class.filter_action.php | 8 ++++---- scp/filters.php | 2 -- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/include/class.filter.php b/include/class.filter.php index 05f93c784..360d5bc79 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 3adcac43c..88aa0d091 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 c83f9eac0..25f22df4c 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', -- GitLab