1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace App\Router;
13:
14: use Nette,
15: Nette\Application\Routers\RouteList,
16: Nette\Application\Routers\Route,
17: App\Lib\Table,
18: App\Model\Database,
19: App\Lib\Statics\Cons;
20:
21: 22: 23:
24: class RouterFactory {
25:
26: 27: 28: 29:
30: public static function getModules(Database $database) {
31: $modules = new Table(Cons::TABLE_MODULE, $database);
32: return $modules->getData()->where(Cons::COLUMN_ACTIVE, true);
33: }
34:
35: 36: 37: 38: 39:
40: public static function getRouteString(\Nette\Database\Table\ActiveRow $row) {
41: return (string)
42: ':' . $row[Cons::TABLE_PRESENTER][Cons::TABLE_MODULE][Cons::COLUMN_DIR] .
43: ':' . $row[Cons::TABLE_PRESENTER][Cons::COLUMN_NAME] .
44: ':' . $row[Cons::COLUMN_ACTION];
45: }
46:
47: 48: 49: 50: 51:
52: public static function getRouteArray($row) {
53: return array(
54: 'module' => $row[Cons::TABLE_PRESENTER][Cons::TABLE_MODULE][Cons::COLUMN_DIR],
55: 'presenter' => $row[Cons::TABLE_PRESENTER][Cons::COLUMN_NAME],
56: 'action' => $row[Cons::COLUMN_ACTION],
57: 'source' => NULL,
58: 'id' => NULL);
59: }
60:
61: 62: 63: 64:
65: public static function createRouter(Database $database) {
66: $table = (new Table(Cons::TABLE_SOURCE, $database))->data;
67: $router = new RouteList();
68: $router[] = new Route('<module>/<presenter>/<action>[/<source>[/<id>]]', RouterFactory::getLoginLink());
69: foreach ($table as $row) {
70: $router[] = new Route('<module>/<presenter>/<action>[/<source>[/<id>]]', RouterFactory::getRouteArray($row));
71: }
72: return $router;
73: }
74:
75: 76: 77: 78:
79: private static function getLoginLink() {
80: return array(
81: 'module' => 'Base',
82: 'presenter' => 'Sign',
83: 'action' => 'in',
84: 'source' => 0,
85: 'id' => NULL);
86: }
87: }
88: