├── README.md ├── codebase ├── base_connector.php ├── chart_connector.php ├── combo_connector.php ├── connector.js ├── convert.php ├── crosslink_connector.php ├── data_connector.php ├── dataprocessor.php ├── dataview_connector.php ├── db_adodb.php ├── db_common.php ├── db_excel.php ├── db_filesystem.php ├── db_mssql.php ├── db_mysql.php ├── db_mysqli.php ├── db_oracle.php ├── db_pdo.php ├── db_phpcake.php ├── db_phpcake2.php ├── db_phpci.php ├── db_phpci2.php ├── db_phpyii.php ├── db_phpyii1.php ├── db_postgre.php ├── db_sasql.php ├── db_sqlite.php ├── db_sqlite3.php ├── db_sqlsrv.php ├── filesystem_item.php ├── form_connector.php ├── gantt_connector.php ├── grid_config.php ├── grid_connector.php ├── keygrid_connector.php ├── mixed_connector.php ├── options_connector.php ├── scheduler_connector.php ├── strategy.php ├── tools.php ├── tree_connector.php ├── treedatagroup_connector.php ├── treedatamultitable_connector.php ├── treegrid_connector.php ├── treegridgroup_connector.php ├── treegridmultitable_connector.php ├── treegroup_connector.php ├── treemultitable_connector.php ├── update.php └── xss_filter.php ├── composer.json ├── license.txt └── samples ├── combo ├── 01_basic.html ├── 01_basic_connector.php ├── 01_basic_srnd_connector.php ├── 02_sql.html ├── 02_sql_connector.php ├── 02_sql_srnd_connector.php └── index.html ├── common ├── 01_mixin_connector.php ├── 02_easyfilter_connector.php ├── 03_easysort_connector.php ├── 04_mix_connector.php └── 05_asstring_connector.php ├── config.php ├── dataview ├── 01_static_loading.html ├── 01_static_loading.php ├── 02_dynamic_loading.html ├── 02_dynamic_loading.php ├── 03_adding.html ├── 03_adding.php └── index.html ├── dhtmlx ├── dhtmlx.css ├── dhtmlx.js ├── dhtmlxscheduler.css ├── dhtmlxscheduler.js ├── dhtmlxscheduler_recurring.js └── imgs │ ├── dhxacc_skyblue │ ├── dhxacc_btns.gif │ └── dhxacc_cell_progress.gif │ ├── dhxcalendar_skyblue │ ├── dhxcalendar_arrow_left.gif │ ├── dhxcalendar_arrow_right.gif │ ├── dhxcalendar_clock.gif │ ├── dhxcalendar_mark.gif │ ├── dhxcalendar_selector_bottom.gif │ └── dhxcalendar_selector_top.gif │ ├── dhxcarousel_skyblue │ └── dhxcarousel_cell_progress.gif │ ├── dhxcombo_skyblue │ ├── dhxcombo_arrow_down.gif │ ├── dhxcombo_arrow_down_dis.gif │ └── dhxcombo_chbx.gif │ ├── dhxcp_skyblue │ ├── dhxcp_colors.png │ └── dhxcp_icon_save.png │ ├── dhxdataview_skyblue │ ├── dnd_selector.png │ ├── dnd_selector_cells.png │ ├── dnd_selector_lines.png │ └── marker.png │ ├── dhxeditor_skyblue │ ├── align_center.gif │ ├── align_justify.gif │ ├── align_left.gif │ ├── align_right.gif │ ├── bold.gif │ ├── buttons.gif │ ├── clear.gif │ ├── h1.gif │ ├── h2.gif │ ├── h3.gif │ ├── h4.gif │ ├── indent_dec.gif │ ├── indent_inc.gif │ ├── italic.gif │ ├── list_bullet.gif │ ├── list_number.gif │ ├── script_sub.gif │ ├── script_super.gif │ ├── strike.gif │ └── underline.gif │ ├── dhxform_skyblue │ ├── dhxform_chbxrd.gif │ ├── dhxform_upload_buttons.gif │ └── dhxform_upload_uploading.gif │ ├── dhxgrid_skyblue │ ├── ar_left.gif │ ├── ar_left_abs.gif │ ├── ar_left_abs_dis.gif │ ├── ar_left_dis.gif │ ├── ar_right.gif │ ├── ar_right_abs.gif │ ├── ar_right_abs_dis.gif │ ├── ar_right_dis.gif │ ├── blank.gif │ ├── combo_select.gif │ ├── combo_select_dhx_skyblue.gif │ ├── combo_select_dhx_skyblue_normal.png │ ├── combo_select_dhx_skyblue_red_corner.png │ ├── dyn_.gif │ ├── dyn_down.gif │ ├── dyn_up.gif │ ├── imageloaderror.gif │ ├── item_chk0.gif │ ├── item_chk0_dis.gif │ ├── item_chk1.gif │ ├── item_chk1_dis.gif │ ├── minus.gif │ ├── paging_page.gif │ ├── paging_pages.gif │ ├── paging_rows.gif │ ├── plus.gif │ ├── radio_chk0.gif │ ├── radio_chk0_dis.gif │ ├── radio_chk1.gif │ ├── radio_chk1_dis.gif │ ├── sort_asc.gif │ ├── sort_desc.gif │ └── tree │ │ ├── blank.gif │ │ ├── folder.gif │ │ ├── leaf.gif │ │ ├── line.gif │ │ ├── line1.gif │ │ ├── line2.gif │ │ ├── line3.gif │ │ ├── line4.gif │ │ ├── minus.gif │ │ ├── minus1.gif │ │ ├── minus2.gif │ │ ├── minus3.gif │ │ ├── minus4.gif │ │ ├── minus5.gif │ │ ├── plus.gif │ │ ├── plus1.gif │ │ ├── plus2.gif │ │ ├── plus3.gif │ │ ├── plus4.gif │ │ └── plus5.gif │ ├── dhxlayout_skyblue │ ├── dhxlayout_cell_btns.gif │ ├── dhxlayout_cell_progress.gif │ ├── dhxlayout_sep_h.gif │ └── dhxlayout_sep_v.gif │ ├── dhxmenu_skyblue │ ├── dhxmenu_arrow_down.gif │ ├── dhxmenu_arrow_down_dis.gif │ ├── dhxmenu_arrow_up.gif │ ├── dhxmenu_arrow_up_dis.gif │ ├── dhxmenu_chrd.gif │ ├── dhxmenu_loader.gif │ └── dhxmenu_subar.gif │ ├── dhxpopup_skyblue │ ├── dhxpopup_arrow_bottom.gif │ ├── dhxpopup_arrow_left.gif │ ├── dhxpopup_arrow_right.gif │ └── dhxpopup_arrow_top.gif │ ├── dhxribbon_skyblue │ ├── dhxribbon_arrow.gif │ ├── dhxribbon_checked.gif │ └── dhxribbon_checked_dis.gif │ ├── dhxsidebar_skyblue │ ├── dhxsidebar_arrow_down.gif │ ├── dhxsidebar_arrow_up.gif │ └── dhxsidebar_cell_progress.gif │ ├── dhxtabbar_skyblue │ ├── dhxtabbar_arrows.gif │ ├── dhxtabbar_button_close.gif │ └── dhxtabbar_cell_progress.gif │ ├── dhxtoolbar_skyblue │ ├── dhxtoolbar_arrow.gif │ └── dhxtoolbar_arrow_dis.gif │ ├── dhxtree_skyblue │ ├── blank.gif │ ├── but_cut.gif │ ├── folderClosed.gif │ ├── folderOpen.gif │ ├── iconCheckAll.gif │ ├── iconCheckDis.gif │ ├── iconCheckGray.gif │ ├── iconUncheckAll.gif │ ├── iconUncheckDis.gif │ ├── leaf.gif │ ├── line.gif │ ├── line1.gif │ ├── line1_rtl.gif │ ├── line2.gif │ ├── line2_rtl.gif │ ├── line3.gif │ ├── line3_rtl.gif │ ├── line4.gif │ ├── line4_rtl.gif │ ├── lock.gif │ ├── minus.gif │ ├── minus1.gif │ ├── minus2.gif │ ├── minus2_rtl.gif │ ├── minus3.gif │ ├── minus3_rtl.gif │ ├── minus4.gif │ ├── minus4_rtl.gif │ ├── minus5.gif │ ├── minus5_rtl.gif │ ├── plus.gif │ ├── plus1.gif │ ├── plus2.gif │ ├── plus2_rtl.gif │ ├── plus3.gif │ ├── plus3_rtl.gif │ ├── plus4.gif │ ├── plus4_rtl.gif │ ├── plus5.gif │ ├── plus5_rtl.gif │ ├── radio_off.gif │ └── radio_on.gif │ └── dhxwins_skyblue │ ├── dhxwins_buttons.gif │ ├── dhxwins_icon.gif │ └── dhxwins_progress.gif ├── dump.sql ├── export ├── csv.php ├── excel.php ├── html.php └── pdf.php ├── gantt └── 01_basic_init_connector.php ├── grid ├── 01_basic.html ├── 01_basic_connector.php ├── 01a_sql_basic.html ├── 01a_sql_basic_connector.php ├── 02_rendering.html ├── 02_rendering_connector.php ├── 03_validation.html ├── 03_validation_connector.php ├── 04_custom_sql.html ├── 04_custom_sql_connector.php ├── 05_select_filter.html ├── 05_select_filter_connector.php ├── 05a_select_filter.html ├── 05a_select_filter_connector.php ├── 06_combo.html ├── 06_combo_connector.php ├── 09_server_side_configuration.html ├── 09_server_side_configuration.php ├── 10_auto_config.html ├── 10_auto_config.php ├── 11_auto_config_filters.html ├── 11_auto_config_filters.php ├── 12_attach_header_server.html ├── 12_attach_header_server.php ├── 13_filesystem_grid_connector.html ├── 13_filesystem_grid_connector.php ├── index.html ├── xx_adodb.html ├── xx_adodb.php ├── xx_sample_mssql.html ├── xx_sample_mssql_connector.php ├── xx_sample_mysqli.html ├── xx_sample_mysqli_connector.php ├── xx_sample_oracle.html ├── xx_sample_oracle_connector.php ├── xx_sample_pdo.html ├── xx_sample_pdo_connector.php ├── xx_sample_pdo_pg.html ├── xx_sample_pdo_pg_connector.php ├── xx_sample_postgresql.html ├── xx_sample_postgresql_connector.php ├── xx_sample_sasql.html ├── xx_sample_sasql_connector.php └── xx_sample_sqlite3_connector.php ├── index.html ├── readme.txt ├── scheduler ├── 01_basic_init.html ├── 01_basic_init_connector.php ├── 02_dynamic_loading.html ├── 02_dynamic_loading_connector.php ├── 03_connector_options.html ├── 03_connector_options.php ├── 04_recurring_events.html ├── 04_recurring_events_connector.php ├── 05_json.html ├── 05_json_connector.php ├── 06_json_connector_options.html ├── 06_json_connector_options.php ├── 07_array_connector.html ├── 07_array_connector.php └── index.html ├── security ├── data_csrf.php ├── dataview_csrf.php ├── form_csrf.php ├── grid_csrf.php ├── scheduler_csrf.php └── tree_csrf.php ├── tree ├── 01_basic.html ├── 01_basic_connector.php ├── 01p_basic.html ├── 01p_basic_connector.php ├── 02_dynamic_loading.html ├── 02_dynamic_loading_connector.php ├── 03_sql_config.html ├── 03_sql_config_connector.php ├── 04_custom_styles.html ├── 04_custom_styles_connector.php ├── 05_save.html ├── 05_save_connector.php ├── 06_validation.html ├── 06_validation_connector.php ├── 08_tree_group_connector.html ├── 08_tree_group_connector.php ├── 09_tree_multitable_connector.html ├── 09_tree_multitable_connector.php └── index.html └── treegrid ├── 01_basic.html ├── 01_basic_connector.php ├── 02_dynamic_loading.html ├── 02_dynamic_loading_connector.php ├── 03_sql_config.html ├── 03_sql_config_connector.php ├── 04_custom_styles.html ├── 04_custom_styles_connector.php ├── 05_live_update.html ├── 05_live_update_connector.php ├── 06_treegrid_group_connector.html ├── 06_treegrid_group_connector.php ├── 07_treegrid_multitable_connector.html ├── 07_treegrid_multitable_connector.php └── index.html /README.md: -------------------------------------------------------------------------------- 1 | DHTMLX Connector for PHP 2 | ======================== 3 | 4 | dhtmlxConnector is an extension for the DHTMLX library, which maps client-side 5 | components onto the server-side datasource. Supported components are: 6 | 7 | * [dhtmlxTree](http://dhtmlx.com/docs/products/dhtmlxTree/index.shtml) 8 | * [dhtmlxGrid](http://dhtmlx.com/docs/products/dhtmlxGrid/index.shtml) 9 | * [dhtmlxTreeGrid](http://dhtmlx.com/docs/products/dhtmlxTreeGrid/index.shtml) 10 | * [dhtmlxCombo](http://dhtmlx.com/docs/products/dhtmlxCombo/index.shtml) 11 | * [dhtmlxDataView](http://dhtmlx.com/docs/products/dhtmlxDataView/index.shtml) 12 | * [dhtmlxScheduler](http://dhtmlx.com/docs/products/dhtmlxScheduler/index.shtml) 13 | * [dhtmlx touch](http://dhtmlx.com/touch/) 14 | 15 | You don't need to worry about data formats any more. dhtmlxConnector will handle 16 | data connections between the server-side database and client-side components, 17 | seamlessly loading content. When integrated with dhtmlxDataProcessor on the 18 | client side, dhtmlxConnector also takes care of update/insert/delete operations. 19 | 20 | It organizes server-side functionality to support special modes for components 21 | working with large amounts of data (such as dynamic loading, Smart Rendering, 22 | and paging) as well as server-side sorting and filtering. 23 | 24 | External links 25 | -------------- 26 | * Documentation - http://docs.dhtmlx.com/connector__php__index.html 27 | 28 | Other languages 29 | --------------- 30 | * Java - [documentation](http://docs.dhtmlx.com/connector__java__index.html), 31 | [github](https://github.com/DHTMLX/connector-java) 32 | -------------------------------------------------------------------------------- /codebase/chart_connector.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /codebase/combo_connector.php: -------------------------------------------------------------------------------- 1 | selected=false; 17 | } 18 | /*! mark option as selected 19 | */ 20 | function select(){ 21 | $this->selected=true; 22 | } 23 | /*! return self as XML string, starting part 24 | */ 25 | function to_xml_start(){ 26 | if ($this->skip) return ""; 27 | 28 | return ""; 35 | } 36 | } 37 | 38 | /*! Connector for the dhtmlxCombo 39 | **/ 40 | class ComboConnector extends Connector{ 41 | private $filter; //!< filtering mask from incoming request 42 | private $position; //!< position from incoming request 43 | 44 | /*! constructor 45 | 46 | Here initilization of all Masters occurs, execution timer initialized 47 | @param res 48 | db connection resource 49 | @param type 50 | string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided 51 | @param item_type 52 | name of class, which will be used for item rendering, optional, DataItem will be used by default 53 | @param data_type 54 | name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. 55 | */ 56 | public function __construct($res,$type=false,$item_type=false,$data_type=false){ 57 | if (!$item_type) $item_type="ComboDataItem"; 58 | parent::__construct($res,$type,$item_type,$data_type); 59 | } 60 | 61 | //parse GET scoope, all operations with incoming request must be done here 62 | function parse_request(){ 63 | parent::parse_request(); 64 | 65 | if (isset($_GET["pos"])){ 66 | if (!$this->dload) //not critical, so just write a log message 67 | LogMaster::log("Dyn loading request received, but server side was not configured to process dyn. loading. "); 68 | else 69 | $this->request->set_limit($_GET["pos"],$this->dload); 70 | } 71 | 72 | if (isset($_GET["mask"])) 73 | $this->request->set_filter($this->config->text[0]["db_name"],$_GET["mask"]."%","LIKE"); 74 | 75 | LogMaster::log($this->request); 76 | } 77 | 78 | 79 | /*! renders self as xml, starting part 80 | */ 81 | public function xml_start(){ 82 | if ($this->request->get_start()) 83 | return ""; 84 | else 85 | return ""; 86 | } 87 | 88 | /*! renders self as xml, ending part 89 | */ 90 | public function xml_end(){ 91 | return ""; 92 | } 93 | } 94 | ?> -------------------------------------------------------------------------------- /codebase/convert.php: -------------------------------------------------------------------------------- 1 | url = $url; 14 | $this->pdf(); 15 | EventMaster::attach_static("connectorInit",array($this, "handle")); 16 | } 17 | public function pdf($name = "data.pdf", $inline = false){ 18 | $this->type = "pdf"; 19 | $this->name = $name; 20 | $this->inline = $inline; 21 | } 22 | public function excel($name = "data.xls", $inline = false){ 23 | $this->type = "excel"; 24 | $this->name = $name; 25 | $this->inline = $inline; 26 | } 27 | public function handle($conn){ 28 | $conn->event->attach("beforeOutput",array($this,"convert")); 29 | } 30 | private function as_file($size, $name, $inline){ 31 | header('Content-Type: application/force-download'); 32 | header('Content-Type: application/octet-stream'); 33 | header('Content-Type: application/download'); 34 | header('Content-Transfer-Encoding: binary'); 35 | 36 | header('Content-Length: '.$size); 37 | if ($inline) 38 | header('Content-Disposition: inline; filename="'.$name.'";'); 39 | else 40 | header('Content-Disposition: attachment; filename="'.basename($name).'";'); 41 | } 42 | public function convert($conn, $out){ 43 | 44 | $str_out = str_replace("","", $out); 45 | $str_out = str_replace("","", $str_out); 46 | $str_out = str_replace("","", $str_out); 47 | 48 | if ($this->type == "pdf") 49 | header("Content-type: application/pdf"); 50 | else 51 | header("Content-type: application/ms-excel"); 52 | 53 | $handle = curl_init($this->url); 54 | curl_setopt($handle, CURLOPT_POST, true); 55 | curl_setopt($handle, CURLOPT_HEADER, false); 56 | curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); 57 | curl_setopt($handle, CURLOPT_POSTFIELDS, "grid_xml=".urlencode($str_out)); 58 | 59 | 60 | $out->reset(); 61 | $out->set_type("pdf"); 62 | $out->add(curl_exec($handle)); 63 | $this->as_file(strlen((string)$out), $this->name, $this->inline); 64 | 65 | curl_close($handle); 66 | } 67 | } 68 | 69 | ?> -------------------------------------------------------------------------------- /codebase/dataview_connector.php: -------------------------------------------------------------------------------- 1 | skip) return ""; 15 | 16 | $str=""; 17 | for ($i=0; $iconfig->text); $i++){ 18 | $extra = $this->config->text[$i]["name"]; 19 | $str.="<".$extra.">data[$extra]."]]>"; 20 | } 21 | return $str.""; 22 | } 23 | } 24 | 25 | 26 | /*! Connector class for DataView 27 | **/ 28 | class DataViewConnector extends Connector{ 29 | 30 | /*! constructor 31 | 32 | Here initilization of all Masters occurs, execution timer initialized 33 | @param res 34 | db connection resource 35 | @param type 36 | string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided 37 | @param item_type 38 | name of class, which will be used for item rendering, optional, DataItem will be used by default 39 | @param data_type 40 | name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. 41 | */ 42 | public function __construct($res,$type=false,$item_type=false,$data_type=false){ 43 | if (!$item_type) $item_type="DataViewDataItem"; 44 | if (!$data_type) $data_type="DataProcessor"; 45 | parent::__construct($res,$type,$item_type,$data_type); 46 | } 47 | 48 | //parse GET scoope, all operations with incoming request must be done here 49 | function parse_request(){ 50 | parent::parse_request(); 51 | 52 | if (isset($_GET["posStart"]) && isset($_GET["count"])) 53 | $this->request->set_limit($_GET["posStart"],$_GET["count"]); 54 | } 55 | 56 | /*! renders self as xml, starting part 57 | */ 58 | protected function xml_start(){ 59 | $attributes = ""; 60 | foreach($this->attributes as $k=>$v) 61 | $attributes .= " ".$k."='".$v."'"; 62 | 63 | if ($this->dload){ 64 | if ($pos=$this->request->get_start()) 65 | return ""; 66 | else 67 | return ""; 68 | } 69 | else 70 | return ""; 71 | } 72 | } 73 | ?> -------------------------------------------------------------------------------- /codebase/db_adodb.php: -------------------------------------------------------------------------------- 1 | connection->SelectLimit($sql['sql'], $sql['numrows'], $sql['offset']); 15 | } else { 16 | $res = $this->connection->Execute($sql); 17 | } 18 | 19 | if ($res===false) throw new Exception("ADODB operation failed\n".$this->connection->ErrorMsg()); 20 | $this->last_result = $res; 21 | return $res; 22 | } 23 | 24 | public function get_next($res){ 25 | if (!$res) 26 | $res = $this->last_result; 27 | 28 | if ($res->EOF) 29 | return false; 30 | 31 | $row = $res->GetRowAssoc(false); 32 | $res->MoveNext(); 33 | return $row; 34 | } 35 | 36 | protected function get_new_id(){ 37 | return $this->connection->Insert_ID(); 38 | } 39 | 40 | public function escape($data){ 41 | return $this->connection->addq($data); 42 | } 43 | 44 | /*! escape field name to prevent sql reserved words conflict 45 | @param data 46 | unescaped data 47 | @return 48 | escaped data 49 | */ 50 | public function escape_name($data){ 51 | if ((strpos($data,"`")!==false || is_int($data)) || (strpos($data,".")!==false)) 52 | return $data; 53 | return '`'.$data.'`'; 54 | } 55 | 56 | 57 | protected function select_query($select,$from,$where,$sort,$start,$count){ 58 | if (!$from) 59 | return $select; 60 | 61 | $sql="SELECT ".$select." FROM ".$from; 62 | if ($where) $sql.=" WHERE ".$where; 63 | if ($sort) $sql.=" ORDER BY ".$sort; 64 | 65 | if ($start || $count) { 66 | $sql=array("sql"=>$sql,'numrows'=>$count, 'offset'=>$start); 67 | } 68 | return $sql; 69 | } 70 | 71 | } 72 | ?> -------------------------------------------------------------------------------- /codebase/db_mssql.php: -------------------------------------------------------------------------------- 1 | connection); 17 | if ($this->insert_operation){ 18 | $last = mssql_fetch_assoc($res); 19 | $this->last_id = $last["dhx_id"]; 20 | mssql_free_result($res); 21 | } 22 | if ($this->start_from) 23 | mssql_data_seek($res,$this->start_from); 24 | return $res; 25 | } 26 | 27 | public function get_next($res){ 28 | return mssql_fetch_assoc($res); 29 | } 30 | 31 | public function get_new_id(){ 32 | /* 33 | MSSQL doesn't support identity or auto-increment fields 34 | Insert SQL returns new ID value, which stored in last_id field 35 | */ 36 | return $this->last_id; 37 | } 38 | 39 | protected function insert_query($data,$request){ 40 | $sql = parent::insert_query($data,$request); 41 | $this->insert_operation=true; 42 | return $sql.";SELECT @@IDENTITY AS dhx_id"; 43 | } 44 | 45 | protected function select_query($select,$from,$where,$sort,$start,$count){ 46 | if (!$from) 47 | return $select; 48 | 49 | $sql="SELECT " ; 50 | if ($count) 51 | $sql.=" TOP ".($count+$start); 52 | $sql.=" ".$select." FROM ".$from; 53 | if ($where) $sql.=" WHERE ".$where; 54 | if ($sort) $sql.=" ORDER BY ".$sort; 55 | if ($start && $count) 56 | $this->start_from=$start; 57 | else 58 | $this->start_from=false; 59 | return $sql; 60 | } 61 | 62 | public function escape($data){ 63 | /* 64 | there is no special escaping method for mssql - use common logic 65 | */ 66 | return str_replace("'","''",$data); 67 | } 68 | 69 | public function begin_transaction(){ 70 | $this->query("BEGIN TRAN"); 71 | } 72 | } 73 | ?> -------------------------------------------------------------------------------- /codebase/db_mysql.php: -------------------------------------------------------------------------------- 1 | connection); 10 | if ($res===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection)); 11 | $this->last_result = $res; 12 | return $res; 13 | } 14 | 15 | public function get_next($res){ 16 | if (!$res) 17 | $res = $this->last_result; 18 | 19 | return mysql_fetch_assoc($res); 20 | } 21 | 22 | public function get_new_id(){ 23 | return mysql_insert_id($this->connection); 24 | } 25 | 26 | public function escape($data){ 27 | return mysql_real_escape_string($data, $this->connection); 28 | } 29 | 30 | public function tables_list() { 31 | $result = mysql_query("SHOW TABLES"); 32 | if ($result===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection)); 33 | 34 | $tables = array(); 35 | while ($table = mysql_fetch_array($result)) { 36 | $tables[] = $table[0]; 37 | } 38 | return $tables; 39 | } 40 | 41 | public function fields_list($table) { 42 | $result = mysql_query("SHOW COLUMNS FROM `".$table."`"); 43 | if ($result===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection)); 44 | 45 | $fields = array(); 46 | $id = ""; 47 | while ($field = mysql_fetch_assoc($result)) { 48 | if ($field['Key'] == "PRI") 49 | $id = $field["Field"]; 50 | else 51 | $fields[] = $field["Field"]; 52 | } 53 | return array("fields" => $fields, "key" => $id ); 54 | } 55 | 56 | /*! escape field name to prevent sql reserved words conflict 57 | @param data 58 | unescaped data 59 | @return 60 | escaped data 61 | */ 62 | public function escape_name($data){ 63 | if ((strpos($data,"`")!==false || is_int($data)) || (strpos($data,".")!==false)) 64 | return $data; 65 | return '`'.$data.'`'; 66 | } 67 | } -------------------------------------------------------------------------------- /codebase/db_mysqli.php: -------------------------------------------------------------------------------- 1 | connection->query($sql); 14 | if ($res===false) throw new Exception("MySQL operation failed\n".$this->connection->error); 15 | return $res; 16 | } 17 | 18 | public function get_next($res){ 19 | return $res->fetch_assoc(); 20 | } 21 | 22 | public function get_new_id(){ 23 | return $this->connection->insert_id; 24 | } 25 | 26 | public function escape($data){ 27 | return $this->connection->real_escape_string($data); 28 | } 29 | 30 | public function tables_list() { 31 | $result = $this->connection->query("SHOW TABLES"); 32 | if ($result===false) throw new Exception("MySQL operation failed\n".$this->connection->error); 33 | 34 | $tables = array(); 35 | while ($table = $result->fetch_array()) { 36 | $tables[] = $table[0]; 37 | } 38 | return $tables; 39 | } 40 | 41 | public function fields_list($table) { 42 | $result = $this->connection->query("SHOW COLUMNS FROM `".$table."`"); 43 | if ($result===false) throw new Exception("MySQL operation failed\n".$this->connection->error); 44 | $fields = array(); 45 | while ($field = $result->fetch_array()) { 46 | if ($field['Key'] == "PRI") { 47 | $fields[$field[0]] = 1; 48 | } else { 49 | $fields[$field[0]] = 0; 50 | } 51 | } 52 | return $fields; 53 | } 54 | 55 | } 56 | 57 | ?> 58 | -------------------------------------------------------------------------------- /codebase/db_oracle.php: -------------------------------------------------------------------------------- 1 | connection,$sql); 16 | if ($stm===false) throw new Exception("Oracle - sql parsing failed\n".oci_error($this->connection)); 17 | 18 | $out = array(0=>null); 19 | if($this->insert_operation){ 20 | oci_bind_by_name($stm,":outID",$out[0],999); 21 | $this->insert_operation=false; 22 | } 23 | 24 | 25 | $mode = ($this->is_record_transaction() || $this->is_global_transaction())?OCI_DEFAULT:OCI_COMMIT_ON_SUCCESS; 26 | $res = @oci_execute($stm,$mode); 27 | if ($res===false) throw new Exception(oci_error($this->connection)); 28 | 29 | $this->last_id=$out[0]; 30 | 31 | return $stm; 32 | } 33 | 34 | public function get_next($res){ 35 | $data = oci_fetch_assoc($res); 36 | if ($data){ 37 | foreach ($data as $k => $v) 38 | $data[strtolower($k)] = $v; 39 | } 40 | return $data; 41 | } 42 | 43 | public function get_new_id(){ 44 | /* 45 | Oracle doesn't support identity or auto-increment fields 46 | Insert SQL returns new ID value, which stored in last_id field 47 | */ 48 | return $this->last_id; 49 | } 50 | 51 | protected function insert_query($data,$request){ 52 | $sql = parent::insert_query($data,$request); 53 | $this->insert_operation=true; 54 | return $sql." returning ".$this->config->id["db_name"]." into :outID"; 55 | } 56 | 57 | protected function select_query($select,$from,$where,$sort,$start,$count){ 58 | if (!$from) 59 | return $select; 60 | 61 | $sql="SELECT ".$select." FROM ".$from; 62 | if ($where) $sql.=" WHERE ".$where; 63 | if ($sort) $sql.=" ORDER BY ".$sort; 64 | if ($start || $count) 65 | $sql="SELECT * FROM ( select /*+ FIRST_ROWS(".$count.")*/dhx_table.*, ROWNUM rnum FROM (".$sql.") dhx_table where ROWNUM <= ".($count+$start)." ) where rnum >".$start; 66 | return $sql; 67 | } 68 | 69 | public function escape($data){ 70 | /* 71 | as far as I can see the only way to escape data is by using oci_bind_by_name 72 | while it is neat solution in common case, it conflicts with existing SQL building logic 73 | fallback to simple escaping 74 | */ 75 | return str_replace("'","''",$data); 76 | } 77 | 78 | public function begin_transaction(){ 79 | //auto-start of transaction 80 | } 81 | public function commit_transaction(){ 82 | oci_commit($this->connection); 83 | } 84 | public function rollback_transaction(){ 85 | oci_rollback($this->connection); 86 | } 87 | } 88 | ?> -------------------------------------------------------------------------------- /codebase/db_pdo.php: -------------------------------------------------------------------------------- 1 | connection->query($sql); 18 | if ($res===false) { 19 | $message = $this->connection->errorInfo(); 20 | throw new Exception("PDO - sql execution failed\n".$message[2]); 21 | } 22 | 23 | return new PDOResultSet($res); 24 | } 25 | 26 | protected function select_query($select,$from,$where,$sort,$start,$count){ 27 | if (!$from) 28 | return $select; 29 | 30 | $sql="SELECT ".$select." FROM ".$from; 31 | if ($where) $sql.=" WHERE ".$where; 32 | if ($sort) $sql.=" ORDER BY ".$sort; 33 | if ($start || $count) { 34 | if ($this->connection->getAttribute(PDO::ATTR_DRIVER_NAME)=="pgsql") 35 | $sql.=" OFFSET ".$start." LIMIT ".$count; 36 | else 37 | $sql.=" LIMIT ".$start.",".$count; 38 | } 39 | return $sql; 40 | } 41 | 42 | public function tables_list() { 43 | $result = $this->query("SHOW TABLES"); 44 | if ($result===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection)); 45 | 46 | $tables = array(); 47 | while ($table = $result->next()) { 48 | $tables[] = $table[0]; 49 | } 50 | return $tables; 51 | } 52 | 53 | public function fields_list($table) { 54 | $result = $this->query("SHOW COLUMNS FROM `".$table."`"); 55 | if ($result===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection)); 56 | 57 | $fields = array(); 58 | $id = ""; 59 | while ($field = $result->next()) { 60 | if ($field['Key'] == "PRI") 61 | $id = $field["Field"]; 62 | else 63 | $fields[] = $field["Field"]; 64 | } 65 | return array("fields" => $fields, "key" => $id ); 66 | } 67 | 68 | public function get_next($res){ 69 | $data = $res->next(); 70 | return $data; 71 | } 72 | 73 | public function get_new_id(){ 74 | return $this->connection->lastInsertId(); 75 | } 76 | 77 | public function escape($str){ 78 | $res=$this->connection->quote($str); 79 | if ($res===false) //not supported by pdo driver 80 | return str_replace("'","''",$str); 81 | return substr($res,1,-1); 82 | } 83 | 84 | } 85 | 86 | class PDOResultSet{ 87 | private $res; 88 | public function __construct($res){ 89 | $this->res = $res; 90 | } 91 | public function next(){ 92 | $data = $this->res->fetch(PDO::FETCH_ASSOC); 93 | if (!$data){ 94 | $this->res->closeCursor(); 95 | return null; 96 | } 97 | return $data; 98 | } 99 | } 100 | ?> -------------------------------------------------------------------------------- /codebase/db_phpcake.php: -------------------------------------------------------------------------------- 1 | get_source(); 18 | if(is_array($sourceData)) //result of find 19 | $query = $sourceData; 20 | else 21 | $query = $sourceData->find("all"); 22 | 23 | $temp = array(); 24 | foreach($query as $row) 25 | $temp[] = $row->toArray(); 26 | 27 | return new ArrayQueryWrapper($temp); 28 | } 29 | 30 | protected function getErrorMessage() { 31 | $errors = $this->connection->invalidFields(); 32 | $text = array(); 33 | foreach ($errors as $key => $value){ 34 | $text[] = $key." - ".$value[0]; 35 | } 36 | return implode("\n", $text); 37 | } 38 | 39 | public function insert($data, $source) { 40 | $sourceData = $source->get_source(); 41 | $obj = $sourceData->newEntity(); 42 | $obj = $this->fillModel($obj, $data); 43 | $savedResult = $source->get_source()->save($obj); 44 | $data->success($savedResult->get($this->config->id["db_name"])); 45 | } 46 | 47 | public function delete($data, $source) { 48 | $sourceData = $source->get_source(); 49 | $obj = $sourceData->get($data->get_id()); 50 | $source->get_source()->delete($obj); 51 | } 52 | 53 | public function update($data, $source) { 54 | $sourceData = $source->get_source(); 55 | $obj = $sourceData->get($data->get_id()); 56 | $obj = $this->fillModel($obj, $data); 57 | $sourceData->save($obj); 58 | } 59 | 60 | private function fillModel($obj, $data) { 61 | //Map data to model object. 62 | for($i = 0; $i < count($this->config->text); $i++) { 63 | $step=$this->config->text[$i]; 64 | $obj->set($step["name"], $data->get_value($step["name"])); 65 | } 66 | 67 | if($relation = $this->config->relation_id["db_name"]) 68 | $obj->set($relation, $data->get_value($relation)); 69 | 70 | return $obj; 71 | } 72 | 73 | public function escape($str){ 74 | throw new Exception("Not implemented"); 75 | } 76 | 77 | public function query($str){ 78 | throw new Exception("Not implemented"); 79 | } 80 | 81 | public function get_new_id(){ 82 | throw new Exception("Not implemented"); 83 | } 84 | } 85 | 86 | ?> -------------------------------------------------------------------------------- /codebase/db_phpcake2.php: -------------------------------------------------------------------------------- 1 | get_source(); 17 | if (is_array($source)) //result of find 18 | $res = $source; 19 | else 20 | $res = $this->connection->find("all"); 21 | 22 | $temp = array(); 23 | if (sizeof($res)){ 24 | $name = get_class($this->connection); 25 | for ($i=sizeof($res)-1; $i>=0; $i--) 26 | $temp[]=&$res[$i][$name]; 27 | } 28 | return new ArrayQueryWrapper($temp); 29 | } 30 | 31 | protected function getErrorMessage(){ 32 | $errors = $this->connection->invalidFields(); 33 | $text = array(); 34 | foreach ($errors as $key => $value){ 35 | $text[] = $key." - ".$value[0]; 36 | } 37 | return implode("\n", $text); 38 | } 39 | 40 | public function insert($data,$source){ 41 | $name = get_class($this->connection); 42 | $save = array(); 43 | $temp_data = $data->get_data(); 44 | unset($temp_data[$this->config->id['db_name']]); 45 | unset($temp_data["!nativeeditor_status"]); 46 | $save[$name] = $temp_data; 47 | 48 | if ($this->connection->save($save)){ 49 | $data->success($this->connection->getLastInsertID()); 50 | } else { 51 | $data->set_response_attribute("details", $this->getErrorMessage()); 52 | $data->invalid(); 53 | } 54 | } 55 | public function delete($data,$source){ 56 | $id = $data->get_id(); 57 | $this->connection->delete($id); 58 | $data->success(); 59 | } 60 | public function update($data,$source){ 61 | $name = get_class($this->connection); 62 | $save = array(); 63 | $save[$name] = &$data->get_data(); 64 | 65 | if ($this->connection->save($save)){ 66 | $data->success(); 67 | } else { 68 | $data->set_response_attribute("details", $this->getErrorMessage()); 69 | $data->invalid(); 70 | } 71 | } 72 | 73 | 74 | public function escape($str){ 75 | throw new Exception("Not implemented"); 76 | } 77 | public function query($str){ 78 | throw new Exception("Not implemented"); 79 | } 80 | public function get_new_id(){ 81 | throw new Exception("Not implemented"); 82 | } 83 | } 84 | 85 | ?> -------------------------------------------------------------------------------- /codebase/db_phpci.php: -------------------------------------------------------------------------------- 1 | connection->query($sql); 19 | if ($res===false) { 20 | throw new Exception("CI - sql execution failed"); 21 | } 22 | 23 | if (is_object($res)) 24 | return new PHPCIResultSet($res); 25 | return new ArrayQueryWrapper(array()); 26 | } 27 | 28 | public function get_next($res){ 29 | $data = $res->next(); 30 | return $data; 31 | } 32 | 33 | public function get_new_id(){ 34 | return $this->connection->insert_id(); 35 | } 36 | 37 | public function escape($str){ 38 | return $this->connection->escape_str($str); 39 | } 40 | 41 | public function escape_name($data){ 42 | return $this->connection->protect_identifiers($data); 43 | } 44 | } 45 | 46 | class PHPCIResultSet{ 47 | private $is_result_done = false; 48 | private $res; 49 | private $start; 50 | private $count; 51 | 52 | public function __construct($res){ 53 | if(is_bool($res)) { 54 | $this->$is_result_done = true; 55 | return $this; 56 | } 57 | $this->res = $res; 58 | $this->start = $res->current_row; 59 | $this->count = $res->num_rows(); 60 | } 61 | public function next(){ 62 | if($this->is_result_done) 63 | return null; 64 | 65 | if ($this->start != $this->count){ 66 | return $this->res->row($this->start++,'array'); 67 | } else { 68 | $this->res->free_result(); 69 | return null; 70 | } 71 | } 72 | } 73 | ?> -------------------------------------------------------------------------------- /codebase/db_phpci2.php: -------------------------------------------------------------------------------- 1 | connection->query($sql); 19 | if ($res===false) { 20 | throw new Exception("CI - sql execution failed"); 21 | } 22 | 23 | if (is_object($res)) 24 | return new PHPCIResultSet($res); 25 | return new ArrayQueryWrapper(array()); 26 | } 27 | 28 | public function get_next($res){ 29 | $data = $res->next(); 30 | return $data; 31 | } 32 | 33 | public function get_new_id(){ 34 | return $this->connection->insert_id(); 35 | } 36 | 37 | public function escape($str){ 38 | return $this->connection->escape_str($str); 39 | } 40 | 41 | public function escape_name($data){ 42 | return $this->connection->protect_identifiers($data); 43 | } 44 | } 45 | 46 | class PHPCIResultSet{ 47 | private $res; 48 | private $start; 49 | private $count; 50 | 51 | public function __construct($res){ 52 | $this->res = $res; 53 | $this->start = $res->current_row; 54 | $this->count = $res->num_rows; 55 | } 56 | public function next(){ 57 | if ($this->start != $this->count){ 58 | return $this->res->row($this->start++,'array'); 59 | } else { 60 | $this->res->free_result(); 61 | return null; 62 | } 63 | } 64 | } 65 | ?> -------------------------------------------------------------------------------- /codebase/db_phpyii.php: -------------------------------------------------------------------------------- 1 | get_source(); 13 | if(is_array($sourceData)) //result of find 14 | $res = $sourceData; 15 | else 16 | $res = $sourceData->find()->all(); 17 | 18 | $temp = array(); 19 | if(sizeof($res)) { 20 | foreach($res as $obj) 21 | $temp[] = $obj->getAttributes(); 22 | } 23 | return new ArrayQueryWrapper($temp); 24 | } 25 | 26 | protected function getErrorMessage() { 27 | $errors = $this->connection->getErrors(); 28 | $text = array(); 29 | foreach($errors as $key => $value) 30 | $text[] = $key." - ".$value[0]; 31 | 32 | return implode("\n", $text); 33 | } 34 | public function insert($data, $source) { 35 | $name = get_class($source->get_source()); 36 | $obj = new $name(); 37 | $this->fill_model_and_save($obj, $data); 38 | } 39 | 40 | public function delete($data, $source) { 41 | $obj = $source->get_source()->findOne($data->get_id()); 42 | if($obj->delete()) { 43 | $data->success(); 44 | $data->set_new_id($obj->getPrimaryKey()); 45 | } 46 | else { 47 | $data->set_response_attribute("details", $this->errors_to_string($obj->getErrors())); 48 | $data->invalid(); 49 | } 50 | } 51 | 52 | public function update($data, $source) { 53 | $obj = $source->get_source()->findOne($data->get_id()); 54 | $this->fill_model_and_save($obj, $data); 55 | } 56 | 57 | protected function fill_model_and_save($obj, $data) { 58 | //Map data to model object. 59 | for($i=0; $i < sizeof($this->config->text); $i++) { 60 | $step=$this->config->text[$i]; 61 | $obj->setAttribute($step["name"], $data->get_value($step["name"])); 62 | } 63 | 64 | if($relation = $this->config->relation_id["db_name"]) 65 | $obj->setAttribute($relation, $data->get_value($relation)); 66 | 67 | //Save model. 68 | if($obj->save()) { 69 | $data->success(); 70 | $data->set_new_id($obj->getPrimaryKey()); 71 | } 72 | else { 73 | $data->set_response_attribute("details", $this->errors_to_string($obj->getErrors())); 74 | $data->invalid(); 75 | } 76 | } 77 | 78 | protected function errors_to_string($errors) { 79 | $text = array(); 80 | foreach($errors as $value) 81 | $text[] = implode("\n", $value); 82 | 83 | return implode("\n",$text); 84 | } 85 | 86 | public function escape($str) { 87 | throw new Exception("Not implemented"); 88 | } 89 | 90 | public function query($str) { 91 | throw new Exception("Not implemented"); 92 | } 93 | 94 | public function get_new_id() { 95 | throw new Exception("Not implemented"); 96 | } 97 | } 98 | 99 | ?> -------------------------------------------------------------------------------- /codebase/db_phpyii1.php: -------------------------------------------------------------------------------- 1 | connection)) //result of findAll 12 | $res = $this->connection; 13 | else 14 | $res = $this->connection->findAll(); 15 | 16 | $temp = array(); 17 | if (sizeof($res)){ 18 | foreach ($res as $obj) 19 | $temp[]=$obj->getAttributes(); 20 | } 21 | return new ArrayQueryWrapper($temp); 22 | } 23 | 24 | protected function getErrorMessage(){ 25 | $errors = $this->connection->invalidFields(); 26 | $text = array(); 27 | foreach ($errors as $key => $value){ 28 | $text[] = $key." - ".$value[0]; 29 | } 30 | return implode("\n", $text); 31 | } 32 | public function insert($data,$source){ 33 | $name = get_class($this->connection); 34 | $obj = new $name(); 35 | 36 | $this->fill_model_and_save($obj, $data); 37 | } 38 | public function delete($data,$source){ 39 | $obj = $this->connection->findByPk($data->get_id()); 40 | if ($obj->delete()){ 41 | $data->success(); 42 | $data->set_new_id($obj->getPrimaryKey()); 43 | } else { 44 | $data->set_response_attribute("details", $this->errors_to_string($obj->getErrors())); 45 | $data->invalid(); 46 | } 47 | } 48 | public function update($data,$source){ 49 | $obj = $this->connection->findByPk($data->get_id()); 50 | $this->fill_model_and_save($obj, $data); 51 | } 52 | 53 | protected function fill_model_and_save($obj, $data){ 54 | $values = $data->get_data(); 55 | 56 | //map data to model object 57 | for ($i=0; $i < sizeof($this->config->text); $i++){ 58 | $step=$this->config->text[$i]; 59 | $obj->setAttribute($step["name"], $data->get_value($step["name"])); 60 | } 61 | if ($relation = $this->config->relation_id["db_name"]) 62 | $obj->setAttribute($relation, $data->get_value($relation)); 63 | 64 | //save model 65 | if ($obj->save()){ 66 | $data->success(); 67 | $data->set_new_id($obj->getPrimaryKey()); 68 | } else { 69 | $data->set_response_attribute("details", $this->errors_to_string($obj->getErrors())); 70 | $data->invalid(); 71 | } 72 | } 73 | 74 | protected function errors_to_string($errors){ 75 | $text = array(); 76 | foreach($errors as $value) 77 | $text[]=implode("\n", $value); 78 | return implode("\n",$text); 79 | } 80 | public function escape($str){ 81 | throw new Exception("Not implemented"); 82 | } 83 | public function query($str){ 84 | throw new Exception("Not implemented"); 85 | } 86 | public function get_new_id(){ 87 | throw new Exception("Not implemented"); 88 | } 89 | } 90 | 91 | ?> -------------------------------------------------------------------------------- /codebase/db_postgre.php: -------------------------------------------------------------------------------- 1 | connection,$sql); 14 | if ($res===false) throw new Exception("Postgre - sql execution failed\n".pg_last_error($this->connection)); 15 | 16 | return $res; 17 | } 18 | 19 | protected function select_query($select,$from,$where,$sort,$start,$count){ 20 | if (!$from) 21 | return $select; 22 | 23 | $sql="SELECT ".$select." FROM ".$from; 24 | if ($where) $sql.=" WHERE ".$where; 25 | if ($sort) $sql.=" ORDER BY ".$sort; 26 | if ($start || $count) 27 | $sql.=" OFFSET ".$start." LIMIT ".$count; 28 | return $sql; 29 | } 30 | 31 | public function get_next($res){ 32 | return pg_fetch_assoc($res); 33 | } 34 | 35 | public function get_new_id(){ 36 | $res = pg_query( $this->connection, "SELECT LASTVAL() AS seq"); 37 | $data = pg_fetch_assoc($res); 38 | pg_free_result($res); 39 | return $data['seq']; 40 | } 41 | 42 | public function escape($data){ 43 | //need to use oci_bind_by_name 44 | return pg_escape_string($this->connection,$data); 45 | } 46 | 47 | public function tables_list() { 48 | $sql = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'"; 49 | $res = pg_query($this->connection, $sql); 50 | $tables = array(); 51 | while ($table = pg_fetch_assoc($res)) { 52 | $tables[] = $table['table_name']; 53 | } 54 | return $tables; 55 | } 56 | 57 | public function fields_list($table) { 58 | $sql = "SELECT * FROM information_schema.constraint_column_usage"; 59 | $result = pg_query($this->connection, $sql); 60 | $field = pg_fetch_assoc($result); 61 | $id = $field['column_name']; 62 | 63 | $sql = "SELECT * FROM information_schema.columns WHERE table_name ='".$table."';"; 64 | $result = pg_query($this->connection, $sql); 65 | $fields = array(); 66 | $id = ""; 67 | while ($field = pg_fetch_assoc($result)) { 68 | $fields[] = $field["column_name"]; 69 | } 70 | return array('fields' => $fields, 'key' => $id ); 71 | } 72 | } 73 | ?> -------------------------------------------------------------------------------- /codebase/db_sasql.php: -------------------------------------------------------------------------------- 1 | connection, $sql); 11 | if ($res===false) throw new Exception("SaSQL operation failed\n".sasql_error($this->connection)); 12 | $this->last_result = $res; 13 | return $res; 14 | } 15 | 16 | public function get_next($res){ 17 | if (!$res) 18 | $res = $this->last_result; 19 | 20 | return sasql_fetch_assoc($res); 21 | } 22 | 23 | public function get_new_id(){ 24 | return sasql_insert_id($this->connection); 25 | } 26 | 27 | protected function insert_query($data,$request){ 28 | $sql = parent::insert_query($data,$request); 29 | $this->insert_operation=true; 30 | return $sql; 31 | } 32 | 33 | protected function select_query($select,$from,$where,$sort,$start,$count){ 34 | if (!$from) 35 | return $select; 36 | 37 | $sql="SELECT " ; 38 | if ($count) 39 | $sql.=" TOP ".($count+$start); 40 | $sql.=" ".$select." FROM ".$from; 41 | if ($where) $sql.=" WHERE ".$where; 42 | if ($sort) $sql.=" ORDER BY ".$sort; 43 | return $sql; 44 | } 45 | 46 | public function escape($data){ 47 | return sasql_escape_string($this->connection, $data); 48 | } 49 | 50 | public function begin_transaction(){ 51 | $this->query("BEGIN TRAN"); 52 | } 53 | } 54 | ?> -------------------------------------------------------------------------------- /codebase/db_sqlite.php: -------------------------------------------------------------------------------- 1 | connection,$sql); 15 | if ($res === false) 16 | throw new Exception("SQLLite - sql execution failed\n".sqlite_error_string(sqlite_last_error($this->connection))); 17 | 18 | return $res; 19 | } 20 | 21 | public function get_next($res){ 22 | $data = sqlite_fetch_array($res, SQLITE_ASSOC); 23 | return $data; 24 | } 25 | 26 | public function get_new_id(){ 27 | return sqlite_last_insert_rowid($this->connection); 28 | } 29 | 30 | public function escape($data){ 31 | return sqlite_escape_string($data); 32 | } 33 | } 34 | ?> -------------------------------------------------------------------------------- /codebase/db_sqlite3.php: -------------------------------------------------------------------------------- 1 | connection->query($sql); 15 | if ($res === false) 16 | throw new Exception("SQLLite - sql execution failed\n".$this->connection->lastErrorMsg()); 17 | 18 | return $res; 19 | } 20 | 21 | public function get_next($res){ 22 | return $res->fetchArray(); 23 | } 24 | 25 | public function get_new_id(){ 26 | return $this->connection->lastInsertRowID(); 27 | } 28 | 29 | public function escape($data){ 30 | return $this->connection->escapeString($data); 31 | } 32 | } 33 | ?> -------------------------------------------------------------------------------- /codebase/db_sqlsrv.php: -------------------------------------------------------------------------------- 1 | start_from) 22 | $res = sqlsrv_query($this->connection,$sql, array(), array("Scrollable" => SQLSRV_CURSOR_STATIC)); 23 | else 24 | $res = sqlsrv_query($this->connection,$sql); 25 | 26 | if ($res === false){ 27 | $errors = sqlsrv_errors(); 28 | $message = Array(); 29 | foreach($errors as $error) 30 | $message[]=$error["SQLSTATE"].$error["code"].$error["message"]; 31 | throw new Exception("SQLSrv operation failed\n".implode("\n\n", $message)); 32 | } 33 | 34 | if ($this->insert_operation){ 35 | sqlsrv_next_result($res); 36 | $last = sqlsrv_fetch_array($res); 37 | $this->last_id = $last["dhx_id"]; 38 | sqlsrv_free_stmt($res); 39 | } 40 | if ($this->start_from) 41 | $data = sqlsrv_fetch($res, SQLSRV_SCROLL_ABSOLUTE, $this->start_from-1); 42 | return $res; 43 | } 44 | 45 | public function get_next($res){ 46 | $data = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC); 47 | if ($data) 48 | foreach ($data as $key => $value) 49 | if (is_a($value, "DateTime")) 50 | $data[$key] = $value->format("Y-m-d H:i"); 51 | return $data; 52 | } 53 | 54 | public function get_new_id(){ 55 | /* 56 | MSSQL doesn't support identity or auto-increment fields 57 | Insert SQL returns new ID value, which stored in last_id field 58 | */ 59 | return $this->last_id; 60 | } 61 | 62 | protected function insert_query($data,$request){ 63 | $sql = parent::insert_query($data,$request); 64 | $this->insert_operation=true; 65 | return $sql.";SELECT SCOPE_IDENTITY() as dhx_id"; 66 | } 67 | 68 | protected function select_query($select,$from,$where,$sort,$start,$count){ 69 | if (!$from) 70 | return $select; 71 | 72 | $sql="SELECT " ; 73 | if ($count) 74 | $sql.=" TOP ".($count+$start); 75 | $sql.=" ".$select." FROM ".$from; 76 | if ($where) $sql.=" WHERE ".$where; 77 | if ($sort) $sql.=" ORDER BY ".$sort; 78 | if ($start && $count) 79 | $this->start_from=$start; 80 | else 81 | $this->start_from=false; 82 | return $sql; 83 | } 84 | 85 | public function escape($data){ 86 | /* 87 | there is no special escaping method for mssql - use common logic 88 | */ 89 | return str_replace("'","''",$data); 90 | } 91 | 92 | public function begin_transaction(){ 93 | sqlsrv_begin_transaction($this->connection); 94 | } 95 | public function commit_transaction(){ 96 | sqlsrv_commit($this->connection); 97 | } 98 | public function rollback_transaction(){ 99 | sqlsrv_rollback($this->connection); 100 | } 101 | } 102 | ?> -------------------------------------------------------------------------------- /codebase/filesystem_item.php: -------------------------------------------------------------------------------- 1 | data['is_folder'] == '1') { 11 | return true; 12 | } else { 13 | return false; 14 | } 15 | } 16 | 17 | } 18 | 19 | ?> -------------------------------------------------------------------------------- /codebase/form_connector.php: -------------------------------------------------------------------------------- 1 | skip) return ""; 15 | $str=""; 16 | for ($i = 0; $i < count($this->config->data); $i++) { 17 | $str .= "<".$this->config->data[$i]['name'].">data[$this->config->data[$i]['name']]."]]>config->data[$i]['name'].">"; 18 | } 19 | return $str; 20 | } 21 | } 22 | 23 | 24 | /*! Connector class for dhtmlxForm 25 | **/ 26 | class FormConnector extends Connector{ 27 | 28 | /*! constructor 29 | 30 | Here initilization of all Masters occurs, execution timer initialized 31 | @param res 32 | db connection resource 33 | @param type 34 | string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided 35 | @param item_type 36 | name of class, which will be used for item rendering, optional, DataItem will be used by default 37 | @param data_type 38 | name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. 39 | */ 40 | public function __construct($res,$type=false,$item_type=false,$data_type=false){ 41 | if (!$item_type) $item_type="FormDataItem"; 42 | if (!$data_type) $data_type="FormDataProcessor"; 43 | parent::__construct($res,$type,$item_type,$data_type); 44 | } 45 | 46 | //parse GET scoope, all operations with incoming request must be done here 47 | function parse_request(){ 48 | parent::parse_request(); 49 | if (isset($_GET["id"])) 50 | $this->request->set_filter($this->config->id["name"],$_GET["id"],"="); 51 | else if (!$_POST["ids"]) 52 | throw new Exception("ID parameter is missed"); 53 | } 54 | 55 | } 56 | 57 | /*! DataProcessor class for dhxForm component 58 | **/ 59 | class FormDataProcessor extends DataProcessor{ 60 | 61 | } 62 | ?> -------------------------------------------------------------------------------- /codebase/keygrid_connector.php: -------------------------------------------------------------------------------- 1 | event->attach("beforeProcessing",array($this,"before_check_key")); 14 | $this->event->attach("afterProcessing",array($this,"after_check_key")); 15 | } 16 | 17 | public function before_check_key($action){ 18 | if ($action->get_value($this->config->id["name"])=="") 19 | $action->error(); 20 | } 21 | public function after_check_key($action){ 22 | if ($action->get_status()=="inserted" || $action->get_status()=="updated"){ 23 | $action->success($action->get_value($this->config->id["name"])); 24 | $action->set_status("inserted"); 25 | } 26 | } 27 | }; 28 | 29 | class KeyGridDataProcessor extends DataProcessor{ 30 | 31 | /*! convert incoming data name to valid db name 32 | converts c0..cN to valid field names 33 | @param data 34 | data name from incoming request 35 | @return 36 | related db_name 37 | */ 38 | function name_data($data){ 39 | if ($data == "gr_id") return "__dummy__id__"; //ignore ID 40 | $parts=explode("c",$data); 41 | if ($parts[0]=="" && intval($parts[1])==$parts[1]) 42 | return $this->config->text[intval($parts[1])]["name"]; 43 | return $data; 44 | } 45 | } 46 | 47 | 48 | ?> -------------------------------------------------------------------------------- /codebase/mixed_connector.php: -------------------------------------------------------------------------------- 1 | _data_type = $dataType; 14 | } 15 | 16 | protected $attributes = array(); 17 | protected $connectors = array(); 18 | 19 | public function add($name, $conn) { 20 | $this->connectors[$name] = $conn; 21 | } 22 | 23 | public function render() { 24 | if($this->_data_type == "json") 25 | $this->render_json(); 26 | else 27 | $this->render_xml(); 28 | } 29 | 30 | private function render_json() { 31 | $result = "{"; 32 | $parts = array(); 33 | foreach($this->connectors as $name => $conn) { 34 | $conn->asString(true); 35 | $parts[] = "\"".$name."\":".($conn->render())."\n"; 36 | } 37 | $result .= implode(",\n", $parts)."}"; 38 | echo $result; 39 | } 40 | 41 | private function render_xml() { 42 | $result = ""; 43 | $parts = array(); 44 | 45 | foreach($this->connectors as $name => $conn) { 46 | $conn->asString(true); 47 | $parts[] = "<".$name.">".($conn->render())."\n"; 48 | } 49 | $result .= implode("", $parts); 50 | $this->output_as_xml($result); 51 | } 52 | 53 | protected function output_as_xml($res) { 54 | echo "encoding."' ?>".$this->xml_start().$res.$this->xml_end(); 55 | } 56 | } 57 | 58 | ?> -------------------------------------------------------------------------------- /codebase/options_connector.php: -------------------------------------------------------------------------------- 1 | skip) return ""; 15 | $str =""; 16 | 17 | $str .= "xmlentities($this->data[$this->config->data[0]['db_name']])."\" label=\"".$this->xmlentities($this->data[$this->config->data[1]['db_name']])."\" />"; 18 | return $str; 19 | } 20 | } 21 | 22 | /*! Connector class for dhtmlxForm:options 23 | **/ 24 | class SelectOptionsConnector extends Connector{ 25 | 26 | /*! constructor 27 | 28 | Here initilization of all Masters occurs, execution timer initialized 29 | @param res 30 | db connection resource 31 | @param type 32 | string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided 33 | @param item_type 34 | name of class, which will be used for item rendering, optional, DataItem will be used by default 35 | @param data_type 36 | name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. 37 | */ 38 | public function __construct($res,$type=false,$item_type=false,$data_type=false){ 39 | if (!$item_type) $item_type="OptionsDataItem"; 40 | parent::__construct($res,$type,$item_type,$data_type); 41 | } 42 | 43 | } 44 | 45 | ?> -------------------------------------------------------------------------------- /codebase/treedatagroup_connector.php: -------------------------------------------------------------------------------- 1 | parent_name])) $this->request->set_relation(false); 19 | } 20 | 21 | /*! if it's first level then distinct level 22 | * else select by parent 23 | */ 24 | protected function get_resource() { 25 | $resource = null; 26 | if (isset($_GET[$this->parent_name])) 27 | $resource = $this->sql->select($this->request); 28 | else 29 | $resource = $this->sql->get_variants($this->config->relation_id['name'], $this->request); 30 | return $resource; 31 | } 32 | 33 | 34 | /*! renders self as xml, starting part 35 | */ 36 | public function xml_start(){ 37 | if (isset($_GET[$this->parent_name])) { 38 | return ""; 39 | } else { 40 | return ""; 41 | } 42 | } 43 | 44 | } 45 | 46 | 47 | 48 | 49 | class JSONTreeDataGroupConnector extends JSONTreeDataConnector{ 50 | 51 | public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ 52 | if (!$render_type) $render_type="JSONGroupRenderStrategy"; 53 | parent::__construct($res,$type,$item_type,$data_type,$render_type); 54 | } 55 | 56 | /*! if not isset $_GET[id] then it's top level 57 | */ 58 | protected function set_relation() { 59 | if (!isset($_GET[$this->parent_name])) $this->request->set_relation(false); 60 | } 61 | 62 | /*! if it's first level then distinct level 63 | * else select by parent 64 | */ 65 | protected function get_resource() { 66 | $resource = null; 67 | if (isset($_GET[$this->parent_name])) 68 | $resource = $this->sql->select($this->request); 69 | else 70 | $resource = $this->sql->get_variants($this->config->relation_id['name'], $this->request); 71 | return $resource; 72 | } 73 | 74 | 75 | /*! renders self as xml, starting part 76 | */ 77 | public function xml_start(){ 78 | if (isset($_GET[$this->parent_name])) { 79 | return ""; 80 | } else { 81 | return ""; 82 | } 83 | } 84 | 85 | } 86 | 87 | 88 | 89 | ?> -------------------------------------------------------------------------------- /codebase/treedatamultitable_connector.php: -------------------------------------------------------------------------------- 1 | dload = true; 20 | return parent::render(); 21 | } 22 | 23 | /*! sets relation for rendering */ 24 | protected function set_relation() { 25 | if (!isset($_GET[$this->parent_name])) 26 | $this->request->set_relation(false); 27 | } 28 | 29 | public function xml_start(){ 30 | if (isset($_GET[$this->parent_name])) { 31 | return ""; 32 | } else { 33 | return ""; 34 | } 35 | } 36 | 37 | /*! set maximum level of tree 38 | @param max_level 39 | maximum level 40 | */ 41 | public function setMaxLevel($max_level) { 42 | $this->render->set_max_level($max_level); 43 | } 44 | 45 | public function get_level() { 46 | return $this->render->get_level($this->parent_name); 47 | } 48 | 49 | } 50 | 51 | 52 | 53 | 54 | 55 | 56 | class JSONTreeDataMultitableConnector extends TreeDataMultitableConnector{ 57 | 58 | public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ 59 | if (!$item_type) $item_type="JSONTreeCommonDataItem"; 60 | if (!$data_type) $data_type="CommonDataProcessor"; 61 | if (!$render_type) $render_type="JSONMultitableTreeRenderStrategy"; 62 | parent::__construct($res,$type,$item_type,$data_type,$render_type); 63 | } 64 | 65 | protected function output_as_xml($res){ 66 | $result = $this->render_set($res); 67 | if ($this->simple) return $result; 68 | 69 | $data = array(); 70 | if (isset($_GET['parent'])) 71 | $data["parent"] = $this->render->level_id($_GET[$this->parent_name], $this->render->get_level() - 1); 72 | else 73 | $data["parent"] = "0"; 74 | $data["data"] = $result; 75 | 76 | $result = json_encode($data); 77 | if ($this->as_string) return $result; 78 | 79 | $out = new OutputWriter($result, ""); 80 | $out->set_type("json"); 81 | $this->event->trigger("beforeOutput", $this, $out); 82 | $out->output("", true, $this->encoding); 83 | } 84 | 85 | public function xml_start(){ 86 | return ''; 87 | } 88 | } 89 | 90 | 91 | ?> -------------------------------------------------------------------------------- /codebase/treegridgroup_connector.php: -------------------------------------------------------------------------------- 1 | parent_name])) $this->request->set_relation(false); 19 | } 20 | 21 | /*! if it's first level then distinct level 22 | * else select by parent 23 | */ 24 | protected function get_resource() { 25 | $resource = null; 26 | if (isset($_GET[$this->parent_name])) 27 | $resource = $this->sql->select($this->request); 28 | else 29 | $resource = $this->sql->get_variants($this->config->relation_id['name'], $this->request); 30 | return $resource; 31 | } 32 | 33 | 34 | /*! renders self as xml, starting part 35 | */ 36 | protected function xml_start(){ 37 | if (isset($_GET[$this->parent_name])) { 38 | return ""; 39 | } else { 40 | return ""; 41 | } 42 | } 43 | 44 | } 45 | 46 | ?> -------------------------------------------------------------------------------- /codebase/treegridmultitable_connector.php: -------------------------------------------------------------------------------- 1 | dload = true; 18 | return parent::render(); 19 | } 20 | 21 | /*! sets relation for rendering */ 22 | protected function set_relation() { 23 | if (!isset($_GET['id'])) 24 | $this->request->set_relation(false); 25 | } 26 | 27 | public function xml_start(){ 28 | if (isset($_GET['id'])) { 29 | return "get_level() - 1))."'>"; 30 | } else { 31 | return ""; 32 | } 33 | } 34 | 35 | /*! set maximum level of tree 36 | @param max_level 37 | maximum level 38 | */ 39 | public function setMaxLevel($max_level) { 40 | $this->render->set_max_level($max_level); 41 | } 42 | 43 | public function get_level() { 44 | return $this->render->get_level($this->parent_name); 45 | } 46 | 47 | 48 | } 49 | 50 | 51 | class TreeGridMultitableDataProcessor extends DataProcessor { 52 | 53 | function name_data($data){ 54 | if ($data=="gr_pid") 55 | return $this->config->relation_id["name"]; 56 | if ($data=="gr_id") 57 | return $this->config->id["name"]; 58 | preg_match('/^c([%\d]+)$/', $data, $data_num); 59 | if (!isset($data_num[1])) return $data; 60 | $data_num = $data_num[1]; 61 | if (isset($this->config->data[$data_num]["db_name"])) { 62 | return $this->config->data[$data_num]["db_name"]; 63 | } 64 | return $data; 65 | } 66 | 67 | } 68 | 69 | ?> -------------------------------------------------------------------------------- /codebase/treegroup_connector.php: -------------------------------------------------------------------------------- 1 | parent_name])) $this->request->set_relation(false); 19 | } 20 | 21 | /*! if it's first level then distinct level 22 | * else select by parent 23 | */ 24 | protected function get_resource() { 25 | $resource = null; 26 | if (isset($_GET[$this->parent_name])) 27 | $resource = $this->sql->select($this->request); 28 | else 29 | $resource = $this->sql->get_variants($this->config->relation_id['name'], $this->request); 30 | return $resource; 31 | } 32 | 33 | 34 | /*! renders self as xml, starting part 35 | */ 36 | public function xml_start(){ 37 | if (isset($_GET[$this->parent_name])) { 38 | return ""; 39 | } else { 40 | return ""; 41 | } 42 | } 43 | 44 | } 45 | 46 | ?> -------------------------------------------------------------------------------- /codebase/treemultitable_connector.php: -------------------------------------------------------------------------------- 1 | dload = true; 20 | return parent::render(); 21 | } 22 | 23 | /*! sets relation for rendering */ 24 | protected function set_relation() { 25 | if (!isset($_GET[$this->parent_name])) 26 | $this->request->set_relation(false); 27 | } 28 | 29 | public function xml_start(){ 30 | if (isset($_GET[$this->parent_name])) { 31 | return ""; 32 | } else { 33 | return ""; 34 | } 35 | } 36 | 37 | /*! set maximum level of tree 38 | @param max_level 39 | maximum level 40 | */ 41 | public function setMaxLevel($max_level) { 42 | $this->render->set_max_level($max_level); 43 | } 44 | 45 | public function get_level() { 46 | return $this->render->get_level($this->parent_name); 47 | } 48 | 49 | } 50 | 51 | ?> -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dhtmlx/connector-php", 3 | "description": "PHP extension for the DHTMLX library", 4 | "homepage": "http://dhtmlx.com/docs/products/dhtmlxConnector/index.shtml", 5 | "keywords": ["dhtmlx","connector","connector-php"], 6 | "license": "GNU", 7 | "type": "library", 8 | "require": { 9 | "php": ">=5.4.0" 10 | }, 11 | "autoload": { 12 | "psr-4": { 13 | "DHTMLX\\Connector\\": "codebase/" 14 | } 15 | }, 16 | "min-stability": "dev", 17 | "prefer-stable": true, 18 | "extra": { 19 | "branch-alias": { 20 | "dev-master": "2.1-dev" 21 | } 22 | }, 23 | "config": { 24 | "vendor-dir": "codebase/" 25 | } 26 | } -------------------------------------------------------------------------------- /samples/combo/01_basic.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Filtering and Autocomplete mode 5 | 6 | 7 | 8 | 9 | 12 | 13 | 14 |
15 |
16 |
17 |
18 |
19 | 23 | 27 | 31 |
32 | <?php 33 |
    
require_once("../config.php"); 34 |
    
$res= new PDO($mysql_server,$mysql_user,$mysql_pass); 35 |
    
mysql_select_db($mysql_db); 36 |
37 |
   require(
"../../codebase/combo_connector.php"); 38 |
   
$combo = new ComboConnector($res); 39 |
   
$combo->enable_log("temp.log"); 40 |
   
$combo->render_table("country_data","country_id","name"); 41 |
?> 42 |
43 |
44 | 45 | -------------------------------------------------------------------------------- /samples/combo/01_basic_connector.php: -------------------------------------------------------------------------------- 1 | enable_log("temp.log"); 10 | $combo->render_table("country_data","country_id","name"); 11 | ?> -------------------------------------------------------------------------------- /samples/combo/01_basic_srnd_connector.php: -------------------------------------------------------------------------------- 1 | enable_log("temp.log"); 9 | $combo->dynamic_loading(2); 10 | $combo->render_table("country_data","country_id","name"); 11 | ?> -------------------------------------------------------------------------------- /samples/combo/02_sql.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Filtering and Autocomplete mode 5 | 6 | 7 | 8 | 9 | 12 | 13 | 14 |
15 |
16 |
17 |
18 |
19 | 23 | 27 | 31 |
32 | <?php 33 |
    
require_once("../config.php"); 34 |
    
$res= new PDO($mysql_server,$mysql_user,$mysql_pass); 35 |
    
mysql_select_db($mysql_db); 36 |
     37 |
    require(
"../../codebase/combo_connector.php"); 38 |
    
$combo = new ComboConnector($res); 39 |
    
$combo->enable_log("temp.log"); 40 |
    
$combo->render_sql("SELECT * FROM country_data  WHERE country_id >40 ","country_id","name"); 41 |
?> 42 |
43 |
44 | 45 | -------------------------------------------------------------------------------- /samples/combo/02_sql_connector.php: -------------------------------------------------------------------------------- 1 | enable_log("temp.log"); 9 | $combo->render_sql("SELECT * FROM country_data WHERE country_id >40 ","country_id","name"); 10 | ?> -------------------------------------------------------------------------------- /samples/combo/02_sql_srnd_connector.php: -------------------------------------------------------------------------------- 1 | enable_log("temp.log"); 9 | $combo->dynamic_loading(2); 10 | $combo->render_sql("SELECT * FROM country_data WHERE country_id >40 ","country_id","name"); 11 | ?> -------------------------------------------------------------------------------- /samples/combo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 |

dhtmlxConnector for PHP :: Samples

20 | 21 |
  • Basic init
  • 22 |
  • Basic init by sql string
  • 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /samples/common/01_mixin_connector.php: -------------------------------------------------------------------------------- 1 | configure("country_data", "country_id", "name,full_name,type"); 13 | 14 | $data2 = new JSONTreeDataConnector($res, "PDO"); 15 | $data2->configure("tasks","taskId","taskName","","parentId"); 16 | 17 | $conn = new MixedConnector("json"); 18 | $conn->add("country_data", $data1); 19 | $conn->add("countries", $data2); 20 | $conn->render(); 21 | 22 | ?> -------------------------------------------------------------------------------- /samples/common/02_easyfilter_connector.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(100); 10 | $grid->filter("item_nm", "member"); 11 | // $grid->filter("item_nm='member'"); 12 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 13 | ?> -------------------------------------------------------------------------------- /samples/common/03_easysort_connector.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(100); 10 | $grid->sort("item_nm ASC"); 11 | $grid->sort("item_cd", "DESC"); 12 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 13 | ?> -------------------------------------------------------------------------------- /samples/common/04_mix_connector.php: -------------------------------------------------------------------------------- 1 | mix("active", "yes"); 13 | $details->configure("types","typeid","name"); 14 | 15 | $events = new JSONSchedulerConnector($res, "PDO"); 16 | $events->mix("types", $details, array( 17 | "typeid" => "type" 18 | )); 19 | $events->render_table("tevents","event_id","start_date,end_date,event_name,type", "", ""); 20 | ?> -------------------------------------------------------------------------------- /samples/common/05_asstring_connector.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(100); 9 | $data->asString(true); 10 | $json = $data->render_table("grid50000","item_id","item_nm,item_cd"); 11 | echo "Generated json:
    "; 12 | echo $json; 13 | ?> -------------------------------------------------------------------------------- /samples/config.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /samples/dataview/01_static_loading.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Static loading 5 | 6 | 7 | 8 | 11 | 12 | 13 |

    Static loading

    14 |

    All data is loaded at once

    15 |
    16 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /samples/dataview/01_static_loading.php: -------------------------------------------------------------------------------- 1 | render_sql(" SELECT * FROM packages_plain WHERE Id < 1000","Id","Package,Version,Maintainer"); 10 | ?> -------------------------------------------------------------------------------- /samples/dataview/02_dynamic_loading.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Dynamic loading 5 | 6 | 7 | 8 | 11 | 12 | 13 |

    Dynamic loading

    14 |

    Data is loaded to the DataView on demand

    15 | 16 |
    17 |
    18 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /samples/dataview/02_dynamic_loading.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(50); 10 | $data->render_table("packages_plain","Id","Package,Version,Maintainer"); 11 | ?> -------------------------------------------------------------------------------- /samples/dataview/03_adding.html: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 13 | Connecting to database 14 | 15 | 16 | 17 | 20 | 21 |

    Connecting to database

    22 | 23 |
    24 | Product
    25 | Version
    26 | Maintainer
    27 | 28 |
    29 | 30 |
    31 | 32 |
    33 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /samples/dataview/03_adding.php: -------------------------------------------------------------------------------- 1 | render_table("packages_small","Id","Package,Version,Maintainer"); 10 | ?> -------------------------------------------------------------------------------- /samples/dataview/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 |

    dhtmlxConnector for PHP :: Samples

    20 |
  • Static loading
  • 21 |
  • Dynamic loading
  • 22 |
  • Adding
  • 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxacc_skyblue/dhxacc_btns.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxacc_skyblue/dhxacc_btns.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxacc_skyblue/dhxacc_cell_progress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxacc_skyblue/dhxacc_cell_progress.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_arrow_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_arrow_left.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_arrow_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_arrow_right.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_clock.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_clock.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_mark.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_mark.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_selector_bottom.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_selector_bottom.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_selector_top.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_selector_top.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxcarousel_skyblue/dhxcarousel_cell_progress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxcarousel_skyblue/dhxcarousel_cell_progress.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_arrow_down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_arrow_down.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_arrow_down_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_arrow_down_dis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_chbx.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_chbx.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxcp_skyblue/dhxcp_colors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxcp_skyblue/dhxcp_colors.png -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxcp_skyblue/dhxcp_icon_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxcp_skyblue/dhxcp_icon_save.png -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector.png -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector_cells.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector_cells.png -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector_lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector_lines.png -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxdataview_skyblue/marker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxdataview_skyblue/marker.png -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/align_center.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/align_center.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/align_justify.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/align_justify.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/align_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/align_left.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/align_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/align_right.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/bold.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/bold.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/buttons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/buttons.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/clear.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/clear.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/h1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/h1.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/h2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/h2.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/h3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/h3.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/h4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/h4.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/indent_dec.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/indent_dec.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/indent_inc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/indent_inc.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/italic.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/italic.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/list_bullet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/list_bullet.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/list_number.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/list_number.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/script_sub.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/script_sub.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/script_super.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/script_super.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/strike.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/strike.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxeditor_skyblue/underline.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxeditor_skyblue/underline.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxform_skyblue/dhxform_chbxrd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxform_skyblue/dhxform_chbxrd.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxform_skyblue/dhxform_upload_buttons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxform_skyblue/dhxform_upload_buttons.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxform_skyblue/dhxform_upload_uploading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxform_skyblue/dhxform_upload_uploading.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_abs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_abs.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_abs_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_abs_dis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_dis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_abs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_abs.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_abs_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_abs_dis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_dis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/blank.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/combo_select.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/combo_select.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/combo_select_dhx_skyblue.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/combo_select_dhx_skyblue.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/combo_select_dhx_skyblue_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/combo_select_dhx_skyblue_normal.png -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/combo_select_dhx_skyblue_red_corner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/combo_select_dhx_skyblue_red_corner.png -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_down.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_up.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/imageloaderror.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/imageloaderror.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk0.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk0_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk0_dis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk1.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk1_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk1_dis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/minus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/minus.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/paging_page.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/paging_page.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/paging_pages.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/paging_pages.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/paging_rows.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/paging_rows.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/plus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/plus.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk0.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk0_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk0_dis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk1.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk1_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk1_dis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/sort_asc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/sort_asc.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/sort_desc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/sort_desc.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/blank.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/folder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/folder.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/leaf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/leaf.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line1.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line2.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line3.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line4.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus1.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus2.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus3.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus4.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus5.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus1.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus2.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus3.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus4.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus5.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_cell_btns.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_cell_btns.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_cell_progress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_cell_progress.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_sep_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_sep_h.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_sep_v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_sep_v.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_down.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_down_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_down_dis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_up.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_up_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_up_dis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_chrd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_chrd.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_loader.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_subar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_subar.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_bottom.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_bottom.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_left.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_right.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_top.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_top.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_arrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_arrow.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_checked.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_checked.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_checked_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_checked_dis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxsidebar_skyblue/dhxsidebar_arrow_down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxsidebar_skyblue/dhxsidebar_arrow_down.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxsidebar_skyblue/dhxsidebar_arrow_up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxsidebar_skyblue/dhxsidebar_arrow_up.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxsidebar_skyblue/dhxsidebar_cell_progress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxsidebar_skyblue/dhxsidebar_cell_progress.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_arrows.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_arrows.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_button_close.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_button_close.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_cell_progress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_cell_progress.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtoolbar_skyblue/dhxtoolbar_arrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtoolbar_skyblue/dhxtoolbar_arrow.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtoolbar_skyblue/dhxtoolbar_arrow_dis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtoolbar_skyblue/dhxtoolbar_arrow_dis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/blank.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/but_cut.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/but_cut.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/folderClosed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/folderClosed.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/folderOpen.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/folderOpen.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckAll.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckAll.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckDis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckDis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckGray.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckGray.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/iconUncheckAll.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/iconUncheckAll.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/iconUncheckDis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/iconUncheckDis.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/leaf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/leaf.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/line.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/line1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/line1.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/line1_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/line1_rtl.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/line2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/line2.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/line2_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/line2_rtl.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/line3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/line3.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/line3_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/line3_rtl.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/line4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/line4.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/line4_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/line4_rtl.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/lock.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/lock.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/minus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/minus.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/minus1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/minus1.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/minus2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/minus2.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/minus2_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/minus2_rtl.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/minus3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/minus3.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/minus3_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/minus3_rtl.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/minus4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/minus4.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/minus4_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/minus4_rtl.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/minus5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/minus5.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/minus5_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/minus5_rtl.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/plus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/plus.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/plus1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/plus1.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/plus2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/plus2.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/plus2_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/plus2_rtl.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/plus3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/plus3.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/plus3_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/plus3_rtl.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/plus4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/plus4.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/plus4_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/plus4_rtl.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/plus5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/plus5.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/plus5_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/plus5_rtl.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/radio_off.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/radio_off.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxtree_skyblue/radio_on.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxtree_skyblue/radio_on.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_buttons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_buttons.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_icon.gif -------------------------------------------------------------------------------- /samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_progress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_progress.gif -------------------------------------------------------------------------------- /samples/export/csv.php: -------------------------------------------------------------------------------- 1 | excel(); 12 | 13 | $grid = new GridConnector($res, "PDO"); 14 | $grid->set_limit(100); 15 | $config = new GridConfiguration(); 16 | 17 | $grid = new GridConnector($res, "PDO"); 18 | $grid->set_config($config); 19 | $grid->render_table("grid50000"); 20 | ?> -------------------------------------------------------------------------------- /samples/export/excel.php: -------------------------------------------------------------------------------- 1 | excel(); 12 | 13 | $grid = new GridConnector($res, "PDO"); 14 | $grid->set_limit(100); 15 | $config = new GridConfiguration(); 16 | 17 | $grid = new GridConnector($res, "PDO"); 18 | $grid->set_config($config); 19 | $grid->render_table("grid50000"); 20 | ?> -------------------------------------------------------------------------------- /samples/export/html.php: -------------------------------------------------------------------------------- 1 | excel(); 12 | 13 | $grid = new GridConnector($res, "PDO"); 14 | $grid->set_limit(100); 15 | $config = new GridConfiguration(); 16 | 17 | $grid = new GridConnector($res, "PDO"); 18 | $grid->set_config($config); 19 | $grid->render_table("grid50000"); 20 | ?> -------------------------------------------------------------------------------- /samples/export/pdf.php: -------------------------------------------------------------------------------- 1 | set_limit(100); 14 | $config = new GridConfiguration(); 15 | 16 | $config->set_convert_mode(true); 17 | $grid->set_config($config); 18 | $grid->render_table("grid50000"); 19 | ?> -------------------------------------------------------------------------------- /samples/gantt/01_basic_init_connector.php: -------------------------------------------------------------------------------- 1 | mix("open", 1); 12 | 13 | $gantt->render_links("gantt_links", "id", "source,target,type"); 14 | $gantt->render_table("gantt_tasks","id","start_date,duration,text,progress,parent",""); 15 | 16 | ?> -------------------------------------------------------------------------------- /samples/grid/01_basic_connector.php: -------------------------------------------------------------------------------- 1 | enable_log("some.txt", true); 9 | $grid->dynamic_loading(100); 10 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 11 | ?> -------------------------------------------------------------------------------- /samples/grid/01a_sql_basic_connector.php: -------------------------------------------------------------------------------- 1 | render_sql($sql,"item_id","item_nm,item_cd"); 11 | 12 | ?> -------------------------------------------------------------------------------- /samples/grid/02_rendering_connector.php: -------------------------------------------------------------------------------- 1 | get_index()%2) { 8 | $row->set_row_style("background-color: red"); 9 | } 10 | } 11 | require("../../codebase/grid_connector.php"); 12 | $grid = new GridConnector($res, "PDO"); 13 | 14 | $grid->dynamic_loading(100); 15 | $grid->event->attach("beforeRender","color_rows"); 16 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 17 | ?> -------------------------------------------------------------------------------- /samples/grid/03_validation_connector.php: -------------------------------------------------------------------------------- 1 | get_value("item_cd")=="" || $action->get_value("item_nm")=="") 8 | $action->invalid(); 9 | } 10 | require("../../codebase/grid_connector.php"); 11 | $grid = new GridConnector($res, "PDO"); 12 | 13 | $grid->dynamic_loading(100); 14 | $grid->event->attach("beforeProcessing",check_data); 15 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 16 | ?> -------------------------------------------------------------------------------- /samples/grid/04_custom_sql_connector.php: -------------------------------------------------------------------------------- 1 | sql->attach("delete","update grid50000 set item_nm='deleted' where item_id='{item_id}'"); 11 | 12 | $grid->dynamic_loading(100); 13 | 14 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 15 | ?> -------------------------------------------------------------------------------- /samples/grid/05_select_filter_connector.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(100); 9 | $grid->render_table("countries","item_id","item_nm,item_cd"); 10 | ?> -------------------------------------------------------------------------------- /samples/grid/05a_select_filter_connector.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(100); 12 | 13 | /*$filter1 = new OptionsConnector($res, "PDO"); 14 | $filter1->render_table("countries","item_id","item_id(value),item_nm(label)"); 15 | $grid->set_options("item_nm",$filter1);*/ 16 | 17 | $filter1 = new OptionsConnector($res, "PDO"); 18 | $filter1->render_sql("SELECT DISTINCT SUBSTR(item_nm,1,2) as value from grid50000","item_id","item_nm(value)"); 19 | $grid->set_options("item_nm",$filter1); 20 | 21 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 22 | ?> -------------------------------------------------------------------------------- /samples/grid/06_combo_connector.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(100); 12 | 13 | /*$filter1 = new OptionsConnector($res, "PDO"); 14 | $filter1->render_table("countries","item_id","item_id(value),item_nm(label)"); 15 | $grid->set_options("item_nm",$filter1);*/ 16 | 17 | $filter1 = new OptionsConnector($res, "PDO"); 18 | $filter1->render_table("countries","item_id","item_id(value),item_nm(label)"); 19 | $grid->set_options("item_nm",$filter1); 20 | 21 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 22 | 23 | ?> -------------------------------------------------------------------------------- /samples/grid/09_server_side_configuration.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | For demo purpose only :: &1 5 | 6 | 7 | 8 | 9 | 10 |
    11 | 12 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /samples/grid/09_server_side_configuration.php: -------------------------------------------------------------------------------- 1 | set_limit(100); 9 | 10 | $config = new GridConfiguration(); 11 | $config->setHeader("ID,First Name,Last Name,Title,Office,Extn,Mobile,Email"); 12 | $config->setColTypes("ro,ed,ed,ed,ed,ed,ed,ed"); 13 | $grid->set_config($config); 14 | 15 | $grid->render_table("grid50000"); 16 | ?> -------------------------------------------------------------------------------- /samples/grid/10_auto_config.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | For demo purpose only :: &1 5 | 6 | 7 | 8 | 9 | 10 |
    11 | 12 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /samples/grid/10_auto_config.php: -------------------------------------------------------------------------------- 1 | set_config(false); 9 | $grid->dynamic_loading(100); 10 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 11 | ?> -------------------------------------------------------------------------------- /samples/grid/11_auto_config_filters.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | For demo purpose only :: &1 5 | 6 | 7 | 8 | 9 | 10 |
    11 | 12 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /samples/grid/11_auto_config_filters.php: -------------------------------------------------------------------------------- 1 | set_config(true); 10 | $grid->dynamic_loading(100); 11 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 12 | ?> -------------------------------------------------------------------------------- /samples/grid/12_attach_header_server.php: -------------------------------------------------------------------------------- 1 | setHeader("Item,#cspan"); 13 | $config->attachHeader("Item Name,Item CD"); 14 | $config->setColIds("col1,col2"); 15 | $config->setInitWidths('120,*'); 16 | $config->setColSorting("connector,connector"); 17 | $config->setColColor(",#dddddd"); 18 | $config->setColHidden("false,false"); 19 | $config->setColTypes("ro,ed"); 20 | $config->setColAlign('center,center'); 21 | $config->setColVAlign('bottom,middle'); 22 | 23 | $grid->set_config($config); 24 | 25 | $grid->dynamic_loading(100); 26 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 27 | ?> -------------------------------------------------------------------------------- /samples/grid/13_filesystem_grid_connector.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | For demo purpose only :: &1 5 | 6 | 7 | 8 | 9 | 10 |
    11 | 12 | 19 | 20 |
    21 | <?php 22 |
        
    require_once("../../codebase/db_filesystem.php"); 23 |
        
    require_once("../../codebase/grid_connector.php"); 24 |
    25 |
        
    $grid = new GridConnector("c:/", "FileSystem"); 26 |
        
    $grid->render_table("../","safe_name","filename,full_filename,size,name,extention,date,is_folder"); 27 |
    ?> 28 |
    29 |
    30 | 31 | 32 | -------------------------------------------------------------------------------- /samples/grid/13_filesystem_grid_connector.php: -------------------------------------------------------------------------------- 1 | render_table("../","safe_name","filename,full_filename,size,name,extention,date,is_folder"); 7 | ?> -------------------------------------------------------------------------------- /samples/grid/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 |

    dhtmlxConnector for PHP :: Samples

    20 |
  • Basic init
  • 21 |
  • Basic init by sql string
  • 22 |
  • Rendering customization
  • 23 |
  • Validation
  • 24 |
  • Custom update logic
  • 25 |
  • Select filter in grid
  • 26 |
  • Select filter in grid ( different init )
  • 27 |
  • Combo in grid (sub connector)
  • 28 |
  • Combo in grid (predefined list)
  • 29 |
  • Configuration on server side
  • 30 |
  • Auto configuration
  • 31 |
  • Auto configuration with filters
  • 32 |
  • Attaching header on the server side
  • 33 |
  • File system connector
  • 34 | 35 | -------------------------------------------------------------------------------- /samples/grid/xx_adodb.php: -------------------------------------------------------------------------------- 1 | Connect($mysql_server,$mysql_user,$mysql_pass, $mysql_db); 8 | 9 | require("../../codebase/grid_connector.php"); 10 | require("../../codebase/db_adodb.php"); 11 | $grid = new GridConnector($db, "Ado"); 12 | $grid->dynamic_loading(100); 13 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 14 | 15 | ?> -------------------------------------------------------------------------------- /samples/grid/xx_sample_mssql_connector.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(100); 12 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 13 | ?> -------------------------------------------------------------------------------- /samples/grid/xx_sample_mysqli.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | MySQLi connector with dhtmlxGrid - read-only version 5 | 6 | 7 | 8 | 20 | 21 | 22 |
    23 | 24 | 25 | -------------------------------------------------------------------------------- /samples/grid/xx_sample_mysqli_connector.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DHTMLX/connector-php/894282441cb11df47ed05db609652a35a3d143d8/samples/grid/xx_sample_mysqli_connector.php -------------------------------------------------------------------------------- /samples/grid/xx_sample_oracle_connector.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(50); 13 | $grid->sql->sequence("EMPLOYEES_INC.nextVal"); 14 | $grid->render_table("EMPLOYEES","EMPLOYEE_ID","FIRST_NAME,LAST_NAME"); 15 | 16 | ?> -------------------------------------------------------------------------------- /samples/grid/xx_sample_pdo_connector.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(100); 10 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 11 | ?> -------------------------------------------------------------------------------- /samples/grid/xx_sample_pdo_pg_connector.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(100); 10 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 11 | ?> -------------------------------------------------------------------------------- /samples/grid/xx_sample_postgresql_connector.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(100); 12 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 13 | ?> -------------------------------------------------------------------------------- /samples/grid/xx_sample_sasql_connector.php: -------------------------------------------------------------------------------- 1 | enable_log("temp.log",true); 9 | $grid->dynamic_loading(100); 10 | $grid->render_table("Contacts","ID","Surname,GivenName,Title"); 11 | ?> -------------------------------------------------------------------------------- /samples/grid/xx_sample_sqlite3_connector.php: -------------------------------------------------------------------------------- 1 | render_table("grid50000","item_id","item_nm,item_cd"); 11 | 12 | ?> -------------------------------------------------------------------------------- /samples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 |

    dhtmlxConnector for PHP :: Samples

    20 | 21 |
    Be sure to create a test DB from "dump.sql" and adjust db settings in "config.php"
    22 | 23 |
  • Grid
  • 24 |
  • Tree
  • 25 |
  • TreeGrid
  • 26 |
  • Combo
  • 27 |
  • DataView
  • 28 |
  • Scheduler
  • 29 |
    30 |
  • Data Export
  • 31 | 32 | -------------------------------------------------------------------------------- /samples/readme.txt: -------------------------------------------------------------------------------- 1 | Expected php.ini settings 2 | magic_quotes off 3 | error_level E_ALL & ~E_NOTICE 4 | 5 | 6 | Before running samples, make sure that db connection settings in config.php are set properly and database was filled from dump.sql file 7 | 8 | (c) dhtmlx ltd. -------------------------------------------------------------------------------- /samples/scheduler/01_basic_init.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 17 | 36 | 37 |
    38 |
    39 |
     
    40 |
     
    41 |
    42 |
    43 |
    44 |
    45 |
    46 |
    47 |
    48 |
    49 |
    50 |
    51 |
    52 | -------------------------------------------------------------------------------- /samples/scheduler/01_basic_init_connector.php: -------------------------------------------------------------------------------- 1 | enable_log("log.txt",true); 11 | $scheduler->render_table("events","event_id","start_date,end_date,event_name,details"); 12 | ?> -------------------------------------------------------------------------------- /samples/scheduler/02_dynamic_loading.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 17 | 18 | 39 | 40 | 41 |
    42 |
    43 |
     
    44 |
     
    45 |
    46 |
    47 |
    48 |
    49 |
    50 |
    51 |
    52 |
    53 |
    54 |
    55 |
    56 | -------------------------------------------------------------------------------- /samples/scheduler/02_dynamic_loading_connector.php: -------------------------------------------------------------------------------- 1 | enable_log("log.txt",true); 11 | $scheduler->render_table("events","event_id","start_date,end_date,event_name,details"); 12 | ?> -------------------------------------------------------------------------------- /samples/scheduler/03_connector_options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 17 | 18 | 39 | 40 | 41 |
    42 |
    43 |
     
    44 |
     
    45 |
    46 |
    47 |
    48 |
    49 |
    50 |
    51 |
    52 |
    53 |
    54 |
    55 |
    56 | -------------------------------------------------------------------------------- /samples/scheduler/03_connector_options.php: -------------------------------------------------------------------------------- 1 | render_table("types","typeid","typeid(value),name(label)"); 9 | 10 | $scheduler = new schedulerConnector($res, "PDO"); 11 | // $scheduler->enable_log("log.txt",true); 12 | 13 | $scheduler->set_options("type", $list); 14 | $scheduler->render_table("tevents","event_id","start_date,end_date,event_name,type"); 15 | ?> -------------------------------------------------------------------------------- /samples/scheduler/04_recurring_events.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 18 | 19 | 31 | 32 | 33 |
    34 |
    35 |
     
    36 |
     
    37 |
    38 |
    39 |
    40 |
    41 |
    42 |
    43 |
    44 |
    45 |
    46 |
    47 |
    48 | -------------------------------------------------------------------------------- /samples/scheduler/04_recurring_events_connector.php: -------------------------------------------------------------------------------- 1 | get_status(); 13 | $type =$action->get_value("rec_type"); 14 | $pid =$action->get_value("event_pid"); 15 | //when serie changed or deleted we need to remove all linked events 16 | if (($status == "deleted" || $status == "updated") && $type!=""){ 17 | $scheduler->sql->query("DELETE FROM events_rec WHERE event_pid='".$scheduler->sql->escape($action->get_id())."'"); 18 | } 19 | if ($status == "deleted" && $pid !=0){ 20 | $scheduler->sql->query("UPDATE events_rec SET rec_type='none' WHERE event_id='".$scheduler->sql->escape($action->get_id())."'"); 21 | $action->success(); 22 | } 23 | 24 | } 25 | function insert_related($action){ 26 | $status = $action->get_status(); 27 | $type =$action->get_value("rec_type"); 28 | 29 | if ($status == "inserted" && $type=="none") 30 | $action->set_status("deleted"); 31 | } 32 | 33 | $scheduler = new schedulerConnector($res, "PDO"); 34 | //$scheduler->enable_log("log.txt",true); 35 | $scheduler->event->attach("beforeProcessing","delete_related"); 36 | $scheduler->event->attach("afterProcessing","insert_related"); 37 | $scheduler->render_table("events_rec","event_id","start_date,end_date,text,rec_type,event_pid,event_length"); 38 | ?> -------------------------------------------------------------------------------- /samples/scheduler/05_json.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 15 | 16 | 35 | 36 | 37 |
    38 |
    39 |
     
    40 |
     
    41 |
    42 |
    43 |
    44 |
    45 |
    46 |
    47 |
    48 |
    49 |
    50 |
    51 |
    52 | -------------------------------------------------------------------------------- /samples/scheduler/05_json_connector.php: -------------------------------------------------------------------------------- 1 | render_table("events","event_id","start_date,end_date,event_name,details"); 11 | ?> -------------------------------------------------------------------------------- /samples/scheduler/06_json_connector_options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 17 | 18 | 39 | 40 | 41 |
    42 |
    43 |
     
    44 |
     
    45 |
    46 |
    47 |
    48 |
    49 |
    50 |
    51 |
    52 |
    53 |
    54 |
    55 |
    56 | -------------------------------------------------------------------------------- /samples/scheduler/06_json_connector_options.php: -------------------------------------------------------------------------------- 1 | render_table("types","typeid","typeid(value),name(label)"); 9 | 10 | $scheduler = new JSONSchedulerConnector($res, "PDO"); 11 | 12 | $scheduler->set_options("type", $list); 13 | $scheduler->render_table("tevents","event_id","start_date,end_date,event_name,type"); 14 | ?> -------------------------------------------------------------------------------- /samples/scheduler/07_array_connector.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 17 | 18 | 36 | 37 | 38 |
    39 |
    40 |
     
    41 |
     
    42 |
    43 |
    44 |
    45 |
    46 |
    47 |
    48 |
    49 |
    50 |
    51 |
    52 |
    53 | -------------------------------------------------------------------------------- /samples/scheduler/07_array_connector.php: -------------------------------------------------------------------------------- 1 | 1, "start_date" => "2012-05-24 00:00", "end_date" => "2012-05-25 00:00", "event_name" => "creation time"), 7 | array("event_id" => 2, "start_date" => "2010-02-16", "end_date" => "2084-06-08", "event_name" => "second part") 8 | ); 9 | 10 | $scheduler = new SchedulerConnector(null); 11 | $scheduler->render_array($data,"event_id","start_date,end_date,event_name"); 12 | ?> -------------------------------------------------------------------------------- /samples/scheduler/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 |

    dhtmlxConnector for PHP :: Samples

    20 | 21 |
  • Basic init
  • 22 |
  • Dynamic loading
  • 23 |
  • Connector options
  • 24 |
  • Recurring events
  • 25 |
  • JSON data loading
  • 26 |
  • JSON data loading with optionsConnector
  • 27 |
  • array data loading
  • 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /samples/security/data_csrf.php: -------------------------------------------------------------------------------- 1 | set_limit(10); 12 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 13 | ?> -------------------------------------------------------------------------------- /samples/security/dataview_csrf.php: -------------------------------------------------------------------------------- 1 | set_limit(10); 12 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 13 | ?> -------------------------------------------------------------------------------- /samples/security/form_csrf.php: -------------------------------------------------------------------------------- 1 | render_table("grid50000","item_id","item_nm,item_cd"); 14 | ?> -------------------------------------------------------------------------------- /samples/security/grid_csrf.php: -------------------------------------------------------------------------------- 1 | set_limit(10); 12 | $grid->render_table("grid50000","item_id","item_nm,item_cd"); 13 | ?> -------------------------------------------------------------------------------- /samples/security/scheduler_csrf.php: -------------------------------------------------------------------------------- 1 | render_table("events","event_id","start_date, end_date, event_name"); 14 | ?> -------------------------------------------------------------------------------- /samples/security/tree_csrf.php: -------------------------------------------------------------------------------- 1 | render_table("tasks","taskId","taskName","","parentId"); 12 | ?> -------------------------------------------------------------------------------- /samples/tree/01_basic.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 | 12 | 17 | 18 |
    19 | <?php 20 |
        
    require_once("../config.php"); 21 |
        
    $res= new PDO($mysql_server,$mysql_user,$mysql_pass); 22 |
        
    mysql_select_db($mysql_db); 23 |
    24 |
       require(
    "../../codebase/tree_connector.php"); 25 |
       
    $tree = new TreeConnector($res); 26 |
       
    $tree->enable_log("temp.log",true); 27 |
       
    $tree->render_table("tasks","taskId","taskName","","parentId"); 28 |
    ?> 29 |
    30 |
    31 | 32 | -------------------------------------------------------------------------------- /samples/tree/01_basic_connector.php: -------------------------------------------------------------------------------- 1 | render_table("tasks","taskId","taskName","","parentId"); 10 | ?> -------------------------------------------------------------------------------- /samples/tree/01p_basic_connector.php: -------------------------------------------------------------------------------- 1 | get_value("taskId")%100>1) 9 | $data->set_kids(false); 10 | else 11 | $data->set_kids(true); 12 | } 13 | 14 | require("../../codebase/tree_connector.php"); 15 | $tree = new TreeConnector($res, "PDO"); 16 | // 17 | $tree->event->attach("beforeRender","child_setter"); 18 | $tree->render_table("tasks","taskId","taskName","","parentId"); 19 | ?> -------------------------------------------------------------------------------- /samples/tree/02_dynamic_loading.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Filtering and Autocomplete mode 5 | 6 | 7 | 8 | 9 | 10 |
    11 | 12 | 18 | 19 |
    20 | <?php 21 |
        
    require_once("../config.php"); 22 |
        
    $res= new PDO($mysql_server,$mysql_user,$mysql_pass); 23 |
        
    mysql_select_db($mysql_db); 24 |
    25 |
       require(
    "../../codebase/tree_connector.php"); 26 |
       
    $tree = new TreeConnector($res); 27 |
       
    $tree->enable_log("temp.log",true); 28 |
       
    $tree->dynamic_loading(true); 29 |
       
    $tree->render_table("tasks","taskId","taskName","","parentId"); 30 |
    ?> 31 |
    32 |
    33 | 34 | -------------------------------------------------------------------------------- /samples/tree/02_dynamic_loading_connector.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(true); 10 | $tree->render_table("tasks","taskId","taskName","","parentId"); 11 | ?> -------------------------------------------------------------------------------- /samples/tree/03_sql_config.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Filtering and Autocomplete mode 5 | 6 | 7 | 8 | 9 | 10 |
    11 | 12 | 17 | 18 |
    19 | <?php 20 |
        
    require_once("../config.php"); 21 |
        
    $res= new PDO($mysql_server,$mysql_user,$mysql_pass); 22 |
        
    mysql_select_db($mysql_db); 23 |
    24 |
       require(
    "../../codebase/tree_connector.php"); 25 |
       
    $tree = new TreeConnector($res); 26 |
       
    $tree->enable_log("temp.log",true); 27 |
       
    $tree->render_sql("SELECT taskId,taskName from tasks WHERE complete>49","taskId","taskName","","parentId"); 28 |
    ?> 29 |
    30 |
    31 | 32 | -------------------------------------------------------------------------------- /samples/tree/03_sql_config_connector.php: -------------------------------------------------------------------------------- 1 | render_sql("SELECT taskId,taskName from tasks WHERE complete>49","taskId","taskName","","parentId"); 10 | ?> -------------------------------------------------------------------------------- /samples/tree/04_custom_styles_connector.php: -------------------------------------------------------------------------------- 1 | get_value("duration")>10) 11 | $item->set_image("lock.gif"); 12 | if ($item->get_value("complete")>75) 13 | $item->set_check_state(1); 14 | } 15 | $tree->event->attach("beforeRender",custom_format); 16 | $tree->render_sql("SELECT taskId,taskName,duration,complete from tasks WHERE complete>49","taskId","taskName","","parentId"); 17 | ?> -------------------------------------------------------------------------------- /samples/tree/05_save.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Filtering and Autocomplete mode 5 | 6 | 7 | 8 | 9 | 10 |
    11 | 12 | 22 | 23 | 24 | > 25 |
    26 | <?php 27 |
        
    require_once("../config.php"); 28 |
        
    $res= new PDO($mysql_server,$mysql_user,$mysql_pass); 29 |
        
    mysql_select_db($mysql_db); 30 |
    31 |
       require(
    "../../codebase/tree_connector.php"); 32 |
       
    $tree = new TreeConnector($res); 33 |
       
    $tree->enable_log("temp.log",true); 34 |
       
    $tree->render_table("tasks","taskId","taskName","","parentId"); 35 |
    ?> 36 |
    37 |
    38 | 39 | -------------------------------------------------------------------------------- /samples/tree/05_save_connector.php: -------------------------------------------------------------------------------- 1 | render_table("tasks","taskId","taskName","","parentId"); 10 | ?> -------------------------------------------------------------------------------- /samples/tree/06_validation_connector.php: -------------------------------------------------------------------------------- 1 | get_value("taskName"))<5) 11 | $action->invalid(); 12 | } 13 | $tree->event->attach("beforeProcessing",my_check); 14 | $tree->render_table("tasks","taskId","taskName","","parentId"); 15 | ?> -------------------------------------------------------------------------------- /samples/tree/08_tree_group_connector.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Group connector 5 | 6 | 7 | 8 | 9 |
    10 | 11 | 20 | 21 |
    22 | <?php 23 |
        
    require_once("../config.php"); 24 |
        
    $res= new PDO($mysql_server,$mysql_user,$mysql_pass); 25 |
        
    mysql_select_db($mysql_db); 26 |
        require(
    "../../codebase/treegroup_connector.php"); 27 |
         28 |
        
    $tree = new TreeGroupConnector($res); 29 |
        
    $tree->enable_log("temp.log",true); 30 |
        
    $tree->render_table("products","id","product_name","","category"); 31 |
         32 |
    ?> 33 |
    34 |
    35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /samples/tree/08_tree_group_connector.php: -------------------------------------------------------------------------------- 1 | render_table("products", "id", "product_name", "", "category"); 10 | 11 | ?> -------------------------------------------------------------------------------- /samples/tree/09_tree_multitable_connector.php: -------------------------------------------------------------------------------- 1 | setMaxLevel(3); 13 | $level = $tree->get_level(); 14 | 15 | switch ($level) { 16 | case 0: 17 | $tree->render_table("projects","project_id","project_name","",""); 18 | break; 19 | case 1: 20 | $tree->render_sql("SELECT teams.team_id, teams.team_name, project_team.project_id FROM teams INNER JOIN project_team ON teams.team_id=project_team.team_id", "team_id", "team_name", "", "project_id"); 21 | break; 22 | case 2: 23 | $tree->render_table("developers", "developer_id", "developer_name", "", "developer_team"); 24 | break; 25 | case 3: 26 | $tree->render_table("phones", "phone_id", "phone", "", "phone_developer"); 27 | break; 28 | } 29 | 30 | ?> -------------------------------------------------------------------------------- /samples/tree/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 |

    dhtmlxConnector for PHP :: Samples

    20 | 21 |
  • Basic init
  • 22 |
  • Basic init with server side child flag setting
  • 23 |
  • Dynamical loading
  • 24 |
  • Basic init with SQL configuration
  • 25 |
  • Rendering customization
  • 26 |
  • DataProcessor usage
  • 27 |
  • Validation
  • 28 |
  • Group connector
  • 29 |
  • Multitable connector
  • 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /samples/treegrid/01_basic_connector.php: -------------------------------------------------------------------------------- 1 | render_table("tasks","taskId","taskName,duration,complete","","parentId"); 10 | ?> -------------------------------------------------------------------------------- /samples/treegrid/02_dynamic_loading_connector.php: -------------------------------------------------------------------------------- 1 | dynamic_loading(true); 10 | $tree->render_table("tasks","taskId","taskName,duration,complete","","parentId"); 11 | ?> -------------------------------------------------------------------------------- /samples/treegrid/03_sql_config.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | For demo purpose only :: &1 5 | 6 | 7 | 8 | 9 | 10 |
    11 | 12 | 25 | 26 | 27 | 28 |
    29 | <?php 30 |
        
    require_once("../config.php"); 31 |
        
    $res= new PDO($mysql_server,$mysql_user,$mysql_pass); 32 |
        
    mysql_select_db($mysql_db); 33 |
    34 |
       require(
    "../../codebase/treegrid_connector.php"); 35 |
       
    $tree = new TreeGridConnector($res); 36 |
       
    $tree->enable_log("temp.log",true); 37 |
       
    $tree->render_sql("SELECT * from tasks WHERE complete>49","taskId","taskName,duration,complete","","parentId"); 38 |
    ?> 39 |
    40 |
    41 | 42 | -------------------------------------------------------------------------------- /samples/treegrid/03_sql_config_connector.php: -------------------------------------------------------------------------------- 1 | render_sql("SELECT * from tasks WHERE complete>49","taskId","taskName,duration,complete","","parentId"); 10 | ?> -------------------------------------------------------------------------------- /samples/treegrid/04_custom_styles_connector.php: -------------------------------------------------------------------------------- 1 | set_row_color($item->get_value("complete")<75?"#AAFFFF":"#FFAAFF"); 11 | if ($item->get_value("duration")>10) 12 | $item->set_image("true.gif"); 13 | else 14 | $item->set_image("false.gif"); 15 | } 16 | $tree->event->attach("beforeRender",custom_format); 17 | $tree->render_sql("SELECT * from tasks WHERE complete>49","taskId","taskName,duration,complete","","parentId"); 18 | ?> -------------------------------------------------------------------------------- /samples/treegrid/05_live_update_connector.php: -------------------------------------------------------------------------------- 1 | enable_log("temp.log",true); 10 | $treegrid->enable_live_update("actions_table"); 11 | $treegrid->render_table("tasks","taskId","taskName,duration,complete","","parentId"); 12 | ?> -------------------------------------------------------------------------------- /samples/treegrid/06_treegrid_group_connector.php: -------------------------------------------------------------------------------- 1 | render_table("products", "id", "product_name,scales,colour", "", "category"); 11 | 12 | ?> -------------------------------------------------------------------------------- /samples/treegrid/07_treegrid_multitable_connector.php: -------------------------------------------------------------------------------- 1 | setMaxLevel(3); 12 | $level = $treegrid->get_level(); 13 | 14 | switch ($level) { 15 | case 0: 16 | $treegrid->render_table("projects", "project_id", "project_name, project_dsc", "", ""); 17 | break; 18 | case 1: 19 | $treegrid->render_sql("SELECT teams.team_id, teams.team_name, project_team.project_id FROM teams INNER JOIN project_team ON teams.team_id=project_team.team_id", "team_id", "team_name", "", "project_id"); 20 | break; 21 | case 2: 22 | $treegrid->render_table("developers", "developer_id", "developer_name,developer_email", "", "developer_team"); 23 | break; 24 | case 3: 25 | $treegrid->render_table("phones", "phone_id", "phone,phone_type", "", "phone_developer"); 26 | break; 27 | } 28 | 29 | ?> -------------------------------------------------------------------------------- /samples/treegrid/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 |

    dhtmlxConnector for PHP :: Samples

    20 | 21 |
    Samples are based on standard edition, so to have working TreeGrid samples you need to update files in common folder with ones from dhtmlxSuite pro
    22 | 23 |
  • Basic init
  • 24 |
  • Dynamic loading
  • 25 |
  • SQL config
  • 26 |
  • Custom styles
  • 27 |
  • Live update mode
  • 28 |
  • Group connector
  • 29 |
  • Multitable connector
  • 30 | 31 | 32 | 33 | 34 | --------------------------------------------------------------------------------