summaryrefslogtreecommitdiffstats
path: root/codebase/treedatamultitable_connector.php
diff options
context:
space:
mode:
Diffstat (limited to 'codebase/treedatamultitable_connector.php')
-rw-r--r--codebase/treedatamultitable_connector.php145
1 files changed, 21 insertions, 124 deletions
diff --git a/codebase/treedatamultitable_connector.php b/codebase/treedatamultitable_connector.php
index af00b88..79cc9a4 100644
--- a/codebase/treedatamultitable_connector.php
+++ b/codebase/treedatamultitable_connector.php
@@ -3,103 +3,35 @@
@author dhtmlx.com
@license GPL, see license.txt
*/
-require_once("tree_connector.php");
+require_once("data_connector.php");
class TreeDataMultitableConnector extends TreeDataConnector{
- protected $level = 0;
- protected $max_level = null;
+ protected $parent_name = 'parent';
public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){
if (!$data_type) $data_type="TreeDataProcessor";
- if (!$render_type) $render_type="MultitableRenderStrategy";
+ if (!$render_type) $render_type="MultitableTreeRenderStrategy";
parent::__construct($res,$type,$item_type,$data_type,$render_type);
- $this->event->attach("beforeProcessing", Array($this, 'id_translate_before'));
- $this->event->attach("afterProcessing", Array($this, 'id_translate_after'));
- }
-
-
- //parse GET scoope, all operations with incoming request must be done here
- protected function parse_request(){
- parent::parse_request();
-
- if (isset($_GET["parent"]))
- $this->request->set_relation($this->parse_id($_GET["parent"], true));
- else
- $this->request->set_relation("0");
}
public function render(){
- $this->event->trigger("onInit", $this);
- EventMaster::trigger_static("connectorInit",$this);
-
- $this->parse_request();
$this->dload = true;
-
- if ($this->live_update !== false && $this->updating!==false) {
- $this->live_update->get_updates();
- } else {
- if ($this->editing){
- $dp = new $this->names["data_class"]($this,$this->config,$this->request);
- $dp->process($this->config,$this->request);
- }
- else {
- if (!$this->access->check("read")){
- LogMaster::log("Access control: read operation blocked");
- echo "Access denied";
- die();
- }
- $wrap = new SortInterface($this->request);
- $this->event->trigger("beforeSort",$wrap);
- $wrap->store();
-
- $wrap = new FilterInterface($this->request);
- $this->event->trigger("beforeFilter",$wrap);
- $wrap->store();
-
- if (!isset($_GET['parent']))
- $this->request->set_relation(false);
- $this->output_as_xml( $this->sql->select($this->request) );
- }
- }
- $this->end_run();
+ return parent::render();
}
- public function xml_start(){
- if (isset($_GET['parent'])) {
- return "<data parent='".$_GET['parent']."'>";
- } else {
- return "<data parent='0'>";
- }
+ /*! sets relation for rendering */
+ protected function set_relation() {
+ if (!isset($_GET[$this->parent_name]))
+ $this->request->set_relation(false);
}
-
- public function get_level() {
- if (isset($_GET['parent']))
- $this->parse_id($_GET['parent']);
- else if (isset($_POST['ids'])) {
- $ids = explode(",",$_POST["ids"]);
- if (isset($ids[0])) $this->parse_id($ids[0]);
- $this->level -= 1;
- }
- return $this->level;
- }
-
- public function parse_id($id, $set_level = true) {
- $parts = explode('#', $id);
- if (count($parts) === 2) {
- $level = $parts[0] + 1;
- $id = $parts[1];
+ public function xml_start(){
+ if (isset($_GET[$this->parent_name])) {
+ return "<data parent='".$this->render->level_id($_GET[$this->parent_name], $this->render->get_level() - 1)."'>";
} else {
- $level = 0;
- $id = '';
+ return "<data parent='0'>";
}
- if ($set_level) $this->level = $level;
- return $id;
- }
-
- public function level_id($id) {
- return $this->level.'#'.$id;
}
/*! set maximum level of tree
@@ -107,49 +39,11 @@ class TreeDataMultitableConnector extends TreeDataConnector{
maximum level
*/
public function setMaxLevel($max_level) {
- $this->max_level = $max_level;
- }
-
-
- /*! gets maximum level of tree data
- */
- public function getMaxLevel() {
- return $this->max_level;
+ $this->render->set_max_level($max_level);
}
-
- public 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
- */
- public function id_translate_before($action) {
- $id = $action->get_id();
- $id = $this->parse_id($id, false);
- $action->set_id($id);
- $action->set_value('tr_id', $id);
- $action->set_new_id($id);
- $pid = $action->get_value($this->config->relation_id['db_name']);
- $pid = $this->parse_id($pid, false);
- $action->set_value($this->config->relation_id['db_name'], $pid);
- }
-
-
- /*! add level prefix in id and new id after processing
- @param action
- DataAction object
- */
- public function id_translate_after($action) {
- $id = $action->get_id();
- $action->set_id($this->level_id($id));
- $id = $action->get_new_id();
- $action->success($this->level_id($id));
+ public function get_level() {
+ return $this->render->get_level($this->parent_name);
}
}
@@ -161,16 +55,19 @@ class TreeDataMultitableConnector extends TreeDataConnector{
class JSONTreeDataMultitableConnector extends TreeDataMultitableConnector{
- public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){
if (!$item_type) $item_type="JSONTreeCommonDataItem";
if (!$data_type) $data_type="CommonDataProcessor";
- if (!$render_type) $render_type="JSONMultitableRenderStrategy";
+ if (!$render_type) $render_type="JSONMultitableTreeRenderStrategy";
parent::__construct($res,$type,$item_type,$data_type,$render_type);
}
protected function output_as_xml($res){
$data = array();
- $data["parent"] = isset($_GET['parent']) ? $_GET['parent'] : '0';
+ if (isset($_GET['parent']))
+ $data["parent"] = $this->render->level_id($_GET[$this->parent_name], $this->render->get_level() - 1);
+ else
+ $data["parent"] = "0";
$data["data"] = $this->render_set($res);
$out = new OutputWriter(json_encode($data), "");