|
12 | 12 |
|
13 | 13 | class SpecialSchemaLinks |
14 | 14 | { |
| 15 | + /** @var array<'mysql'|'information_schema', |
| 16 | + * array<string, |
| 17 | + * array<string, |
| 18 | + * array{ |
| 19 | + * 'link_param': string, |
| 20 | + * 'link_dependancy_params'?: array< |
| 21 | + * int, |
| 22 | + * array{'param_info': string, 'column_name': string} |
| 23 | + * >, |
| 24 | + * 'default_page': string |
| 25 | + * } |
| 26 | + * > |
| 27 | + * > |
| 28 | + * > */ |
| 29 | + private static array $specialSchemaLinks = []; |
| 30 | + |
15 | 31 | /** |
16 | 32 | * This array represent the details for generating links inside |
17 | 33 | * special schemas like mysql, information_schema etc. |
18 | 34 | * Major element represent a schema. |
19 | 35 | * All the strings in this array represented in lower case |
20 | 36 | * |
21 | | - * Array structure ex: |
22 | | - * array( |
23 | | - * // Database name is the major element |
24 | | - * 'mysql' => array( |
25 | | - * // Table name |
26 | | - * 'db' => array( |
27 | | - * // Column name |
28 | | - * 'user' => array( |
29 | | - * // Main url param (can be an array where represent sql) |
30 | | - * 'link_param' => 'username', |
31 | | - * // Other url params |
32 | | - * 'link_dependancy_params' => array( |
33 | | - * 0 => array( |
34 | | - * // URL parameter name |
35 | | - * // (can be array where url param has static value) |
36 | | - * 'param_info' => 'hostname', |
37 | | - * // Column name related to url param |
38 | | - * 'column_name' => 'host' |
39 | | - * ) |
40 | | - * ), |
41 | | - * // Page to link |
42 | | - * 'default_page' => './' . Url::getFromRoute('/server/privileges') |
43 | | - * ) |
44 | | - * ) |
45 | | - * ) |
46 | | - * ); |
| 37 | + * @param 'mysql'|'information_schema' $database |
47 | 38 | * |
48 | | - * @return array<string,array<string,array<string,array<string,array<int,array<string,string>>|string>>>> |
49 | | - * @phpstan-return array< |
50 | | - * string, array< |
51 | | - * string, array< |
52 | | - * string, |
53 | | - * array{ |
54 | | - * 'link_param': string, |
55 | | - * 'link_dependancy_params'?: array< |
56 | | - * int, |
57 | | - * array{'param_info': string, 'column_name': string} |
58 | | - * >, |
59 | | - * 'default_page': string |
60 | | - * }> |
61 | | - * > |
62 | | - * > |
63 | | - * } |
| 39 | + * @return array{ |
| 40 | + * 'link_param': string, |
| 41 | + * 'link_dependancy_params'?: array< |
| 42 | + * int, |
| 43 | + * array{'param_info': string, 'column_name': string} |
| 44 | + * >, |
| 45 | + * 'default_page': string |
| 46 | + * }|null |
64 | 47 | */ |
65 | | - public static function get(): array |
| 48 | + public static function get(string $database, string $table, string $column): array|null |
| 49 | + { |
| 50 | + if (self::$specialSchemaLinks === []) { |
| 51 | + self::setSpecialSchemaLinks(); |
| 52 | + } |
| 53 | + |
| 54 | + return self::$specialSchemaLinks[$database][$table][$column] ?? null; |
| 55 | + } |
| 56 | + |
| 57 | + private static function setSpecialSchemaLinks(): void |
66 | 58 | { |
67 | 59 | $config = Config::getInstance(); |
68 | 60 | $defaultPageDatabase = './' . Url::getFromRoute($config->settings['DefaultTabDatabase']); |
69 | 61 | $defaultPageTable = './' . Url::getFromRoute($config->settings['DefaultTabTable']); |
70 | 62 |
|
71 | | - return [ |
| 63 | + self::$specialSchemaLinks = [ |
72 | 64 | 'mysql' => [ |
73 | 65 | 'columns_priv' => [ |
74 | 66 | 'user' => [ |
|
0 commit comments