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
|
public function handleRequest($request)
{
foreach ($this->routes as $route) {
// if /id detected
if (preg_match($route->getRequirements(), $request, $id)) {
$new_id = trim($id[0], '/');
$regex = '#:id#';
$new_path = preg_replace($regex, $new_id, $route->getPath());
$route->setPath($new_path);
if ($route->getPath() === $request) {
$class = $this->createController($route->getController());
return $class($new_id);
}
}
// if ? detected -- token verifying and put in $_GET
elseif (preg_match('#\?token=[\d+[a-zA-Z.]+#', $request, $param)) {
$_GET['token'] = trim($param[0], '\?token=');
$route->setPath($request);
$route->setController('\Framework\Controller\TokenPasswordController');
if ($route->getPath() === $request) {
$class = $this->createController($route->getController());
return $class();
}
}
// regular path
elseif ($route->getPath() === $request) {
$class = $this->createController($route->getController());
if (preg_match('#updatepost_action#', $request) || preg_match('#write#', $request) ||
preg_match('#envoi#', $request) || preg_match('#check#', $request) ||
preg_match('#pswrd_reset_action#', $request)
) {
return $class->action();
} else
return $class();
}
else {
throw new \Exception();
} |
Partager