/**
  * 
  * @param type $options
  */
 public function __construct($options = array())
 {
     parent::__construct($options);
     // schedule disconnect from database
     Events::add('framework.controller.destruct.after', function ($name) {
         $database = Registry::get('database');
         $database->disconnect();
     });
     $this->_security = Registry::get('security');
     $this->_serverHost = RequestMethods::server('HTTP_HOST');
     $this->_cache = Registry::get('cache');
     $cfg = Registry::get('configuration');
     $links = $this->getCache()->get('links');
     if ($links !== null) {
         $links = $links;
     } else {
         $links = \App_Model_Link::all(array('active = ?' => true));
         $this->getCache()->set('links', $links);
     }
     $metaData = $this->getCache()->get('global_meta_data');
     if ($metaData !== null) {
         $metaData = $metaData;
     } else {
         $metaData = array('metadescription' => $cfg->meta_description, 'metarobots' => $cfg->meta_robots, 'metatitle' => $cfg->meta_title, 'metaogurl' => $cfg->meta_og_url, 'metaogtype' => $cfg->meta_og_type, 'metaogimage' => $cfg->meta_og_image, 'metaogsitename' => $cfg->meta_og_site_name);
         $this->getCache()->set('global_meta_data', $metaData);
     }
     $this->getLayoutView()->set('links', $links)->set('metatitle', $metaData['metatitle'])->set('metarobots', $metaData['metarobots'])->set('metadescription', $metaData['metadescription'])->set('metaogurl', $metaData['metaogurl'])->set('metaogtype', $metaData['metaogtype'])->set('metaogimage', $metaData['metaogimage'])->set('metaogsitename', $metaData['metaogsitename']);
 }
 /**
  * 
  * @param type $options
  */
 public function __construct($options = array())
 {
     parent::__construct($options);
     $this->connect();
     Event::add('framework.controller.destruct.after', function ($name) {
         $cache = Registry::get('cache');
         $cache->disconnect();
     });
 }
 /**
  * 
  * @param type $options
  */
 public function __construct($options = array())
 {
     parent::__construct($options);
     $this->_security = Registry::get('security');
     // schedule disconnect from database
     Events::add('framework.controller.destruct.after', function ($name) {
         $database = Registry::get('database');
         $database->disconnect();
     });
 }
 /**
  * Create module-specific events
  */
 private function addModuleEvents()
 {
     if ($this->getObserverClass() !== null) {
         $obsClass = $this->getObserverClass();
         $moduleObserver = new $obsClass();
         if ($moduleObserver instanceof SubscriberInterface) {
             $events = $moduleObserver->getSubscribedEvents();
             foreach ($events as $name => $callback) {
                 if (is_array($callback)) {
                     foreach ($callback as $call) {
                         Event::add($name, array($moduleObserver, $call));
                     }
                 } else {
                     Event::add($name, array($moduleObserver, $callback));
                 }
             }
         }
     }
 }
 /**
  * Method initialize security context. Check session for user token and
  * initialize authentication and authorization classes
  */
 public function initialize($configuration)
 {
     Event::fire('framework.security.initialize.before', array());
     if (!empty($configuration->security)) {
         $this->_csrf = new CSRF();
         $this->_passwordManager = new PasswordManager($configuration->security);
     } else {
         throw new \Exception('Error in configuration file');
     }
     $session = Registry::get('session');
     $user = $session->get('authUser');
     $authentication = new Authentication\Authentication();
     $this->_authentication = $authentication->initialize($configuration);
     $authorization = new Authorization\Authorization();
     $this->_authorization = $authorization->initialize($configuration);
     if ($user instanceof BasicUser) {
         $this->_user = $user;
         Event::fire('framework.security.initialize.user', array($user));
     }
     if ($this->_authorization->type == 'resourcebase') {
         Event::add('framework.router.findroute.after', function ($path) {
             $role = $this->getAuthorization()->checkForResource($path);
             if ($role !== null) {
                 if ($this->isGranted($role) !== true) {
                     throw new \THCFrame\Security\Exception\Unauthorized();
                 }
             }
         });
     }
     Event::fire('framework.security.initialize.after', array());
     return $this;
 }