private function getPartialFilterExpression(\SimpleXMLElement $fields)
{
$partialFilterExpression = [];
foreach ($fields as $field) {
$operator = (string) $field['operator'] ?: null;
if (!isset($field['value'])) {
if (!isset($field->field)) {
continue;
}
$nestedExpression = $this->getPartialFilterExpression($field->field);
if (!$nestedExpression) {
continue;
}
$value = $nestedExpression;
} else {
$value = trim((string) $field['value']);
}
if ($value === 'true') {
$value = true;
} elseif ($value === 'false') {
$value = false;
} elseif (is_numeric($value)) {
$value = preg_match('/^[-]?\\d+$/', $value) ? (int) $value : (double) $value;
}
$partialFilterExpression[(string) $field['name']] = $operator ? ['$' . $operator => $value] : $value;
}
return $partialFilterExpression;
}