PageRenderTime 1043ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/xampp/phpMyAdmin/pmd_common.php

https://github.com/edmondscommerce/XAMPP-Magento-Demo-Site
PHP | 299 lines | 174 code | 25 blank | 100 comment | 14 complexity | c3e4c3d3ae567ebaec8bf19d4ac21718 MD5 | raw file
  1. <?php
  2. /* vim: set expandtab sw=4 ts=4 sts=4: */
  3. /**
  4. * @author Ivan A Kirillov (Ivan.A.Kirillov@gmail.com)
  5. * @version $Id: pmd_common.php 12229 2009-02-10 17:36:28Z lem9 $
  6. * @package phpMyAdmin-Designer
  7. */
  8. /**
  9. *
  10. */
  11. require_once './libraries/common.inc.php';
  12. // not understand
  13. require_once './libraries/header_http.inc.php';
  14. $GLOBALS['PMD']['STYLE'] = 'default';
  15. require_once './libraries/relation.lib.php';
  16. $cfgRelation = PMA_getRelationsParam();
  17. $GLOBALS['script_display_field'] =
  18. '<script type="text/javascript">' . "\n" .
  19. '// <![CDATA[' . "\n" .
  20. 'var display_field = new Array();' . "\n";
  21. /**
  22. * retrieves table info and stores it in $GLOBALS['PMD']
  23. *
  24. * @uses $GLOBALS['script_display_field']
  25. * @uses $GLOBALS['PMD'] to fill it
  26. * @uses $GLOBALS['db']
  27. * @uses PMA_DBI_get_tables_full()
  28. * @uses PMA_DBI_select_db()
  29. * @uses PMA_getDisplayField()
  30. * @uses urlencode()
  31. * @uses htmlspecialchars()
  32. * @uses strtoupper()
  33. * @uses urlencode()
  34. */
  35. function get_tabs()
  36. {
  37. $GLOBALS['PMD']['TABLE_NAME'] = array();// that foreach no error
  38. $GLOBALS['PMD']['OWNER'] = array();
  39. $GLOBALS['PMD']['TABLE_NAME_SMALL'] = array();
  40. $tables = PMA_DBI_get_tables_full($GLOBALS['db']);
  41. // seems to be needed later
  42. PMA_DBI_select_db($GLOBALS['db']);
  43. $i = 0;
  44. foreach ($tables as $one_table) {
  45. $GLOBALS['PMD']['TABLE_NAME'][$i] = $GLOBALS['db'] . "." . $one_table['TABLE_NAME'];
  46. $GLOBALS['PMD']['OWNER'][$i] = $GLOBALS['db'];
  47. $GLOBALS['PMD']['TABLE_NAME_SMALL'][$i] = $one_table['TABLE_NAME'];
  48. $GLOBALS['PMD_URL']['TABLE_NAME'][$i] = urlencode($GLOBALS['db'] . "." . $one_table['TABLE_NAME']);
  49. $GLOBALS['PMD_URL']['OWNER'][$i] = urlencode($GLOBALS['db']);
  50. $GLOBALS['PMD_URL']['TABLE_NAME_SMALL'][$i] = urlencode($one_table['TABLE_NAME']);
  51. $GLOBALS['PMD_OUT']['TABLE_NAME'][$i] = htmlspecialchars($GLOBALS['db'] . "." . $one_table['TABLE_NAME'], ENT_QUOTES);
  52. $GLOBALS['PMD_OUT']['OWNER'][$i] = htmlspecialchars($GLOBALS['db'], ENT_QUOTES);
  53. $GLOBALS['PMD_OUT']['TABLE_NAME_SMALL'][$i] = htmlspecialchars($one_table['TABLE_NAME'], ENT_QUOTES);
  54. $GLOBALS['PMD']['TABLE_TYPE'][$i] = strtoupper($one_table['ENGINE']);
  55. $DF = PMA_getDisplayField($GLOBALS['db'], $one_table['TABLE_NAME']);
  56. if ($DF != '') {
  57. $GLOBALS['script_display_field'] .= " display_field['"
  58. . $GLOBALS['PMD_URL']["TABLE_NAME_SMALL"][$i] . "'] = '"
  59. . urlencode($DF) . "';\n";
  60. }
  61. $i++;
  62. }
  63. $GLOBALS['script_display_field'] .=
  64. '// ]]>' . "\n" .
  65. '</script>' . "\n";
  66. // return $GLOBALS['PMD']; // many bases // not use ??????
  67. }
  68. /**
  69. * retrieves table column info
  70. *
  71. * @uses $GLOBALS['db']
  72. * @uses PMA_DBI_QUERY_STORE
  73. * @uses PMA_DBI_select_db()
  74. * @uses PMA_DBI_query()
  75. * @uses PMA_DBI_num_rows()
  76. * @uses PMA_backquote()
  77. * @uses count()
  78. * @return array table column nfo
  79. */
  80. function get_tab_info()
  81. {
  82. PMA_DBI_select_db($GLOBALS['db']);
  83. $tab_column = array();
  84. for ($i = 0; $i < count($GLOBALS['PMD']["TABLE_NAME"]); $i++) {
  85. $fields_rs = PMA_DBI_query('SHOW FULL FIELDS FROM '.PMA_backquote($GLOBALS['PMD']["TABLE_NAME_SMALL"][$i]), NULL, PMA_DBI_QUERY_STORE);
  86. $j = 0;
  87. while ($row = PMA_DBI_fetch_assoc($fields_rs)) {
  88. $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['COLUMN_ID'][$j] = $j;
  89. $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['COLUMN_NAME'][$j] = $row['Field'];
  90. $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['TYPE'][$j] = $row['Type'];
  91. $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['NULLABLE'][$j] = $row['Null'];
  92. $j++;
  93. }
  94. }
  95. return $tab_column;
  96. }
  97. /**
  98. * returns JavaScript code for intializing vars
  99. *
  100. * @uses $GLOBALS['db']
  101. * @uses PMA_DBI_QUERY_STORE
  102. * @uses PMA_DBI_select_db()
  103. * @uses PMA_DBI_query()
  104. * @uses PMA_backquote()
  105. * @uses PMA_DBI_fetch_row()
  106. * @uses PMA_getForeigners()
  107. * @uses urlencode()
  108. * @uses count()
  109. * @uses in_array()
  110. * @return string JavaScript code
  111. */
  112. function get_script_contr()
  113. {
  114. PMA_DBI_select_db($GLOBALS['db']);
  115. $con["C_NAME"] = array();
  116. $i = 0;
  117. $alltab_rs = PMA_DBI_query('SHOW TABLES FROM ' . PMA_backquote($GLOBALS['db']), NULL, PMA_DBI_QUERY_STORE);
  118. while ($val = @PMA_DBI_fetch_row($alltab_rs)) {
  119. $row = PMA_getForeigners($GLOBALS['db'], $val[0], '', 'internal');
  120. //echo "<br> internal ".$GLOBALS['db']." - ".$val[0]." - ";
  121. //print_r($row);
  122. if ($row !== false) {
  123. foreach ($row as $field => $value) {
  124. $con['C_NAME'][$i] = '';
  125. $con['DTN'][$i] = urlencode($GLOBALS['db'] . "." . $val[0]);
  126. $con['DCN'][$i] = urlencode($field);
  127. $con['STN'][$i] = urlencode($value['foreign_db'] . "." . $value['foreign_table']);
  128. $con['SCN'][$i] = urlencode($value['foreign_field']);
  129. $i++;
  130. }
  131. }
  132. $row = PMA_getForeigners($GLOBALS['db'], $val[0], '', 'foreign');
  133. //echo "<br> INNO ";
  134. //print_r($row);
  135. if ($row !== false) {
  136. foreach ($row as $field => $value) {
  137. $con['C_NAME'][$i] = '';
  138. $con['DTN'][$i] = urlencode($GLOBALS['db'].".".$val[0]);
  139. $con['DCN'][$i] = urlencode($field);
  140. $con['STN'][$i] = urlencode($value['foreign_db'].".".$value['foreign_table']);
  141. $con['SCN'][$i] = urlencode($value['foreign_field']);
  142. $i++;
  143. }
  144. }
  145. }
  146. $ti = 0;
  147. $script_contr =
  148. '<script type="text/javascript">' . "\n" .
  149. '// <![CDATA[' . "\n" .
  150. 'var contr = new Array();' . "\n";
  151. for ($i = 0; $i < count($con["C_NAME"]); $i++) {
  152. $js_var = ' contr[' . $ti . ']';
  153. $script_contr .= $js_var . " = new Array();\n";
  154. $js_var .= "['" . $con['C_NAME'][$i] . "']";
  155. $script_contr .= $js_var . " = new Array();\n";
  156. if (in_array($con['DTN'][$i], $GLOBALS['PMD_URL']["TABLE_NAME"])
  157. && in_array($con['STN'][$i], $GLOBALS['PMD_URL']["TABLE_NAME"])) {
  158. $js_var .= "['" . $con['DTN'][$i] . "']";
  159. $script_contr .= $js_var . " = new Array();\n";
  160. $m_col = array();//}
  161. $js_var .= "['" . $con['DCN'][$i] . "']";
  162. $script_contr .= $js_var . " = new Array();\n";//}
  163. $script_contr .= $js_var . "[0] = '" . $con['STN'][$i] . "';\n"; //
  164. $script_contr .= $js_var . "[1] = '" . $con['SCN'][$i] . "';\n"; //
  165. }
  166. $ti++;
  167. }
  168. $script_contr .=
  169. '// ]]>' . "\n" .
  170. '</script>' . "\n";
  171. return $script_contr;
  172. }
  173. /**
  174. * @uses get_all_keys()
  175. * @return array unique or primary indizes
  176. */
  177. function get_pk_or_unique_keys()
  178. {
  179. return get_all_keys(true);
  180. }
  181. /**
  182. * returns all indizes
  183. *
  184. * @uses $GLOBALS['PMD']
  185. * @uses PMA_Index::getFromTable()
  186. * @uses PMA_Index->isUnique()
  187. * @uses PMA_Index->getColumns()
  188. * @param boolean whether to include ony unique ones
  189. * @return array indizes
  190. */
  191. function get_all_keys($unique_only = false)
  192. {
  193. require_once './libraries/Index.class.php';
  194. $keys = array();
  195. foreach ($GLOBALS['PMD']['TABLE_NAME_SMALL'] as $I => $table) {
  196. $schema = $GLOBALS['PMD']['OWNER'][$I];
  197. // for now, take into account only the first index segment
  198. foreach (PMA_Index::getFromTable($table, $schema) as $index) {
  199. if ($unique_only && ! $index->isUnique()) {
  200. continue;
  201. }
  202. $columns = $index->getColumns();
  203. foreach ($columns as $column_name => $dummy) {
  204. $keys[$schema . '.' .$table . '.' . $column_name] = 1;
  205. }
  206. }
  207. }
  208. return $keys;
  209. }
  210. /**
  211. *
  212. *
  213. * @uses $GLOBALS['PMD']
  214. * @uses count()
  215. * @uses in_array()
  216. * @return array ???
  217. */
  218. function get_script_tabs()
  219. {
  220. $script_tabs =
  221. '<script type="text/javascript">' . "\n" .
  222. '// <![CDATA[' . "\n" .
  223. 'var j_tabs = new Array();' . "\n";
  224. for ($i = 0; $i < count($GLOBALS['PMD']['TABLE_NAME']); $i++) {
  225. $script_tabs .= "j_tabs['" . $GLOBALS['PMD_URL']['TABLE_NAME'][$i] . "'] = '"
  226. . (PMA_foreignkey_supported($GLOBALS['PMD']['TABLE_TYPE'][$i]) ? '1' : '0') . "';\n";
  227. }
  228. $script_tabs .=
  229. '// ]]>' . "\n" .
  230. '</script>' . "\n";
  231. return $script_tabs;
  232. }
  233. /**
  234. * @uses $GLOBALS['controllink']
  235. * @uses $cfgRelation['designerwork']
  236. * @uses $cfgRelation['db']
  237. * @uses $cfgRelation['designer_coords']
  238. * @uses PMA_DBI_QUERY_STORE
  239. * @uses PMA_getRelationsParam()
  240. * @uses PMA_backquote()
  241. * @uses PMA_DBI_fetch_result()
  242. * @uses count()
  243. * @return array table positions and sizes
  244. */
  245. function get_tab_pos()
  246. {
  247. $cfgRelation = PMA_getRelationsParam();
  248. if (! $cfgRelation['designerwork']) {
  249. return null;
  250. }
  251. $query = "
  252. SELECT CONCAT_WS('.', `db_name`, `table_name`) AS `name`,
  253. `x` AS `X`,
  254. `y` AS `Y`,
  255. `v` AS `V`,
  256. `h` AS `H`
  257. FROM " . PMA_backquote($cfgRelation['db']) . "." . PMA_backquote($cfgRelation['designer_coords']);
  258. $tab_pos = PMA_DBI_fetch_result($query, 'name', null, $GLOBALS['controllink'], PMA_DBI_QUERY_STORE);
  259. return count($tab_pos) ? $tab_pos : null;
  260. }
  261. /**
  262. * returns distinct values from $GLOBALS['PMD']['OWNER']
  263. *
  264. * @uses array_values()
  265. * @uses array_unique()
  266. * @uses $GLOBALS['PMD']['OWNER']
  267. * @return array owner
  268. */
  269. function get_owners()
  270. {
  271. return array_values(array_unique($GLOBALS['PMD']['OWNER']));
  272. }
  273. get_tabs();
  274. ?>