Beispiel #1
0
 /**
  * @return mixed
  * @throws InvalidFilterException
  * @throws UnknownColumnException
  * @throws UnknownFilterException
  */
 protected function filterData()
 {
     $filters = array();
     foreach ($this->filter as $name => $value) {
         try {
             if (!$this->columnExists($name)) {
                 throw new UnknownColumnException($this->translator->translate("Column %s doesn't exists", $name));
             }
             if (!$this['columns-' . $name]->hasFilter()) {
                 throw new UnknownFilterException($this->translator->translate("Column %s doesn't have filter", $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("Invalid filter");
                 }
             } else {
                 throw new InvalidFilterException("Invalid filter");
             }
         } catch (UnknownColumnException $e) {
             $this->flashMessage($e->getMessage(), "grid-error");
         } catch (UnknownFilterException $e) {
             $this->flashMessage($e->getMessage(), "grid-error");
         }
     }
     return $this->dataSource->filterData($filters);
 }
Beispiel #2
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ící sloupec $name");

				}
				if(!$this['columns-'.$name]->hasFilter()){
					throw new UnknownFilterException("Neexistující filtr pro sloupec $name");
				}
				$type = $this['columns-'.$name]->getFilterType();				
				//improoved database date convert
				$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ý filtr");
					}
				}else{
					throw new InvalidFilterException("Neplatný filtr");
				}
			}
			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));
		}
	}