diff options
author | Dmitry <dmitry@dhtmlx.com> | 2012-04-10 11:28:34 +0200 |
---|---|---|
committer | Dmitry <dmitry@dhtmlx.com> | 2012-04-10 11:28:34 +0200 |
commit | bba7f7ae8e572d7f34801266046a3b64a5fda1a0 (patch) | |
tree | 6a62729ff72d39a03209daed92280bc529d1d42d /codebase | |
parent | 9b0dd085922dc899e9624f9ba8f14a685dff5f2a (diff) | |
download | connector-php-bba7f7ae8e572d7f34801266046a3b64a5fda1a0.zip connector-php-bba7f7ae8e572d7f34801266046a3b64a5fda1a0.tar.gz connector-php-bba7f7ae8e572d7f34801266046a3b64a5fda1a0.tar.bz2 |
remove code duplicating
Diffstat (limited to 'codebase')
-rw-r--r-- | codebase/treedatamultitable_connector.php | 66 |
1 files changed, 64 insertions, 2 deletions
diff --git a/codebase/treedatamultitable_connector.php b/codebase/treedatamultitable_connector.php index 81c5043..3e116b6 100644 --- a/codebase/treedatamultitable_connector.php +++ b/codebase/treedatamultitable_connector.php @@ -7,8 +7,8 @@ require_once("tree_connector.php"); class TreeDataMultitableConnector extends TreeDataConnector{ - private $level = 0; - private $max_level = null; + protected $level = 0; + protected $max_level = null; public function __construct($res,$type=false,$item_type=false,$data_type=false){ $data_type="TreeDataProcessor"; @@ -131,6 +131,14 @@ class TreeDataMultitableConnector extends TreeDataConnector{ } + protected function is_max_level() { + if (($this->max_level !== null) && ($this->level >= $this->max_level)) + return true; + return false; + + } + + /*! remove level prefix from id, parent id and set new id before processing @param action DataAction object @@ -160,4 +168,58 @@ class TreeDataMultitableConnector extends TreeDataConnector{ } + + + + + +class JSONTreeDataMultitableConnector extends TreeDataMultitableConnector{ + + public function __construct($res,$type=false,$item_type=false,$data_type=false){ + if (!$item_type) $item_type="JSONTreeCommonDataItem"; + if (!$data_type) $data_type="CommonDataProcessor"; + parent::__construct($res,$type,$item_type,$data_type); + + $this->event->attach("beforeProcessing", Array($this, 'id_translate_before')); + $this->event->attach("afterProcessing", Array($this, 'id_translate_after')); + } + + protected function render_set($res){ + $output=array(); + $index=0; + while ($data=$this->sql->get_next($res)){ + $data[$this->config->id['name']] = $this->level_id($data[$this->config->id['name']]); + $data = new $this->names["item_class"]($data,$this->config,$index); + $this->event->trigger("beforeRender",$data); + + if ($this->is_max_level()) { + $data->set_kids(false); + } else { + if ($data->has_kids()===-1) + $data->set_kids(true); + } + $record = $data->to_xml_start($output); + $output[] = $record; + $index++; + } + return $output; + } + + protected function output_as_xml($res){ + $data = array(); + $data["parent"] = isset($_GET['parent']) ? $_GET['parent'] : '0'; + $data["data"] = $this->render_set($res); + + $out = new OutputWriter(json_encode($data), ""); + $out->set_type("json"); + $this->event->trigger("beforeOutput", $this, $out); + $out->output("", true, $this->encoding); + } + + public function xml_start(){ + return ''; + } +} + + ?>
\ No newline at end of file |