-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathrouter.php
More file actions
75 lines (71 loc) · 3.17 KB
/
router.php
File metadata and controls
75 lines (71 loc) · 3.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
namespace WorldlangDict;
/**
* Calls the appropriate function based on the url.
*/
function router(WorldlangDictConfig $config)
{
$page = new Page($config->getTrans('App Name'));
$request = new Request($config);
if ($request->incomplete) {
WorldlangDictUtils::redirect($config=$config, $request=$request);
}
$config->setLang($request->lang);
try {
switch ($request->controller) {
case 'tool': case $config->routes['tool']:
Tool_controller::run($config, $request, $page);
break;
case 'word': case $config->routes['word']:
Word_controller::output_entry($config, $request, $page);
break;
case 'natlang-search': case $config->routes['natlang-search']:
Word_controller::addNatWord($config, $request, $config->lang, $page);
break;
case 'search': case $config->routes['search']:
Search_controller::search($config, $request, $page);
break;
case 'feedback': case $config->routes['feedback']:
Feedback_controller::feedback($config, $request, $page);
break;
case 'tag': case $config->routes['tag']:
Tags_controller::addTags($config, $request, $page);
break;
case 'browse': case $config->routes['browse']:
Browse_controller::default($config, $request, $page);
break;
case 'natlang': case $config->routes['natlang']:
require_once('controllers/Natlangs_controller.php');
Natlangs_controller::run($config, $request, $page);
break;
case 'natlang-browse': case $config->routes['natlang-browse']:
require_once('controllers/Natlang_browse_controller.php');
Natlang_browse_controller::default($config, $request, $page);
break;
case 'stats': case $config->routes['stats']:
require_once('controllers/Statistics_controller.php');
Statistics_controller::default($config, $request, $page);
break;
case 'report': case $config->routes['report']:
require_once('controllers/Reports_controller.php');
Reports_controller::run($config, $request, $page);
break;
case 'dev-dash': case $config->routes['dev-dash']:
Dev_controller::dash($config, $request, $page);
break;
case '':
Welcome_controller::home($config, $request, $page);
break;
default:
throw new Error_404_Exception("Invalid controller");
}
} catch (Error_404_Exception $e) {
Error_controller::error_404($config, $request, $page);
} catch (Error_loading_data_exception $e) {
Error_controller::data_error($config, $request, $page);
} catch (Error_invalid_request_exception $e) {
Error_controller::invalid_request($config, $request, $page);
} catch(\Throwable $t) {
Error_controller::wtf(config:$config, request:$request, page:$page, error:$t);
}
}