3 declare(strict_types
=1);
5 namespace PhpMyAdmin\Routing
;
7 use FastRoute\RouteCollector
;
8 use PhpMyAdmin\Controllers\BrowseForeignersController
;
9 use PhpMyAdmin\Controllers\ChangeLogController
;
10 use PhpMyAdmin\Controllers\CheckRelationsController
;
11 use PhpMyAdmin\Controllers\CollationConnectionController
;
12 use PhpMyAdmin\Controllers\ColumnController
;
13 use PhpMyAdmin\Controllers\Console\Bookmark
;
14 use PhpMyAdmin\Controllers\Console\UpdateConfigController
;
15 use PhpMyAdmin\Controllers\Database
;
16 use PhpMyAdmin\Controllers\DatabaseController
;
17 use PhpMyAdmin\Controllers\ErrorReportController
;
18 use PhpMyAdmin\Controllers\Export
;
19 use PhpMyAdmin\Controllers\GisDataEditorController
;
20 use PhpMyAdmin\Controllers\GitInfoController
;
21 use PhpMyAdmin\Controllers\HomeController
;
22 use PhpMyAdmin\Controllers\Import
;
23 use PhpMyAdmin\Controllers\JavaScriptMessagesController
;
24 use PhpMyAdmin\Controllers\LicenseController
;
25 use PhpMyAdmin\Controllers\LintController
;
26 use PhpMyAdmin\Controllers\LogoutController
;
27 use PhpMyAdmin\Controllers\Navigation\UpdateNavWidthConfigController
;
28 use PhpMyAdmin\Controllers\NavigationController
;
29 use PhpMyAdmin\Controllers\Normalization
;
30 use PhpMyAdmin\Controllers\Operations
;
31 use PhpMyAdmin\Controllers\PhpInfoController
;
32 use PhpMyAdmin\Controllers\Preferences
;
33 use PhpMyAdmin\Controllers\SchemaExportController
;
34 use PhpMyAdmin\Controllers\Server
;
35 use PhpMyAdmin\Controllers\Sql
;
36 use PhpMyAdmin\Controllers\Table
;
37 use PhpMyAdmin\Controllers\TableController
;
38 use PhpMyAdmin\Controllers\ThemesController
;
39 use PhpMyAdmin\Controllers\ThemeSetController
;
40 use PhpMyAdmin\Controllers\Transformation
;
41 use PhpMyAdmin\Controllers\Triggers
;
42 use PhpMyAdmin\Controllers\UserPasswordController
;
43 use PhpMyAdmin\Controllers\VersionCheckController
;
44 use PhpMyAdmin\Controllers\View
;
48 public static function collect(RouteCollector
$routes): void
50 $routes->addRoute(['GET', 'POST'], '[/]', HomeController
::class);
51 $routes->addRoute(['GET', 'POST'], '/browse-foreigners', BrowseForeignersController
::class);
52 $routes->get('/changelog', ChangeLogController
::class);
53 $routes->addRoute(['GET', 'POST'], '/check-relations', CheckRelationsController
::class);
54 $routes->post('/collation-connection', CollationConnectionController
::class);
55 $routes->post('/columns', ColumnController
::class);
56 $routes->addGroup('/console', static function (RouteCollector
$routes): void
{
57 $routes->addGroup('/bookmark', static function (RouteCollector
$routes): void
{
58 $routes->post('/add', Bookmark\AddController
::class);
59 $routes->get('/refresh', Bookmark\RefreshController
::class);
61 $routes->post('/update-config', UpdateConfigController
::class);
63 $routes->addGroup('/database', static function (RouteCollector
$routes): void
{
64 $routes->addGroup('/central-columns', static function (RouteCollector
$routes): void
{
65 $routes->addRoute(['GET', 'POST'], '', Database\CentralColumnsController
::class);
66 $routes->post('/populate', Database\CentralColumns\PopulateColumnsController
::class);
68 $routes->get('/data-dictionary', Database\DataDictionaryController
::class);
69 $routes->addRoute(['GET', 'POST'], '/designer', Database\DesignerController
::class);
70 $routes->addRoute(['GET', 'POST'], '/events', Database\EventsController
::class);
71 $routes->addRoute(['GET', 'POST'], '/export', Database\ExportController
::class);
72 $routes->addRoute(['GET', 'POST'], '/import', Database\ImportController
::class);
73 $routes->addGroup('/multi-table-query', static function (RouteCollector
$routes): void
{
74 $routes->get('', Database\MultiTableQueryController
::class);
75 $routes->get('/tables', Database\MultiTableQuery\TablesController
::class);
76 $routes->post('/query', Database\MultiTableQuery\QueryController
::class);
78 $routes->addGroup('/operations', static function (RouteCollector
$routes): void
{
79 $routes->addRoute(['GET', 'POST'], '', Operations\DatabaseController
::class);
80 $routes->post('/collation', Operations\Database\CollationController
::class);
82 $routes->get('/privileges', Database\PrivilegesController
::class);
83 $routes->addRoute(['GET', 'POST'], '/routines', Database\RoutinesController
::class);
84 $routes->addRoute(['GET', 'POST'], '/search', Database\SearchController
::class);
85 $routes->addGroup('/sql', static function (RouteCollector
$routes): void
{
86 $routes->addRoute(['GET', 'POST'], '', Database\SqlController
::class);
87 $routes->post('/autocomplete', Database\SqlAutoCompleteController
::class);
88 $routes->post('/format', Database\SqlFormatController
::class);
90 $routes->addGroup('/structure', static function (RouteCollector
$routes): void
{
91 $routes->addRoute(['GET', 'POST'], '', Database\StructureController
::class);
92 $routes->post('/add-prefix', Database\Structure\AddPrefixController
::class);
93 $routes->post('/add-prefix-table', Database\Structure\AddPrefixTableController
::class);
94 $routes->addGroup('/central-columns', static function (RouteCollector
$routes): void
{
95 $routes->post('/add', Database\Structure\CentralColumns\AddController
::class);
98 Database\Structure\CentralColumns\MakeConsistentController
::class,
100 $routes->post('/remove', Database\Structure\CentralColumns\RemoveController
::class);
102 $routes->post('/change-prefix-form', Database\Structure\ChangePrefixFormController
::class);
103 $routes->post('/copy-form', Database\Structure\CopyFormController
::class);
104 $routes->post('/copy-table', Database\Structure\CopyTableController
::class);
105 $routes->post('/copy-table-with-prefix', Database\Structure\CopyTableWithPrefixController
::class);
106 $routes->post('/drop-form', Database\Structure\DropFormController
::class);
107 $routes->post('/drop-table', Database\Structure\DropTableController
::class);
108 $routes->post('/empty-form', Database\Structure\EmptyFormController
::class);
109 $routes->post('/empty-table', Database\Structure\EmptyTableController
::class);
110 $routes->post('/favorite-table', Database\Structure\FavoriteTableController
::class);
111 $routes->addRoute(['GET', 'POST'], '/real-row-count', Database\Structure\RealRowCountController
::class);
112 $routes->post('/replace-prefix', Database\Structure\ReplacePrefixController
::class);
113 $routes->post('/show-create', Database\Structure\ShowCreateController
::class);
115 $routes->addRoute(['GET', 'POST'], '/tracking', Database\TrackingController
::class);
117 $routes->post('/databases', DatabaseController
::class);
118 $routes->addRoute(['GET', 'POST'], '/error-report', ErrorReportController
::class);
119 $routes->addGroup('/export', static function (RouteCollector
$routes): void
{
120 $routes->addRoute(['GET', 'POST'], '', Export\ExportController
::class);
121 $routes->get('/check-time-out', Export\CheckTimeOutController
::class);
122 $routes->post('/tables', Export\TablesController
::class);
123 $routes->addGroup('/template', static function (RouteCollector
$routes): void
{
124 $routes->post('/create', Export\Template\CreateController
::class);
125 $routes->post('/delete', Export\Template\DeleteController
::class);
126 $routes->post('/load', Export\Template\LoadController
::class);
127 $routes->post('/update', Export\Template\UpdateController
::class);
130 $routes->addRoute(['GET', 'POST'], '/gis-data-editor', GisDataEditorController
::class);
131 $routes->addRoute(['GET', 'POST'], '/git-revision', GitInfoController
::class);
132 $routes->addGroup('/import', static function (RouteCollector
$routes): void
{
133 $routes->addRoute(['GET', 'POST'], '', Import\ImportController
::class);
134 $routes->post('/simulate-dml', Import\SimulateDmlController
::class);
136 $routes->addRoute(['GET', 'POST'], '/import-status', Import\StatusController
::class);
137 $routes->get('/license', LicenseController
::class);
138 $routes->addRoute(['GET', 'POST'], '/lint', LintController
::class);
139 $routes->addRoute(['GET', 'POST'], '/logout', LogoutController
::class);
140 $routes->get('/messages', JavaScriptMessagesController
::class);
141 $routes->addGroup('/navigation', static function (RouteCollector
$routes): void
{
142 $routes->addRoute(['GET', 'POST'], '', NavigationController
::class);
143 $routes->post('/update-width', UpdateNavWidthConfigController
::class);
145 $routes->addGroup('/normalization', static function (RouteCollector
$routes): void
{
146 $routes->addRoute(['GET', 'POST'], '', Normalization\MainController
::class);
147 $routes->post('/1nf/step1', Normalization\FirstNormalForm\FirstStepController
::class);
148 $routes->post('/1nf/step2', Normalization\FirstNormalForm\SecondStepController
::class);
149 $routes->post('/1nf/step3', Normalization\FirstNormalForm\ThirdStepController
::class);
150 $routes->post('/1nf/step4', Normalization\FirstNormalForm\FourthStepController
::class);
151 $routes->post('/2nf/create-new-tables', Normalization\SecondNormalForm\CreateNewTablesController
::class);
152 $routes->post('/2nf/new-tables', Normalization\SecondNormalForm\NewTablesController
::class);
153 $routes->post('/2nf/step1', Normalization\SecondNormalForm\FirstStepController
::class);
154 $routes->post('/3nf/create-new-tables', Normalization\ThirdNormalForm\CreateNewTablesController
::class);
155 $routes->post('/3nf/new-tables', Normalization\ThirdNormalForm\NewTablesController
::class);
156 $routes->post('/3nf/step1', Normalization\ThirdNormalForm\FirstStepController
::class);
157 $routes->post('/add-new-primary', Normalization\AddNewPrimaryController
::class);
158 $routes->post('/get-columns', Normalization\GetColumnsController
::class);
159 $routes->post('/create-new-column', Normalization\CreateNewColumnController
::class);
160 $routes->post('/move-repeating-group', Normalization\MoveRepeatingGroup
::class);
161 $routes->post('/partial-dependencies', Normalization\PartialDependenciesController
::class);
163 $routes->get('/phpinfo', PhpInfoController
::class);
164 $routes->addGroup('/preferences', static function (RouteCollector
$routes): void
{
165 $routes->addRoute(['GET', 'POST'], '/export', Preferences\ExportController
::class);
166 $routes->addRoute(['GET', 'POST'], '/features', Preferences\FeaturesController
::class);
167 $routes->addRoute(['GET', 'POST'], '/import', Preferences\ImportController
::class);
168 $routes->addRoute(['GET', 'POST'], '/main-panel', Preferences\MainPanelController
::class);
169 $routes->addRoute(['GET', 'POST'], '/manage', Preferences\ManageController
::class);
170 $routes->addRoute(['GET', 'POST'], '/navigation', Preferences\NavigationController
::class);
171 $routes->addRoute(['GET', 'POST'], '/sql', Preferences\SqlController
::class);
172 $routes->addRoute(['GET', 'POST'], '/two-factor', Preferences\TwoFactorController
::class);
174 $routes->addRoute(['GET', 'POST'], '/schema-export', SchemaExportController
::class);
175 $routes->addGroup('/server', static function (RouteCollector
$routes): void
{
176 $routes->addRoute(['GET', 'POST'], '/binlog', Server\BinlogController
::class);
177 $routes->get('/collations', Server\CollationsController
::class);
178 $routes->addGroup('/databases', static function (RouteCollector
$routes): void
{
179 $routes->addRoute(['GET', 'POST'], '', Server\DatabasesController
::class);
180 $routes->post('/create', Server\Databases\CreateController
::class);
181 $routes->post('/destroy', Server\Databases\DestroyController
::class);
183 $routes->addGroup('/engines', static function (RouteCollector
$routes): void
{
184 $routes->get('', Server\EnginesController
::class);
185 $routes->get('/{engine}[/{page}]', Server\ShowEngineController
::class);
187 $routes->addRoute(['GET', 'POST'], '/export', Server\ExportController
::class);
188 $routes->addRoute(['GET', 'POST'], '/import', Server\ImportController
::class);
189 $routes->get('/plugins', Server\PluginsController
::class);
190 $routes->addGroup('/privileges', static function (RouteCollector
$routes): void
{
191 $routes->addRoute(['GET', 'POST'], '', Server\PrivilegesController
::class);
192 $routes->post('/account-lock', Server\Privileges\AccountLockController
::class);
193 $routes->post('/account-unlock', Server\Privileges\AccountUnlockController
::class);
195 $routes->addRoute(['GET', 'POST'], '/replication', Server\ReplicationController
::class);
196 $routes->addRoute(['GET', 'POST'], '/sql', Server\SqlController
::class);
197 $routes->addGroup('/status', static function (RouteCollector
$routes): void
{
198 $routes->get('', Server\Status\StatusController
::class);
199 $routes->get('/advisor', Server\Status\AdvisorController
::class);
200 $routes->addGroup('/monitor', static function (RouteCollector
$routes): void
{
201 $routes->get('', Server\Status\MonitorController
::class);
202 $routes->post('/chart', Server\Status\Monitor\ChartingDataController
::class);
203 $routes->post('/slow-log', Server\Status\Monitor\SlowLogController
::class);
204 $routes->post('/general-log', Server\Status\Monitor\GeneralLogController
::class);
205 $routes->post('/log-vars', Server\Status\Monitor\LogVarsController
::class);
206 $routes->post('/query', Server\Status\Monitor\QueryAnalyzerController
::class);
208 $routes->addGroup('/processes', static function (RouteCollector
$routes): void
{
209 $routes->addRoute(['GET', 'POST'], '', Server\Status\ProcessesController
::class);
210 $routes->post('/refresh', Server\Status\Processes\RefreshController
::class);
211 $routes->post('/kill/{id:\d+}', Server\Status\Processes\KillController
::class);
213 $routes->get('/queries', Server\Status\QueriesController
::class);
214 $routes->addRoute(['GET', 'POST'], '/variables', Server\Status\VariablesController
::class);
216 $routes->addGroup('/user-groups', static function (RouteCollector
$routes): void
{
217 $routes->addRoute(['GET', 'POST'], '', Server\UserGroupsController
::class);
218 $routes->get('/edit-form', Server\UserGroupsFormController
::class);
220 $routes->addGroup('/variables', static function (RouteCollector
$routes): void
{
221 $routes->get('', Server\VariablesController
::class);
222 $routes->get('/get/{name}', Server\Variables\GetVariableController
::class);
223 $routes->post('/set/{name}', Server\Variables\SetVariableController
::class);
226 $routes->addGroup('/sql', static function (RouteCollector
$routes): void
{
227 $routes->addRoute(['GET', 'POST'], '', Sql\SqlController
::class);
228 $routes->post('/get-relational-values', Sql\RelationalValuesController
::class);
229 $routes->post('/get-enum-values', Sql\EnumValuesController
::class);
230 $routes->post('/get-set-values', Sql\SetValuesController
::class);
231 $routes->get('/get-default-fk-check-value', Sql\DefaultForeignKeyCheckValueController
::class);
232 $routes->post('/set-column-preferences', Sql\ColumnPreferencesController
::class);
234 $routes->addGroup('/table', static function (RouteCollector
$routes): void
{
235 $routes->addRoute(['GET', 'POST'], '/add-field', Table\AddFieldController
::class);
236 $routes->addGroup('/change', static function (RouteCollector
$routes): void
{
237 $routes->addRoute(['GET', 'POST'], '', Table\ChangeController
::class);
238 $routes->post('/rows', Table\ChangeRowsController
::class);
240 $routes->addRoute(['GET', 'POST'], '/chart', Table\ChartController
::class);
241 $routes->addRoute(['GET', 'POST'], '/create', Table\CreateController
::class);
242 $routes->addGroup('/delete', static function (RouteCollector
$routes): void
{
243 $routes->post('/confirm', Table\DeleteConfirmController
::class);
244 $routes->post('/rows', Table\DeleteRowsController
::class);
246 $routes->addGroup('/export', static function (RouteCollector
$routes): void
{
247 $routes->addRoute(['GET', 'POST'], '', Table\ExportController
::class);
248 $routes->post('/rows', Table\ExportRowsController
::class);
250 $routes->addRoute(['GET', 'POST'], '/find-replace', Table\FindReplaceController
::class);
251 $routes->addRoute(['GET', 'POST'], '/get-field', Table\GetFieldController
::class);
252 $routes->addRoute(['GET', 'POST'], '/gis-visualization', Table\GisVisualizationController
::class);
253 $routes->addRoute(['GET', 'POST'], '/import', Table\ImportController
::class);
254 $routes->addRoute(['GET', 'POST'], '/indexes', Table\IndexesController
::class);
255 $routes->addRoute(['GET', 'POST'], '/indexes/rename', Table\IndexRenameController
::class);
256 $routes->addGroup('/maintenance', static function (RouteCollector
$routes): void
{
257 $routes->post('/analyze', Table\Maintenance\AnalyzeController
::class);
258 $routes->post('/check', Table\Maintenance\CheckController
::class);
259 $routes->post('/checksum', Table\Maintenance\ChecksumController
::class);
260 $routes->post('/optimize', Table\Maintenance\OptimizeController
::class);
261 $routes->post('/repair', Table\Maintenance\RepairController
::class);
263 $routes->addGroup('/partition', static function (RouteCollector
$routes): void
{
264 $routes->post('/analyze', Table\Partition\AnalyzeController
::class);
265 $routes->post('/check', Table\Partition\CheckController
::class);
266 $routes->post('/drop', Table\Partition\DropController
::class);
267 $routes->post('/optimize', Table\Partition\OptimizeController
::class);
268 $routes->post('/rebuild', Table\Partition\RebuildController
::class);
269 $routes->post('/repair', Table\Partition\RepairController
::class);
270 $routes->post('/truncate', Table\Partition\TruncateController
::class);
272 $routes->get('/privileges', Table\PrivilegesController
::class);
273 $routes->addRoute(['GET', 'POST'], '/operations', Operations\TableController
::class);
274 $routes->addRoute(['GET', 'POST'], '/recent-favorite', Table\RecentFavoriteController
::class);
275 $routes->addRoute(['GET', 'POST'], '/relation', Table\RelationController
::class);
276 $routes->addRoute(['GET', 'POST'], '/replace', Table\ReplaceController
::class);
277 $routes->addRoute(['GET', 'POST'], '/search', Table\SearchController
::class);
278 $routes->addRoute(['GET', 'POST'], '/sql', Table\SqlController
::class);
279 $routes->addGroup('/structure', static function (RouteCollector
$routes): void
{
280 $routes->addRoute(['GET', 'POST'], '', Table\StructureController
::class);
281 $routes->post('/add-key', Table\Structure\AddKeyController
::class);
282 $routes->post('/browse', Table\Structure\BrowseController
::class);
283 $routes->post('/central-columns-add', Table\Structure\CentralColumnsAddController
::class);
284 $routes->post('/central-columns-remove', Table\Structure\CentralColumnsRemoveController
::class);
285 $routes->addRoute(['GET', 'POST'], '/change', Table\Structure\ChangeController
::class);
286 $routes->post('/drop', Table\DropColumnController
::class);
287 $routes->post('/drop-confirm', Table\DropColumnConfirmationController
::class);
288 $routes->post('/fulltext', Table\Structure\FulltextController
::class);
289 $routes->post('/index', Table\Structure\AddIndexController
::class);
290 $routes->post('/move-columns', Table\Structure\MoveColumnsController
::class);
291 $routes->post('/partitioning', Table\Structure\PartitioningController
::class);
292 $routes->post('/primary', Table\Structure\PrimaryController
::class);
293 $routes->post('/reserved-word-check', Table\Structure\ReservedWordCheckController
::class);
294 $routes->post('/save', Table\Structure\SaveController
::class);
295 $routes->post('/spatial', Table\Structure\SpatialController
::class);
296 $routes->post('/unique', Table\Structure\UniqueController
::class);
298 $routes->addRoute(['GET', 'POST'], '/tracking', Table\TrackingController
::class);
299 $routes->addRoute(['GET', 'POST'], '/zoom-search', Table\ZoomSearchController
::class);
301 $routes->post('/tables', TableController
::class);
302 $routes->addGroup('/themes', static function (RouteCollector
$routes): void
{
303 $routes->get('', ThemesController
::class);
304 $routes->post('/set', ThemeSetController
::class);
306 $routes->addGroup('/transformation', static function (RouteCollector
$routes): void
{
307 $routes->addRoute(['GET', 'POST'], '/overview', Transformation\OverviewController
::class);
308 $routes->addRoute(['GET', 'POST'], '/wrapper', Transformation\WrapperController
::class);
310 $routes->addRoute(['GET', 'POST'], '/triggers', Triggers\IndexController
::class);
311 $routes->addRoute(['GET', 'POST'], '/user-password', UserPasswordController
::class);
312 $routes->addRoute(['GET', 'POST'], '/version-check', VersionCheckController
::class);
313 $routes->addGroup('/view', static function (RouteCollector
$routes): void
{
314 $routes->addRoute(['GET', 'POST'], '/create', View\CreateController
::class);
315 $routes->addRoute(['GET', 'POST'], '/operations', Operations\ViewController
::class);