X-Git-Url: https://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/banques/?a=blobdiff_plain;f=includes%2Fparser%2FParserOutput.php;h=bc805d8dc0da809d30c8fde15a3deabd134b4787;hb=2c5cd049a7199bb8b78d49456a80c5ee679f6551;hp=4ad252a7a75ae39dcf2aa0c69b218cc81e187ddd;hpb=bb7e5781a470cd100ffa8428cb8f4685dcdc6d06;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/parser/ParserOutput.php b/includes/parser/ParserOutput.php index 4ad252a7a7..bc805d8dc0 100644 --- a/includes/parser/ParserOutput.php +++ b/includes/parser/ParserOutput.php @@ -17,20 +17,18 @@ class ParserOutput $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 $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? + $mHideNewSection = false, # Hide the new section link? $mNoGallery = false, # No gallery on category page? (__NOGALLERY__) $mHeadItems = array(), # Items to put in the section $mOutputHooks = array(), # Hook tags as per $wgParserOutputHooks $mWarnings = array(), # Warning text to be returned to the user. Wikitext formatted, in the key only $mSections = array(), # Table of contents - $mProperties = array(); # Name/value pairs to be cached in the DB + $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. - /** - * Overridden title for display - */ - private $displayTitle = false; - function ParserOutput( $text = '', $languageLinks = array(), $categoryLinks = array(), $containsOldMagic = false, $titletext = '' ) { @@ -43,6 +41,7 @@ class ParserOutput function getText() { return $this->mText; } function &getLanguageLinks() { return $this->mLanguageLinks; } + function getInterwikiLinks() { return $this->mInterwikiLinks; } function getCategoryLinks() { return array_keys( $this->mCategories ); } function &getCategories() { return $this->mCategories; } function getCacheTime() { return $this->mCacheTime; } @@ -53,10 +52,12 @@ class ParserOutput function &getImages() { return $this->mImages; } function &getExternalLinks() { return $this->mExternalLinks; } function getNoGallery() { return $this->mNoGallery; } + function getHeadItems() { return $this->mHeadItems; } function getSubtitle() { return $this->mSubtitle; } function getOutputHooks() { return (array)$this->mOutputHooks; } function getWarnings() { return array_keys( $this->mWarnings ); } function getIndexPolicy() { return $this->mIndexPolicy; } + function getTOCHTML() { return $this->mTOCHTML; } function containsOldMagic() { return $this->mContainsOldMagic; } function setText( $text ) { return wfSetVar( $this->mText, $text ); } @@ -67,10 +68,10 @@ class ParserOutput function setTitleText( $t ) { return wfSetVar( $this->mTitleText, $t ); } function setSections( $toc ) { return wfSetVar( $this->mSections, $toc ); } function setIndexPolicy( $policy ) { return wfSetVar( $this->mIndexPolicy, $policy ); } + function setTOCHTML( $tochtml ) { return wfSetVar( $this->mTOCHTML, $tochtml ); } function addCategory( $c, $sort ) { $this->mCategories[$c] = $sort; } function addLanguageLink( $t ) { $this->mLanguageLinks[] = $t; } - function addExternalLink( $url ) { $this->mExternalLinks[$url] = 1; } function addWarning( $s ) { $this->mWarnings[$s] = 1; } function addOutputHook( $hook, $data = false ) { @@ -80,11 +81,35 @@ class ParserOutput function setNewSection( $value ) { $this->mNewSection = (bool)$value; } + function hideNewSection ( $value ) { + $this->mHideNewSection = (bool)$value; + } + function getHideNewSection () { + return (bool)$this->mHideNewSection; + } function getNewSection() { return (bool)$this->mNewSection; } + function addExternalLink( $url ) { + # 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; + } + + /** + * Record a local or interwiki inline link for saving in future link tables. + * + * @param $title Title object + * @param $id Mixed: optional known page_id so we can skip the lookup + */ function addLink( $title, $id = null ) { + if ( $title->isExternal() ) { + // Don't record interwikis in pagelinks + $this->addInterwikiLink( $title ); + return; + } $ns = $title->getNamespace(); $dbk = $title->getDBkey(); if ( $ns == NS_MEDIA ) { @@ -123,17 +148,31 @@ class ParserOutput } $this->mTemplateIds[$ns][$dbk] = $rev_id; // For versioning } + + /** + * @param $title Title object, must be an interwiki link + * @throws MWException if given invalid input + */ + function addInterwikiLink( $title ) { + $prefix = $title->getInterwiki(); + if( $prefix == '' ) { + throw new MWException( 'Non-interwiki link passed, internal parser error.' ); + } + if (!isset($this->mInterwikiLinks[$prefix])) { + $this->mInterwikiLinks[$prefix] = array(); + } + $this->mInterwikiLinks[$prefix][$title->getDBkey()] = 1; + } /** * 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 string $touched the affected article's last touched timestamp - * @return bool - * @public + * @param $touched String: the affected article's last touched timestamp + * @return Boolean */ - function expired( $touched ) { + public function expired( $touched ) { global $wgCacheEpoch; return $this->getCacheTime() == -1 || // parser says it's uncacheable $this->getCacheTime() < $touched || @@ -160,19 +199,23 @@ class ParserOutput * -- this is assumed to have been validated * (check equal normalisation, etc.) * - * @param string $text Desired title text + * @param $text String: desired title text */ public function setDisplayTitle( $text ) { - $this->displayTitle = $text; + $this->setTitleText( $text ); } /** * Get the title to be used for display * - * @return string + * @return String */ public function getDisplayTitle() { - return $this->displayTitle; + $t = $this->getTitleText( ); + if( $t === '' ) { + return false; + } + return $t; } /**