Define headers which to trust in configuration, thanks for help with this to Christia...
[phpmyadmin/crack.git] / pmd_get_info.php
blob91d3f53705984e59397892aa42309e1d1c4bcf31
1 <?php
2 /* $Id$ */
3 // vim: expandtab sw=4 ts=4 sts=4:
5 /*
6 @author Ivan A Kirillov (develop.php@gmail.com)
7 www.phpMyDesigner.net
8 */
9 require_once './libraries/relation.lib.php';
10 function get_tabs() // PMA_DBI
12 global $db;
13 $GLOBALS['PMD']['TABLE_NAME'] = array();// that foreach no error
14 $GLOBALS['PMD']['OWNER'] = array();
15 $GLOBALS['PMD']['TABLE_NAME_SMALL'] = array();
17 $tables = PMA_DBI_get_tables_full($db);
18 // seems to be needed later
19 PMA_DBI_select_db($db);
20 $i = 0;
21 foreach ($tables as $one_table) {
22 $GLOBALS['PMD']['TABLE_NAME'][$i] = $db . "." . $one_table['TABLE_NAME'];
23 $GLOBALS['PMD']['OWNER'][$i] = $db;
24 $GLOBALS['PMD']['TABLE_NAME_SMALL'][$i] = $one_table['TABLE_NAME'];
25 $GLOBALS['PMD']['TABLE_TYPE'][$i] = strtoupper($one_table['ENGINE']);
26 $i++;
28 // return $GLOBALS['PMD']; // many bases // not use ??????
31 function get_tab_info() // PMA_DBI //PMA_backquote
33 global $db;
34 PMA_DBI_select_db($db);
35 $tab_column = array();
36 for ( $i=0; $i < sizeof( $GLOBALS['PMD']["TABLE_NAME"] ); $i++ ) {
37 PMA_DBI_select_db($db);
38 $fields_rs = PMA_DBI_query('SHOW FULL FIELDS FROM '.PMA_backquote($GLOBALS['PMD']["TABLE_NAME_SMALL"][$i]), NULL, PMA_DBI_QUERY_STORE);
39 $fields_cnt = PMA_DBI_num_rows($fields_rs);
40 $j=0;
41 while ($row = PMA_DBI_fetch_assoc($fields_rs)) {
42 $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['COLUMN_ID'][$j] = $j;
43 $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['COLUMN_NAME'][$j] = $row['Field'];
44 $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['TYPE'][$j] = $row['Type'];
45 $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['NULLABLE'][$j] = $row['Null'];
46 $j++;
49 return $tab_column;
51 //-------------------------------------CONTR-----------------------------------------------
52 function get_script_contr() {
53 global $db;
54 PMA_DBI_select_db($db);
55 $con["C_NAME"] = array();
56 PMA_getRelationsParam();
57 $i = 0;
58 $alltab_rs = PMA_DBI_query('SHOW TABLES FROM ' . PMA_backquote($db), NULL, PMA_DBI_QUERY_STORE);
59 while ($val = @PMA_DBI_fetch_row($alltab_rs)) {
60 $row = PMA_getForeigners($db,$val[0],'','internal');
61 if ($row !== false) {
62 foreach ($row as $field => $value) {
63 $con['C_NAME'][$i] = '';
64 $con['DTN'][$i] = $db . "." . $val[0];
65 $con['DCN'][$i] = $field;
66 $con['STN'][$i] = $value['foreign_db'] . "." . $value['foreign_table'];
67 $con['SCN'][$i] = $value['foreign_field'];
68 $i++;
71 $row = PMA_getForeigners($db,$val[0],'','innodb');
72 if ($row !== false) {
73 foreach ($row as $field => $value) {
74 $con['C_NAME'][$i] = '';
75 $con['DTN'][$i] = $db.".".$val[0];
76 $con['DCN'][$i] = $field;
77 $con['STN'][$i] = $value['foreign_db'].".".$value['foreign_table'];
78 $con['SCN'][$i] = $value['foreign_field'];
79 $i++;
84 $ti = 0;
85 $script_contr = "<script> var contr = new Array();";
86 for ( $i=0; $i < sizeof( $con["C_NAME"] ); $i++ ) {
87 $script_contr .= " contr[$ti] = new Array();\n";
88 $script_contr .= " contr[$ti]['".$con['C_NAME'][$i]."'] = new Array();\n";
89 if (in_array($con['DTN'][$i],$GLOBALS['PMD']["TABLE_NAME"]) && in_array($con['STN'][$i],$GLOBALS['PMD']["TABLE_NAME"])) {
90 $script_contr .= " contr[$ti]['".$con['C_NAME'][$i]."']['".$con['DTN'][$i]."'] = new Array();\n";$m_col = array();//}
91 $script_contr .= " contr[$ti]['".$con['C_NAME'][$i]."']['".$con['DTN'][$i]."']['".$con['DCN'][$i]."'] = new Array();\n";//}
92 $script_contr .= " contr[$ti]['".$con['C_NAME'][$i]."']['".$con['DTN'][$i]."']['".$con['DCN'][$i]."'][0] = '".$con['STN'][$i]."';\n"; //
93 $script_contr .= " contr[$ti]['".$con['C_NAME'][$i]."']['".$con['DTN'][$i]."']['".$con['DCN'][$i]."'][1] = '".$con['SCN'][$i]."';\n"; //
95 $ti++;
97 $script_contr .= "</script>";
98 return $script_contr;
101 function get_p_k_contr() {
102 global $db;
103 PMA_DBI_select_db($db);
104 //$tabs = get_tabs();
105 $tab_pk = array();
106 // this is not used? :
107 //$script_contr = "<script> var contr = new Array();";
109 for( $I=0; $I<sizeof($GLOBALS['PMD']['TABLE_NAME_SMALL']); $I++) {
110 $stmt = PMA_DBI_query("SHOW CREATE TABLE ".PMA_backquote($GLOBALS['PMD']['TABLE_NAME_SMALL'][$I]));
111 while ($create_table = PMA_DBI_fetch_array($stmt)) {
112 preg_match_all ("/PRIMARY KEY\s*\(([\w`,\s]+)\)/im", $create_table[1], $m);
113 if (isset($m[1][0])) {
114 preg_match_all ("/[`,\s]*(\w+)[`,\s]*/im", $m[1][0], $k); // FK
115 foreach ($k[1] as $key => $value) {
116 $tab_pk[$GLOBALS['PMD']['OWNER'][$I].'.'.$GLOBALS['PMD']['TABLE_NAME_SMALL'][$I].'.'.$value]=1; // 1 - in oracle name contrains
121 return $tab_pk;
124 function get_all_keys() {
125 global $db;
126 require_once('./libraries/tbl_indexes.lib.php');
128 PMA_DBI_select_db($db);
129 $tables_all_keys = array();
131 for( $I=0; $I<sizeof($GLOBALS['PMD']['TABLE_NAME_SMALL']); $I++) {
132 $ret_keys = PMA_get_indexes($GLOBALS['PMD']['TABLE_NAME_SMALL'][$I]);
133 if (! empty($ret_keys)) {
134 PMA_extract_indexes($ret_keys, $indexes, $indexes_info, $indexes_data);
135 // for now, take into account only the first index segment
136 foreach ($indexes_data as $one_index) {
137 $column_name = $one_index[1]['Column_name'];
138 $tables_all_keys[$GLOBALS['PMD']['OWNER'][$I] . '.' .$GLOBALS['PMD']['TABLE_NAME_SMALL'][$I] . '.' . $column_name] = 1;
142 return $tables_all_keys;
145 function get_script_tabs() {
146 $script_tabs = "<script> var j_tabs = new Array();\n";
147 for ( $i=0; $i < sizeof( $GLOBALS['PMD']['TABLE_NAME'] ); $i++ ) {
148 $script_tabs .= "j_tabs['".$GLOBALS['PMD']['TABLE_NAME'][$i]."'] = '".$GLOBALS['PMD']['TABLE_TYPE'][$i]."';\n";
150 $script_tabs .= "</script>";
151 return $script_tabs;
154 function get_tab_pos() {
155 PMA_getRelationsParam();
156 $stmt = PMA_query_as_cu("SELECT * FROM " . PMA_backquote($GLOBALS['cfgRelation']['designer_coords']), FALSE, PMA_DBI_QUERY_STORE);
157 if ( $stmt ) // exist table repository
159 while ($t_p = PMA_DBI_fetch_array($stmt, MYSQL_ASSOC)) {
160 $t_name = $t_p['db_name'] . '.' . $t_p['table_name'];
161 $tab_pos[ $t_name ]['X'] = $t_p['x'];
162 $tab_pos[ $t_name ]['Y'] = $t_p['y'];
163 $tab_pos[ $t_name ]['V'] = $t_p['v'];
164 $tab_pos[ $t_name ]['H'] = $t_p['h'];
167 return isset($tab_pos) ? $tab_pos : NULL;
170 function get_owners() {
171 $m = array();
172 $j = 0;
173 for ( $i=0; $i < sizeof( $GLOBALS['PMD']["OWNER"] ); $i++ ) {
174 if( ! in_array($GLOBALS['PMD']["OWNER"][$i],$m)) {
175 $m[$j++] = $GLOBALS['PMD']["OWNER"][$i];
178 return $m;