Пример #1
0
 /**
  * @return string
  */
 private function fileCachedPage()
 {
     $context = RequestContext::getMain();
     if ($context->getOutput()->isDisabled()) {
         // Done already?
         return '';
     }
     if ($context->getTitle()) {
         // Use the main context's title if we managed to set it
         $t = $context->getTitle()->getPrefixedDBkey();
     } else {
         // Fallback to the raw title URL param. We can't use the Title
         // class is it may hit the interwiki table and give a DB error.
         // We may get a cache miss due to not sanitizing the title though.
         $t = str_replace(' ', '_', $context->getRequest()->getVal('title'));
         if ($t == '') {
             // fallback to main page
             $t = Title::newFromText($this->msg('mainpage', 'Main Page'))->getPrefixedDBkey();
         }
     }
     $cache = new HTMLFileCache($t, 'view');
     if ($cache->isCached()) {
         return $cache->fetchText();
     } else {
         return '';
     }
 }
Пример #2
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');
 }