/** * Set a default sorting for the x- and y-axis without losing any existing rules * * @return self */ protected function adjustSorting() { $currentOrderColumns = $this->baseQuery->getOrderColumns(); $xAxisOrderColumns = array(array($this->baseQuery->getMappedField($this->xAxisColumn), BaseQuery::SORT_ASC)); $yAxisOrderColumns = array(array($this->baseQuery->getMappedField($this->yAxisColumn), BaseQuery::SORT_ASC)); foreach ($currentOrderColumns as $orderInfo) { if ($orderInfo[0] === $xAxisOrderColumns[0][0]) { $xAxisOrderColumns[0] = $orderInfo; } elseif ($orderInfo[0] === $yAxisOrderColumns[0][0]) { $yAxisOrderColumns[0] = $orderInfo; } else { $xAxisOrderColumns[] = $orderInfo; $yAxisOrderColumns[] = $orderInfo; } } $this->xAxisQuery->setOrderColumns($xAxisOrderColumns); $this->yAxisQuery->setOrderColumns($yAxisOrderColumns); return $this; }
/** * Parse an operator node to an sql string * * @param Node $node The operator node to parse * @return string The sql string representing this node */ private function parseOperatorNode(Node $node) { if (!$this->query->isValidFilterTarget($node->left) && $this->query->getMappedField($node->left)) { return ''; } $this->query->requireColumn($node->left); $queryString = '(' . $this->query->getMappedField($node->left) . ')'; if ($this->query->isAggregateColumn($node->left)) { $this->type = 'HAVING'; } $queryString .= ' ' . (is_integer($node->right) ? $node->operator : $this->getSqlOperator($node->operator, $node->right)) . ' '; $queryString = $this->addValueToQuery($node, $queryString); return $queryString; }