mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-09 22:26:04 +00:00
Fix #11031
This commit is contained in:
@@ -139,7 +139,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface, UserGroupInte
|
|||||||
/** @var Rule $entry */
|
/** @var Rule $entry */
|
||||||
foreach ($set as $entry) {
|
foreach ($set as $entry) {
|
||||||
if ($entry->order !== $count) {
|
if ($entry->order !== $count) {
|
||||||
app('log')->debug(sprintf('Rule #%d was on spot %d but must be on spot %d', $entry->id, $entry->order, $count));
|
Log::debug(sprintf('Rule #%d was on spot %d but must be on spot %d', $entry->id, $entry->order, $count));
|
||||||
$entry->order = $count;
|
$entry->order = $count;
|
||||||
$entry->save();
|
$entry->save();
|
||||||
}
|
}
|
||||||
@@ -167,7 +167,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface, UserGroupInte
|
|||||||
if ($action->order !== $index) {
|
if ($action->order !== $index) {
|
||||||
$action->order = $index;
|
$action->order = $index;
|
||||||
$action->save();
|
$action->save();
|
||||||
app('log')->debug(sprintf('Rule action #%d was on spot %d but must be on spot %d', $action->id, $action->order, $index));
|
Log::debug(sprintf('Rule action #%d was on spot %d but must be on spot %d', $action->id, $action->order, $index));
|
||||||
}
|
}
|
||||||
++$index;
|
++$index;
|
||||||
}
|
}
|
||||||
@@ -189,7 +189,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface, UserGroupInte
|
|||||||
if ($order !== $index) {
|
if ($order !== $index) {
|
||||||
$trigger->order = $index;
|
$trigger->order = $index;
|
||||||
$trigger->save();
|
$trigger->save();
|
||||||
app('log')->debug(sprintf('Rule trigger #%d was on spot %d but must be on spot %d', $trigger->id, $order, $index));
|
Log::debug(sprintf('Rule trigger #%d was on spot %d but must be on spot %d', $trigger->id, $order, $index));
|
||||||
}
|
}
|
||||||
++$index;
|
++$index;
|
||||||
}
|
}
|
||||||
@@ -235,6 +235,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface, UserGroupInte
|
|||||||
public function getActiveStoreRules(RuleGroup $group): Collection
|
public function getActiveStoreRules(RuleGroup $group): Collection
|
||||||
{
|
{
|
||||||
return $group->rules()
|
return $group->rules()
|
||||||
|
->orderBy('rules.order', 'ASC')
|
||||||
->leftJoin('rule_triggers', 'rules.id', '=', 'rule_triggers.rule_id')
|
->leftJoin('rule_triggers', 'rules.id', '=', 'rule_triggers.rule_id')
|
||||||
->where('rule_triggers.trigger_type', 'user_action')
|
->where('rule_triggers.trigger_type', 'user_action')
|
||||||
->where('rule_triggers.trigger_value', 'store-journal')
|
->where('rule_triggers.trigger_value', 'store-journal')
|
||||||
@@ -275,23 +276,23 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface, UserGroupInte
|
|||||||
if (null === $filter) {
|
if (null === $filter) {
|
||||||
return $groups;
|
return $groups;
|
||||||
}
|
}
|
||||||
app('log')->debug(sprintf('Will filter getRuleGroupsWithRules on "%s".', $filter));
|
Log::debug(sprintf('Will filter getRuleGroupsWithRules on "%s".', $filter));
|
||||||
|
|
||||||
return $groups->map(
|
return $groups->map(
|
||||||
static function (RuleGroup $group) use ($filter) { // @phpstan-ignore-line
|
static function (RuleGroup $group) use ($filter) { // @phpstan-ignore-line
|
||||||
app('log')->debug(sprintf('Now filtering group #%d', $group->id));
|
Log::debug(sprintf('Now filtering group #%d', $group->id));
|
||||||
// filter the rules in the rule group:
|
// filter the rules in the rule group:
|
||||||
$group->rules = $group->rules->filter(
|
$group->rules = $group->rules->filter(
|
||||||
static function (Rule $rule) use ($filter) {
|
static function (Rule $rule) use ($filter) {
|
||||||
app('log')->debug(sprintf('Now filtering rule #%d', $rule->id));
|
Log::debug(sprintf('Now filtering rule #%d', $rule->id));
|
||||||
foreach ($rule->ruleTriggers as $trigger) {
|
foreach ($rule->ruleTriggers as $trigger) {
|
||||||
if ('user_action' === $trigger->trigger_type && $filter === $trigger->trigger_value) {
|
if ('user_action' === $trigger->trigger_type && $filter === $trigger->trigger_value) {
|
||||||
app('log')->debug(sprintf('Rule #%d triggers on %s, include it.', $rule->id, $filter));
|
Log::debug(sprintf('Rule #%d triggers on %s, include it.', $rule->id, $filter));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
app('log')->debug(sprintf('Rule #%d does not trigger on %s, do not include it.', $rule->id, $filter));
|
Log::debug(sprintf('Rule #%d does not trigger on %s, do not include it.', $rule->id, $filter));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -331,23 +332,23 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface, UserGroupInte
|
|||||||
if (null === $filter) {
|
if (null === $filter) {
|
||||||
return $groups;
|
return $groups;
|
||||||
}
|
}
|
||||||
app('log')->debug(sprintf('Will filter getRuleGroupsWithRules on "%s".', $filter));
|
Log::debug(sprintf('Will filter getRuleGroupsWithRules on "%s".', $filter));
|
||||||
|
|
||||||
return $groups->map(
|
return $groups->map(
|
||||||
static function (RuleGroup $group) use ($filter) { // @phpstan-ignore-line
|
static function (RuleGroup $group) use ($filter) { // @phpstan-ignore-line
|
||||||
app('log')->debug(sprintf('Now filtering group #%d', $group->id));
|
Log::debug(sprintf('Now filtering group #%d', $group->id));
|
||||||
// filter the rules in the rule group:
|
// filter the rules in the rule group:
|
||||||
$group->rules = $group->rules->filter(
|
$group->rules = $group->rules->filter(
|
||||||
static function (Rule $rule) use ($filter) {
|
static function (Rule $rule) use ($filter) {
|
||||||
app('log')->debug(sprintf('Now filtering rule #%d', $rule->id));
|
Log::debug(sprintf('Now filtering rule #%d', $rule->id));
|
||||||
foreach ($rule->ruleTriggers as $trigger) {
|
foreach ($rule->ruleTriggers as $trigger) {
|
||||||
if ('user_action' === $trigger->trigger_type && $filter === $trigger->trigger_value) {
|
if ('user_action' === $trigger->trigger_type && $filter === $trigger->trigger_value) {
|
||||||
app('log')->debug(sprintf('Rule #%d triggers on %s, include it.', $rule->id, $filter));
|
Log::debug(sprintf('Rule #%d triggers on %s, include it.', $rule->id, $filter));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
app('log')->debug(sprintf('Rule #%d does not trigger on %s, do not include it.', $rule->id, $filter));
|
Log::debug(sprintf('Rule #%d does not trigger on %s, do not include it.', $rule->id, $filter));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -414,7 +415,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface, UserGroupInte
|
|||||||
->decrement('order')
|
->decrement('order')
|
||||||
;
|
;
|
||||||
$ruleGroup->order = $newOrder;
|
$ruleGroup->order = $newOrder;
|
||||||
app('log')->debug(sprintf('Order of group #%d ("%s") is now %d', $ruleGroup->id, $ruleGroup->title, $newOrder));
|
Log::debug(sprintf('Order of group #%d ("%s") is now %d', $ruleGroup->id, $ruleGroup->title, $newOrder));
|
||||||
$ruleGroup->save();
|
$ruleGroup->save();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -425,7 +426,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface, UserGroupInte
|
|||||||
->increment('order')
|
->increment('order')
|
||||||
;
|
;
|
||||||
$ruleGroup->order = $newOrder;
|
$ruleGroup->order = $newOrder;
|
||||||
app('log')->debug(sprintf('Order of group #%d ("%s") is now %d', $ruleGroup->id, $ruleGroup->title, $newOrder));
|
Log::debug(sprintf('Order of group #%d ("%s") is now %d', $ruleGroup->id, $ruleGroup->title, $newOrder));
|
||||||
$ruleGroup->save();
|
$ruleGroup->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -506,9 +506,22 @@ class SearchRuleEngine implements RuleEngineInterface
|
|||||||
*/
|
*/
|
||||||
private function fireGroup(RuleGroup $group): void
|
private function fireGroup(RuleGroup $group): void
|
||||||
{
|
{
|
||||||
Log::debug(sprintf('Going to fire group #%d with %d rule(s)', $group->id, $group->rules->count()));
|
$rules =[];
|
||||||
|
if($group->relationLoaded('rules')) {
|
||||||
$rules = $group->rules()->orderBy('order', 'ASC')->get();
|
Log::debug('Group rules have been pre-loaded, do not reload them.');
|
||||||
|
$rules = $group->rules;
|
||||||
|
}
|
||||||
|
if(!$group->relationLoaded('rules')) {
|
||||||
|
Log::debug('Group rules have NOT been pre-loaded, load them NOW.');
|
||||||
|
$rules = $group->rules()
|
||||||
|
->orderBy('rules.order', 'ASC')
|
||||||
|
// ->leftJoin('rule_triggers', 'rules.id', '=', 'rule_triggers.rule_id')
|
||||||
|
// ->where('rule_triggers.trigger_type', 'user_action')
|
||||||
|
// ->where('rule_triggers.trigger_value', 'store-journal')
|
||||||
|
->where('rules.active', true)
|
||||||
|
->get(['rules.*']);
|
||||||
|
}
|
||||||
|
Log::debug(sprintf('Going to fire group #%d with %d rule(s)', $group->id, $rules->count()));
|
||||||
|
|
||||||
/** @var Rule $rule */
|
/** @var Rule $rule */
|
||||||
foreach ($rules as $rule) {
|
foreach ($rules as $rule) {
|
||||||
|
Reference in New Issue
Block a user