Commit | Line | Data |
---|---|---|
2aa91ff2 S |
1 | <?php |
2 | namespace dns\system; | |
ff49a0be | 3 | use dns\system\cache\builder\ControllerCacheBuilder; |
44d399bc S |
4 | use Zend\Mvc\Router\Http\Literal; |
5 | use Zend\Mvc\Router\Http\Regex; | |
6 | use Zend\Mvc\Router\SimpleRouteStack; | |
7 | use Zend\ServiceManager\ServiceManager; | |
2aa91ff2 S |
8 | |
9 | /** | |
10 | * @author Jan Altensen (Stricted) | |
11 | * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> | |
d4779364 | 12 | * @copyright 2013-2016 Jan Altensen (Stricted) |
2aa91ff2 S |
13 | */ |
14 | class RequestHandler { | |
ff49a0be S |
15 | protected $pattern = ""; |
16 | protected $routeData = array(); | |
ff49a0be | 17 | |
2aa91ff2 S |
18 | /** |
19 | * init RequestHandler | |
20 | */ | |
2f234923 | 21 | public function __construct ($module = '') { |
ff49a0be S |
22 | if (DNS::getSession()->username !== null) { |
23 | DNS::getTPL()->assign(array("username" => DNS::getSession()->username)); | |
2aa91ff2 S |
24 | } |
25 | else { | |
ff49a0be | 26 | DNS::getTPL()->assign(array("username" => '')); |
2aa91ff2 S |
27 | } |
28 | ||
44d399bc S |
29 | $router = new SimpleRouteStack(); |
30 | ||
31 | $router->addRoute('', Literal::factory([ 'route' => '', 'defaults' => [ 'controller' => 'dns\page\IndexPage' ] ])); | |
32 | $router->addRoute('Index', Literal::factory([ 'route' => 'Index', 'defaults' => [ 'controller' => 'dns\page\IndexPage' ] ])); | |
33 | $router->addRoute('index', Literal::factory([ 'route' => 'index', 'defaults' => [ 'controller' => 'dns\page\IndexPage' ] ])); | |
34 | $router->addRoute('Login', Literal::factory([ 'route' => 'Login', 'defaults' => [ 'controller' => 'dns\page\LoginPage' ] ])); | |
35 | $router->addRoute('Logout', Literal::factory([ 'route' => 'Logout', 'defaults' => [ 'controller' => 'dns\page\LogoutPage' ] ])); | |
36 | $router->addRoute('DomainList', Literal::factory([ 'route' => 'DomainList', 'defaults' => [ 'controller' => 'dns\page\DomainListPage' ] ])); | |
37 | $router->addRoute('DomainAdd', Literal::factory([ 'route' => 'DomainAdd', 'defaults' => [ 'controller' => 'dns\page\DomainAddPage' ] ])); | |
38 | //$router->addRoute('DomainAdd', Regex::factory([ 'regex' => 'DomainEdit/(?P<id>\d+)(/)?', 'defaults' => [ 'controller' => 'dns\page\DomainEditPage' ], 'spec' => '/DomainEdit/%id%' ])); | |
2aa91ff2 | 39 | |
44d399bc S |
40 | $match = $router->match(new Request()); |
41 | if ($match !== null) { | |
42 | foreach ($match->getParams() as $key => $value) { | |
43 | $_GET[$key] = $value; | |
44 | $_REQUEST[$key] = $value; | |
ff49a0be | 45 | } |
44d399bc S |
46 | |
47 | $className = $match->getParam("controller"); | |
48 | ||
49 | if (!User::isLoggedIn() && $className != 'dns\page\LoginPage' && $className != 'dns\page\ApiPage') { | |
50 | echo $className; | |
51 | DNS::getTPL()->display('login.tpl'); | |
ff49a0be S |
52 | exit; |
53 | } | |
2aa91ff2 | 54 | |
44d399bc S |
55 | if (defined('OFFLINE') && OFFLINE) { |
56 | $admin = User::isAdmin(); | |
57 | $available = false; | |
58 | ||
59 | if (defined($className . '::AVAILABLE_DURING_OFFLINE_MODE') && constant($className . '::AVAILABLE_DURING_OFFLINE_MODE')) { | |
60 | $available = true; | |
61 | } | |
62 | ||
63 | if (!$admin && !$available) { | |
64 | @header('HTTP/1.1 503 Service Unavailable'); | |
65 | DNS::getTPL()->display('offline.tpl'); | |
66 | exit; | |
67 | } | |
2aa91ff2 S |
68 | } |
69 | ||
44d399bc S |
70 | try { |
71 | new $className(); | |
72 | } | |
73 | catch (\Exception $e) { | |
74 | if ($e->getCode() == 404) { | |
75 | @header('HTTP/1.0 404 Not Found'); | |
76 | } | |
77 | else if ($e->getCode() == 403) { | |
78 | @header('HTTP/1.0 403 Forbidden'); | |
79 | } | |
80 | ||
81 | // show error page | |
82 | DNS::getTPL()->assign(array("activeMenuItem" => '', "error" => $e->getMessage())); | |
83 | DNS::getTPL()->display('error.tpl'); | |
2aa91ff2 S |
84 | exit; |
85 | } | |
86 | } | |
44d399bc S |
87 | else { |
88 | @header('HTTP/1.0 404 Not Found'); | |
89 | DNS::getTPL()->assign(array("activeMenuItem" => '', "error" => 'The link you are trying to reach is no longer available or invalid.')); | |
2aa91ff2 S |
90 | DNS::getTPL()->display('error.tpl'); |
91 | exit; | |
92 | } | |
93 | } | |
94 | } |