/**
  * Clears the session variable namespace used by the Users module.
  *
  * Triggered by the 'user.logout.succeeded' and 'frontcontroller.exception' events.
  *
  * This is to ensure no leakage of authentication information across sessions or between critical
  * errors. This prevents, for example, the login process from becoming confused about its state
  * if it detects session variables containing authentication information which might make it think
  * that a re-attempt is in progress.
  *
  * @param GenericEvent $event The event that triggered this handler.
  *
  * @return void
  */
 public static function clearUsersNamespaceListener(GenericEvent $event)
 {
     $eventName = $event->getName();
     $modinfo = $event->hasArg('modinfo') ? $event->getArg('modinfo') : array();
     $doClear = $eventName == 'user.logout.succeeded' || $eventName == 'frontcontroller.exception' && isset($modinfo) && is_array($modinfo) && !empty($modinfo) && !isset($modinfo['name']) && $modinfo['name'] == self::$modname;
     if ($doClear) {
         $container = ServiceUtil::getManager();
         $session = $container->get('session');
         $session->clearNamespace('Zikula_Users');
         //Do not setNotified. Not handling the exception, just reacting to it.
     }
 }
Exemplo n.º 2
0
 /**
  * Handle module install event "installer.module.installed".
  * Receives $modinfo as $args
  *
  * @param GenericEvent $event
  *
  * @return void
  */
 public function moduleInstall(GenericEvent $event)
 {
     $mod = $event->getName();
     // determine search capability
     if (ModUtil::apiFunc($mod, 'search', 'info')) {
         // get all search blocks
         $blocks = BlockUtil::getBlocksInfo();
         foreach ($blocks as $block) {
             $block = $block->toArray();
             if ($block['bkey'] != 'ZikulaSearchModule') {
                 continue;
             }
             $content = BlockUtil::varsFromContent($block['content']);
             if (!isset($content['active'])) {
                 $content['active'] = array();
             }
             $content['active'][$mod] = 1;
             $block['content'] = BlockUtil::varsToContent($content);
             ModUtil::apiFunc('ZikulaBlocksModule', 'admin', 'update', $block);
         }
     }
 }
Exemplo n.º 3
0
 /**
  * Debug toolbar rendering (listener for 'theme.prefetch' and 'theme.postfetch' events).
  *
  * @param GenericEvent $event Event.
  *
  * @return void
  */
 public function debugToolbarRendering(GenericEvent $event)
 {
     if (!$event->getSubject() instanceof \Zikula_ErrorHandler_Ajax) {
         if ($event->getName() == 'theme.prefetch') {
             // force object construction (debug toolbar constructor registers javascript and css files via PageUtil)
             $this->container->get('debug.toolbar');
         } else {
             $toolbar = $this->container->get('debug.toolbar');
             $html = $toolbar->getContent() . "\n</body>";
             $event->setData(str_replace('</body>', $html, $event->getData()));
         }
     }
 }