Use usort() instead of natsort()
[phpmyadmin.git] / templates / table / relation / foreign_key_row.phtml
blobea7fac9e7c0a332a636b8f242fe84c3b28807624
1 <?php
2 use PMA\libraries\DatabaseInterface;
3 use PMA\libraries\Table;
4 use PMA\libraries\Util;
5 use PMA\libraries\URL;
6 use PMA\libraries\Sanitize;
8 $js_msg = '';
9 $this_params = null;
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']
21     );
22     $js_msg = Sanitize::jsFormat(
23         'ALTER TABLE ' . $GLOBALS['table']
24         . ' DROP FOREIGN KEY '
25         . $one_key['constraint'] . ';'
26     );
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'])
42     ) {
43         $column_array[$column['Field']] = $column['Field'];
44     }
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;
54 $tables = array();
55 if ($foreign_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),
61         null,
62         DatabaseInterface::QUERY_STORE
63     );
64     while ($row = $GLOBALS['dbi']->fetchRow($tables_rs)) {
65         if (isset($row[1])
66             && mb_strtoupper($row[1]) == $tbl_storage_engine
67         ) {
68             $tables[] = $row[0];
69         }
70     }
71     if ($GLOBALS['cfg']['NaturalOrder']) {
72         usort($tables, 'strnatcasecmp');
73     }
76 <tr>
77     <!-- Drop key anchor -->
78     <td>
79         <?php if (isset($one_key['constraint'])): ?>
80             <input type="hidden"
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')); ?>
86             </a>
87         <?php endif; ?>
88     </td>
89     <td>
90         <span class="formelement clearfloat">
91             <input type="text" name="constraint_name[<?= $i; ?>]"
92                    value="<?= (isset($one_key['constraint'])) ?
93                        htmlspecialchars($one_key['constraint'])
94                        : ''
95                        ?>"
96                    placeholder="<?= __('Constraint name'); ?>"
97                    maxlength="64" />
98         </span>
99         <div class="floatleft">
100             <span class="formelement">
101                 <?= PMA\libraries\Template::get('table/relation/dropdown_generate')->render(
102                     array(
103                         'dropdown_question' => 'ON DELETE',
104                         'select_name' => 'on_delete[' . $i . ']',
105                         'choices' => $options_array,
106                         'selected_value' => $on_delete
107                     )
108                 ); ?>
109             </span>
110             <span class="formelement">
111                 <?= PMA\libraries\Template::get('table/relation/dropdown_generate')->render(
112                     array(
113                         'dropdown_question' => 'ON UPDATE',
114                         'select_name' => 'on_update[' . $i . ']',
115                         'choices' => $options_array,
116                         'selected_value' => $on_update
117                     )
118                 ); ?>
119             </span>
120         </div>
121     </td>
122     <td>
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(
127                         array(
128                             'dropdown_question' => '',
129                             'select_name' => 'foreign_key_fields_name[' . $i . '][]',
130                             'choices' => $column_array,
131                             'selected_value' => $column
132                         )
133                     ); ?>
134                 </span>
135             <?php endforeach; ?>
136         <?php else: ?>
137             <span class="formelement clearfloat">
138                 <?= PMA\libraries\Template::get('table/relation/dropdown_generate')->render(
139                     array(
140                         'dropdown_question' => '',
141                         'select_name' => 'foreign_key_fields_name[' . $i . '][]',
142                         'choices' => $column_array,
143                         'selected_value' => ''
144                     )
145                 ); ?>
146             </span>
147         <?php endif; ?>
148         <a class="formelement clearfloat add_foreign_key_field"
149            href=""
150            data-index="<?= $i; ?>">
151             <?= __('+ Add column'); ?>
152         </a>
153     </td>
154     <td>
155         <span class="formelement clearfloat">
156             <?= PMA\libraries\Template::get('table/relation/relational_dropdown')->render(
157                 array(
158                     'name' => 'destination_foreign_db[' . $i . ']',
159                     'title' => __('Database'),
160                     'values' => $GLOBALS['dblist']->databases,
161                     'foreign' => $foreign_db
162                 )
163             ); ?>
164     </td>
165     <td>
166         <span class="formelement clearfloat">
167             <?= PMA\libraries\Template::get('table/relation/relational_dropdown')->render(
168                 array(
169                     'name' => 'destination_foreign_table[' . $i . ']',
170                     'title' => __('Table'),
171                     'values' => $tables,
172                     'foreign' => $foreign_table
173                 )
174             ); ?>
175         </span>
176     </td>
177     <td>
178         <?php if ($foreign_db && $foreign_table): ?>
179             <?php foreach ($one_key['ref_index_list'] as $foreign_column): ?>
180                 <?php
181                 $table_obj = new Table($foreign_table, $foreign_db);
182                 $columns = $table_obj->getUniqueColumns(false, false);
183                 ?>
184                 <span class="formelement clearfloat">
185                     <?= PMA\libraries\Template::get('table/relation/relational_dropdown')->render(
186                         array(
187                             'name' => 'destination_foreign_column[' . $i . '][]',
188                             'title' => __('Column'),
189                             'values' => $columns,
190                             'foreign' => $foreign_column
191                         )
192                     ); ?>
193                 </span>
194             <?php endforeach; ?>
195         <?php else: ?>
196             <span class="formelement clearfloat">
197                 <?= PMA\libraries\Template::get('table/relation/relational_dropdown')->render(
198                     array(
199                         'name' => 'destination_foreign_column[' . $i . '][]',
200                         'title' => __('Column'),
201                         'values' => array(),
202                         'foreign' => ''
203                     )
204                 ); ?>
205             </span>
206         <?php endif; ?>
207     </td>
208 </tr>