2 use PMA\libraries\DatabaseInterface;
3 use PMA\libraries\Table;
4 use PMA\libraries\Util;
6 use PMA\libraries\Sanitize;
10 if (isset($one_key['constraint'])) {
11 $drop_fk_query = 'ALTER TABLE ' . PMA\libraries\Util::backquote($GLOBALS['table'])
12 . ' DROP FOREIGN KEY '
13 . PMA\libraries\Util::backquote($one_key['constraint']) . ';';
14 $this_params = $GLOBALS['url_params'];
15 $this_params['goto'] = 'tbl_relation.php';
16 $this_params['back'] = 'tbl_relation.php';
17 $this_params['sql_query'] = $drop_fk_query;
18 $this_params['message_to_show'] = sprintf(
19 __('Foreign key constraint %s has been dropped'),
20 $one_key['constraint']
22 $js_msg = Sanitize::jsFormat(
23 'ALTER TABLE ' . $GLOBALS['table']
24 . ' DROP FOREIGN KEY '
25 . $one_key['constraint'] . ';'
29 // For ON DELETE and ON UPDATE, the default action
30 // is RESTRICT as per MySQL doc; however, a SHOW CREATE TABLE
31 // won't display the clause if it's set as RESTRICT.
32 $on_delete = isset($one_key['on_delete'])
33 ? $one_key['on_delete'] : 'RESTRICT';
34 $on_update = isset($one_key['on_update'])
35 ? $one_key['on_update'] : 'RESTRICT';
37 $column_array = array();
38 $column_array[''] = '';
39 foreach ($columns as $column) {
40 if (strtoupper($tbl_storage_engine) == 'INNODB'
41 || ! empty($column['Key'])
43 $column_array[$column['Field']] = $column['Field'];
46 if ($GLOBALS['cfg']['NaturalOrder']) {
47 uksort($column_array, 'strnatcasecmp');
50 $foreign_table = false;
51 // foreign database dropdown
52 $foreign_db = (isset($one_key['ref_db_name'])) ? $one_key['ref_db_name'] : $db;
56 $foreign_table = isset($one_key['ref_table_name'])
57 ? $one_key['ref_table_name'] : false;
59 $tables_rs = $GLOBALS['dbi']->query(
60 'SHOW TABLE STATUS FROM ' . Util::backquote($foreign_db),
62 DatabaseInterface::QUERY_STORE
64 while ($row = $GLOBALS['dbi']->fetchRow($tables_rs)) {
66 && mb_strtoupper($row[1]) == $tbl_storage_engine
71 if ($GLOBALS['cfg']['NaturalOrder']) {
72 usort($tables, 'strnatcasecmp');
77 <!-- Drop key anchor -->
79 <?php if (isset($one_key['constraint'])): ?>
81 class="drop_foreign_key_msg"
82 value="<?= $js_msg; ?>" />
83 <a class="drop_foreign_key_anchor ajax"
84 href="sql.php<?= URL::getCommon($this_params); ?>" >
85 <?= PMA\libraries\Util::getIcon('b_drop.png', __('Drop')); ?>
90 <span class="formelement clearfloat">
91 <input type="text" name="constraint_name[<?= $i; ?>]"
92 value="<?= (isset($one_key['constraint'])) ?
93 htmlspecialchars($one_key['constraint'])
96 placeholder="<?= __('Constraint name'); ?>"
99 <div class="floatleft">
100 <span class="formelement">
101 <?= PMA\libraries\Template::get('table/relation/dropdown_generate')->render(
103 'dropdown_question' => 'ON DELETE',
104 'select_name' => 'on_delete[' . $i . ']',
105 'choices' => $options_array,
106 'selected_value' => $on_delete
110 <span class="formelement">
111 <?= PMA\libraries\Template::get('table/relation/dropdown_generate')->render(
113 'dropdown_question' => 'ON UPDATE',
114 'select_name' => 'on_update[' . $i . ']',
115 'choices' => $options_array,
116 'selected_value' => $on_update
123 <?php if (isset($one_key['index_list'])): ?>
124 <?php foreach ($one_key['index_list'] as $key => $column): ?>
125 <span class="formelement clearfloat">
126 <?= PMA\libraries\Template::get('table/relation/dropdown_generate')->render(
128 'dropdown_question' => '',
129 'select_name' => 'foreign_key_fields_name[' . $i . '][]',
130 'choices' => $column_array,
131 'selected_value' => $column
137 <span class="formelement clearfloat">
138 <?= PMA\libraries\Template::get('table/relation/dropdown_generate')->render(
140 'dropdown_question' => '',
141 'select_name' => 'foreign_key_fields_name[' . $i . '][]',
142 'choices' => $column_array,
143 'selected_value' => ''
148 <a class="formelement clearfloat add_foreign_key_field"
150 data-index="<?= $i; ?>">
151 <?= __('+ Add column'); ?>
155 <span class="formelement clearfloat">
156 <?= PMA\libraries\Template::get('table/relation/relational_dropdown')->render(
158 'name' => 'destination_foreign_db[' . $i . ']',
159 'title' => __('Database'),
160 'values' => $GLOBALS['dblist']->databases,
161 'foreign' => $foreign_db
166 <span class="formelement clearfloat">
167 <?= PMA\libraries\Template::get('table/relation/relational_dropdown')->render(
169 'name' => 'destination_foreign_table[' . $i . ']',
170 'title' => __('Table'),
172 'foreign' => $foreign_table
178 <?php if ($foreign_db && $foreign_table): ?>
179 <?php foreach ($one_key['ref_index_list'] as $foreign_column): ?>
181 $table_obj = new Table($foreign_table, $foreign_db);
182 $columns = $table_obj->getUniqueColumns(false, false);
184 <span class="formelement clearfloat">
185 <?= PMA\libraries\Template::get('table/relation/relational_dropdown')->render(
187 'name' => 'destination_foreign_column[' . $i . '][]',
188 'title' => __('Column'),
189 'values' => $columns,
190 'foreign' => $foreign_column
196 <span class="formelement clearfloat">
197 <?= PMA\libraries\Template::get('table/relation/relational_dropdown')->render(
199 'name' => 'destination_foreign_column[' . $i . '][]',
200 'title' => __('Column'),