-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.php
executable file
·146 lines (123 loc) · 6.24 KB
/
index.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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?php
/**
* Hi :)
*/
ob_start();
ini_set('default_charset', 'UTF-8');
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);
date_default_timezone_set("UTC");
require_once __DIR__.'/app/functions.php';
require_once __DIR__.'/vendor/autoload.php';
// routing
$dispatcher = FastRoute\simpleDispatcher(function(FastRoute\RouteCollector $r) {
$path_db = __DIR__."/app/db/db.sqlite";
$r->addRoute("GET", "/", array("HomeControllersHome", "home"));
$r->addRoute("GET", "/install", array("ControllersInstall", "home"));
$r->addRoute(array("GET", "POST"), "/login", array("ControllersLogin", "home"));
if (is_file($path_db)) {
$r->addRoute("GET", "/logout", array("ControllersLogin", "logout"));
$r->addRoute("GET", "/session/{id:\d+}", array("HelpersUser", "session"));
$r->addRoute("GET", "/cron/step1", array("HelpersCron", "checkLastModification"));
$r->addRoute("GET", "/cron/step2", array("HelpersCron", "getData"));
$r->addRoute("GET", "/cron/step3", array("HelpersCron", "parse"));
$r->addRoute("GET", "/update", array("ControllersCron", "update"));
if (HelpersUser::getCurrent()) {
$r->addRoute(array("GET", "POST"), "/preferences", array("HomeControllersHome", "preferences"));
// RSS
$r->addGroup('/rss', function (FastRoute\RouteCollector $r) {
$r->addRoute("GET", "/home", array("RssControllersFeeds", "home"));
$r->addRoute("GET", "/feeds", array("RssControllersFeeds", "home"));
$r->addRoute("POST", "/ajax_flow", array("RssControllersFeeds", "ajax"));
$r->addRoute("GET", "/debug/{id:\d+}", array("ControllersCron", "debug"));
// Config
$r->addGroup('/config', function (FastRoute\RouteCollector $r) {
$r->addRoute('GET', '', array("RssControllersFeeds", "config"));
$r->addRoute('GET', '/export.opml', array("RssControllersFeeds", "export"));
$r->addRoute('POST', '/import', array("RssControllersFeeds", "import"));
$r->addGroup('/category', function (FastRoute\RouteCollector $r) {
$r->addRoute("GET", "/edit/[{id}]", array("RssControllersFeeds", "ajax_edit_category"));
$r->addRoute("POST", "/edit", array("RssControllersFeeds", "ajax_post_category"));
});
$r->addGroup("/subscription", function (FastRoute\RouteCollector $r) {
$r->addRoute("POST", "/edit", array("RssControllersFeeds", "ajax_post_subscription"));
$r->addRoute("GET", "/edit/{sub_id}", array("RssControllersFeeds", "edit_subscription"));
$r->addRoute("GET", "/move/{sub_id}/[{cat_id}]", array("RssControllersFeeds", "move_subscription"));
});
});
});
$r->addGroup("/links", function(FastRoute\RouteCollector $r) {
$r->addRoute("GET", "", array("LinksControllersHome", "home"));
$r->addRoute(array("GET", "POST"), "/edit/[{id}]", array("LinksControllersHome", "edit"));
$r->addRoute("GET", "/import", array("LinksControllersFile", "import"));
$r->addRoute("GET", "/info", array("LinksControllersInfo", "info"));
});
$r->addGroup("/pro", function(FastRoute\RouteCollector $r) {
$r->addRoute("GET", "", array("ProControllersKanban", "home"));
$r->addGroup("/clients", function(FastRoute\RouteCollector $r) {
$r->addRoute(array("GET", "POST"), "", array("ProControllersClients", "home"));
$r->addRoute("POST", "/update", array("ProControllersClients", "update"));
});
$r->addGroup("/task", function(FastRoute\RouteCollector $r) {
$r->addRoute("POST", "/edit", array("ProControllersTask", "editItem"));
$r->addRoute("POST", "/move", array("ProControllersTask", "move"));
$r->addRoute("POST", "/add", array("ProControllersTask", "addItem"));
$r->addRoute("GET", "/{task_id}", array("ProControllersTask", "view"));
});
$r->addGroup("/subtask", function(FastRoute\RouteCollector $r) {
$r->addRoute("POST", "", array("ProControllersTask", "editSub"));
$r->addRoute("POST", "/add", array("ProControllersTask", "addSub"));
});
$r->addGroup("/factures", function(FastRoute\RouteCollector $r) {
$r->addRoute("GET", "", array("ProControllersFacture", "home"));
$r->addRoute("GET", "/{id}/pdf", array("ProControllersFacture", "pdf"));
});
});
}
}
});
// find a route
$httpMethod = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];
$prefix = isset($_SERVER["DOCUMENT_URI"]) ? str_replace("/index.php", "", $_SERVER["DOCUMENT_URI"]) : null;
$pos = strpos($uri, $prefix);
$uri = ($pos === 0) ? substr($uri, strlen($prefix)) : $uri;
if (false !== $pos = strpos($uri, '?')) {
// hack for GET
$params = substr($uri, $pos+1);
if (empty($_GET) && $params) {
foreach(explode("&", $params) as $p) {
$kv = explode("=", $p);
$_GET[$kv[0]] = isset($kv[1]) ? $kv[1] : null;
array_filter($_GET);
}
}
// uri for Route
$uri = substr($uri, 0, $pos);
}
$uri = rawurldecode($uri);
try {
$routeInfo = $dispatcher->dispatch($httpMethod, $uri);
if ($routeInfo[0] == FastRoute\Dispatcher::FOUND) {
$params = null;
ClassesTwig::$route = $uri;
echo call_user_func_array($routeInfo[1], $routeInfo[2]);
}
else {
throw new Exception("Page '".$uri."' introuvable", 404);
}
}
catch (Exception $e) {
$code = $e->getCode();
$message = $e->getMessage();
if (isset($_REQUEST["ajax"]) && $_REQUEST["ajax"]) {
echo "<div class=\"uk-alert uk-alert-danger\"><b>".$code."</b> ".$message."</div>";
}
else {
$template = ClassesTwig::getInstance();
echo $template->render("template/views/error.twig", array(
"code" => $code,
"message" => $message
));
}
}