summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry <dmitry@dhtmlx.com>2012-07-10 16:39:55 +0200
committerDmitry <dmitry@dhtmlx.com>2012-07-10 16:39:55 +0200
commitfb37b3dc462d73faead66b6c3d16cf5541bde57a (patch)
treea6e18055ddc1fb98fe6ceefece3decc888054b72
parent7a6710c4918b843d303694b4625fbdff2f1ba742 (diff)
downloadconnector-php-fb37b3dc462d73faead66b6c3d16cf5541bde57a.zip
connector-php-fb37b3dc462d73faead66b6c3d16cf5541bde57a.tar.gz
connector-php-fb37b3dc462d73faead66b6c3d16cf5541bde57a.tar.bz2
easy api for filtering
-rw-r--r--codebase/base_connector.php14
-rw-r--r--codebase/db_common.php9
-rw-r--r--samples/common/02_easyfilter_connector.php11
3 files changed, 31 insertions, 3 deletions
diff --git a/codebase/base_connector.php b/codebase/base_connector.php
index 8cf3625..9f0bb85 100644
--- a/codebase/base_connector.php
+++ b/codebase/base_connector.php
@@ -302,6 +302,7 @@ class Connector {
protected $extra_output="";//!< extra info which need to be sent to client side
protected $options=array();//!< hash of OptionsConnector
protected $as_string = false;
+ protected $filters;
/*! constructor
@@ -331,6 +332,7 @@ class Connector {
"render_class"=>$render_type
);
$this->attributes = array();
+ $this->filters = array();
$this->config = new DataConfig();
$this->request = new DataRequestConfig();
@@ -482,6 +484,7 @@ class Connector {
$wrap->store();
$wrap = new FilterInterface($this->request);
+ $this->apply_filters($wrap);
$this->event->trigger("beforeFilter",$wrap);
$wrap->store();
@@ -797,6 +800,17 @@ class Connector {
public function asString($as_string) {
$this->as_string = $as_string;
}
+
+ public function filter($name, $value = false, $operation = '=') {
+ $this->filters[] = array('name' => $name, 'value' => $value, 'operation' => $operation);
+ }
+
+ protected function apply_filters($wrap) {
+ for ($i = 0; $i < count($this->filters); $i++) {
+ $f = $this->filters[$i];
+ $wrap->add($f['name'], $f['value'], $f['operation']);
+ }
+ }
}
diff --git a/codebase/db_common.php b/codebase/db_common.php
index 8b5935a..91d3838 100644
--- a/codebase/db_common.php
+++ b/codebase/db_common.php
@@ -170,8 +170,11 @@ class DataRequestConfig{
@param operation
operation for filtering, optional , LIKE by default
*/
- public function set_filter($field,$value,$operation=false){
- array_push($this->filters,array("name"=>$field,"value"=>$value,"operation"=>$operation));
+ public function set_filter($field,$value=false,$operation=false){
+ if ($value === false)
+ array_push($this->filters,$field);
+ else
+ array_push($this->filters,array("name"=>$field,"value"=>$value,"operation"=>$operation));
}
/*! sets list of used fields
@@ -672,7 +675,7 @@ abstract class DBDataWrapper extends DataWrapper{
public function sequence($sec){
$this->sequence=$sec;
}
-
+
/*! create an sql string for filtering rules
diff --git a/samples/common/02_easyfilter_connector.php b/samples/common/02_easyfilter_connector.php
new file mode 100644
index 0000000..eff8ee7
--- /dev/null
+++ b/samples/common/02_easyfilter_connector.php
@@ -0,0 +1,11 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/grid_connector.php");
+ $grid = new GridConnector($res);
+
+ $grid->dynamic_loading(100);
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+?> \ No newline at end of file