Easier to use addWikiText() in wrapWikiMsg()
[lhc/web/wiklou.git] / includes / Linker.php
index c197008..30a4b00 100644 (file)
@@ -159,6 +159,7 @@ class Linker {
        public function link( $target, $text = null, $customAttribs = array(), $query = array(), $options = array() ) {
                wfProfileIn( __METHOD__ );
                if ( !$target instanceof Title ) {
+                       wfProfileOut( __METHOD__ );
                        return "<!-- ERROR -->$text";
                }
                $options = (array)$options;
@@ -332,7 +333,7 @@ class Linker {
         * @param $trail String
         * @param $prefix String
         * @return string HTML of link
-        * @deprecated
+        * @deprecated @since 1.17
         */
        function makeSizeLinkObj( $size, $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
                global $wgUser;
@@ -428,6 +429,7 @@ class Linker {
         *          caption         HTML for image caption.
         *          link-url        URL to link to
         *          link-title      Title object to link to
+        *          link-target     Value for the target attribue, only with link-url
         *          no-link         Boolean, suppress description link
         *
         * @param $handlerParams Array: associative array of media handler parameters, to be passed
@@ -552,8 +554,11 @@ class Linker {
                $mtoParams = array();
                if ( isset( $frameParams['link-url'] ) && $frameParams['link-url'] !== '' ) {
                        $mtoParams['custom-url-link'] = $frameParams['link-url'];
+                       if ( isset( $frameParams['link-target'] ) ) {
+                               $mtoParams['custom-target-link'] = $frameParams['link-target'];
+                       }
                } elseif ( isset( $frameParams['link-title'] ) && $frameParams['link-title'] !== '' ) {
-                       $mtoParams['custom-title-link'] = $frameParams['link-title'];
+                       $mtoParams['custom-title-link'] = $this->normaliseSpecialPage( $frameParams['link-title'] );
                } elseif ( !empty( $frameParams['no-link'] ) ) {
                        // No link
                } else {
@@ -708,8 +713,8 @@ class Linker {
 
                                wfProfileOut( __METHOD__ );
                                return '<a href="' . htmlspecialchars( $href ) . '" class="new" title="' .
-                                                               htmlspecialchars( $title->getPrefixedText(), ENT_QUOTES ) . '">' .
-                                                               htmlspecialchars( $prefix . $text . $inside, ENT_NOQUOTES ) . '</a>' . $trail;
+                                       htmlspecialchars( $title->getPrefixedText(), ENT_QUOTES ) . '">' .
+                                       htmlspecialchars( $prefix . $text . $inside, ENT_NOQUOTES ) . '</a>' . $trail;
                        } else {
                                wfProfileOut( __METHOD__ );
                                return $this->linkKnown( $title, "$prefix$text$inside", array(), $query ) . $trail;
@@ -1098,7 +1103,7 @@ class Linker {
 
                # fix up urlencoded title texts (copied from Parser::replaceInternalLinks)
                if ( strpos( $match[1], '%' ) !== false ) {
-                       $match[1] = str_replace( array( '<', '>' ), array( '&lt;', '&gt;' ), urldecode( $match[1] ) );
+                       $match[1] = str_replace( array( '<', '>' ), array( '&lt;', '&gt;' ), rawurldecode( $match[1] ) );
                }
 
                # Handle link renaming [[foo|text]] will show link as "text"
@@ -1495,17 +1500,20 @@ class Linker {
                $title = $rev->getTitle();
                $query = array(
                        'action' => 'rollback',
-                       'from' => $rev->getUserText()
+                       'from' => $rev->getUserText(),
+                       'token' => $wgUser->editToken( array( $title->getPrefixedText(), $rev->getUserText() ) ),
                );
                if ( $wgRequest->getBool( 'bot' ) ) {
                        $query['bot'] = '1';
                        $query['hidediff'] = '1'; // bug 15999
                }
-               $query['token'] = $wgUser->editToken( array( $title->getPrefixedText(),
-                       $rev->getUserText() ) );
-               return $this->link( $title, wfMsgHtml( 'rollbacklink' ),
+               return $this->link( 
+                       $title, 
+                       wfMsgHtml( 'rollbacklink' ),
                        array( 'title' => wfMsg( 'tooltip-rollback' ) ),
-                       $query, array( 'known', 'noclasses' ) );
+                       $query, 
+                       array( 'known', 'noclasses' ) 
+               );
        }
 
        /**
@@ -1627,10 +1635,12 @@ class Linker {
        public function titleAttrib( $name, $options = null ) {
                wfProfileIn( __METHOD__ );
 
-               if ( wfEmptyMsg( "tooltip-$name" ) ) {
+               $message = wfMessage( "tooltip-$name" );
+
+               if ( !$message->exists() ) {
                        $tooltip = false;
                } else {
-                       $tooltip = wfMsg( "tooltip-$name" );
+                       $tooltip = $message->text();
                        # Compatibility: formerly some tooltips had [alt-.] hardcoded
                        $tooltip = preg_replace( "/ ?\[alt-.\]$/", '', $tooltip );
                        # Message equal to '-' means suppress it.
@@ -1667,10 +1677,16 @@ class Linker {
        public function accesskey( $name ) {
                wfProfileIn( __METHOD__ );
 
-               if ( wfEmptyMsg( "accesskey-$name" ) ) {
+               if ( isset( $this->accesskeycache[$name] ) ) {
+                       return $this->accesskeycache[$name];
+               }
+
+               $message = wfMessage( "accesskey-$name" );
+
+               if ( !$message->exists() ) {
                        $accesskey = false;
                } else {
-                       $accesskey = wfMsg( "accesskey-$name" );
+                       $accesskey = $message->plain();
                        if ( $accesskey === '' || $accesskey === '-' ) {
                                # FIXME: Per standard MW behavior, a value of '-' means to suppress the
                                # attribute, but this is broken for accesskey: that might be a useful
@@ -1680,7 +1696,7 @@ class Linker {
                }
 
                wfProfileOut( __METHOD__ );
-               return $accesskey;
+               return $this->accesskeycache[$name] = $accesskey;
        }
 
        /**
@@ -1717,16 +1733,7 @@ class Linker {
        /* Deprecated methods */
 
        /**
-        * @deprecated
-        */
-       function postParseLinkColour( $s = null ) {
-               wfDeprecated( __METHOD__ );
-               return null;
-       }
-
-
-       /**
-        * @deprecated Use link()
+        * @deprecated @since 1.16 Use link()
         *
         * This function is a shortcut to makeLinkObj(Title::newFromText($title),...). Do not call
         * it if you already have a title object handy. See makeLinkObj for further documentation.
@@ -1753,7 +1760,7 @@ class Linker {
        }
 
        /**
-        * @deprecated Use link()
+        * @deprecated @since 1.16 Use link()
         *
         * This function is a shortcut to makeKnownLinkObj(Title::newFromText($title),...). Do not call
         * it if you already have a title object handy. See makeKnownLinkObj for further documentation.
@@ -1778,7 +1785,7 @@ class Linker {
        }
 
        /**
-        * @deprecated Use link()
+        * @deprecated @since 1.16 Use link()
         *
         * This function is a shortcut to makeBrokenLinkObj(Title::newFromText($title),...). Do not call
         * it if you already have a title object handy. See makeBrokenLinkObj for further documentation.
@@ -1801,7 +1808,7 @@ class Linker {
        }
 
        /**
-        * @deprecated Use link()
+        * @deprecated @since 1.16 Use link()
         *
         * This function is a shortcut to makeStubLinkObj(Title::newFromText($title),...). Do not call
         * it if you already have a title object handy. See makeStubLinkObj for further documentation.
@@ -1825,7 +1832,7 @@ class Linker {
        }
 
        /**
-        * @deprecated Use link()
+        * @deprecated @since 1.16 Use link()
         *
         * Make a link for a title which may or may not be in the database. If you need to
         * call this lots of times, pre-fill the link cache with a LinkBatch, otherwise each
@@ -1856,7 +1863,7 @@ class Linker {
        }
 
        /**
-        * @deprecated Use link()
+        * @deprecated @since 1.16 Use link()
         *
         * Make a link for a title which definitely exists. This is faster than makeLinkObj because
         * it doesn't have to do a database query. It's also valid for interwiki titles and special
@@ -1892,7 +1899,7 @@ class Linker {
        }
 
        /**
-        * @deprecated Use link()
+        * @deprecated @since 1.16 Use link()
         *
         * Make a red link to the edit page of a given title.
         *
@@ -1920,7 +1927,7 @@ class Linker {
        }
 
        /**
-        * @deprecated Use link()
+        * @deprecated @since 1.16 Use link()
         *
         * Make a brown link to a short article.
         *
@@ -1933,12 +1940,11 @@ class Linker {
         * @param $prefix String: Optional prefix
         */
        function makeStubLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
-               // wfDeprecated( __METHOD__ );
                return $this->makeColouredLinkObj( $nt, 'stub', $text, $query, $trail, $prefix );
        }
 
        /**
-        * @deprecated Use link()
+        * @deprecated @since 1.16 Use link()
         *
         * Make a coloured link.
         *
@@ -1952,7 +1958,6 @@ class Linker {
         * @param $prefix String: Optional prefix
         */
        function makeColouredLinkObj( $nt, $colour, $text = '', $query = '', $trail = '', $prefix = '' ) {
-               // wfDeprecated( __METHOD__ );
                if ( $colour != '' ) {
                        $style = $this->getInternalLinkAttributesObj( $nt, $text, $colour );
                } else $style = '';
@@ -1967,7 +1972,7 @@ class Linker {
 
        /**
         * Creates the HTML source for images
-        * @deprecated use makeImageLink2
+        * @deprecated @since 1.16 use makeImageLink2
         *
         * @param $title Title object
         * @param $label String: label text
@@ -2010,36 +2015,6 @@ class Linker {
                return $this->makeMediaLinkObj( $nt, $text, $time );
        }
 
-       /**
-        * Used to generate section edit links that point to "other" pages
-        * (sections that are really part of included pages).
-        *
-        * @deprecated use Linker::doEditSectionLink()
-        * @param $title Title string.
-        * @param $section Integer: section number.
-        */
-       public function editSectionLinkForOther( $title, $section ) {
-               wfDeprecated( __METHOD__ );
-               $title = Title::newFromText( $title );
-               return $this->doEditSectionLink( $title, $section );
-       }
-
-       /**
-        * @deprecated use Linker::doEditSectionLink()
-        * @param $nt Title object.
-        * @param $section Integer: section number.
-        * @param $hint Link String: title, or default if omitted or empty
-        */
-       public function editSectionLink( Title $nt, $section, $hint = '' ) {
-               wfDeprecated( __METHOD__ );
-               if ( $hint === '' ) {
-                       # No way to pass an actual empty $hint here!  The new interface al-
-                       # lows this, so we have to do this for compatibility.
-                       $hint = null;
-               }
-               return $this->doEditSectionLink( $nt, $section, $hint );
-       }
-
        /**
         * Returns the attributes for the tooltip and access key.
         */
@@ -2062,14 +2037,19 @@ class Linker {
                }
                return $attribs;
        }
+
        /**
-        * @deprecated Returns raw bits of HTML, use titleAttrib() and accesskey()
+        * @deprecated @since 1.14
+        * Returns raw bits of HTML, use titleAttrib() and accesskey()
         */
        public function tooltipAndAccesskey( $name ) {
                return Xml::expandAttributes( $this->tooltipAndAccesskeyAttribs( $name ) );
        }
 
-       /** @deprecated Returns raw bits of HTML, use titleAttrib() */
+       /**
+        * @deprecated @since 1.14
+        * Returns raw bits of HTML, use titleAttrib()
+        */
        public function tooltip( $name, $options = null ) {
                global $wgEnableTooltipsAndAccesskeys;
                if ( !$wgEnableTooltipsAndAccesskeys )