source: www/mysql/pmd_common.php@ 1

Last change on this file since 1 was 1, checked in by george, 17 years ago

Prvotní import všeho

File size: 8.8 KB
Line 
1<?php
2/* $Id: pmd_common.php 9853 2007-01-19 18:14:44Z lem9 $ */
3// vim: expandtab sw=4 ts=4 sts=4:
4
5/*
6@author Ivan A Kirillov (Ivan.A.Kirillov@gmail.com)
7*/
8
9require_once './libraries/common.lib.php';
10// not understand
11require_once './libraries/header_http.inc.php';
12
13$GLOBALS['PMD']['STYLE'] = 'default';
14
15require_once './libraries/relation.lib.php';
16$cfgRelation = PMA_getRelationsParam();
17
18$script_display_field = "<script>\n var display_field = new Array();\n";
19
20function get_tabs() // PMA_DBI
21{
22 global $db, $script_display_field;
23 $GLOBALS['PMD']['TABLE_NAME'] = array();// that foreach no error
24 $GLOBALS['PMD']['OWNER'] = array();
25 $GLOBALS['PMD']['TABLE_NAME_SMALL'] = array();
26
27 $tables = PMA_DBI_get_tables_full($db);
28 // seems to be needed later
29 PMA_DBI_select_db($db);
30 $i = 0;
31 foreach ($tables as $one_table) {
32 $GLOBALS['PMD']['TABLE_NAME'][$i] = $db . "." . $one_table['TABLE_NAME'];
33 $GLOBALS['PMD']['OWNER'][$i] = $db;
34 $GLOBALS['PMD']['TABLE_NAME_SMALL'][$i] = $one_table['TABLE_NAME'];
35
36 $GLOBALS['PMD_URL']['TABLE_NAME'][$i] = urlencode($db . "." . $one_table['TABLE_NAME']);
37 $GLOBALS['PMD_URL']['OWNER'][$i] = urlencode($db);
38 $GLOBALS['PMD_URL']['TABLE_NAME_SMALL'][$i] = urlencode($one_table['TABLE_NAME']);
39
40 $GLOBALS['PMD_OUT']['TABLE_NAME'][$i] = htmlspecialchars($db . "." . $one_table['TABLE_NAME'], ENT_QUOTES);
41 $GLOBALS['PMD_OUT']['OWNER'][$i] = htmlspecialchars($db, ENT_QUOTES);
42 $GLOBALS['PMD_OUT']['TABLE_NAME_SMALL'][$i] = htmlspecialchars($one_table['TABLE_NAME'], ENT_QUOTES);
43
44 $GLOBALS['PMD']['TABLE_TYPE'][$i] = strtoupper($one_table['ENGINE']);
45
46 $DF = PMA_getDisplayField($db, $one_table['TABLE_NAME']);
47 if($DF!='')
48 $script_display_field .= " display_field['" . $GLOBALS['PMD_URL']["TABLE_NAME_SMALL"][$i] . "'] = '" . urlencode($DF) . "';\n";
49
50 $i++;
51 }
52 $script_display_field .= "</script>\n";
53 // return $GLOBALS['PMD']; // many bases // not use ??????
54}
55
56function get_tab_info() // PMA_DBI //PMA_backquote
57{
58 global $db;
59 PMA_DBI_select_db($db);
60 $tab_column = array();
61 for ( $i=0; $i < sizeof( $GLOBALS['PMD']["TABLE_NAME"] ); $i++ ) {
62 PMA_DBI_select_db($db);
63 $fields_rs = PMA_DBI_query('SHOW FULL FIELDS FROM '.PMA_backquote($GLOBALS['PMD']["TABLE_NAME_SMALL"][$i]), NULL, PMA_DBI_QUERY_STORE);
64 $fields_cnt = PMA_DBI_num_rows($fields_rs);
65 $j=0;
66 while ($row = PMA_DBI_fetch_assoc($fields_rs)) {
67 $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['COLUMN_ID'][$j] = $j;
68 $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['COLUMN_NAME'][$j] = $row['Field'];
69 $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['TYPE'][$j] = $row['Type'];
70 $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['NULLABLE'][$j] = $row['Null'];
71 $j++;
72 }
73 }
74return $tab_column;
75}
76//-------------------------------------CONTR-----------------------------------------------
77function get_script_contr() {
78 global $db;
79 PMA_DBI_select_db($db);
80 $con["C_NAME"] = array();
81 $i = 0;
82 $alltab_rs = PMA_DBI_query('SHOW TABLES FROM ' . PMA_backquote($db), NULL, PMA_DBI_QUERY_STORE);
83 while ($val = @PMA_DBI_fetch_row($alltab_rs)) {
84 $row = PMA_getForeigners($db,$val[0],'','internal');
85 //echo "<br> internal ".$db." - ".$val[0]." - ";
86 //print_r($row );
87 if ($row !== false) {
88 foreach ($row as $field => $value) {
89 $con['C_NAME'][$i] = '';
90 $con['DTN'][$i] = urlencode($db . "." . $val[0]);
91 $con['DCN'][$i] = urlencode($field);
92 $con['STN'][$i] = urlencode($value['foreign_db'] . "." . $value['foreign_table']);
93 $con['SCN'][$i] = urlencode($value['foreign_field']);
94 $i++;
95 }
96 }
97 $row = PMA_getForeigners($db,$val[0],'','innodb');
98 //echo "<br> INNO ";
99 //print_r($row );
100 if ($row !== false) {
101 foreach ($row as $field => $value) {
102 $con['C_NAME'][$i] = '';
103 $con['DTN'][$i] = urlencode($db.".".$val[0]);
104 $con['DCN'][$i] = urlencode($field);
105 $con['STN'][$i] = urlencode($value['foreign_db'].".".$value['foreign_table']);
106 $con['SCN'][$i] = urlencode($value['foreign_field']);
107 $i++;
108 }
109 }
110 }
111
112 $ti = 0;
113 $script_contr = "<script>\n var contr = new Array();\n";
114 for ( $i=0; $i < sizeof( $con["C_NAME"] ); $i++ ) {
115 $script_contr .= " contr[$ti] = new Array();\n";
116 $script_contr .= " contr[$ti]['".$con['C_NAME'][$i]."'] = new Array();\n";
117 if (in_array($con['DTN'][$i],$GLOBALS['PMD_URL']["TABLE_NAME"]) && in_array($con['STN'][$i],$GLOBALS['PMD_URL']["TABLE_NAME"])) {
118 $script_contr .= " contr[$ti]['".$con['C_NAME'][$i]."']['".$con['DTN'][$i]."'] = new Array();\n";$m_col = array();//}
119 $script_contr .= " contr[$ti]['".$con['C_NAME'][$i]."']['".$con['DTN'][$i]."']['".$con['DCN'][$i]."'] = new Array();\n";//}
120 $script_contr .= " contr[$ti]['".$con['C_NAME'][$i]."']['".$con['DTN'][$i]."']['".$con['DCN'][$i]."'][0] = '".$con['STN'][$i]."';\n"; //
121 $script_contr .= " contr[$ti]['".$con['C_NAME'][$i]."']['".$con['DTN'][$i]."']['".$con['DCN'][$i]."'][1] = '".$con['SCN'][$i]."';\n"; //
122 }
123 $ti++;
124 }
125 $script_contr .= "</script>\n";
126 return $script_contr;
127}
128
129function get_pk_or_unique_keys() {
130 global $db;
131 require_once('./libraries/tbl_indexes.lib.php');
132
133 PMA_DBI_select_db($db);
134 $tables_pk_or_unique_keys = array();
135
136 for( $I=0; $I<sizeof($GLOBALS['PMD']['TABLE_NAME_SMALL']); $I++) {
137 $ret_keys = PMA_get_indexes($GLOBALS['PMD']['TABLE_NAME_SMALL'][$I]);
138 if (! empty($ret_keys)) {
139 // reset those as the function uses them by reference
140 $indexes = $indexes_info = $indexes_data = array();
141 PMA_extract_indexes($ret_keys, $indexes, $indexes_info, $indexes_data);
142 // for now, take into account only the first index segment
143 foreach ($indexes_data as $key_name => $one_index) {
144 $column_name = $one_index[1]['Column_name'];
145 if (isset($indexes_info[$key_name]) && $indexes_info[$key_name]['Non_unique'] == 0) {
146 $tables_pk_or_unique_keys[$GLOBALS['PMD']['OWNER'][$I] . '.' .$GLOBALS['PMD']['TABLE_NAME_SMALL'][$I] . '.' . $column_name] = 1;
147 }
148 }
149 }
150 }
151 return $tables_pk_or_unique_keys;
152}
153
154function get_all_keys() {
155 global $db;
156 require_once('./libraries/tbl_indexes.lib.php');
157
158 PMA_DBI_select_db($db);
159 $tables_all_keys = array();
160
161 for( $I=0; $I<sizeof($GLOBALS['PMD']['TABLE_NAME_SMALL']); $I++) {
162 $ret_keys = PMA_get_indexes($GLOBALS['PMD']['TABLE_NAME_SMALL'][$I]);
163 if (! empty($ret_keys)) {
164 // reset those as the function uses them by reference
165 $indexes = $indexes_info = $indexes_data = array();
166 PMA_extract_indexes($ret_keys, $indexes, $indexes_info, $indexes_data);
167 // for now, take into account only the first index segment
168 foreach ($indexes_data as $one_index) {
169 $column_name = $one_index[1]['Column_name'];
170 $tables_all_keys[$GLOBALS['PMD']['OWNER'][$I] . '.' .$GLOBALS['PMD']['TABLE_NAME_SMALL'][$I] . '.' . $column_name] = 1;
171 }
172 }
173 }
174 return $tables_all_keys;
175}
176
177function get_script_tabs() {
178 $script_tabs = "<script>\n var j_tabs = new Array();\n";
179 for ( $i=0; $i < sizeof( $GLOBALS['PMD']['TABLE_NAME'] ); $i++ ) {
180 $script_tabs .= "j_tabs['".$GLOBALS['PMD_URL']['TABLE_NAME'][$i]."'] = '".$GLOBALS['PMD']['TABLE_TYPE'][$i]."';\n";
181 }
182 $script_tabs .= "</script>\n";
183 return $script_tabs;
184}
185
186function get_tab_pos() {
187 $stmt = PMA_query_as_cu("SELECT * FROM " . PMA_backquote($GLOBALS['cfgRelation']['designer_coords']), FALSE, PMA_DBI_QUERY_STORE);
188 if ( $stmt ) // exist table repository
189 {
190 while ($t_p = PMA_DBI_fetch_array($stmt, MYSQL_ASSOC)) {
191 $t_name = $t_p['db_name'] . '.' . $t_p['table_name'];
192 $tab_pos[ $t_name ]['X'] = $t_p['x'];
193 $tab_pos[ $t_name ]['Y'] = $t_p['y'];
194 $tab_pos[ $t_name ]['V'] = $t_p['v'];
195 $tab_pos[ $t_name ]['H'] = $t_p['h'];
196 }
197 }
198 return isset($tab_pos) ? $tab_pos : NULL;
199}
200
201function get_owners() {
202 $m = array();
203 $j = 0;
204 for ( $i=0; $i < sizeof( $GLOBALS['PMD']["OWNER"] ); $i++ ) {
205 if( ! in_array($GLOBALS['PMD']["OWNER"][$i],$m)) {
206 $m[$j++] = $GLOBALS['PMD']["OWNER"][$i];
207 }
208 }
209 return $m;
210}
211
212get_tabs();
213?>
Note: See TracBrowser for help on using the repository browser.