/** * @return mixed * @throws InvalidFilterException * @throws UnknownColumnException * @throws UnknownFilterException */ protected function filterData() { try { $filters = array(); foreach ($this->filter as $name => $value) { if (!$this->columnExists($name)) { throw new UnknownColumnException("Neexistujúci stĺpec {$name}"); } if (!$this['columns-' . $name]->hasFilter()) { throw new UnknownFilterException("Neexistujúcí filter pre stĺpec {$name}"); } $type = $this['columns-' . $name]->getFilterType(); $filter = FilterCondition::prepareFilter($value, $type); if (method_exists("\\NiftyGrid\\FilterCondition", $filter["condition"])) { $filter = call_user_func("\\NiftyGrid\\FilterCondition::" . $filter["condition"], $filter["value"]); if (!empty($this['gridForm'][$this->name]['filter'][$name])) { $filter["column"] = $name; if (!empty($this['columns-' . $filter["column"]]->tableName)) { $filter["column"] = $this['columns-' . $filter["column"]]->tableName; } $filters[] = $filter; } else { throw new InvalidFilterException("Neplatný filter"); } } else { throw new InvalidFilterException("Neplatný filter"); } } return $this->dataSource->filterData($filters); } catch (UnknownColumnException $e) { $this->flashMessage($e->getMessage(), "grid-error"); $this->redirect("this", array("filter" => NULL)); } catch (UnknownFilterException $e) { $this->flashMessage($e->getMessage(), "grid-error"); $this->redirect("this", array("filter" => NULL)); } }