db_designer.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <?php
  2. /* vim: set expandtab sw=4 ts=4 sts=4: */
  3. /**
  4. * phpMyAdmin designer general code
  5. *
  6. * @package PhpMyAdmin-Designer
  7. */
  8. require_once 'libraries/common.inc.php';
  9. require_once 'libraries/pmd_common.php';
  10. require_once 'libraries/db_designer.lib.php';
  11. $response = PMA_Response::getInstance();
  12. if (isset($_REQUEST['dialog'])) {
  13. if ($_REQUEST['dialog'] == 'edit') {
  14. $html = PMA_getHtmlForEditOrDeletePages($GLOBALS['db'], 'editPage');
  15. } else if ($_REQUEST['dialog'] == 'delete') {
  16. $html = PMA_getHtmlForEditOrDeletePages($GLOBALS['db'], 'deletePage');
  17. } else if ($_REQUEST['dialog'] == 'save_as') {
  18. $html = PMA_getHtmlForPageSaveAs($GLOBALS['db']);
  19. } else if ($_REQUEST['dialog'] == 'export') {
  20. include_once 'libraries/plugin_interface.lib.php';
  21. $html = PMA_getHtmlForSchemaExport(
  22. $GLOBALS['db'], $_REQUEST['selected_page']
  23. );
  24. }
  25. if (! empty($html)) {
  26. $response->addHTML($html);
  27. }
  28. return;
  29. }
  30. if (isset($_REQUEST['operation'])) {
  31. if ($_REQUEST['operation'] == 'deletePage') {
  32. $success = PMA_deletePage($_REQUEST['selected_page']);
  33. $response->isSuccess($success);
  34. } elseif ($_REQUEST['operation'] == 'savePage') {
  35. if ($_REQUEST['save_page'] == 'same') {
  36. $page = $_REQUEST['selected_page'];
  37. } else { // new
  38. $page = PMA_createNewPage($_REQUEST['selected_value'], $GLOBALS['db']);
  39. $response->addJSON('id', $page);
  40. }
  41. $success = PMA_saveTablePositions($page);
  42. $response->isSuccess($success);
  43. } elseif ($_REQUEST['operation'] == 'setDisplayField') {
  44. PMA_saveDisplayField(
  45. $_REQUEST['db'], $_REQUEST['table'], $_REQUEST['field']
  46. );
  47. $response->isSuccess(true);
  48. } elseif ($_REQUEST['operation'] == 'addNewRelation') {
  49. list($success, $message) = PMA_addNewRelation(
  50. $_REQUEST['db'],
  51. $_REQUEST['T1'],
  52. $_REQUEST['F1'],
  53. $_REQUEST['T2'],
  54. $_REQUEST['F2'],
  55. $_REQUEST['on_delete'],
  56. $_REQUEST['on_update']
  57. );
  58. $response->isSuccess($success);
  59. $response->addJSON('message', $message);
  60. } elseif ($_REQUEST['operation'] == 'removeRelation') {
  61. list($success, $message) = PMA_removeRelation(
  62. $_REQUEST['T1'],
  63. $_REQUEST['F1'],
  64. $_REQUEST['T2'],
  65. $_REQUEST['F2']
  66. );
  67. $response->isSuccess($success);
  68. $response->addJSON('message', $message);
  69. } elseif ($_REQUEST['operation'] == 'save_setting_value') {
  70. $success = PMA_saveDesignerSetting($_REQUEST['index'], $_REQUEST['value']);
  71. $response->isSuccess($success);
  72. }
  73. return;
  74. }
  75. require 'libraries/db_common.inc.php';
  76. $script_display_field = PMA_getTablesInfo();
  77. $tab_column = PMA_getColumnsInfo();
  78. $script_tables = PMA_getScriptTabs();
  79. $tables_pk_or_unique_keys = PMA_getPKOrUniqueKeys();
  80. $tables_all_keys = PMA_getAllKeys();
  81. $classes_side_menu = PMA_returnClassNamesFromMenuButtons();
  82. $display_page = -1;
  83. $selected_page = null;
  84. if (isset($_REQUEST['query'])) {
  85. $display_page = PMA_getDefaultPage($_REQUEST['db']);
  86. } else {
  87. if (! empty($_REQUEST['page'])) {
  88. $display_page = $_REQUEST['page'];
  89. } else {
  90. $display_page = PMA_getLoadingPage($_REQUEST['db']);
  91. }
  92. }
  93. if ($display_page != -1) {
  94. $selected_page = PMA_getPageName($display_page);
  95. }
  96. $tab_pos = PMA_getTablePositions($display_page);
  97. $script_contr = PMA_getScriptContr();
  98. $params = array('lang' => $GLOBALS['lang']);
  99. if (isset($_GET['db'])) {
  100. $params['db'] = $_GET['db'];
  101. }
  102. $response = PMA_Response::getInstance();
  103. $response->getFooter()->setMinimal();
  104. $header = $response->getHeader();
  105. $header->setBodyId('pmd_body');
  106. $scripts = $header->getScripts();
  107. $scripts->addFile('jquery/jquery.fullscreen.js');
  108. $scripts->addFile('pmd/designer_db.js');
  109. $scripts->addFile('pmd/designer_objects.js');
  110. $scripts->addFile('pmd/designer_page.js');
  111. $scripts->addFile('pmd/history.js');
  112. $scripts->addFile('pmd/move.js');
  113. $scripts->addFile('pmd/iecanvas.js', true);
  114. $scripts->addFile('pmd/init.js');
  115. list(
  116. $tables,
  117. $num_tables,
  118. $total_num_tables,
  119. $sub_part,
  120. $is_show_stats,
  121. $db_is_system_schema,
  122. $tooltip_truename,
  123. $tooltip_aliasname,
  124. $pos
  125. ) = PMA_Util::getDbInfo($db, isset($sub_part) ? $sub_part : '');
  126. // Embed some data into HTML, later it will be read
  127. // by pmd/init.js and converted to JS variables.
  128. $response->addHTML(
  129. PMA_getHtmlForJSFields(
  130. $script_tables, $script_contr, $script_display_field, $display_page
  131. )
  132. );
  133. $response->addHTML(
  134. PMA_getDesignerPageMenu(isset($_REQUEST['query']), $selected_page, $classes_side_menu)
  135. );
  136. $response->addHTML('<div id="canvas_outer">');
  137. $response->addHTML(
  138. '<form action="" id="container-form" method="post" name="form1">'
  139. );
  140. $response->addHTML(PMA_getHTMLCanvas());
  141. $response->addHTML(PMA_getHTMLTableList($tab_pos, $display_page));
  142. $response->addHTML(
  143. PMA_getDatabaseTables(
  144. $tab_pos, $display_page, $tab_column,
  145. $tables_all_keys, $tables_pk_or_unique_keys
  146. )
  147. );
  148. $response->addHTML('</form>');
  149. $response->addHTML('</div>'); // end canvas_outer
  150. $response->addHTML('<div id="pmd_hint"></div>');
  151. $response->addHTML(PMA_getNewRelationPanel());
  152. $response->addHTML(PMA_getDeleteRelationPanel());
  153. if (isset($_REQUEST['query'])) {
  154. $response->addHTML(PMA_getOptionsPanel());
  155. $response->addHTML(PMA_getRenameToPanel());
  156. $response->addHTML(PMA_getHavingQueryPanel());
  157. $response->addHTML(PMA_getAggregateQueryPanel());
  158. $response->addHTML(PMA_getWhereQueryPanel());
  159. $response->addHTML(PMA_getQueryDetails());
  160. }
  161. $response->addHTML('<div id="PMA_disable_floating_menubar"></div>');