summaryrefslogtreecommitdiffstats
path: root/codebase/data_connector.php
diff options
context:
space:
mode:
Diffstat (limited to 'codebase/data_connector.php')
-rw-r--r--codebase/data_connector.php528
1 files changed, 0 insertions, 528 deletions
diff --git a/codebase/data_connector.php b/codebase/data_connector.php
deleted file mode 100644
index 165cc0f..0000000
--- a/codebase/data_connector.php
+++ /dev/null
@@ -1,528 +0,0 @@
-<?php
-/*
- @author dhtmlx.com
- @license GPL, see license.txt
-*/
-require_once("base_connector.php");
-
-class CommonDataProcessor extends DataProcessor{
- protected function get_post_values($ids){
- if (isset($_GET['action'])){
- $data = array();
- if (isset($_POST["id"])){
- $dataset = array();
- foreach($_POST as $key=>$value)
- $dataset[$key] = ConnectorSecurity::filter($value);
-
- $data[$_POST["id"]] = $dataset;
- }
- else
- $data["dummy_id"] = $_POST;
- return $data;
- }
- return parent::get_post_values($ids);
- }
-
- protected function get_ids(){
- if (isset($_GET['action'])){
- if (isset($_POST["id"]))
- return array($_POST['id']);
- else
- return array("dummy_id");
- }
- return parent::get_ids();
- }
-
- protected function get_operation($rid){
- if (isset($_GET['action']))
- return $_GET['action'];
- return parent::get_operation($rid);
- }
-
- public function output_as_xml($results){
- if (isset($_GET['action'])){
- LogMaster::log("Edit operation finished",$results);
- ob_clean();
- $type = $results[0]->get_status();
- if ($type == "error" || $type == "invalid"){
- echo "false";
- } else if ($type=="insert"){
- echo "true\n".$results[0]->get_new_id();
- } else
- echo "true";
- } else
- return parent::output_as_xml($results);
- }
-};
-
-/*! DataItem class for DataView component
-**/
-class CommonDataItem extends DataItem{
- /*! return self as XML string
- */
- function to_xml(){
- if ($this->skip) return "";
- return $this->to_xml_start().$this->to_xml_end();
- }
-
- function to_xml_start(){
- $str="<item id='".$this->get_id()."' ";
- for ($i=0; $i < sizeof($this->config->text); $i++){
- $name=$this->config->text[$i]["name"];
- $str.=" ".$name."='".$this->xmlentities($this->data[$name])."'";
- }
-
- if ($this->userdata !== false)
- foreach ($this->userdata as $key => $value)
- $str.=" ".$key."='".$this->xmlentities($value)."'";
-
- return $str.">";
- }
-}
-
-
-/*! Connector class for DataView
-**/
-class DataConnector extends Connector{
-
- /*! 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.
- */
- public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){
- if (!$item_type) $item_type="CommonDataItem";
- if (!$data_type) $data_type="CommonDataProcessor";
-
- $this->sections = array();
-
- if (!$render_type) $render_type="RenderStrategy";
- parent::__construct($res,$type,$item_type,$data_type,$render_type);
-
- }
-
- protected $sections;
- public function add_section($name, $string){
- $this->sections[$name] = $string;
- }
-
- protected function parse_request_mode(){
- if (isset($_GET['action']) && $_GET["action"] != "get")
- $this->editing = true;
- else
- parent::parse_request_mode();
- }
-
- //parse GET scoope, all operations with incoming request must be done here
- protected function parse_request(){
- if (isset($_GET['action'])){
- $action = $_GET['action'];
- //simple request mode
- if ($action == "get"){
- //data request
- if (isset($_GET['id'])){
- //single entity data request
- $this->request->set_filter($this->config->id["name"],$_GET['id'],"=");
- } else {
- //loading collection of items
- }
- } else {
- //data saving
- $this->editing = true;
- }
- parent::check_csrf();
- } else {
- if (isset($_GET['editing']) && isset($_POST['ids']))
- $this->editing = true;
- parent::parse_request();
- }
-
- if (isset($_GET["start"]) && isset($_GET["count"]))
- $this->request->set_limit($_GET["start"],$_GET["count"]);
-
- }
-
- /*! renders self as xml, starting part
- */
- protected function xml_start(){
- $start = "<data";
- foreach($this->attributes as $k=>$v)
- $start .= " ".$k."='".$v."'";
- $start.= ">";
-
- foreach($this->sections as $k=>$v)
- $start .= "<".$k.">".$v."</".$k.">\n";
- return $start;
- }
-};
-
-class JSONDataConnector extends DataConnector{
-
- public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){
- if (!$item_type) $item_type="JSONCommonDataItem";
- if (!$data_type) $data_type="CommonDataProcessor";
- if (!$render_type) $render_type="JSONRenderStrategy";
- $this->data_separator = ",\n";
- parent::__construct($res,$type,$item_type,$data_type,$render_type);
- }
-
- /*! assign options collection to the column
-
- @param name
- name of the column
- @param options
- array or connector object
- */
- public function set_options($name,$options){
- if (is_array($options)){
- $str=array();
- foreach($options as $k => $v)
- $str[]='{"id":"'.$this->xmlentities($k).'", "value":"'.$this->xmlentities($v).'"}';
- $options=implode(",",$str);
- }
- $this->options[$name]=$options;
- }
-
- /*! generates xml description for options collections
-
- @param list
- comma separated list of column names, for which options need to be generated
- */
- protected function fill_collections($list=""){
- $options = array();
- foreach ($this->options as $k=>$v) {
- $name = $k;
- $option="\"{$name}\":[";
- if (!is_string($this->options[$name]))
- $option.=substr(json_encode($this->options[$name]->render()),1,-1);
- else
- $option.=$this->options[$name];
- $option.="]";
- $options[] = $option;
- }
- $this->extra_output .= implode($this->data_separator, $options);
- }
-
- protected function resolve_parameter($name){
- if (intval($name).""==$name)
- return $this->config->text[intval($name)]["db_name"];
- return $name;
- }
-
- protected function output_as_xml($res){
- $json = $this->render_set($res);
- if ($this->simple) return $json;
- $result = json_encode($json);
-
- $this->fill_collections();
- $is_sections = sizeof($this->sections) && $this->is_first_call();
- if ($this->dload || $is_sections || sizeof($this->attributes) || !empty($this->extra_data)){
-
- $attributes = "";
- foreach($this->attributes as $k=>$v)
- $attributes .= ", \"".$k."\":\"".$v."\"";
-
- $extra = "";
- if (!empty($this->extra_output))
- $extra .= ', "collections": {'.$this->extra_output.'}';
-
- $sections = "";
- if ($is_sections){
- //extra sections
- foreach($this->sections as $k=>$v)
- $sections .= ", \"".$k."\":".$v;
- }
-
- $dyn = "";
- if ($this->dload){
- //info for dyn. loadin
- if ($pos=$this->request->get_start())
- $dyn .= ", \"pos\":".$pos;
- else
- $dyn .= ", \"pos\":0, \"total_count\":".$this->sql->get_size($this->request);
- }
- if ($attributes || $sections || $this->extra_output || $dyn) {
- $result = "{ \"data\":".$result.$attributes.$extra.$sections.$dyn."}";
- }
- }
-
- // return as string
- if ($this->as_string) return $result;
-
- // output direct to response
- $out = new OutputWriter($result, "");
- $out->set_type("json");
- $this->event->trigger("beforeOutput", $this, $out);
- $out->output("", true, $this->encoding);
- return null;
- }
-}
-
-class JSONCommonDataItem extends DataItem{
- /*! return self as XML string
- */
- function to_xml(){
- if ($this->skip) return false;
-
- $data = array(
- 'id' => $this->get_id()
- );
- for ($i=0; $i<sizeof($this->config->text); $i++){
- $extra = $this->config->text[$i]["name"];
- $data[$extra]=$this->data[$extra];
- if (is_null($data[$extra]))
- $data[$extra] = "";
- }
-
- if ($this->userdata !== false)
- foreach ($this->userdata as $key => $value){
- if ($value === null)
- $data[$key]="";
- $data[$key]=$value;
- }
-
- return $data;
- }
-}
-
-
-/*! wrapper around options collection, used for comboboxes and filters
-**/
-class JSONOptionsConnector extends JSONDataConnector{
- protected $init_flag=false;//!< used to prevent rendering while initialization
- public function __construct($res,$type=false,$item_type=false,$data_type=false){
- if (!$item_type) $item_type="JSONCommonDataItem";
- if (!$data_type) $data_type=""; //has not sense, options not editable
- parent::__construct($res,$type,$item_type,$data_type);
- }
- /*! render self
- process commands, return data as XML, not output data to stdout, ignore parameters in incoming request
- @return
- data as XML string
- */
- public function render(){
- if (!$this->init_flag){
- $this->init_flag=true;
- return "";
- }
- $res = $this->sql->select($this->request);
- return $this->render_set($res);
- }
-}
-
-
-class JSONDistinctOptionsConnector extends JSONOptionsConnector{
- /*! render self
- process commands, return data as XML, not output data to stdout, ignore parameters in incoming request
- @return
- data as XML string
- */
- public function render(){
- if (!$this->init_flag){
- $this->init_flag=true;
- return "";
- }
- $res = $this->sql->get_variants($this->config->text[0]["db_name"],$this->request);
- return $this->render_set($res);
- }
-}
-
-
-
-class TreeCommonDataItem extends CommonDataItem{
- protected $kids=-1;
-
- function to_xml_start(){
- $str="<item id='".$this->get_id()."' ";
- for ($i=0; $i < sizeof($this->config->text); $i++){
- $name=$this->config->text[$i]["name"];
- $str.=" ".$name."='".$this->xmlentities($this->data[$name])."'";
- }
-
- if ($this->userdata !== false)
- foreach ($this->userdata as $key => $value)
- $str.=" ".$key."='".$this->xmlentities($value)."'";
-
- if ($this->kids === true)
- $str .=" ".Connector::$kids_var."='1'";
-
- return $str.">";
- }
-
- function has_kids(){
- return $this->kids;
- }
-
- function set_kids($value){
- $this->kids=$value;
- }
-}
-
-
-class TreeDataConnector extends DataConnector{
- protected $parent_name = 'parent';
- public $rootId = "0";
-
- /*! 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="TreeCommonDataItem";
- if (!$data_type) $data_type="CommonDataProcessor";
- 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
- protected 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($this->rootId);
-
- $this->request->set_limit(0,0); //netralize default reaction on dyn. loading mode
- }
-
- /*! renders self as xml, starting part
- */
- protected function xml_start(){
- $attributes = " ";
- if (!$this->rootId || $this->rootId != $this->request->get_relation())
- $attributes = " parent='".$this->request->get_relation()."' ";
-
- foreach($this->attributes as $k=>$v)
- $attributes .= " ".$k."='".$v."'";
-
- return "<data".$attributes.">";
- }
-}
-
-
-class JSONTreeDataConnector extends TreeDataConnector{
-
- 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="JSONTreeRenderStrategy";
- parent::__construct($res,$type,$item_type,$data_type,$render_type);
- }
-
- protected function output_as_xml($res){
- $result = $this->render_set($res);
- if ($this->simple) return $result;
-
- $data = array();
- if (!$this->rootId || $this->rootId != $this->request->get_relation())
- $data["parent"] = $this->request->get_relation();
-
- $data["data"] = $result;
-
- $this->fill_collections();
- if (!empty($this->options))
- $data["collections"] = $this->options;
-
-
- foreach($this->attributes as $k=>$v)
- $data[$k] = $v;
-
- $data = json_encode($data);
-
- // return as string
- if ($this->as_string) return $data;
-
- // output direct to response
- $out = new OutputWriter($data, "");
- $out->set_type("json");
- $this->event->trigger("beforeOutput", $this, $out);
- $out->output("", true, $this->encoding);
- }
-
- /*! assign options collection to the column
-
- @param name
- name of the column
- @param options
- array or connector object
- */
- public function set_options($name,$options){
- if (is_array($options)){
- $str=array();
- foreach($options as $k => $v)
- $str[]=Array("id"=>$this->xmlentities($k), "value"=>$this->xmlentities($v));//'{"id":"'.$this->xmlentities($k).'", "value":"'.$this->xmlentities($v).'"}';
- $options=$str;
- }
- $this->options[$name]=$options;
- }
-
- /*! generates xml description for options collections
-
- @param list
- comma separated list of column names, for which options need to be generated
- */
- protected function fill_collections($list=""){
- $options = array();
- foreach ($this->options as $k=>$v) {
- $name = $k;
- if (!is_array($this->options[$name]))
- $option=$this->options[$name]->render();
- else
- $option=$this->options[$name];
- $options[$name] = $option;
- }
- $this->options = $options;
- $this->extra_output .= "'collections':".json_encode($options);
- }
-
-}
-
-
-class JSONTreeCommonDataItem extends TreeCommonDataItem{
- /*! return self as XML string
- */
- function to_xml_start(){
- if ($this->skip) return false;
-
- $data = array( "id" => $this->get_id() );
- for ($i=0; $i<sizeof($this->config->text); $i++){
- $extra = $this->config->text[$i]["name"];
- if (isset($this->data[$extra]))
- $data[$extra]=$this->data[$extra];
- }
-
- if ($this->userdata !== false)
- foreach ($this->userdata as $key => $value)
- $data[$key]=$value;
-
- if ($this->kids === true)
- $data[Connector::$kids_var] = 1;
-
- return $data;
- }
-
- function to_xml_end(){
- return "";
- }
-}
-
-
-?>