Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[submodule "tests/Engine/EngineTests/EngineTestData"]
path = tests/Engine/EngineTests/EngineTestData
url = git@github.com:Flagsmith/engine-test-data.git
tag = v3.5.0
tag = v3.7.0
29 changes: 25 additions & 4 deletions src/Engine/Engine.php
Original file line number Diff line number Diff line change
Expand Up @@ -219,21 +219,42 @@ private static function _contextMatchesRule(
}
}

if ($rule->type === SegmentRuleType::ANY && !$any) {
if ($rule->type === SegmentRuleType::ANY && !$any && !empty($rule->conditions)) {
return false;
}

$anySubRule = false;
foreach ($rule->rules as $subRule) {
$ruleMatches = self::_contextMatchesRule(
$subRuleMatches = self::_contextMatchesRule(
$context,
$subRule,
$segmentKey,
);
if (!$ruleMatches) {
return false;

switch ($rule->type) {
case SegmentRuleType::ALL:
if (!$subRuleMatches) {
return false;
}
break;
case SegmentRuleType::NONE:
if ($subRuleMatches) {
return false;
}
break;
case SegmentRuleType::ANY:
if ($subRuleMatches) {
$anySubRule = true;
break 2;
}
break;
}
}

if ($rule->type === SegmentRuleType::ANY && !$anySubRule && !empty($rule->rules)) {
return false;
}

return true;
}

Expand Down
Loading