PageRenderTime 41ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/sitemanager/phpmyadmin/libraries/pmd_common.php

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