diff options
author | Stanislav <stanislau.wolski@gmail.com> | 2012-05-22 01:25:12 +0300 |
---|---|---|
committer | Stanislav <stanislau.wolski@gmail.com> | 2012-05-22 01:25:12 +0300 |
commit | b33829f06ced3f35a4463f84f769b753faf70ab4 (patch) | |
tree | 638c9af7d2dc0c8f3f1c69046cf1c736a417e887 /codebase/tree_connector.php | |
parent | 05ad07fee439616159c687a806270fd587af9abc (diff) | |
download | connector-php-b33829f06ced3f35a4463f84f769b753faf70ab4.zip connector-php-b33829f06ced3f35a4463f84f769b753faf70ab4.tar.gz connector-php-b33829f06ced3f35a4463f84f769b753faf70ab4.tar.bz2 |
[add] ability to define extra data attributes
Diffstat (limited to 'codebase/tree_connector.php')
-rw-r--r-- | codebase/tree_connector.php | 458 |
1 files changed, 224 insertions, 234 deletions
diff --git a/codebase/tree_connector.php b/codebase/tree_connector.php index 850de0d..ddc21e7 100644 --- a/codebase/tree_connector.php +++ b/codebase/tree_connector.php @@ -1,235 +1,225 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("base_connector.php"); - -/*! DataItem class for Tree component -**/ - -class TreeDataItem extends DataItem{ - private $im0;//!< image of closed folder - private $im1;//!< image of opened folder - private $im2;//!< image of leaf item - private $check;//!< checked state - private $kids=-1;//!< checked state - private $attrs;//!< collection of custom attributes - - function __construct($data,$config,$index){ - parent::__construct($data,$config,$index); - - $this->im0=false; - $this->im1=false; - $this->im2=false; - $this->check=false; - $this->attrs = array(); - $this->userdata = array(); - } - /*! get id of parent record - - @return - id of parent record - */ - function get_parent_id(){ - return $this->data[$this->config->relation_id["name"]]; - } - /*! get state of items checkbox - - @return - state of item's checkbox as int value, false if state was not defined - */ - function get_check_state(){ - return $this->check; - } - /*! set state of item's checkbox - - @param value - int value, 1 - checked, 0 - unchecked, -1 - third state - */ - function set_check_state($value){ - $this->check=$value; - } - - /*! return count of child items - -1 if there is no info about childs - @return - count of child items - */ - function has_kids(){ - return $this->kids; - } - /*! sets count of child items - @param value - count of child items - */ - function set_kids($value){ - $this->kids=$value; - } - - /*! set custom attribute - - @param name - name of the attribute - @param value - new value of the attribute - */ - function set_attribute($name, $value){ - switch($name){ - case "id": - $this->set_id($value); - break; - case "text": - $this->data[$this->config->text[0]["name"]]=$value; - break; - case "checked": - $this->set_check_state($value); - break; - case "im0": - $this->im0=$value; - break; - case "im1": - $this->im1=$value; - break; - case "im2": - $this->im2=$value; - break; - case "child": - $this->set_kids($value); - break; - default: - $this->attrs[$name]=$value; - } - } - - /*! set userdata section for the item - - @param name - name of userdata - @param value - value of userdata - */ - function set_userdata($name, $value){ - $this->userdata[$name]=$value; - } - - /*! assign image for tree's item - - @param img_folder_closed - image for item, which represents folder in closed state - @param img_folder_open - image for item, which represents folder in opened state, optional - @param img_leaf - image for item, which represents leaf item, optional - */ - function set_image($img_folder_closed,$img_folder_open=false,$img_leaf=false){ - $this->im0=$img_folder_closed; - $this->im1=$img_folder_open?$img_folder_open:$img_folder_closed; - $this->im2=$img_leaf?$img_leaf:$img_folder_closed; - } - /*! return self as XML string, starting part - */ - function to_xml_start(){ - if ($this->skip) return ""; - - $str1="<item id='".$this->get_id()."' text='".$this->xmlentities($this->data[$this->config->text[0]["name"]])."' "; - if ($this->has_kids()==true) $str1.="child='".$this->has_kids()."' "; - if ($this->im0) $str1.="im0='".$this->im0."' "; - if ($this->im1) $str1.="im1='".$this->im1."' "; - if ($this->im2) $str1.="im2='".$this->im2."' "; - if ($this->check) $str1.="checked='".$this->check."' "; - foreach ($this->attrs as $key => $value) - $str1.=$key."='".$this->xmlentities($value)."' "; - $str1.=">"; - foreach ($this->userdata as $key => $value) - $str1.="<userdata name='".$key."'><![CDATA[".$value."]]></userdata>"; - - return $str1; - } - /*! return self as XML string, ending part - */ - function to_xml_end(){ - if ($this->skip) return ""; - return "</item>"; - } - -} - -require_once("filesystem_item.php"); - -/*! Connector for the dhtmlxtree -**/ -class TreeConnector extends Connector{ - protected $parent_name = 'id'; - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param res - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - * @param render_type - * name of class which will provides data rendering - */ - public function __construct($res,$type=false,$item_type=false,$data_type=false, $render_type=false){ - if (!$item_type) $item_type="TreeDataItem"; - if (!$data_type) $data_type="TreeDataProcessor"; - if (!$render_type) $render_type="TreeRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - //parse GET scoope, all operations with incoming request must be done here - public function parse_request(){ - parent::parse_request(); - - if (isset($_GET[$this->parent_name])) - $this->request->set_relation($_GET[$this->parent_name]); - else - $this->request->set_relation("0"); - - $this->request->set_limit(0,0); //netralize default reaction on dyn. loading mode - } - - /*! renders self as xml, starting part - */ - public function xml_start(){ - return "<tree id='".$this->request->get_relation()."'>"; - } - - /*! renders self as xml, ending part - */ - public function xml_end(){ - return "</tree>"; - } -} - - -class TreeDataProcessor extends DataProcessor{ - - function __construct($connector,$config,$request){ - parent::__construct($connector,$config,$request); - $request->set_relation(false); - } - - /*! convert incoming data name to valid db name - converts c0..cN to valid field names - @param data - data name from incoming request - @return - related db_name - */ - function name_data($data){ - if ($data=="tr_pid") - return $this->config->relation_id["db_name"]; - if ($data=="tr_text") - return $this->config->text[0]["db_name"]; - return $data; - } -} - +<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("base_connector.php");
+
+/*! DataItem class for Tree component
+**/
+
+class TreeDataItem extends DataItem{
+ private $im0;//!< image of closed folder
+ private $im1;//!< image of opened folder
+ private $im2;//!< image of leaf item
+ private $check;//!< checked state
+ private $kids=-1;//!< checked state
+ private $attrs;//!< collection of custom attributes
+
+ function __construct($data,$config,$index){
+ parent::__construct($data,$config,$index);
+
+ $this->im0=false;
+ $this->im1=false;
+ $this->im2=false;
+ $this->check=false;
+ $this->attrs = array();
+ }
+ /*! get id of parent record
+
+ @return
+ id of parent record
+ */
+ function get_parent_id(){
+ return $this->data[$this->config->relation_id["name"]];
+ }
+ /*! get state of items checkbox
+
+ @return
+ state of item's checkbox as int value, false if state was not defined
+ */
+ function get_check_state(){
+ return $this->check;
+ }
+ /*! set state of item's checkbox
+
+ @param value
+ int value, 1 - checked, 0 - unchecked, -1 - third state
+ */
+ function set_check_state($value){
+ $this->check=$value;
+ }
+
+ /*! return count of child items
+ -1 if there is no info about childs
+ @return
+ count of child items
+ */
+ function has_kids(){
+ return $this->kids;
+ }
+ /*! sets count of child items
+ @param value
+ count of child items
+ */
+ function set_kids($value){
+ $this->kids=$value;
+ }
+
+ /*! set custom attribute
+
+ @param name
+ name of the attribute
+ @param value
+ new value of the attribute
+ */
+ function set_attribute($name, $value){
+ switch($name){
+ case "id":
+ $this->set_id($value);
+ break;
+ case "text":
+ $this->data[$this->config->text[0]["name"]]=$value;
+ break;
+ case "checked":
+ $this->set_check_state($value);
+ break;
+ case "im0":
+ $this->im0=$value;
+ break;
+ case "im1":
+ $this->im1=$value;
+ break;
+ case "im2":
+ $this->im2=$value;
+ break;
+ case "child":
+ $this->set_kids($value);
+ break;
+ default:
+ $this->attrs[$name]=$value;
+ }
+ }
+
+
+ /*! assign image for tree's item
+
+ @param img_folder_closed
+ image for item, which represents folder in closed state
+ @param img_folder_open
+ image for item, which represents folder in opened state, optional
+ @param img_leaf
+ image for item, which represents leaf item, optional
+ */
+ function set_image($img_folder_closed,$img_folder_open=false,$img_leaf=false){
+ $this->im0=$img_folder_closed;
+ $this->im1=$img_folder_open?$img_folder_open:$img_folder_closed;
+ $this->im2=$img_leaf?$img_leaf:$img_folder_closed;
+ }
+ /*! return self as XML string, starting part
+ */
+ function to_xml_start(){
+ if ($this->skip) return "";
+
+ $str1="<item id='".$this->get_id()."' text='".$this->xmlentities($this->data[$this->config->text[0]["name"]])."' ";
+ if ($this->has_kids()==true) $str1.="child='".$this->has_kids()."' ";
+ if ($this->im0) $str1.="im0='".$this->im0."' ";
+ if ($this->im1) $str1.="im1='".$this->im1."' ";
+ if ($this->im2) $str1.="im2='".$this->im2."' ";
+ if ($this->check) $str1.="checked='".$this->check."' ";
+ foreach ($this->attrs as $key => $value)
+ $str1.=$key."='".$this->xmlentities($value)."' ";
+ $str1.=">";
+ if ($this->userdata !== false)
+ foreach ($this->userdata as $key => $value)
+ $str1.="<userdata name='".$key."'><![CDATA[".$value."]]></userdata>";
+
+ return $str1;
+ }
+ /*! return self as XML string, ending part
+ */
+ function to_xml_end(){
+ if ($this->skip) return "";
+ return "</item>";
+ }
+
+}
+
+require_once("filesystem_item.php");
+
+/*! Connector for the dhtmlxtree
+**/
+class TreeConnector extends Connector{
+ protected $parent_name = 'id';
+
+ /*! constructor
+
+ Here initilization of all Masters occurs, execution timer initialized
+ @param res
+ db connection resource
+ @param type
+ string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided
+ @param item_type
+ name of class, which will be used for item rendering, optional, DataItem will be used by default
+ @param data_type
+ name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default.
+ * @param render_type
+ * name of class which will provides data rendering
+ */
+ public function __construct($res,$type=false,$item_type=false,$data_type=false, $render_type=false){
+ if (!$item_type) $item_type="TreeDataItem";
+ if (!$data_type) $data_type="TreeDataProcessor";
+ if (!$render_type) $render_type="TreeRenderStrategy";
+ parent::__construct($res,$type,$item_type,$data_type,$render_type);
+ }
+
+ //parse GET scoope, all operations with incoming request must be done here
+ public function parse_request(){
+ parent::parse_request();
+
+ if (isset($_GET[$this->parent_name]))
+ $this->request->set_relation($_GET[$this->parent_name]);
+ else
+ $this->request->set_relation("0");
+
+ $this->request->set_limit(0,0); //netralize default reaction on dyn. loading mode
+ }
+
+ /*! renders self as xml, starting part
+ */
+ public function xml_start(){
+ return "<tree id='".$this->request->get_relation()."'>";
+ }
+
+ /*! renders self as xml, ending part
+ */
+ public function xml_end(){
+ return "</tree>";
+ }
+}
+
+
+class TreeDataProcessor extends DataProcessor{
+
+ function __construct($connector,$config,$request){
+ parent::__construct($connector,$config,$request);
+ $request->set_relation(false);
+ }
+
+ /*! convert incoming data name to valid db name
+ converts c0..cN to valid field names
+ @param data
+ data name from incoming request
+ @return
+ related db_name
+ */
+ function name_data($data){
+ if ($data=="tr_pid")
+ return $this->config->relation_id["db_name"];
+ if ($data=="tr_text")
+ return $this->config->text[0]["db_name"];
+ return $data;
+ }
+}
+
?>
\ No newline at end of file |