Improvements to {{REVISIONUSER}} handling
[lhc/web/wiklou.git] / includes / parser / Parser.php
index 8f55f01..63a297b 100644 (file)
@@ -1459,7 +1459,7 @@ class Parser {
                                        substr( $m[0], 0, 20 ) . '"' );
                        }
                        $url = wfMessage( $urlmsg, $id )->inContentLanguage()->text();
-                       return Linker::makeExternalLink( $url, "{$keyword} {$id}", true, $cssClass );
+                       return Linker::makeExternalLink( $url, "{$keyword} {$id}", true, $cssClass, [], $this->mTitle );
                } elseif ( isset( $m[6] ) && $m[6] !== '' ) {
                        # ISBN
                        $isbn = $m[6];
@@ -1547,7 +1547,7 @@ class Parser {
                        $text = Linker::makeExternalLink( $url,
                                $this->getConverterLanguage()->markNoConversion( $url, true ),
                                true, 'free',
-                               $this->getExternalLinkAttribs( $url ) );
+                               $this->getExternalLinkAttribs( $url ), $this->mTitle );
                        # Register it in the output object...
                        # Replace unnecessary URL escape codes with their equivalent characters
                        $pasteurized = self::normalizeLinkUrl( $url );
@@ -1844,7 +1844,7 @@ class Parser {
                        # Funny characters like รถ aren't valid in URLs anyway
                        # This was changed in August 2004
                        $s .= Linker::makeExternalLink( $url, $text, false, $linktype,
-                               $this->getExternalLinkAttribs( $url ) ) . $dtrail . $trail;
+                               $this->getExternalLinkAttribs( $url ), $this->mTitle ) . $dtrail . $trail;
 
                        # Register link in the output object.
                        # Replace unnecessary URL escape codes with the referenced character
@@ -1882,11 +1882,11 @@ class Parser {
         * (depending on configuration, namespace, and the URL's domain) and/or a
         * target attribute (depending on configuration).
         *
-        * @param string|bool $url Optional URL, to extract the domain from for rel =>
+        * @param string $url URL to extract the domain from for rel =>
         *   nofollow if appropriate
         * @return array Associative array of HTML attributes
         */
-       public function getExternalLinkAttribs( $url = false ) {
+       public function getExternalLinkAttribs( $url ) {
                $attribs = [];
                $rel = self::getExternalLinkRel( $url, $this->mTitle );
 
@@ -2354,7 +2354,7 @@ class Parser {
                        # batch file existence checks for NS_FILE and NS_MEDIA
                        if ( $iw == '' && $nt->isAlwaysKnown() ) {
                                $this->mOutput->addLink( $nt );
-                               $s .= $this->makeKnownLinkHolder( $nt, $text, [], $trail, $prefix );
+                               $s .= $this->makeKnownLinkHolder( $nt, $text, $trail, $prefix );
                        } else {
                                # Links will be added to the output link list after checking
                                $s .= $holders->makeHolder( $nt, $text, [], $trail, $prefix );
@@ -2372,23 +2372,19 @@ class Parser {
         *
         * @param Title $nt
         * @param string $text
-        * @param array|string $query
         * @param string $trail
         * @param string $prefix
         * @return string HTML-wikitext mix oh yuck
         */
-       public function makeKnownLinkHolder( $nt, $text = '', $query = [], $trail = '', $prefix = '' ) {
+       protected function makeKnownLinkHolder( $nt, $text = '', $trail = '', $prefix = '' ) {
                list( $inside, $trail ) = Linker::splitTrail( $trail );
 
-               if ( is_string( $query ) ) {
-                       $query = wfCgiToArray( $query );
-               }
                if ( $text == '' ) {
                        $text = htmlspecialchars( $nt->getPrefixedText() );
                }
 
                $link = $this->getLinkRenderer()->makeKnownLink(
-                       $nt, new HtmlArmor( "$prefix$text$inside" ), [], $query
+                       $nt, new HtmlArmor( "$prefix$text$inside" )
                );
 
                return $this->armorLinks( $link ) . $trail;
@@ -2652,16 +2648,12 @@ class Parser {
                                break;
                        case 'revisionuser':
                                # Let the edit saving system know we should parse the page
-                               # *after* a revision ID has been assigned. This is for null edits.
-                               $this->mOutput->setFlag( 'vary-revision' );
-                               wfDebug( __METHOD__ . ": {{REVISIONUSER}} used, setting vary-revision...\n" );
+                               # *after* a revision ID has been assigned for null edits.
+                               $this->mOutput->setFlag( 'vary-user' );
+                               wfDebug( __METHOD__ . ": {{REVISIONUSER}} used, setting vary-user...\n" );
                                $value = $this->getRevisionUser();
                                break;
                        case 'revisionsize':
-                               # Let the edit saving system know we should parse the page
-                               # *after* a revision ID has been assigned. This is for null edits.
-                               $this->mOutput->setFlag( 'vary-revision' );
-                               wfDebug( __METHOD__ . ": {{REVISIONSIZE}} used, setting vary-revision...\n" );
                                $value = $this->getRevisionSize();
                                break;
                        case 'namespace':
@@ -5641,7 +5633,7 @@ class Parser {
                        # will change the size.
                        if ( $revObject ) {
                                $this->mRevisionSize = $revObject->getSize();
-                       } elseif ( $this->ot['wiki'] || $this->mOptions->getIsPreview() ) {
+                       } else {
                                $this->mRevisionSize = $this->mInputSize;
                        }
                }