/** * @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; }