/** * 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. } }
/** * 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); } } }
/** * 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())); } } }