<option value=0<?php if (!TBGSettings::isMaintenanceModeEnabled()) { ?> selected<?php } ?> ><?php echo __('No'); ?> </option> </select> <?php } else { ?> <?php echo TBGSettings::isMaintenanceModeEnabled() ? __('Yes') : __('No'); ?> <?php } ?> </td> <tr> <td class="config_explanation" colspan="2"><?php echo __('In maintenance mode, access to The Bug Genie will be disabled, except for the Configuration pages. This allows you to perform upgrades and other maintance without interruption. Please remember that if you log out, you will be unable to log back in again whilst maintenace mode is enabled.'); ?> </td> </tr> <tr> <td><label for="offline_msg"><?php echo __('Maintenance mode message'); ?>
$link = TBGSettings::getHeaderLink() == '' ? TBGContext::getTBGPath() : TBGSettings::getHeaderLink(); ?> <a class="logo" href="<?php print $link; ?> "><?php echo image_tag(TBGSettings::getHeaderIconUrl(), array('style' => 'max-height: 24px;'), TBGSettings::isUsingCustomHeaderIcon()); ?> </a> <div class="logo_name"><?php echo TBGSettings::getTBGname(); ?> </div> </div> <?php if (!TBGSettings::isMaintenanceModeEnabled()) { ?> <?php if (TBGEvent::createNew('core', 'header_mainmenu_decider')->trigger()->getReturnValue() !== false) { ?> <?php require THEBUGGENIE_CORE_PATH . 'templates/headermainmenu.inc.php'; ?> <?php } ?> <nav class="tab_menu header_menu" id="header_userinfo"> <div class="notifications" id="user_notifications"> <h1> <?php echo __('Your notifications');
/** * Performs an action * * @param string $module Name of the action module * @param string $method Name of the action method to run */ public static function performAction($action, $module, $method) { // Set content variable $content = null; // Set the template to be used when rendering the html (or other) output $templatePath = THEBUGGENIE_MODULES_PATH . $module . DS . 'templates' . DS; $actionClassName = get_class($action); $actionToRunName = 'run' . ucfirst($method); $preActionToRunName = 'pre' . ucfirst($method); // Set up the response object, responsible for controlling any output self::getResponse()->setPage(self::getRouting()->getCurrentRouteName()); self::getResponse()->setTemplate(mb_strtolower($method) . '.' . TBGContext::getRequest()->getRequestedFormat() . '.php'); self::getResponse()->setupResponseContentType(self::getRequest()->getRequestedFormat()); self::setCurrentProject(null); // Run the specified action method set if it exists if (method_exists($action, $actionToRunName)) { // Turning on output buffering ob_start('mb_output_handler'); ob_implicit_flush(0); if (self::getRouting()->isCurrentRouteCSRFenabled()) { // If the csrf check fails, don't proceed if (!self::checkCSRFtoken(true)) { return true; } } if (self::$_debug_mode) { $time = explode(' ', microtime()); $pretime = $time[1] + $time[0]; } if ($content === null) { TBGLogging::log('Running main pre-execute action'); // Running any overridden preExecute() method defined for that module // or the default empty one provided by TBGAction if ($pre_action_retval = $action->preExecute(self::getRequest(), $method)) { $content = ob_get_clean(); TBGLogging::log('preexecute method returned something, skipping further action'); if (self::$_debug_mode) { $visited_templatename = "{$actionClassName}::preExecute()"; } } } if ($content === null) { $action_retval = null; if (self::getResponse()->getHttpStatus() == 200) { // Checking for and running action-specific preExecute() function if // it exists if (method_exists($action, $preActionToRunName)) { TBGLogging::log('Running custom pre-execute action'); $action->{$preActionToRunName}(self::getRequest(), $method); } // Running main route action TBGLogging::log('Running route action ' . $actionToRunName . '()'); if (self::$_debug_mode) { $time = explode(' ', microtime()); $action_pretime = $time[1] + $time[0]; } $action_retval = $action->{$actionToRunName}(self::getRequest()); if (self::$_debug_mode) { $time = explode(' ', microtime()); $action_posttime = $time[1] + $time[0]; TBGContext::visitPartial("{$actionClassName}::{$actionToRunName}", $action_posttime - $action_pretime); } } if (self::getResponse()->getHttpStatus() == 200 && $action_retval) { // If the action returns *any* output, we're done, and collect the // output to a variable to be outputted in context later $content = ob_get_clean(); TBGLogging::log('...done'); } elseif (!$action_retval) { // If the action doesn't return any output (which it usually doesn't) // we continue on to rendering the template file for that specific action TBGLogging::log('...done'); TBGLogging::log('Displaying template'); // Check to see if we have a translated version of the template if ($method != 'notFound' && (!self::isReadySetup() || ($templateName = self::getI18n()->hasTranslatedTemplate(self::getResponse()->getTemplate())) === false)) { // Check to see if any modules provide an alternate template $event = TBGEvent::createNew('core', "TBGContext::performAction::renderTemplate")->triggerUntilProcessed(array('class' => $actionClassName, 'action' => $actionToRunName)); if ($event->isProcessed()) { $templateName = $event->getReturnValue(); } // Check to see if the template has been changed, and whether it's in a // different module, specified by "module/templatename" if (mb_strpos(self::getResponse()->getTemplate(), '/')) { $newPath = explode('/', self::getResponse()->getTemplate()); $templateName = THEBUGGENIE_MODULES_PATH . $newPath[0] . DS . 'templates' . DS . $newPath[1] . '.' . TBGContext::getRequest()->getRequestedFormat() . '.php'; } else { $templateName = $templatePath . self::getResponse()->getTemplate(); } } // Check to see if the template exists and throw an exception otherwise if (!file_exists($templateName)) { TBGLogging::log('The template file for the ' . $method . ' action ("' . self::getResponse()->getTemplate() . '") does not exist', 'core', TBGLogging::LEVEL_FATAL); throw new TBGTemplateNotFoundException('The template file for the ' . $method . ' action ("' . self::getResponse()->getTemplate() . '") does not exist'); } self::loadLibrary('common'); // Present template for current action TBGActionComponent::presentTemplate($templateName, $action->getParameterHolder()); $content = ob_get_clean(); TBGLogging::log('...completed'); } } elseif (self::$_debug_mode) { $time = explode(' ', microtime()); $posttime = $time[1] + $time[0]; TBGContext::visitPartial($visited_templatename, $posttime - $pretime); } if (!isset($tbg_response)) { /** * @global TBGRequest The request object */ $tbg_request = self::getRequest(); /** * @global TBGUser The user object */ $tbg_user = self::getUser(); /** * @global TBGResponse The action object */ $tbg_response = self::getResponse(); // Load the "ui" library, since this is used a lot self::loadLibrary('ui'); } self::loadLibrary('common'); TBGLogging::log('rendering final content'); if (TBGSettings::isMaintenanceModeEnabled() && !mb_strstr(self::getRouting()->getCurrentRouteName(), 'configure')) { if (!file_exists(THEBUGGENIE_CORE_PATH . 'templates/offline.inc.php')) { throw new TBGTemplateNotFoundException('Can not find offline mode template'); } ob_start('mb_output_handler'); ob_implicit_flush(0); require THEBUGGENIE_CORE_PATH . 'templates/offline.inc.php'; $content = ob_get_clean(); } // Render output in correct order self::getResponse()->renderHeaders(); if (self::getResponse()->getDecoration() == TBGResponse::DECORATE_DEFAULT && !self::getRequest()->isAjaxCall()) { ob_start('mb_output_handler'); ob_implicit_flush(0); require THEBUGGENIE_CORE_PATH . 'templates/layout.php'; ob_flush(); } else { // Render header template if any, and store the output in a variable if (!self::getRequest()->isAjaxCall() && self::getResponse()->doDecorateHeader()) { TBGLogging::log('decorating with header'); if (!file_exists(self::getResponse()->getHeaderDecoration())) { throw new TBGTemplateNotFoundException('Can not find header decoration: ' . self::getResponse()->getHeaderDecoration()); } require self::getResponse()->getHeaderDecoration(); } echo $content; TBGLogging::log('...done (rendering content)'); // Render footer template if any if (!self::getRequest()->isAjaxCall() && self::getResponse()->doDecorateFooter()) { TBGLogging::log('decorating with footer'); if (!file_exists(self::getResponse()->getFooterDecoration())) { throw new TBGTemplateNotFoundException('Can not find footer decoration: ' . self::getResponse()->getFooterDecoration()); } require self::getResponse()->getFooterDecoration(); } TBGLogging::log('...done'); } TBGLogging::log('done (rendering final content)'); if (self::isReadySetup() && self::isDebugMode()) { self::getI18n()->addMissingStringsToStringsFile(); } return true; } else { TBGLogging::log("Cannot find the method {$actionToRunName}() in class {$actionClassName}.", 'core', TBGLogging::LEVEL_FATAL); throw new TBGActionNotFoundException("Cannot find the method {$actionToRunName}() in class {$actionClassName}. Make sure the method exists."); } }