}
}
+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;