diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2012-05-03 13:01:35 +0200 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2012-05-03 13:01:35 +0200 |
commit | d9022f63880ce039446fba8364f68e656b7bf4cb (patch) | |
tree | 16b40fbf17bf7c9ee6f4ead25b16dd192378050a /includes/parser/ParserOutput.php | |
parent | 27cf83d177256813e2e802241085fce5dd0f3fb9 (diff) |
Update to MediaWiki 1.19.0
Diffstat (limited to 'includes/parser/ParserOutput.php')
-rw-r--r-- | includes/parser/ParserOutput.php | 87 |
1 files changed, 51 insertions, 36 deletions
diff --git a/includes/parser/ParserOutput.php b/includes/parser/ParserOutput.php index 403b6625..2d99a3b5 100644 --- a/includes/parser/ParserOutput.php +++ b/includes/parser/ParserOutput.php @@ -5,7 +5,7 @@ * @file * @ingroup Parser */ - + /** * @todo document * @ingroup Parser @@ -16,7 +16,7 @@ class CacheTime { $mCacheTime = '', # Time when this object was generated, or -1 for uncacheable. Used in ParserCache. $mCacheExpiry = null, # Seconds after which the object should expire, use 0 for uncachable. Used in ParserCache. $mContainsOldMagic; # Boolean variable indicating if the input contained variables like {{CURRENTDAY}} - + function getCacheTime() { return $this->mCacheTime; } function containsOldMagic() { return $this->mContainsOldMagic; } @@ -30,17 +30,17 @@ class CacheTime { */ 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, + * 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 + * or equal to the smallest number that was provided as an argument to * updateCacheExpiry(). * * @param $seconds number */ - function updateCacheExpiry( $seconds ) { + function updateCacheExpiry( $seconds ) { $seconds = (int)$seconds; if ( $this->mCacheExpiry === null || $this->mCacheExpiry > $seconds ) { @@ -52,23 +52,23 @@ class CacheTime { $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 + * 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() { + function getCacheExpiry() { global $wgParserCacheExpireTime; if ( $this->mCacheTime < 0 ) { return 0; } // old-style marker for "not cachable" - $expire = $this->mCacheExpiry; + $expire = $this->mCacheExpiry; if ( $expire === null ) { $expire = $wgParserCacheExpireTime; @@ -78,7 +78,7 @@ class CacheTime { if( $this->containsOldMagic() ) { //compatibility hack $expire = min( $expire, 3600 ); # 1 hour - } + } if ( $expire <= 0 ) { return 0; // not cachable @@ -90,7 +90,7 @@ class CacheTime { /** * @return bool */ - function isCacheable() { + function isCacheable() { return $this->getCacheExpiry() > 0; } @@ -105,14 +105,14 @@ class CacheTime { 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" ); - } + $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 @@ -122,7 +122,7 @@ class ParserOutput extends CacheTime { $mTemplates = array(), # 2-D map of NS/DBK to ID for the template references. ID=zero for broken. $mTemplateIds = array(), # 2-D map of NS/DBK to rev ID for the template references. ID=zero for broken. $mImages = array(), # DB keys of the images used, in the array key only - $mImageTimeKeys = array(), # DB keys of the images used mapped to sha1 and MW timestamp + $mFileSearchOptions = array(), # DB keys of the images used mapped to sha1 and MW timestamp $mExternalLinks = array(), # External link URLs, in the key only $mInterwikiLinks = array(), # 2-D map of prefix/DBK (in keys only) for the inline interwiki links in the document. $mNewSection = false, # Show a new section link? @@ -138,8 +138,9 @@ class ParserOutput extends CacheTime { $mSections = array(), # Table of contents $mEditSectionTokens = false, # prefix/suffix markers if edit sections were output as tokens $mProperties = array(), # Name/value pairs to be cached in the DB - $mTOCHTML = ''; # HTML of the TOC - private $mIndexPolicy = ''; # 'index' or 'noindex'? Any other value will result in no change. + $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) const EDITSECTION_REGEX = '#<(?:mw:)?editsection page="(.*?)" section="(.*?)"(?:/>|>(.*?)(</(?:mw:)?editsection>))#'; @@ -158,12 +159,10 @@ class ParserOutput extends CacheTime { if ( $this->mEditSectionTokens ) { return preg_replace_callback( ParserOutput::EDITSECTION_REGEX, array( &$this, 'replaceEditSectionLinksCallback' ), $this->mText ); - } else { - return preg_replace( ParserOutput::EDITSECTION_REGEX, '', $this->mText ); } - return $this->mText; + return preg_replace( ParserOutput::EDITSECTION_REGEX, '', $this->mText ); } - + /** * callback used by getText to replace editsection tokens * @private @@ -195,7 +194,7 @@ class ParserOutput extends CacheTime { function &getTemplates() { return $this->mTemplates; } function &getTemplateIds() { return $this->mTemplateIds; } function &getImages() { return $this->mImages; } - function &getImageTimeKeys() { return $this->mImageTimeKeys; } + function &getFileSearchOptions() { return $this->mFileSearchOptions; } function &getExternalLinks() { return $this->mExternalLinks; } function getNoGallery() { return $this->mNoGallery; } function getHeadItems() { return $this->mHeadItems; } @@ -207,6 +206,7 @@ class ParserOutput extends CacheTime { function getWarnings() { return array_keys( $this->mWarnings ); } function getIndexPolicy() { return $this->mIndexPolicy; } function getTOCHTML() { return $this->mTOCHTML; } + function getTimestamp() { return $this->mTimestamp; } function setText( $text ) { return wfSetVar( $this->mText, $text ); } function setLanguageLinks( $ll ) { return wfSetVar( $this->mLanguageLinks, $ll ); } @@ -217,6 +217,7 @@ class ParserOutput extends CacheTime { function setEditSectionTokens( $t ) { return wfSetVar( $this->mEditSectionTokens, $t ); } function setIndexPolicy( $policy ) { return wfSetVar( $this->mIndexPolicy, $policy ); } function setTOCHTML( $tochtml ) { return wfSetVar( $this->mTOCHTML, $tochtml ); } + function setTimestamp( $timestamp ) { return wfSetVar( $this->mTimestamp, $timestamp ); } function addCategory( $c, $sort ) { $this->mCategories[$c] = $sort; } function addLanguageLink( $t ) { $this->mLanguageLinks[] = $t; } @@ -243,7 +244,7 @@ class ParserOutput extends CacheTime { # We don't register links pointing to our own server, unless... :-) global $wgServer, $wgRegisterInternalExternals; if( $wgRegisterInternalExternals or stripos($url,$wgServer.'/')!==0) - $this->mExternalLinks[$url] = 1; + $this->mExternalLinks[$url] = 1; } /** @@ -284,13 +285,13 @@ class ParserOutput extends CacheTime { * Register a file dependency for this output * @param $name string Title dbKey * @param $timestamp string MW timestamp of file creation (or false if non-existing) - * @param $sha string base 36 SHA-1 of file (or false if non-existing) + * @param $sha1 string base 36 SHA-1 of file (or false if non-existing) * @return void */ function addImage( $name, $timestamp = null, $sha1 = null ) { $this->mImages[$name] = 1; if ( $timestamp !== null && $sha1 !== null ) { - $this->mImageTimeKeys[$name] = array( 'time' => $timestamp, 'sha1' => $sha1 ); + $this->mFileSearchOptions[$name] = array( 'time' => $timestamp, 'sha1' => $sha1 ); } } @@ -313,7 +314,7 @@ class ParserOutput extends CacheTime { } $this->mTemplateIds[$ns][$dbk] = $rev_id; // For versioning } - + /** * @param $title Title object, must be an interwiki link * @throws MWException if given invalid input @@ -341,7 +342,7 @@ class ParserOutput extends CacheTime { $this->mHeadItems[] = $section; } } - + public function addModules( $modules ) { $this->mModules = array_merge( $this->mModules, (array) $modules ); } @@ -359,6 +360,20 @@ class ParserOutput extends CacheTime { } /** + * Copy items from the OutputPage object into this one + * + * @param $out OutputPage object + */ + public function addOutputPageMetadata( OutputPage $out ) { + $this->addModules( $out->getModules() ); + $this->addModuleScripts( $out->getModuleScripts() ); + $this->addModuleStyles( $out->getModuleStyles() ); + $this->addModuleMessages( $out->getModuleMessages() ); + + $this->mHeadItems = array_merge( $this->mHeadItems, $out->getHeadItemsArray() ); + } + + /** * Override the title to be used for display * -- this is assumed to have been validated * (check equal normalisation, etc.) @@ -411,10 +426,10 @@ class ParserOutput extends CacheTime { } return $this->mProperties; } - - + + /** - * Returns the options from its ParserOptions which have been taken + * Returns the options from its ParserOptions which have been taken * into account to produce this output or false if not available. * @return mixed Array */ @@ -424,7 +439,7 @@ class ParserOutput extends CacheTime { } return array_keys( $this->mAccessedOptions ); } - + /** * Callback passed by the Parser to the ParserOptions to keep track of which options are used. * @access private |