-
Notifications
You must be signed in to change notification settings - Fork 0
/
router.php
100 lines (91 loc) · 3.69 KB
/
router.php
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
namespace WorldlangDict;
/**
* Calls the appropriate function based on the url.
*/
function router($config)
{
$page = new Page($config->getTrans('App Name'));
$request = new Request($config);
if ($request->incomplete) {
WorldlangDictUtils::redirect($config, "");
}
$config->setLang($request->lang);
// log_weird_error($request);
try {
switch ($request->controller) {
case 'tul':
Tool_controller::run($config, $request, $page);
break;
case 'lexi':
Word_controller::output_entry($config, $request, $page);
break;
case 'cel-ruke':
Word_controller::addNatWord($config, $request, $config->lang, $page);
break;
case 'xerca':
Search_controller::search($config, $request, $page);
break;
case 'am-reporte':
Feedback_controller::feedback($config, $request, $page);
break;
case 'lexilari':
Tags_controller::addTags($config, $request, $page);
break;
case 'abeceli-menalari':
Browse_controller::default($config, $request, $page);
break;
case 'estatisti-fe-lexiasel':
require_once('controllers/Natlangs_controller.php');
Natlangs_controller::run($config, $request, $page);
break;
case 'natlang-abeceli':
require_once('controllers/Natlang_browse_controller.php');
Natlang_browse_controller::default($config, $request, $page);
break;
case 'estatisti':
require_once('controllers/Statistics_controller.php');
Statistics_controller::default($config, $request, $page);
break;
case 'reports':
require_once('controllers/Reports_controller.php');
Reports_controller::run($config, $request, $page);
break;
case 'test':
Test_controller::helloWorld($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) {
if ($config->debugging) {
Error_controller::debug($config, $request, $page, $t);
}
Error_controller::wtf($config, $request, $page);
}
}
/**
* Logs details about what's happening if the request is a string rather than an array.
* Not sure why this happens periodically.
*/
function log_weird_error($request):void {
if (is_string($request)) {
@error_log("\n-----".date(DATE_ATOM)."\n", 3, "debug.log");
@error_log("\nrouter has a request as string.\n", 3, "debug.log");
@error_log("\nrequest:\n".serialize($request)."\n", 3, "debug.log");
@error_log("\nbacktrace:\n".serialize(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS))."\n", 3, "debug.log");
foreach(debug_backtrace() as $trace) {
@error_log("\nfile :".$trace['file']."\n", 3, "debug.log");
@error_log("\nfile :".$trace['class'].$trace['type'].$trace['function'].$trace['line']."\n", 3, "debug.log");
}
}
}