예제 #1
0
 /**
  * @return bool
  */
 function doWork()
 {
     global $wgParser, $wgUseFileCache;
     $isCurrent = $this->revid === $this->page->getLatest();
     if ($this->text !== null) {
         $text = $this->text;
     } elseif ($isCurrent) {
         $text = $this->page->getRawText();
     } else {
         $rev = Revision::newFromTitle($this->page->getTitle(), $this->revid);
         if ($rev === null) {
             return false;
         }
         $text = $rev->getText();
     }
     $time = -microtime(true);
     $this->parserOutput = $wgParser->parse($text, $this->page->getTitle(), $this->parserOptions, true, true, $this->revid);
     $time += microtime(true);
     # Timing hack
     if ($time > 3) {
         wfDebugLog('slow-parse', sprintf("%-5.2f %s", $time, $this->page->getTitle()->getPrefixedDBkey()));
     }
     if ($this->cacheable && $this->parserOutput->isCacheable()) {
         ParserCache::singleton()->save($this->parserOutput, $this->page, $this->parserOptions);
     }
     // Make sure file cache is not used on uncacheable content.
     // Output that has magic words in it can still use the parser cache
     // (if enabled), though it will generally expire sooner.
     if (!$this->parserOutput->isCacheable() || $this->parserOutput->containsOldMagic()) {
         $wgUseFileCache = false;
     }
     if ($isCurrent) {
         $this->page->doCascadeProtectionUpdates($this->parserOutput);
     }
     return true;
 }