Ejemplo n.º 1
0
 /**
  * @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));
     }
 }