From 63601400e476c6cf43d985f3e7b9864681695ed4 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Fri, 18 Jan 2013 16:46:04 +0100 Subject: Update to MediaWiki 1.20.2 this update includes: * adjusted Arch Linux skin * updated FluxBBAuthPlugin * patch for https://bugzilla.wikimedia.org/show_bug.cgi?id=44024 --- includes/parser/ParserOutput.php | 175 ++++++++++++++------------------------- 1 file changed, 63 insertions(+), 112 deletions(-) (limited to 'includes/parser/ParserOutput.php') diff --git a/includes/parser/ParserOutput.php b/includes/parser/ParserOutput.php index 2d99a3b5..41b4a385 100644 --- a/includes/parser/ParserOutput.php +++ b/includes/parser/ParserOutput.php @@ -1,118 +1,26 @@ mCacheTime; } - - function containsOldMagic() { return $this->mContainsOldMagic; } - function setContainsOldMagic( $com ) { return wfSetVar( $this->mContainsOldMagic, $com ); } - - /** - * setCacheTime() sets the timestamp expressing when the page has been rendered. - * This doesn not control expiry, see updateCacheExpiry() for that! - * @param $t string - * @return string - */ - function setCacheTime( $t ) { return wfSetVar( $this->mCacheTime, $t ); } - - /** - * Sets the number of seconds after which this object should expire. - * This value is used with the ParserCache. - * If called with a value greater than the value provided at any previous call, - * the new call has no effect. The value returned by getCacheExpiry is smaller - * or equal to the smallest number that was provided as an argument to - * updateCacheExpiry(). - * - * @param $seconds number - */ - function updateCacheExpiry( $seconds ) { - $seconds = (int)$seconds; - - if ( $this->mCacheExpiry === null || $this->mCacheExpiry > $seconds ) { - $this->mCacheExpiry = $seconds; - } - - // hack: set old-style marker for uncacheable entries. - if ( $this->mCacheExpiry !== null && $this->mCacheExpiry <= 0 ) { - $this->mCacheTime = -1; - } - } - - /** - * Returns the number of seconds after which this object should expire. - * This method is used by ParserCache to determine how long the ParserOutput can be cached. - * The timestamp of expiry can be calculated by adding getCacheExpiry() to getCacheTime(). - * The value returned by getCacheExpiry is smaller or equal to the smallest number - * that was provided to a call of updateCacheExpiry(), and smaller or equal to the - * value of $wgParserCacheExpireTime. - */ - function getCacheExpiry() { - global $wgParserCacheExpireTime; - - if ( $this->mCacheTime < 0 ) { - return 0; - } // old-style marker for "not cachable" - - $expire = $this->mCacheExpiry; - - if ( $expire === null ) { - $expire = $wgParserCacheExpireTime; - } else { - $expire = min( $expire, $wgParserCacheExpireTime ); - } - - if( $this->containsOldMagic() ) { //compatibility hack - $expire = min( $expire, 3600 ); # 1 hour - } - - if ( $expire <= 0 ) { - return 0; // not cachable - } else { - return $expire; - } - } - - /** - * @return bool - */ - function isCacheable() { - return $this->getCacheExpiry() > 0; - } - - /** - * Return true if this cached output object predates the global or - * per-article cache invalidation timestamps, or if it comes from - * an incompatible older version. - * - * @param $touched String: the affected article's last touched timestamp - * @return Boolean - */ - public function expired( $touched ) { - global $wgCacheEpoch; - return !$this->isCacheable() || // parser says it's uncacheable - $this->getCacheTime() < $touched || - $this->getCacheTime() <= $wgCacheEpoch || - $this->getCacheTime() < wfTimestamp( TS_MW, time() - $this->getCacheExpiry() ) || // expiry period has passed - !isset( $this->mVersion ) || - version_compare( $this->mVersion, Parser::VERSION, "lt" ); - } -} - class ParserOutput extends CacheTime { var $mText, # The output text $mLanguageLinks, # List of the full text of language links, in the order they appear @@ -140,8 +48,9 @@ class ParserOutput extends CacheTime { $mProperties = array(), # Name/value pairs to be cached in the DB $mTOCHTML = '', # HTML of the TOC $mTimestamp; # Timestamp of the revision - private $mIndexPolicy = ''; # 'index' or 'noindex'? Any other value will result in no change. - private $mAccessedOptions = array(); # List of ParserOptions (stored in the keys) + private $mIndexPolicy = ''; # 'index' or 'noindex'? Any other value will result in no change. + private $mAccessedOptions = array(); # List of ParserOptions (stored in the keys) + private $mSecondaryDataUpdates = array(); # List of instances of SecondaryDataObject(), used to cause some information extracted from the page in a custom place. const EDITSECTION_REGEX = '#<(?:mw:)?editsection page="(.*?)" section="(.*?)"(?:/>|>(.*?)())#'; @@ -166,6 +75,7 @@ class ParserOutput extends CacheTime { /** * callback used by getText to replace editsection tokens * @private + * @return mixed */ function replaceEditSectionLinksCallback( $m ) { global $wgOut, $wgLang; @@ -331,7 +241,7 @@ class ParserOutput extends CacheTime { } /** - * Add some text to the . + * Add some text to the "". * If $tag is set, the section with that tag will only be included once * in a given page. */ @@ -447,4 +357,45 @@ class ParserOutput extends CacheTime { function recordOption( $option ) { $this->mAccessedOptions[$option] = true; } + + /** + * Adds an update job to the output. Any update jobs added to the output will eventually bexecuted in order to + * store any secondary information extracted from the page's content. + * + * @since 1.20 + * + * @param DataUpdate $update + */ + public function addSecondaryDataUpdate( DataUpdate $update ) { + $this->mSecondaryDataUpdates[] = $update; + } + + /** + * Returns any DataUpdate jobs to be executed in order to store secondary information + * extracted from the page's content, including a LinksUpdate object for all links stored in + * this ParserOutput object. + * + * @since 1.20 + * + * @param $title Title of the page we're updating. If not given, a title object will be created based on $this->getTitleText() + * @param $recursive Boolean: queue jobs for recursive updates? + * + * @return Array. An array of instances of DataUpdate + */ + public function getSecondaryDataUpdates( Title $title = null, $recursive = true ) { + if ( is_null( $title ) ) { + $title = Title::newFromText( $this->getTitleText() ); + } + + $linksUpdate = new LinksUpdate( $title, $this, $recursive ); + + if ( $this->mSecondaryDataUpdates === array() ) { + return array( $linksUpdate ); + } else { + $updates = array_merge( $this->mSecondaryDataUpdates, array( $linksUpdate ) ); + } + + return $updates; + } + } -- cgit v1.2.2