]> git.andy128k.dev Git - ipf.git/commitdiff
boolean admin filter
authorAndrey Kutejko <andy128k@gmail.com>
Sat, 30 Nov 2013 09:11:28 +0000 (11:11 +0200)
committerAndrey Kutejko <andy128k@gmail.com>
Sat, 30 Nov 2013 09:11:28 +0000 (11:11 +0200)
ipf/admin/model.php

index eacc4e0e0f6dbdf6d83f399a07986166861357ac..d651636f6754ba73ee0c5c56b589a72f5f0a39a6 100644 (file)
@@ -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;