Merge "Paranoia, escape image alignment parameters before outputting."
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 27 Aug 2018 19:10:41 +0000 (19:10 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 27 Aug 2018 19:10:41 +0000 (19:10 +0000)
1  2 
includes/Linker.php

diff --combined includes/Linker.php
@@@ -184,13 -184,14 +184,13 @@@ class Linker 
         * @return string
         */
        public static function getInvalidTitleDescription( IContextSource $context, $namespace, $title ) {
 -              global $wgContLang;
 -
                // First we check whether the namespace exists or not.
                if ( MWNamespace::exists( $namespace ) ) {
                        if ( $namespace == NS_MAIN ) {
                                $name = $context->msg( 'blanknamespace' )->text();
                        } else {
 -                              $name = $wgContLang->getFormattedNsText( $namespace );
 +                              $name = MediaWikiServices::getInstance()->getContentLanguage()->
 +                                      getFormattedNsText( $namespace );
                        }
                        return $context->msg( 'invalidtitle-knownnamespace', $namespace, $name, $title )->text();
                } else {
         */
        public static function normaliseSpecialPage( LinkTarget $target ) {
                if ( $target->getNamespace() == NS_SPECIAL && !$target->isExternal() ) {
 -                      list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $target->getDBkey() );
 +                      list( $name, $subpage ) = MediaWikiServices::getInstance()->getSpecialPageFactory()->
 +                              resolveAlias( $target->getDBkey() );
                        if ( !$name ) {
                                return $target;
                        }
                        $s = $thumb->toHtml( $params );
                }
                if ( $frameParams['align'] != '' ) {
-                       $s = "<div class=\"float{$frameParams['align']}\">{$s}</div>";
+                       $s = Html::rawElement(
+                               'div',
+                               [ 'class' => 'float' . $frameParams['align'] ],
+                               $s
+                       );
                }
                return str_replace( "\n", ' ', $prefix . $s . $postfix );
        }
         *   red if the user has no edits?
         * @param int $flags Customisation flags (e.g. Linker::TOOL_LINKS_NOBLOCK
         *   and Linker::TOOL_LINKS_EMAIL).
 -       * @param int $edits User edit count (optional, for performance)
 +       * @param int|null $edits User edit count (optional, for performance)
         * @return string HTML fragment
         */
        public static function userToolLinks(
         * @since 1.16.3
         * @param int $userId User identifier
         * @param string $userText User name or IP address
 -       * @param int $edits User edit count (optional, for performance)
 +       * @param int|null $edits User edit count (optional, for performance)
         * @return string
         */
        public static function userToolLinksRedContribs( $userId, $userText, $edits = null ) {
                                ([^[]*) # 3. link trail (the text up until the next link)
                        /x',
                        function ( $match ) use ( $title, $local, $wikiId ) {
 -                              global $wgContLang;
 -
                                $medians = '(?:' . preg_quote( MWNamespace::getCanonicalName( NS_MEDIA ), '/' ) . '|';
 -                              $medians .= preg_quote( $wgContLang->getNsText( NS_MEDIA ), '/' ) . '):';
 +                              $medians .= preg_quote(
 +                                      MediaWikiServices::getInstance()->getContentLanguage()->getNsText( NS_MEDIA ),
 +                                      '/'
 +                              ) . '):';
  
                                $comment = $match[0];
  
                                                $match[1] = substr( $match[1], 1 );
                                        }
                                        if ( $match[1] !== false && $match[1] !== '' ) {
 -                                              if ( preg_match( $wgContLang->linkTrail(), $match[3], $submatch ) ) {
 +                                              if ( preg_match(
 +                                                      MediaWikiServices::getInstance()->getContentLanguage()->linkTrail(),
 +                                                      $match[3],
 +                                                      $submatch
 +                                              ) ) {
                                                        $trail = $submatch[1];
                                                } else {
                                                        $trail = "";
         * @return string
         */
        public static function tocIndent() {
 -              return "\n<ul>";
 +              return "\n<ul>\n";
        }
  
        /**
                        $classes .= " tocsection-$sectionIndex";
                }
  
 -              // \n<li class="$classes"><a href="#$anchor"><span class="tocnumber">
 +              // <li class="$classes"><a href="#$anchor"><span class="tocnumber">
                // $tocnumber</span> <span class="toctext">$tocline</span></a>
 -              return "\n" . Html::openElement( 'li', [ 'class' => $classes ] )
 +              return Html::openElement( 'li', [ 'class' => $classes ] )
                        . Html::rawElement( 'a',
                                [ 'href' => "#$anchor" ],
                                Html::element( 'span', [ 'class' => 'tocnumber' ], $tocnumber )
                $title = wfMessage( 'toc' )->inLanguage( $lang )->escaped();
  
                return '<div id="toc" class="toc">'
 +                      . Html::element( 'input', [
 +                              'type' => 'checkbox',
 +                              'role' => 'button',
 +                              'id' => 'toctogglecheckbox',
 +                              'class' => 'toctogglecheckbox',
 +                              'style' => 'display:none',
 +                      ] )
                        . Html::openElement( 'div', [
                                'class' => 'toctitle',
                                'lang' => $lang->getHtmlCode(),
                                'dir' => $lang->getDir(),
                        ] )
 -                      . '<h2>' . $title . "</h2></div>\n"
 +                      . "<h2>$title</h2>"
 +                      . '<span class="toctogglespan">'
 +                      . Html::label( '', 'toctogglecheckbox', [
 +                              'class' => 'toctogglelabel',
 +                      ] )
 +                      . '</span>'
 +                      . "</div>\n"
                        . $toc
                        . "</ul>\n</div>\n";
        }
         * @return array
         */
        static function splitTrail( $trail ) {
 -              global $wgContLang;
 -              $regex = $wgContLang->linkTrail();
 +              $regex = MediaWikiServices::getInstance()->getContentLanguage()->linkTrail();
                $inside = '';
                if ( $trail !== '' ) {
                        $m = [];
         * @since 1.16.3. $context added in 1.20. $options added in 1.21
         *
         * @param Revision $rev
 -       * @param IContextSource $context Context to use or null for the main context.
 +       * @param IContextSource|null $context Context to use or null for the main context.
         * @param array $options
         * @return string
         */