Context.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. namespace Tools;
  3. /**
  4. * Cms context
  5. * Contains all website informations
  6. * Will be passed to themes files and to modules
  7. **/
  8. class Context
  9. {
  10. /**
  11. * @var \Tools\Hooks $hookManager
  12. * /core/tools/Hooks.php
  13. * allow triggering hooks and registers module's endpoints
  14. * Can be accessed read-only via $instance->hookManager
  15. **/
  16. private $hookManager;
  17. /**
  18. * @var \Tools\ModuleManager $moduleManager
  19. * /core/tools/ModuleManager.php
  20. * load all active modules and contains informations about them
  21. * Can be accessed read-only via $instance->moduleManager
  22. **/
  23. private $moduleManager;
  24. /**
  25. * @var \Tools\Router $router
  26. * /core/tools/Router.php
  27. * Contains information about directories and paths
  28. * Allow user to generate links
  29. * Can be accessed read-only via $instance->router
  30. **/
  31. private $router;
  32. /**
  33. * TODO
  34. * @var \Tools\Cart $cart
  35. * /core/tools/Cart.php
  36. * Not defined yet
  37. * Can be accessed read-only via $instance->cart
  38. **/
  39. private $cart;
  40. /**
  41. * TODO
  42. * @var \Tools\User $user (entity ?)
  43. * /core/tools/User.php
  44. * Can be accessed read-only via $instance->user
  45. **/
  46. private $user;
  47. /**
  48. * @var \Tools\AController $controller
  49. * /core/tools/AController.php
  50. * Controller being called by user's request
  51. **/
  52. private $controller;
  53. /**
  54. * Create context from $_SERVER environment
  55. * and initialize all data
  56. **/
  57. public function __construct()
  58. {
  59. $this->hookManager = new Hooks($this);
  60. $this->router = new Router($this);
  61. if (!\Entity\ModelBase::init())
  62. {
  63. @require_once(getcwd().'/core/setup/index.php');
  64. die;
  65. }
  66. $this->router->init();
  67. $this->moduleManager = new ModuleManager($this);
  68. $this->hookManager->trigger("routerSetup");
  69. try
  70. {
  71. $this->controller = $this->router->serveUrl();
  72. if (!$this->controller)
  73. throw new \Exception\Error404();
  74. $this->controller->start();
  75. }
  76. catch (\Exception\Error404 $e)
  77. {
  78. echo "404";
  79. }
  80. }
  81. /**
  82. * Getter function
  83. **/
  84. public function __get($key)
  85. {
  86. switch ($key)
  87. {
  88. case "router": return $this->router; break;
  89. case "cart": return $this->cart; break;
  90. case "user": return $this->user; break;
  91. case "moduleManager": return $this->moduleManager; break;
  92. case "hookManager": return $this->hookManager; break;
  93. }
  94. throw new \Exception("Cannot access attribute {$key}");
  95. }
  96. }