/**
  * Construct.
  *
  */
 public function __construct()
 {
     parent::__construct();
     $this->set('documentation', function () {
         $fc = new \Anax\Content\CFileContent();
         $fc->setBasePath(ANAX_INSTALL_PATH . 'docs/');
         return $fc;
     });
 }
 /**
  * Construct.
  *
  */
 public function __construct()
 {
     parent::__construct();
     $this->set('documentation', function () {
         $fc = new \Anax\Content\CFileContent();
         $fc->setBasePath(ANAX_INSTALL_PATH . 'docs/documentation');
         return $fc;
     });
     $this->theme->setVariable('style', "article {max-width: 650px;}");
     $this->theme->setBaseTitle(" - Anax documentation");
 }
 /**
  * Construct.
  *
  */
 public function __construct()
 {
     parent::__construct();
     require ANAX_APP_PATH . 'config/error_reporting.php';
     $this->setShared('response', '\\Anax\\Response\\CResponseBasic');
     $this->setShared('validate', '\\Anax\\Validate\\CValidate');
     $this->setShared('flash', '\\Anax\\Flash\\CFlashBasic');
     $this->set('route', '\\Anax\\Route\\CRouteBasic');
     $this->set('view', '\\Anax\\View\\CViewBasic');
     $this->set('ErrorController', function () {
         $controller = new \Anax\MVC\ErrorController();
         $controller->setDI($this);
         return $controller;
     });
     $this->setShared('log', function () {
         $log = new \Anax\Log\CLogger();
         $log->setContext('development');
         return $log;
     });
     $this->setShared('request', function () {
         $request = new \Anax\Request\CRequestBasic();
         $request->init();
         return $request;
     });
     $this->setShared('url', function () {
         $url = new \Anax\Url\CUrl();
         $url->setSiteUrl($this->request->getSiteUrl());
         $url->setBaseUrl($this->request->getBaseUrl());
         $url->setStaticSiteUrl($this->request->getSiteUrl());
         $url->setStaticBaseUrl($this->request->getBaseUrl());
         $url->setScriptName($this->request->getScriptName());
         $url->setUrlType($url::URL_APPEND);
         return $url;
     });
     $this->setShared('views', function () {
         $views = new \Anax\View\CViewContainerBasic();
         $views->setBasePath(ANAX_APP_PATH . 'view');
         $views->setFileSuffix('.tpl.php');
         $views->setDI($this);
         return $views;
     });
     $this->setShared('router', function () {
         $router = new \Anax\Route\CRouterBasic();
         $router->setDI($this);
         $router->addInternal('403', function () {
             $this->dispatcher->forward(['controller' => 'error', 'action' => 'statusCode', 'params' => ['code' => 403, 'message' => "HTTP Status Code 403: This is a forbidden route."]]);
         })->setName('403');
         $router->addInternal('404', function () {
             $this->dispatcher->forward(['controller' => 'error', 'action' => 'statusCode', 'params' => ['code' => 404, 'message' => "HTTP Status Code 404: This route is not found."]]);
             $this->dispatcher->forward(['controller' => 'error', 'action' => 'displayValidRoutes']);
         })->setName('404');
         $router->addInternal('500', function () {
             $this->dispatcher->forward(['controller' => 'error', 'action' => 'statusCode', 'params' => ['code' => 500, 'message' => "HTTP Status Code 500: There was an internal server or processing error."]]);
         })->setName('500');
         return $router;
     });
     $this->setShared('dispatcher', function () {
         $dispatcher = new \Anax\MVC\CDispatcherBasic();
         $dispatcher->setDI($this);
         return $dispatcher;
     });
     $this->setShared('session', function () {
         $session = new \Anax\Session\CSession();
         $session->configure(ANAX_APP_PATH . 'config/session.php');
         $session->name();
         $session->start();
         return $session;
     });
     $this->setShared('theme', function () {
         $themeEngine = new \Anax\ThemeEngine\CThemeBasic();
         $themeEngine->setDI($this);
         $themeEngine->configure(ANAX_APP_PATH . 'config/theme.php');
         return $themeEngine;
     });
     $this->setShared('navbar', function () {
         $navbar = new \Anax\Navigation\CNavbar();
         $navbar->setDI($this);
         $navbar->configure(ANAX_APP_PATH . 'config/navbar.php');
         return $navbar;
     });
     $this->set('fileContent', function () {
         $fc = new \Anax\Content\CFileContent();
         $fc->setBasePath(ANAX_APP_PATH . 'content/');
         return $fc;
     });
     $this->setShared('textFilter', function () {
         $filter = new \Anax\Content\CTextFilter();
         $filter->setDI($this);
         $filter->configure(ANAX_APP_PATH . 'config/text_filter.php');
         return $filter;
     });
 }