/** * Builds filter expression * * @param Filter $filter The filter object * @param string &$e The filter expression * * @return string */ private function _buildFilterExpressionRec($filter, &$e) { if (is_null($filter)) { return; } if ($filter instanceof PropertyNameFilter) { $e .= $filter->getPropertyName(); } else { if ($filter instanceof ConstantFilter) { $value = $filter->getValue(); // If the value is null we just append null regardless of the edmType. if (is_null($value)) { $e .= 'null'; } else { $type = $filter->getEdmType(); $e .= EdmType::serializeQueryValue($type, $value); } } else { if ($filter instanceof UnaryFilter) { $e .= $filter->getOperator(); $e .= '('; $this->_buildFilterExpressionRec($filter->getOperand(), $e); $e .= ')'; } else { if ($filter instanceof Filters\BinaryFilter) { $e .= '('; $this->_buildFilterExpressionRec($filter->getLeft(), $e); $e .= ' '; $e .= $filter->getOperator(); $e .= ' '; $this->_buildFilterExpressionRec($filter->getRight(), $e); $e .= ')'; } else { if ($filter instanceof QueryStringFilter) { $e .= $filter->getQueryString(); } } } } } return $e; }