mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Merge pull request #7231 from firefly-iii/fix-7221
Fix https://github.com/firefly-iii/firefly-iii/issues/7221
This commit is contained in:
commit
5c91da80e1
@ -164,6 +164,7 @@ class SelectController extends Controller
|
||||
|
||||
// set rules:
|
||||
$newRuleEngine->setRules(new Collection([$rule]));
|
||||
$newRuleEngine->setRefreshTriggers(false);
|
||||
$collection = $newRuleEngine->find();
|
||||
$collection = $collection->slice(0, 20);
|
||||
|
||||
|
@ -73,4 +73,10 @@ interface RuleEngineInterface
|
||||
* @param User $user
|
||||
*/
|
||||
public function setUser(User $user): void;
|
||||
|
||||
/**
|
||||
* @param bool $refreshTriggers
|
||||
* @return void
|
||||
*/
|
||||
public function setRefreshTriggers(bool $refreshTriggers): void;
|
||||
}
|
||||
|
@ -47,6 +47,7 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
private array $resultCount;
|
||||
private Collection $rules;
|
||||
private User $user;
|
||||
private bool $refreshTriggers;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@ -54,6 +55,9 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
$this->groups = new Collection();
|
||||
$this->operators = [];
|
||||
$this->resultCount = [];
|
||||
|
||||
// always collect the triggers from the database, unless indicated otherwise.
|
||||
$this->refreshTriggers = true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -97,8 +101,13 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
{
|
||||
Log::debug(sprintf('Now in findStrictRule(#%d)', $rule->id ?? 0));
|
||||
$searchArray = [];
|
||||
|
||||
$triggers = $rule->ruleTriggers()->orderBy('order', 'ASC')->get();
|
||||
$triggers = [];
|
||||
if ($this->refreshTriggers) {
|
||||
$triggers = $rule->ruleTriggers()->orderBy('order', 'ASC')->get();
|
||||
}
|
||||
if (!$this->refreshTriggers) {
|
||||
$triggers = $rule->ruleTriggers;
|
||||
}
|
||||
|
||||
/** @var RuleTrigger $ruleTrigger */
|
||||
foreach ($triggers as $ruleTrigger) {
|
||||
@ -224,11 +233,15 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
private function findNonStrictRule(Rule $rule): Collection
|
||||
{
|
||||
// start a search query for individual each trigger:
|
||||
$total = new Collection();
|
||||
$count = 0;
|
||||
|
||||
/** @var Collection $triggers */
|
||||
$triggers = $rule->ruleTriggers;
|
||||
$total = new Collection();
|
||||
$count = 0;
|
||||
$triggers = [];
|
||||
if ($this->refreshTriggers) {
|
||||
$triggers = $rule->ruleTriggers()->orderBy('order', 'ASC')->get();
|
||||
}
|
||||
if (!$this->refreshTriggers) {
|
||||
$triggers = $rule->ruleTriggers;
|
||||
}
|
||||
|
||||
/** @var RuleTrigger $ruleTrigger */
|
||||
foreach ($triggers as $ruleTrigger) {
|
||||
@ -549,4 +562,12 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $refreshTriggers
|
||||
*/
|
||||
public function setRefreshTriggers(bool $refreshTriggers): void
|
||||
{
|
||||
$this->refreshTriggers = $refreshTriggers;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user