Ejemplo n.º 1
0
 /**
  * Run the current MediaWiki instance; index.php just calls this
  */
 public function run()
 {
     try {
         $this->setDBProfilingAgent();
         try {
             $this->main();
         } catch (ErrorPageError $e) {
             // Bug 62091: while exceptions are convenient to bubble up GUI errors,
             // they are not internal application faults. As with normal requests, this
             // should commit, print the output, do deferred updates, jobs, and profiling.
             $this->doPreOutputCommit();
             $e->report();
             // display the GUI error
         }
     } catch (Exception $e) {
         $context = $this->context;
         $action = $context->getRequest()->getVal('action', 'view');
         if ($e instanceof DBConnectionError && $context->hasTitle() && $context->getTitle()->canExist() && in_array($action, ['view', 'history'], true) && HTMLFileCache::useFileCache($this->context, HTMLFileCache::MODE_OUTAGE)) {
             // Try to use any (even stale) file during outages...
             $cache = new HTMLFileCache($context->getTitle(), 'view');
             if ($cache->isCached()) {
                 $cache->loadFromFileCache($context, HTMLFileCache::MODE_OUTAGE);
                 print MWExceptionRenderer::getHTML($e);
                 exit;
             }
         }
         MWExceptionHandler::handleException($e);
     }
     $this->doPostOutputShutdown('normal');
 }