From 2915d7efd884f4145f36e6f5f82fa6a5e23b33b9 Mon Sep 17 00:00:00 2001 From: Andrey Kutejko Date: Sat, 30 Nov 2013 11:11:28 +0200 Subject: [PATCH] boolean admin filter --- ipf/admin/model.php | 53 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/ipf/admin/model.php b/ipf/admin/model.php index eacc4e0..d651636 100644 --- a/ipf/admin/model.php +++ b/ipf/admin/model.php @@ -48,6 +48,59 @@ class ListFilter extends BaseListFilter { } } +class BooleanFilter extends BaseListFilter +{ + private $column; + + public function __construct($column, $title, $trueTitle='Yes', $falseTitle='No') + { + $this->column = $column; + parent::__construct($title, array( + array( + 'id' => null, + 'param' => '', + 'name' => 'All', + ), + array( + 'id' => 'y', + 'param' => 'filter_'.$this->column.'=y', + 'name' => $trueTitle, + ), + array( + 'id' => 'n', + 'param' => 'filter_'.$this->column.'=n', + 'name' => $falseTitle, + ), + )); + } + + public function SetSelect($request) + { + switch (ArrayTools::get($request->GET, 'filter_'.$this->column)) { + case 'y': + $this->choices[1]['selected'] = true; + break; + case 'n': + $this->choices[2]['selected'] = true; + break; + default: + $this->choices[0]['selected'] = true; + } + } + + public function FilterQuery($request, $query) + { + switch (ArrayTools::get($request->GET, 'filter_'.$this->column)) { + case 'y': + $query->addWhere($this->column); + break; + case 'n': + $query->addWhere('NOT '.$this->column); + break; + } + } +} + class ListTreeFilter extends BaseListFilter{ function __construct($name, $title, $model, $fields){ $this->name = $name; -- 2.49.0