James Cole
2023-03-14 18:09:44 +01:00
parent 86ba1d151a
commit 8e56fa4ef8
3 changed files with 35 additions and 7 deletions

View File

@@ -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;
}

View File

@@ -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;
}
}