Translated using Weblate (Czech)
[phpmyadmin.git] / db_designer.php
blobded0e0b6ca4105e3d1fe1f8faa1c89d9ca46c58b
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
4 * phpMyAdmin designer general code
6 * @package PhpMyAdmin-Designer
7 */
8 use PhpMyAdmin\Database\Designer;
9 use PhpMyAdmin\Database\Designer\Common;
10 use PhpMyAdmin\Response;
12 require_once 'libraries/common.inc.php';
14 $response = Response::getInstance();
16 $databaseDesigner = new Designer();
17 $designerCommon = new Common();
19 if (isset($_POST['dialog'])) {
21 if ($_POST['dialog'] == 'edit') {
22 $html = $databaseDesigner->getHtmlForEditOrDeletePages($_POST['db'], 'editPage');
23 } elseif ($_POST['dialog'] == 'delete') {
24 $html = $databaseDesigner->getHtmlForEditOrDeletePages($_POST['db'], 'deletePage');
25 } elseif ($_POST['dialog'] == 'save_as') {
26 $html = $databaseDesigner->getHtmlForPageSaveAs($_POST['db']);
27 } elseif ($_POST['dialog'] == 'export') {
28 $html = $databaseDesigner->getHtmlForSchemaExport(
29 $_POST['db'], $_POST['selected_page']
31 } elseif ($_POST['dialog'] == 'add_table') {
32 // Pass the db and table to the getTablesInfo so we only have the table we asked for
33 $script_display_field = $designerCommon->getTablesInfo($_POST['db'], $_POST['table']);
34 $tab_column = $designerCommon->getColumnsInfo($script_display_field);
35 $tables_all_keys = $designerCommon->getAllKeys($script_display_field);
36 $tables_pk_or_unique_keys = $designerCommon->getPkOrUniqueKeys($script_display_field);
38 $html = $databaseDesigner->getDatabaseTables(
39 $_POST['db'],
40 $script_display_field,
41 array(), -1, $tab_column,
42 $tables_all_keys, $tables_pk_or_unique_keys
46 if (! empty($html)) {
47 $response->addHTML($html);
49 return;
52 if (isset($_POST['operation'])) {
54 if ($_POST['operation'] == 'deletePage') {
55 $success = $designerCommon->deletePage($_POST['selected_page']);
56 $response->setRequestStatus($success);
57 } elseif ($_POST['operation'] == 'savePage') {
58 if ($_POST['save_page'] == 'same') {
59 $page = $_POST['selected_page'];
60 } else { // new
61 $page = $designerCommon->createNewPage($_POST['selected_value'], $_POST['db']);
62 $response->addJSON('id', $page);
64 $success = $designerCommon->saveTablePositions($page);
65 $response->setRequestStatus($success);
66 } elseif ($_POST['operation'] == 'setDisplayField') {
67 list(
68 $success,
69 $message,
70 ) = $designerCommon->saveDisplayField(
71 $_POST['db'],
72 $_POST['table'],
73 $_POST['field']
75 $response->setRequestStatus($success);
76 $response->addJSON('message', $message);
77 } elseif ($_POST['operation'] == 'addNewRelation') {
78 list($success, $message) = $designerCommon->addNewRelation(
79 $_POST['db'],
80 $_POST['T1'],
81 $_POST['F1'],
82 $_POST['T2'],
83 $_POST['F2'],
84 $_POST['on_delete'],
85 $_POST['on_update'],
86 $_POST['DB1'],
87 $_POST['DB2']
89 $response->setRequestStatus($success);
90 $response->addJSON('message', $message);
91 } elseif ($_POST['operation'] == 'removeRelation') {
92 list($success, $message) = $designerCommon->removeRelation(
93 $_POST['T1'],
94 $_POST['F1'],
95 $_POST['T2'],
96 $_POST['F2']
98 $response->setRequestStatus($success);
99 $response->addJSON('message', $message);
100 } elseif ($_POST['operation'] == 'save_setting_value') {
101 $success = $designerCommon->saveSetting($_POST['index'], $_POST['value']);
102 $response->setRequestStatus($success);
105 return;
108 require 'libraries/db_common.inc.php';
110 $script_display_field = $designerCommon->getTablesInfo();
112 $display_page = -1;
113 $selected_page = null;
115 if (isset($_GET['query'])) {
116 $display_page = $designerCommon->getDefaultPage($_GET['db']);
117 } else {
118 if (! empty($_GET['page'])) {
119 $display_page = $_GET['page'];
120 } else {
121 $display_page = $designerCommon->getLoadingPage($_GET['db']);
124 if ($display_page != -1) {
125 $selected_page = $designerCommon->getPageName($display_page);
127 $tab_pos = $designerCommon->getTablePositions($display_page);
129 $fullTableNames = [];
131 foreach($script_display_field as $designerTable) {
132 $fullTableNames[] = $designerTable->getDbTableString();
135 foreach($tab_pos as $position) {
136 if (! in_array($position['dbName'] . '.' . $position['tableName'], $fullTableNames)) {
137 foreach($designerCommon->getTablesInfo($position['dbName'], $position['tableName']) as $designerTable) {
138 $script_display_field[] = $designerTable;
144 $tab_column = $designerCommon->getColumnsInfo($script_display_field);
145 $script_tables = $designerCommon->getScriptTabs($script_display_field);
146 $tables_pk_or_unique_keys = $designerCommon->getPkOrUniqueKeys($script_display_field);
147 $tables_all_keys = $designerCommon->getAllKeys($script_display_field);
148 $classes_side_menu = $databaseDesigner->returnClassNamesFromMenuButtons();
151 $script_contr = $designerCommon->getScriptContr($script_display_field);
153 $params = array('lang' => $GLOBALS['lang']);
154 if (isset($_GET['db'])) {
155 $params['db'] = $_GET['db'];
158 $response = Response::getInstance();
159 $response->getFooter()->setMinimal();
160 $header = $response->getHeader();
161 $header->setBodyId('designer_body');
163 $scripts = $header->getScripts();
164 $scripts->addFile('vendor/jquery/jquery.fullscreen.js');
165 $scripts->addFile('designer/database.js');
166 $scripts->addFile('designer/objects.js');
167 $scripts->addFile('designer/page.js');
168 $scripts->addFile('designer/history.js');
169 $scripts->addFile('designer/move.js');
170 $scripts->addFile('designer/init.js');
172 list(
173 $tables,
174 $num_tables,
175 $total_num_tables,
176 $sub_part,
177 $is_show_stats,
178 $db_is_system_schema,
179 $tooltip_truename,
180 $tooltip_aliasname,
181 $pos
182 ) = PhpMyAdmin\Util::getDbInfo($db, isset($sub_part) ? $sub_part : '');
184 // Embed some data into HTML, later it will be read
185 // by designer/init.js and converted to JS variables.
186 $response->addHTML(
187 $databaseDesigner->getHtmlForJsFields(
188 $script_tables, $script_contr, $script_display_field, $display_page
191 $response->addHTML(
192 $databaseDesigner->getPageMenu(
193 isset($_GET['query']),
194 $selected_page,
195 $classes_side_menu
201 $response->addHTML('<div id="canvas_outer">');
202 $response->addHTML(
203 '<form action="" id="container-form" method="post">'
206 $response->addHTML($databaseDesigner->getHtmlCanvas());
207 $response->addHTML($databaseDesigner->getHtmlTableList());
209 $response->addHTML(
210 $databaseDesigner->getDatabaseTables(
211 $_GET['db'],
212 $script_display_field,
213 $tab_pos, $display_page, $tab_column,
214 $tables_all_keys, $tables_pk_or_unique_keys
217 $response->addHTML('</form>');
218 $response->addHTML('</div>'); // end canvas_outer
220 $response->addHTML('<div id="designer_hint"></div>');
222 $response->addHTML($databaseDesigner->getNewRelationPanel());
223 $response->addHTML($databaseDesigner->getDeleteRelationPanel());
225 if (isset($_GET['query'])) {
226 $response->addHTML($databaseDesigner->getOptionsPanel());
227 $response->addHTML($databaseDesigner->getRenameToPanel());
228 $response->addHTML($databaseDesigner->getHavingQueryPanel());
229 $response->addHTML($databaseDesigner->getAggregateQueryPanel());
230 $response->addHTML($databaseDesigner->getWhereQueryPanel());
231 $response->addHTML($databaseDesigner->getQueryDetails($_GET['db']));
234 $response->addHTML('<div id="PMA_disable_floating_menubar"></div>');