| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486 | <?php/** * Links configuration for MySQL system tables */declare(strict_types=1);namespace PhpMyAdmin\Config;use PhpMyAdmin\Url;use PhpMyAdmin\Util;class SpecialSchemaLinks{    /**     * This array represent the details for generating links inside     * special schemas like mysql, information_schema etc.     * Major element represent a schema.     * All the strings in this array represented in lower case     *     * Array structure ex:     * array(     *     // Database name is the major element     *     'mysql' => array(     *         // Table name     *         'db' => array(     *             // Column name     *             'user' => array(     *                 // Main url param (can be an array where represent sql)     *                 'link_param' => 'username',     *                 // Other url params     *                 'link_dependancy_params' => array(     *                     0 => array(     *                         // URL parameter name     *                         // (can be array where url param has static value)     *                         'param_info' => 'hostname',     *                         // Column name related to url param     *                         'column_name' => 'host'     *                     )     *                 ),     *                 // Page to link     *                 'default_page' => './' . Url::getFromRoute('/server/privileges')     *             )     *         )     *     )     * );     *     * @return array<string,array<string,array<string,array<string,array<int,array<string,string>>|string>>>>     * @phpstan-return array<     *              string, array<     *                  string, array<     *                      string,     *                      array{     *                          'link_param': string,     *                          'link_dependancy_params'?: array<     *                                                      int,     *                                                      array{'param_info': string, 'column_name': string}     *                                                     >,     *                          'default_page': string     *                      }>     *                  >     *             >     * }     */    public static function get(): array    {        global $cfg;        $defaultPageDatabase = './' . Util::getScriptNameForOption($cfg['DefaultTabDatabase'], 'database');        $defaultPageTable = './' . Util::getScriptNameForOption($cfg['DefaultTabTable'], 'table');        return [            'mysql' => [                'columns_priv' => [                    'user' => [                        'link_param' => 'username',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'hostname',                                'column_name' => 'host',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/server/privileges'),                    ],                    'table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'Db',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                    'column_name' => [                        'link_param' => 'field',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'Db',                            ],                            1 => [                                'param_info' => 'table',                                'column_name' => 'Table_name',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/table/structure/change', ['change_column' => 1]),                    ],                ],                'db' => [                    'user' => [                        'link_param' => 'username',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'hostname',                                'column_name' => 'host',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/server/privileges'),                    ],                ],                'event' => [                    'name' => [                        'link_param' => 'item_name',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'db',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/database/events', ['edit_item' => 1]),                    ],                ],                'innodb_index_stats' => [                    'table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'database_name',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                    'index_name' => [                        'link_param' => 'index',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'database_name',                            ],                            1 => [                                'param_info' => 'table',                                'column_name' => 'table_name',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/table/structure'),                    ],                ],                'innodb_table_stats' => [                    'table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'database_name',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                ],                'proc' => [                    'name' => [                        'link_param' => 'item_name',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'db',                            ],                            1 => [                                'param_info' => 'item_type',                                'column_name' => 'type',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/database/routines', ['edit_item' => 1]),                    ],                    'specific_name' => [                        'link_param' => 'item_name',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'db',                            ],                            1 => [                                'param_info' => 'item_type',                                'column_name' => 'type',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/database/routines', ['edit_item' => 1]),                    ],                ],                'proc_priv' => [                    'user' => [                        'link_param' => 'username',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'hostname',                                'column_name' => 'Host',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/server/privileges'),                    ],                    'routine_name' => [                        'link_param' => 'item_name',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'Db',                            ],                            1 => [                                'param_info' => 'item_type',                                'column_name' => 'Routine_type',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/database/routines', ['edit_item' => 1]),                    ],                ],                'proxies_priv' => [                    'user' => [                        'link_param' => 'username',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'hostname',                                'column_name' => 'Host',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/server/privileges'),                    ],                ],                'tables_priv' => [                    'user' => [                        'link_param' => 'username',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'hostname',                                'column_name' => 'Host',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/server/privileges'),                    ],                    'table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'Db',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                ],                'user' => [                    'user' => [                        'link_param' => 'username',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'hostname',                                'column_name' => 'host',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/server/privileges'),                    ],                ],            ],            'information_schema' => [                'columns' => [                    'table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'table_schema',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                    'column_name' => [                        'link_param' => 'field',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'table_schema',                            ],                            1 => [                                'param_info' => 'table',                                'column_name' => 'table_name',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/table/structure/change', ['change_column' => 1]),                    ],                ],                'key_column_usage' => [                    'table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'constraint_schema',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                    'column_name' => [                        'link_param' => 'field',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'table_schema',                            ],                            1 => [                                'param_info' => 'table',                                'column_name' => 'table_name',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/table/structure/change', ['change_column' => 1]),                    ],                    'referenced_table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'referenced_table_schema',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                    'referenced_column_name' => [                        'link_param' => 'field',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'referenced_table_schema',                            ],                            1 => [                                'param_info' => 'table',                                'column_name' => 'referenced_table_name',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/table/structure/change', ['change_column' => 1]),                    ],                ],                'partitions' => [                    'table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'table_schema',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                ],                'processlist' => [                    'user' => [                        'link_param' => 'username',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'hostname',                                'column_name' => 'host',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/server/privileges'),                    ],                ],                'referential_constraints' => [                    'table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'constraint_schema',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                    'referenced_table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'constraint_schema',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                ],                'routines' => [                    'routine_name' => [                        'link_param' => 'item_name',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'routine_schema',                            ],                            1 => [                                'param_info' => 'item_type',                                'column_name' => 'routine_type',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/database/routines'),                    ],                ],                'schemata' => [                    'schema_name' => [                        'link_param' => 'db',                        'default_page' => $defaultPageDatabase,                    ],                ],                'statistics' => [                    'table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'table_schema',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                    'column_name' => [                        'link_param' => 'field',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'table_schema',                            ],                            1 => [                                'param_info' => 'table',                                'column_name' => 'table_name',                            ],                        ],                        'default_page' => './' . Url::getFromRoute('/table/structure/change', ['change_column' => 1]),                    ],                ],                'tables' => [                    'table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'table_schema',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                ],                'table_constraints' => [                    'table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'table_schema',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                ],                'views' => [                    'table_name' => [                        'link_param' => 'table',                        'link_dependancy_params' => [                            0 => [                                'param_info' => 'db',                                'column_name' => 'table_schema',                            ],                        ],                        'default_page' => $defaultPageTable,                    ],                ],            ],        ];    }}
 |