From 54d5f9a9c38272d0b32ca81fc0d511f7c059ba77 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 1 May 2021 18:54:11 +0200 Subject: [PATCH] Fix #4707 and fix #4732 --- app/Http/Controllers/Rule/SelectController.php | 1 + app/Support/Http/Controllers/RuleManagement.php | 2 +- app/TransactionRules/Engine/SearchRuleEngine.php | 12 +++++++++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Rule/SelectController.php b/app/Http/Controllers/Rule/SelectController.php index e6f1f86893..040860406c 100644 --- a/app/Http/Controllers/Rule/SelectController.php +++ b/app/Http/Controllers/Rule/SelectController.php @@ -158,6 +158,7 @@ class SelectController extends Controller $rule->ruleTriggers = $triggers; // create new rule engine: + /** @var RuleEngineInterface $newRuleEngine */ $newRuleEngine = app(RuleEngineInterface::class); // set rules: diff --git a/app/Support/Http/Controllers/RuleManagement.php b/app/Support/Http/Controllers/RuleManagement.php index c9e2d6f4fd..09141fa90b 100644 --- a/app/Support/Http/Controllers/RuleManagement.php +++ b/app/Support/Http/Controllers/RuleManagement.php @@ -61,7 +61,7 @@ trait RuleManagement ], [ 'type' => 'from_account_is', - 'value' => (string)trans('firefly.default_rule_trigger_from_account'), + 'value' => (string)trans('firefly.default_rule_trigger_source_account'), 'stop_processing' => false, ], diff --git a/app/TransactionRules/Engine/SearchRuleEngine.php b/app/TransactionRules/Engine/SearchRuleEngine.php index 56a4e6db21..273a3ce393 100644 --- a/app/TransactionRules/Engine/SearchRuleEngine.php +++ b/app/TransactionRules/Engine/SearchRuleEngine.php @@ -145,6 +145,7 @@ class SearchRuleEngine implements RuleEngineInterface */ public function setRules(Collection $rules): void { + Log::debug(__METHOD__); foreach ($rules as $rule) { if ($rule instanceof Rule) { @@ -227,8 +228,16 @@ class SearchRuleEngine implements RuleEngineInterface { Log::debug(sprintf('Now in findStrictRule(#%d)', $rule->id ?? 0)); $searchArray = []; + + /** @var Collection $triggers */ + $triggers = $rule->ruleTriggers; + /** @var RuleTrigger $ruleTrigger */ - foreach ($rule->ruleTriggers()->where('active', 1)->get() as $ruleTrigger) { + foreach ($triggers as $ruleTrigger) { + if (false === $ruleTrigger->active) { + continue; + } + // if needs no context, value is different: $needsContext = config(sprintf('firefly.search.operators.%s.needs_context', $ruleTrigger->trigger_type)) ?? true; if (false === $needsContext) { @@ -241,6 +250,7 @@ class SearchRuleEngine implements RuleEngineInterface } } + // add local operators: foreach ($this->operators as $operator) { Log::debug(sprintf('SearchRuleEngine:: add local added operator: %s:"%s"', $operator['type'], $operator['value']));