private function getExpressionsWithUnionsResolved($expressions)
{
$expressionsWithUnions = array();
foreach ($expressions as $expression) {
$operand = $expression[SegmentExpression::INDEX_OPERAND];
$name = $operand[SegmentExpression::INDEX_OPERAND_NAME];
$availableSegment = $this->getSegmentByName($name);
if (!empty($availableSegment['unionOfSegments'])) {
$count = 0;
foreach ($availableSegment['unionOfSegments'] as $segmentNameOfUnion) {
$count++;
$operator = SegmentExpression::BOOL_OPERATOR_OR;
// we connect all segments within that union via OR
if ($count === count($availableSegment['unionOfSegments'])) {
$operator = $expression[SegmentExpression::INDEX_BOOL_OPERATOR];
}
$operand[SegmentExpression::INDEX_OPERAND_NAME] = $segmentNameOfUnion;
$expressionsWithUnions[] = array(SegmentExpression::INDEX_BOOL_OPERATOR => $operator, SegmentExpression::INDEX_OPERAND => $operand);
}
} else {
$expressionsWithUnions[] = array(SegmentExpression::INDEX_BOOL_OPERATOR => $expression[SegmentExpression::INDEX_BOOL_OPERATOR], SegmentExpression::INDEX_OPERAND => $operand);
}
}
return $expressionsWithUnions;
}