| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 | 
							- <?php
 
- /* vim: set expandtab sw=4 ts=4 sts=4: */
 
- /**
 
-  * phpMyAdmin designer general code
 
-  *
 
-  * @package PhpMyAdmin-Designer
 
-  */
 
- use PhpMyAdmin\Database\Designer;
 
- use PhpMyAdmin\Database\Designer\Common;
 
- use PhpMyAdmin\Response;
 
- require_once 'libraries/common.inc.php';
 
- $response = Response::getInstance();
 
- $databaseDesigner = new Designer();
 
- $designerCommon = new Common();
 
- if (isset($_POST['dialog'])) {
 
-     if ($_POST['dialog'] == 'edit') {
 
-         $html = $databaseDesigner->getHtmlForEditOrDeletePages($_POST['db'], 'editPage');
 
-     } elseif ($_POST['dialog'] == 'delete') {
 
-         $html = $databaseDesigner->getHtmlForEditOrDeletePages($_POST['db'], 'deletePage');
 
-     } elseif ($_POST['dialog'] == 'save_as') {
 
-         $html = $databaseDesigner->getHtmlForPageSaveAs($_POST['db']);
 
-     } elseif ($_POST['dialog'] == 'export') {
 
-         $html = $databaseDesigner->getHtmlForSchemaExport(
 
-             $_POST['db'], $_POST['selected_page']
 
-         );
 
-     } elseif ($_POST['dialog'] == 'add_table') {
 
-         // Pass the db and table to the getTablesInfo so we only have the table we asked for
 
-         $script_display_field = $designerCommon->getTablesInfo($_POST['db'], $_POST['table']);
 
-         $tab_column = $designerCommon->getColumnsInfo($script_display_field);
 
-         $tables_all_keys = $designerCommon->getAllKeys($script_display_field);
 
-         $tables_pk_or_unique_keys = $designerCommon->getPkOrUniqueKeys($script_display_field);
 
-         $html = $databaseDesigner->getDatabaseTables(
 
-             $_POST['db'],
 
-             $script_display_field,
 
-             array(), -1, $tab_column,
 
-             $tables_all_keys, $tables_pk_or_unique_keys
 
-         );
 
-     }
 
-     if (! empty($html)) {
 
-         $response->addHTML($html);
 
-     }
 
-     return;
 
- }
 
- if (isset($_POST['operation'])) {
 
-     if ($_POST['operation'] == 'deletePage') {
 
-         $success = $designerCommon->deletePage($_POST['selected_page']);
 
-         $response->setRequestStatus($success);
 
-     } elseif ($_POST['operation'] == 'savePage') {
 
-         if ($_POST['save_page'] == 'same') {
 
-             $page = $_POST['selected_page'];
 
-         } else { // new
 
-             $page = $designerCommon->createNewPage($_POST['selected_value'], $_POST['db']);
 
-             $response->addJSON('id', $page);
 
-         }
 
-         $success = $designerCommon->saveTablePositions($page);
 
-         $response->setRequestStatus($success);
 
-     } elseif ($_POST['operation'] == 'setDisplayField') {
 
-         list(
 
-             $success,
 
-             $message,
 
-         ) = $designerCommon->saveDisplayField(
 
-             $_POST['db'],
 
-             $_POST['table'],
 
-             $_POST['field']
 
-         );
 
-         $response->setRequestStatus($success);
 
-         $response->addJSON('message', $message);
 
-     } elseif ($_POST['operation'] == 'addNewRelation') {
 
-         list($success, $message) = $designerCommon->addNewRelation(
 
-             $_POST['db'],
 
-             $_POST['T1'],
 
-             $_POST['F1'],
 
-             $_POST['T2'],
 
-             $_POST['F2'],
 
-             $_POST['on_delete'],
 
-             $_POST['on_update'],
 
-             $_POST['DB1'],
 
-             $_POST['DB2']
 
-         );
 
-         $response->setRequestStatus($success);
 
-         $response->addJSON('message', $message);
 
-     } elseif ($_POST['operation'] == 'removeRelation') {
 
-         list($success, $message) = $designerCommon->removeRelation(
 
-             $_POST['T1'],
 
-             $_POST['F1'],
 
-             $_POST['T2'],
 
-             $_POST['F2']
 
-         );
 
-         $response->setRequestStatus($success);
 
-         $response->addJSON('message', $message);
 
-     } elseif ($_POST['operation'] == 'save_setting_value') {
 
-         $success = $designerCommon->saveSetting($_POST['index'], $_POST['value']);
 
-         $response->setRequestStatus($success);
 
-     }
 
-     return;
 
- }
 
- require 'libraries/db_common.inc.php';
 
- $script_display_field = $designerCommon->getTablesInfo();
 
- $display_page = -1;
 
- $selected_page = null;
 
- if (isset($_GET['query'])) {
 
-     $display_page = $designerCommon->getDefaultPage($_GET['db']);
 
- } else {
 
-     if (! empty($_GET['page'])) {
 
-         $display_page = $_GET['page'];
 
-     } else {
 
-         $display_page = $designerCommon->getLoadingPage($_GET['db']);
 
-     }
 
- }
 
- if ($display_page != -1) {
 
-     $selected_page = $designerCommon->getPageName($display_page);
 
- }
 
- $tab_pos = $designerCommon->getTablePositions($display_page);
 
- $fullTableNames = [];
 
- foreach($script_display_field as $designerTable) {
 
-     $fullTableNames[] = $designerTable->getDbTableString();
 
- }
 
- foreach($tab_pos as $position) {
 
-     if (! in_array($position['dbName'] . '.' . $position['tableName'], $fullTableNames)) {
 
-         foreach($designerCommon->getTablesInfo($position['dbName'], $position['tableName']) as $designerTable) {
 
-             $script_display_field[] = $designerTable;
 
-         }
 
-     }
 
- }
 
- $tab_column = $designerCommon->getColumnsInfo($script_display_field);
 
- $script_tables = $designerCommon->getScriptTabs($script_display_field);
 
- $tables_pk_or_unique_keys = $designerCommon->getPkOrUniqueKeys($script_display_field);
 
- $tables_all_keys = $designerCommon->getAllKeys($script_display_field);
 
- $classes_side_menu = $databaseDesigner->returnClassNamesFromMenuButtons();
 
- $script_contr = $designerCommon->getScriptContr($script_display_field);
 
- $params = array('lang' => $GLOBALS['lang']);
 
- if (isset($_GET['db'])) {
 
-     $params['db'] = $_GET['db'];
 
- }
 
- $response = Response::getInstance();
 
- $response->getFooter()->setMinimal();
 
- $header   = $response->getHeader();
 
- $header->setBodyId('designer_body');
 
- $scripts  = $header->getScripts();
 
- $scripts->addFile('vendor/jquery/jquery.fullscreen.js');
 
- $scripts->addFile('designer/database.js');
 
- $scripts->addFile('designer/objects.js');
 
- $scripts->addFile('designer/page.js');
 
- $scripts->addFile('designer/history.js');
 
- $scripts->addFile('designer/move.js');
 
- $scripts->addFile('designer/init.js');
 
- list(
 
-     $tables,
 
-     $num_tables,
 
-     $total_num_tables,
 
-     $sub_part,
 
-     $is_show_stats,
 
-     $db_is_system_schema,
 
-     $tooltip_truename,
 
-     $tooltip_aliasname,
 
-     $pos
 
- ) = PhpMyAdmin\Util::getDbInfo($db, isset($sub_part) ? $sub_part : '');
 
- // Embed some data into HTML, later it will be read
 
- // by designer/init.js and converted to JS variables.
 
- $response->addHTML(
 
-     $databaseDesigner->getHtmlForJsFields(
 
-         $script_tables, $script_contr, $script_display_field, $display_page
 
-     )
 
- );
 
- $response->addHTML(
 
-     $databaseDesigner->getPageMenu(
 
-         isset($_GET['query']),
 
-         $selected_page,
 
-         $classes_side_menu
 
-     )
 
- );
 
- $response->addHTML('<div id="canvas_outer">');
 
- $response->addHTML(
 
-     '<form action="" id="container-form" method="post">'
 
- );
 
- $response->addHTML($databaseDesigner->getHtmlCanvas());
 
- $response->addHTML($databaseDesigner->getHtmlTableList());
 
- $response->addHTML(
 
-     $databaseDesigner->getDatabaseTables(
 
-         $_GET['db'],
 
-         $script_display_field,
 
-         $tab_pos, $display_page, $tab_column,
 
-         $tables_all_keys, $tables_pk_or_unique_keys
 
-     )
 
- );
 
- $response->addHTML('</form>');
 
- $response->addHTML('</div>'); // end canvas_outer
 
- $response->addHTML('<div id="designer_hint"></div>');
 
- $response->addHTML($databaseDesigner->getNewRelationPanel());
 
- $response->addHTML($databaseDesigner->getDeleteRelationPanel());
 
- if (isset($_GET['query'])) {
 
-     $response->addHTML($databaseDesigner->getOptionsPanel());
 
-     $response->addHTML($databaseDesigner->getRenameToPanel());
 
-     $response->addHTML($databaseDesigner->getHavingQueryPanel());
 
-     $response->addHTML($databaseDesigner->getAggregateQueryPanel());
 
-     $response->addHTML($databaseDesigner->getWhereQueryPanel());
 
-     $response->addHTML($databaseDesigner->getQueryDetails($_GET['db']));
 
- }
 
- $response->addHTML('<div id="PMA_disable_floating_menubar"></div>');
 
 
  |