66
77use PhpMyAdmin \Config ;
88use PhpMyAdmin \ConfigStorage \Relation ;
9+ use PhpMyAdmin \Database \Designer \ColumnInfo ;
910use PhpMyAdmin \Database \Designer \DesignerTable ;
1011use PhpMyAdmin \DatabaseInterface ;
1112use PhpMyAdmin \Message ;
1516use stdClass ;
1617
1718use function __ ;
18- use function count ;
1919use function intval ;
2020use function is_array ;
2121use function json_decode ;
@@ -212,13 +212,13 @@ public function returnClassNamesFromMenuButtons(): array
212212 /**
213213 * Get HTML to display tables on designer page
214214 *
215- * @param string $db The database name from the request
216- * @param DesignerTable[] $designerTables The designer tables
217- * @param mixed[] $tabPos tables positions
218- * @param int $displayPage page number of the selected page
219- * @param mixed [] $tabColumn table column info
220- * @param mixed[] $tablesAllKeys all indices
221- * @param mixed[] $tablesPkOrUniqueKeys unique or primary indices
215+ * @param string $db The database name from the request
216+ * @param DesignerTable[] $designerTables The designer tables
217+ * @param mixed[] $tabPos tables positions
218+ * @param int $displayPage page number of the selected page
219+ * @param list<ColumnInfo> [] $tableColumnsInfo table column info
220+ * @param mixed[] $tablesAllKeys all indices
221+ * @param mixed[] $tablesPkOrUniqueKeys unique or primary indices
222222 *
223223 * @return string html
224224 */
@@ -227,38 +227,36 @@ public function getDatabaseTables(
227227 array $ designerTables ,
228228 array $ tabPos ,
229229 int $ displayPage ,
230- array $ tabColumn ,
230+ array $ tableColumnsInfo ,
231231 array $ tablesAllKeys ,
232232 array $ tablesPkOrUniqueKeys ,
233233 ): string {
234234 $ GLOBALS ['text_dir ' ] ??= null ;
235235
236236 $ columnsType = [];
237- foreach ($ designerTables as $ designerTable ) {
238- $ tableName = $ designerTable ->getDbTableString ();
239- $ limit = count ($ tabColumn [$ tableName ]['COLUMN_ID ' ]);
240- for ($ j = 0 ; $ j < $ limit ; $ j ++) {
241- $ tableColumnName = $ tableName . '. ' . $ tabColumn [$ tableName ]['COLUMN_NAME ' ][$ j ];
237+ foreach ($ tableColumnsInfo as $ tableName => $ columnsInfo ) {
238+ foreach ($ columnsInfo as $ columnInfo ) {
239+ $ tableColumnName = $ tableName . '. ' . $ columnInfo ->name ;
242240 if (isset ($ tablesPkOrUniqueKeys [$ tableColumnName ])) {
243241 $ columnsType [$ tableColumnName ] = 'designer/FieldKey_small ' ;
244242 } else {
245243 $ columnsType [$ tableColumnName ] = 'designer/Field_small ' ;
246244 if (
247- str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'char ' )
248- || str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'text ' )
245+ str_contains ($ columnInfo -> type , 'char ' )
246+ || str_contains ($ columnInfo -> type , 'text ' )
249247 ) {
250248 $ columnsType [$ tableColumnName ] .= '_char ' ;
251249 } elseif (
252- str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'int ' )
253- || str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'float ' )
254- || str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'double ' )
255- || str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'decimal ' )
250+ str_contains ($ columnInfo -> type , 'int ' )
251+ || str_contains ($ columnInfo -> type , 'float ' )
252+ || str_contains ($ columnInfo -> type , 'double ' )
253+ || str_contains ($ columnInfo -> type , 'decimal ' )
256254 ) {
257255 $ columnsType [$ tableColumnName ] .= '_int ' ;
258256 } elseif (
259- str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'date ' )
260- || str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'time ' )
261- || str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'year ' )
257+ str_contains ($ columnInfo -> type , 'date ' )
258+ || str_contains ($ columnInfo -> type , 'time ' )
259+ || str_contains ($ columnInfo -> type , 'year ' )
262260 ) {
263261 $ columnsType [$ tableColumnName ] .= '_date ' ;
264262 }
@@ -273,7 +271,7 @@ public function getDatabaseTables(
273271 'has_query ' => isset ($ _REQUEST ['query ' ]),
274272 'tab_pos ' => $ tabPos ,
275273 'display_page ' => $ displayPage ,
276- 'tab_column ' => $ tabColumn ,
274+ 'tab_column ' => $ tableColumnsInfo ,
277275 'tables_all_keys ' => $ tablesAllKeys ,
278276 'tables_pk_or_unique_keys ' => $ tablesPkOrUniqueKeys ,
279277 'tables ' => $ designerTables ,
@@ -284,20 +282,20 @@ public function getDatabaseTables(
284282 /**
285283 * Returns HTML for Designer page
286284 *
287- * @param string $db database in use
288- * @param string $getDb database in url
289- * @param DesignerTable[] $designerTables The designer tables
290- * @param mixed[] $scriptTables array on foreign key support for each table
291- * @param mixed[] $scriptContr initialization data array
292- * @param DesignerTable[] $scriptDisplayField displayed tables in designer with their display fields
293- * @param int $displayPage page number of the selected page
294- * @param bool $visualBuilderMode whether this is visual query builder
295- * @param string|null $selectedPage name of the selected page
296- * @param mixed[] $paramsArray array with class name for various buttons on side menu
297- * @param mixed[] $tablePositions table positions
298- * @param mixed [] $tabColumn table column info
299- * @param mixed[] $tablesAllKeys all indices
300- * @param mixed[] $tablesPkOrUniqueKeys unique or primary indices
285+ * @param string $db database in use
286+ * @param string $getDb database in url
287+ * @param DesignerTable[] $designerTables The designer tables
288+ * @param mixed[] $scriptTables array on foreign key support for each table
289+ * @param mixed[] $scriptContr initialization data array
290+ * @param DesignerTable[] $scriptDisplayField displayed tables in designer with their display fields
291+ * @param int $displayPage page number of the selected page
292+ * @param bool $visualBuilderMode whether this is visual query builder
293+ * @param string|null $selectedPage name of the selected page
294+ * @param mixed[] $paramsArray array with class name for various buttons on side menu
295+ * @param mixed[] $tablePositions table positions
296+ * @param list<ColumnInfo> [] $tableColumnsInfo table column info
297+ * @param mixed[] $tablesAllKeys all indices
298+ * @param mixed[] $tablesPkOrUniqueKeys unique or primary indices
301299 *
302300 * @return string html
303301 */
@@ -313,39 +311,37 @@ public function getHtmlForMain(
313311 string |null $ selectedPage ,
314312 array $ paramsArray ,
315313 array $ tablePositions ,
316- array $ tabColumn ,
314+ array $ tableColumnsInfo ,
317315 array $ tablesAllKeys ,
318316 array $ tablesPkOrUniqueKeys ,
319317 ): string {
320318 $ GLOBALS ['text_dir ' ] ??= null ;
321319
322320 $ relationParameters = $ this ->relation ->getRelationParameters ();
323321 $ columnsType = [];
324- foreach ($ designerTables as $ designerTable ) {
325- $ tableName = $ designerTable ->getDbTableString ();
326- $ limit = count ($ tabColumn [$ tableName ]['COLUMN_ID ' ]);
327- for ($ j = 0 ; $ j < $ limit ; $ j ++) {
328- $ tableColumnName = $ tableName . '. ' . $ tabColumn [$ tableName ]['COLUMN_NAME ' ][$ j ];
322+ foreach ($ tableColumnsInfo as $ tableName => $ columnsInfo ) {
323+ foreach ($ columnsInfo as $ columnInfo ) {
324+ $ tableColumnName = $ tableName . '. ' . $ columnInfo ->name ;
329325 if (isset ($ tablesPkOrUniqueKeys [$ tableColumnName ])) {
330326 $ columnsType [$ tableColumnName ] = 'designer/FieldKey_small ' ;
331327 } else {
332328 $ columnsType [$ tableColumnName ] = 'designer/Field_small ' ;
333329 if (
334- str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'char ' )
335- || str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'text ' )
330+ str_contains ($ columnInfo -> type , 'char ' )
331+ || str_contains ($ columnInfo -> type , 'text ' )
336332 ) {
337333 $ columnsType [$ tableColumnName ] .= '_char ' ;
338334 } elseif (
339- str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'int ' )
340- || str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'float ' )
341- || str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'double ' )
342- || str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'decimal ' )
335+ str_contains ($ columnInfo -> type , 'int ' )
336+ || str_contains ($ columnInfo -> type , 'float ' )
337+ || str_contains ($ columnInfo -> type , 'double ' )
338+ || str_contains ($ columnInfo -> type , 'decimal ' )
343339 ) {
344340 $ columnsType [$ tableColumnName ] .= '_int ' ;
345341 } elseif (
346- str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'date ' )
347- || str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'time ' )
348- || str_contains ($ tabColumn [ $ tableName ][ ' TYPE ' ][ $ j ] , 'year ' )
342+ str_contains ($ columnInfo -> type , 'date ' )
343+ || str_contains ($ columnInfo -> type , 'time ' )
344+ || str_contains ($ columnInfo -> type , 'year ' )
349345 ) {
350346 $ columnsType [$ tableColumnName ] .= '_date ' ;
351347 }
@@ -382,7 +378,7 @@ public function getHtmlForMain(
382378 'selected_page ' => $ selectedPage ,
383379 'params_array ' => $ paramsArray ,
384380 'tab_pos ' => $ tablePositions ,
385- 'tab_column ' => $ tabColumn ,
381+ 'tab_column ' => $ tableColumnsInfo ,
386382 'tables_all_keys ' => $ tablesAllKeys ,
387383 'tables_pk_or_unique_keys ' => $ tablesPkOrUniqueKeys ,
388384 'designerTables ' => $ designerTables ,
0 commit comments