mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-13 16:00:13 +00:00
This commit is contained in:
@@ -164,6 +164,7 @@ class SelectController extends Controller
|
|||||||
|
|
||||||
// set rules:
|
// set rules:
|
||||||
$newRuleEngine->setRules(new Collection([$rule]));
|
$newRuleEngine->setRules(new Collection([$rule]));
|
||||||
|
$newRuleEngine->setRefreshTriggers(false);
|
||||||
$collection = $newRuleEngine->find();
|
$collection = $newRuleEngine->find();
|
||||||
$collection = $collection->slice(0, 20);
|
$collection = $collection->slice(0, 20);
|
||||||
|
|
||||||
|
@@ -73,4 +73,10 @@ interface RuleEngineInterface
|
|||||||
* @param User $user
|
* @param User $user
|
||||||
*/
|
*/
|
||||||
public function setUser(User $user): void;
|
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 array $resultCount;
|
||||||
private Collection $rules;
|
private Collection $rules;
|
||||||
private User $user;
|
private User $user;
|
||||||
|
private bool $refreshTriggers;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
@@ -54,6 +55,9 @@ class SearchRuleEngine implements RuleEngineInterface
|
|||||||
$this->groups = new Collection();
|
$this->groups = new Collection();
|
||||||
$this->operators = [];
|
$this->operators = [];
|
||||||
$this->resultCount = [];
|
$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));
|
Log::debug(sprintf('Now in findStrictRule(#%d)', $rule->id ?? 0));
|
||||||
$searchArray = [];
|
$searchArray = [];
|
||||||
|
$triggers = [];
|
||||||
$triggers = $rule->ruleTriggers()->orderBy('order', 'ASC')->get();
|
if ($this->refreshTriggers) {
|
||||||
|
$triggers = $rule->ruleTriggers()->orderBy('order', 'ASC')->get();
|
||||||
|
}
|
||||||
|
if (!$this->refreshTriggers) {
|
||||||
|
$triggers = $rule->ruleTriggers;
|
||||||
|
}
|
||||||
|
|
||||||
/** @var RuleTrigger $ruleTrigger */
|
/** @var RuleTrigger $ruleTrigger */
|
||||||
foreach ($triggers as $ruleTrigger) {
|
foreach ($triggers as $ruleTrigger) {
|
||||||
@@ -224,11 +233,15 @@ class SearchRuleEngine implements RuleEngineInterface
|
|||||||
private function findNonStrictRule(Rule $rule): Collection
|
private function findNonStrictRule(Rule $rule): Collection
|
||||||
{
|
{
|
||||||
// start a search query for individual each trigger:
|
// start a search query for individual each trigger:
|
||||||
$total = new Collection();
|
$total = new Collection();
|
||||||
$count = 0;
|
$count = 0;
|
||||||
|
$triggers = [];
|
||||||
/** @var Collection $triggers */
|
if ($this->refreshTriggers) {
|
||||||
$triggers = $rule->ruleTriggers;
|
$triggers = $rule->ruleTriggers()->orderBy('order', 'ASC')->get();
|
||||||
|
}
|
||||||
|
if (!$this->refreshTriggers) {
|
||||||
|
$triggers = $rule->ruleTriggers;
|
||||||
|
}
|
||||||
|
|
||||||
/** @var RuleTrigger $ruleTrigger */
|
/** @var RuleTrigger $ruleTrigger */
|
||||||
foreach ($triggers as $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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user