public function handleRequest(Request $request = null) { if ($this->query !== null) { if ($request === null) { $request = Icinga::app()->getFrontController()->getRequest(); } if ($sort = $request->getParam('sort')) { $this->query->order($sort, $request->getParam('dir')); } } return $this; }
/** * Return the default sort rule for the query * * @param string $column An optional column * * @return array An array of two values: $column, $direction */ protected function getSortDefaults($column = null) { $direction = null; if ($this->query !== null && $this->query instanceof SortRules) { $sortRules = $this->query->getSortRules(); if ($column === null) { $column = key($sortRules); } if ($column !== null && isset($sortRules[$column]['order'])) { $direction = strtoupper($sortRules[$column]['order']) === Sortable::SORT_DESC ? 'desc' : 'asc'; } } return array($column, $direction); }
/** * Apply the sort rules from the given or current request on the query * * @param Request $request * * @return $this */ public function handleRequest(Request $request = null) { if ($this->query !== null) { if ($request === null) { $request = Icinga::app()->getRequest(); } if (!($sort = $request->getParam('sort'))) { list($sort, $dir) = $this->getSortDefaults(); } else { list($_, $dir) = $this->getSortDefaults($sort); } $this->query->order($sort, $request->getParam('dir', $dir)); } return $this; }