Pass array to Title::getLocalURL instead of an urlencoded string
[lhc/web/wiklou.git] / includes / OutputPage.php
index 6309ecb..08eb3ae 100644 (file)
@@ -123,7 +123,7 @@ class OutputPage extends ContextSource {
        var $mScripts = '';
 
        /**
-        * Inline CSS styles. Use addInlineStyle() sparsingly
+        * Inline CSS styles. Use addInlineStyle() sparingly
         */
        var $mInlineStyles = '';
 
@@ -253,6 +253,11 @@ class OutputPage extends ContextSource {
         */
        private $mProperties = array();
 
+       /**
+        * @var string|null: ResourceLoader target for load.php links. If null, will be omitted
+        */
+       private $mTarget = null;
+
        /**
         * Constructor for OutputPage. This should not be called directly.
         * Instead a new RequestContext should be created and it will implicitly create
@@ -270,8 +275,8 @@ class OutputPage extends ContextSource {
        /**
         * Redirect to $url rather than displaying the normal page
         *
-        * @param $url String: URL
-        * @param $responsecode String: HTTP status code
+        * @param string $url URL
+        * @param string $responsecode HTTP status code
         */
        public function redirect( $url, $responsecode = '302' ) {
                # Strip newlines as a paranoia check for header injection in PHP<5.1.2
@@ -301,8 +306,8 @@ class OutputPage extends ContextSource {
         * Add a new "<meta>" tag
         * To add an http-equiv meta tag, precede the name with "http:"
         *
-        * @param $name String tag name
-        * @param $val String tag value
+        * @param string $name tag name
+        * @param string $val tag value
         */
        function addMeta( $name, $val ) {
                array_push( $this->mMetatags, array( $name, $val ) );
@@ -311,10 +316,10 @@ class OutputPage extends ContextSource {
        /**
         * Add a keyword or a list of keywords in the page header
         *
-        * @param $text String or array of strings
+        * @param string $text or array of strings
         */
        function addKeyword( $text ) {
-               if( is_array( $text ) ) {
+               if ( is_array( $text ) ) {
                        $this->mKeywords = array_merge( $this->mKeywords, $text );
                } else {
                        array_push( $this->mKeywords, $text );
@@ -326,7 +331,7 @@ class OutputPage extends ContextSource {
         *
         * Note: use setCanonicalUrl() for rel=canonical.
         *
-        * @param $linkarr Array: associative array of attributes.
+        * @param array $linkarr associative array of attributes.
         */
        function addLink( $linkarr ) {
                array_push( $this->mLinktags, $linkarr );
@@ -335,7 +340,7 @@ class OutputPage extends ContextSource {
        /**
         * Add a new \<link\> with "rel" attribute set to "meta"
         *
-        * @param $linkarr Array: associative array mapping attribute names to their
+        * @param array $linkarr associative array mapping attribute names to their
         *                 values, both keys and values will be escaped, and the
         *                 "rel" attribute will be automatically added
         */
@@ -371,7 +376,7 @@ class OutputPage extends ContextSource {
        /**
         * Add raw HTML to the list of scripts (including \<script\> tag, etc.)
         *
-        * @param $script String: raw HTML
+        * @param string $script raw HTML
         */
        function addScript( $script ) {
                $this->mScripts .= $script . "\n";
@@ -380,7 +385,7 @@ class OutputPage extends ContextSource {
        /**
         * Register and add a stylesheet from an extension directory.
         *
-        * @param $url String path to sheet.  Provide either a full url (beginning
+        * @param string $url path to sheet.  Provide either a full url (beginning
         *             with 'http', etc) or a relative path from the document root
         *             (beginning with '/').  Otherwise it behaves identically to
         *             addStyle() and draws from the /skins folder.
@@ -401,27 +406,28 @@ class OutputPage extends ContextSource {
        /**
         * Add a JavaScript file out of skins/common, or a given relative path.
         *
-        * @param $file String: filename in skins/common or complete on-server path
+        * @param string $file filename in skins/common or complete on-server path
         *              (/foo/bar.js)
-        * @param $version String: style version of the file. Defaults to $wgStyleVersion
+        * @param string $version style version of the file. Defaults to $wgStyleVersion
         */
        public function addScriptFile( $file, $version = null ) {
                global $wgStylePath, $wgStyleVersion;
                // See if $file parameter is an absolute URL or begins with a slash
-               if( substr( $file, 0, 1 ) == '/' || preg_match( '#^[a-z]*://#i', $file ) ) {
+               if ( substr( $file, 0, 1 ) == '/' || preg_match( '#^[a-z]*://#i', $file ) ) {
                        $path = $file;
                } else {
                        $path = "{$wgStylePath}/common/{$file}";
                }
-               if ( is_null( $version ) )
+               if ( is_null( $version ) ) {
                        $version = $wgStyleVersion;
+               }
                $this->addScript( Html::linkedScript( wfAppendQuery( $path, $version ) ) );
        }
 
        /**
         * Add a self-contained script tag with the given contents
         *
-        * @param $script String: JavaScript text, no "<script>" tags
+        * @param string $script JavaScript text, no "<script>" tags
         */
        public function addInlineScript( $script ) {
                $this->mScripts .= Html::inlineScript( "\n$script\n" ) . "\n";
@@ -440,18 +446,19 @@ class OutputPage extends ContextSource {
         * Filter an array of modules to remove insufficiently trustworthy members, and modules
         * which are no longer registered (eg a page is cached before an extension is disabled)
         * @param $modules Array
-        * @param $position String if not null, only return modules with this position
+        * @param string $position if not null, only return modules with this position
         * @param $type string
         * @return Array
         */
        protected function filterModules( $modules, $position = null, $type = ResourceLoaderModule::TYPE_COMBINED ) {
                $resourceLoader = $this->getResourceLoader();
                $filteredModules = array();
-               foreach( $modules as $val ) {
+               foreach ( $modules as $val ) {
                        $module = $resourceLoader->getModule( $val );
-                       if( $module instanceof ResourceLoaderModule
+                       if ( $module instanceof ResourceLoaderModule
                                && $module->getOrigin() <= $this->getAllowedModules( $type )
-                               && ( is_null( $position ) || $module->getPosition() == $position ) )
+                               && ( is_null( $position ) || $module->getPosition() == $position )
+                               && ( !$this->mTarget || in_array( $this->mTarget, $module->getTargets() ) ) )
                        {
                                $filteredModules[] = $val;
                        }
@@ -462,8 +469,8 @@ class OutputPage extends ContextSource {
        /**
         * Get the list of modules to include on this page
         *
-        * @param $filter Bool whether to filter out insufficiently trustworthy modules
-        * @param $position String if not null, only return modules with this position
+        * @param bool $filter whether to filter out insufficiently trustworthy modules
+        * @param string $position if not null, only return modules with this position
         * @param $param string
         * @return Array of module names
         */
@@ -556,6 +563,22 @@ class OutputPage extends ContextSource {
                $this->mModuleMessages = array_merge( $this->mModuleMessages, (array)$modules );
        }
 
+       /**
+        * @return null|string: ResourceLoader target
+        */
+       public function getTarget() {
+               return $this->mTarget;
+       }
+
+       /**
+        * Sets ResourceLoader target for load.php links. If null, will be omitted
+        *
+        * @param $target string|null
+        */
+       public function setTarget( $target ) {
+               $this->mTarget = $target;
+       }
+
        /**
         * Get an array of head items
         *
@@ -581,8 +604,8 @@ class OutputPage extends ContextSource {
        /**
         * Add or replace an header item to the output
         *
-        * @param $name String: item name
-        * @param $value String: raw HTML
+        * @param string $name item name
+        * @param string $value raw HTML
         */
        public function addHeadItem( $name, $value ) {
                $this->mHeadItems[$name] = $value;
@@ -591,7 +614,7 @@ class OutputPage extends ContextSource {
        /**
         * Check if the header item $name is already set
         *
-        * @param $name String: item name
+        * @param string $name item name
         * @return Boolean
         */
        public function hasHeadItem( $name ) {
@@ -601,7 +624,7 @@ class OutputPage extends ContextSource {
        /**
         * Set the value of the ETag HTTP header, only used if $wgUseETag is true
         *
-        * @param $tag String: value of "ETag" header
+        * @param string $tag value of "ETag" header
         */
        function setETag( $tag ) {
                $this->mETag = $tag;
@@ -665,17 +688,17 @@ class OutputPage extends ContextSource {
         * @return Boolean: true iff cache-ok headers was sent.
         */
        public function checkLastModified( $timestamp ) {
-               global $wgCachePages, $wgCacheEpoch;
+               global $wgCachePages, $wgCacheEpoch, $wgUseSquid, $wgSquidMaxage;
 
                if ( !$timestamp || $timestamp == '19700101000000' ) {
                        wfDebug( __METHOD__ . ": CACHE DISABLED, NO TIMESTAMP\n" );
                        return false;
                }
-               if( !$wgCachePages ) {
+               if ( !$wgCachePages ) {
                        wfDebug( __METHOD__ . ": CACHE DISABLED\n", false );
                        return false;
                }
-               if( $this->getUser()->getOption( 'nocache' ) ) {
+               if ( $this->getUser()->getOption( 'nocache' ) ) {
                        wfDebug( __METHOD__ . ": USER DISABLED CACHE\n", false );
                        return false;
                }
@@ -686,6 +709,10 @@ class OutputPage extends ContextSource {
                        'user' => $this->getUser()->getTouched(),
                        'epoch' => $wgCacheEpoch
                );
+               if ( $wgUseSquid ) {
+                       // bug 44570: the core page itself may not change, but resources might
+                       $modifiedTimes['sepoch'] = wfTimestamp( TS_MW, time() - $wgSquidMaxage );
+               }
                wfRunHooks( 'OutputPageCheckLastModified', array( &$modifiedTimes ) );
 
                $maxModified = max( $modifiedTimes );
@@ -724,7 +751,7 @@ class OutputPage extends ContextSource {
                        wfTimestamp( TS_ISO_8601, $clientHeaderTime ) . "\n", false );
                wfDebug( __METHOD__ . ": effective Last-Modified: " .
                        wfTimestamp( TS_ISO_8601, $maxModified ) . "\n", false );
-               if( $clientHeaderTime < $maxModified ) {
+               if ( $clientHeaderTime < $maxModified ) {
                        wfDebug( __METHOD__ . ": STALE, $info\n", false );
                        return false;
                }
@@ -748,7 +775,7 @@ class OutputPage extends ContextSource {
        /**
         * Override the last modified timestamp
         *
-        * @param $timestamp String: new timestamp, in a format readable by
+        * @param string $timestamp new timestamp, in a format readable by
         *        wfTimestamp()
         */
        public function setLastModified( $timestamp ) {
@@ -758,7 +785,7 @@ class OutputPage extends ContextSource {
        /**
         * Set the robot policy for the page: <http://www.robotstxt.org/meta.html>
         *
-        * @param $policy String: the literal string to output as the contents of
+        * @param string $policy the literal string to output as the contents of
         *   the meta tag.  Will be parsed according to the spec and output in
         *   standardized form.
         * @return null
@@ -766,10 +793,10 @@ class OutputPage extends ContextSource {
        public function setRobotPolicy( $policy ) {
                $policy = Article::formatRobotPolicy( $policy );
 
-               if( isset( $policy['index'] ) ) {
+               if ( isset( $policy['index'] ) ) {
                        $this->setIndexPolicy( $policy['index'] );
                }
-               if( isset( $policy['follow'] ) ) {
+               if ( isset( $policy['follow'] ) ) {
                        $this->setFollowPolicy( $policy['follow'] );
                }
        }
@@ -778,12 +805,12 @@ class OutputPage extends ContextSource {
         * Set the index policy for the page, but leave the follow policy un-
         * touched.
         *
-        * @param $policy string Either 'index' or 'noindex'.
+        * @param string $policy Either 'index' or 'noindex'.
         * @return null
         */
        public function setIndexPolicy( $policy ) {
                $policy = trim( $policy );
-               if( in_array( $policy, array( 'index', 'noindex' ) ) ) {
+               if ( in_array( $policy, array( 'index', 'noindex' ) ) ) {
                        $this->mIndexPolicy = $policy;
                }
        }
@@ -792,12 +819,12 @@ class OutputPage extends ContextSource {
         * Set the follow policy for the page, but leave the index policy un-
         * touched.
         *
-        * @param $policy String: either 'follow' or 'nofollow'.
+        * @param string $policy either 'follow' or 'nofollow'.
         * @return null
         */
        public function setFollowPolicy( $policy ) {
                $policy = trim( $policy );
-               if( in_array( $policy, array( 'follow', 'nofollow' ) ) ) {
+               if ( in_array( $policy, array( 'follow', 'nofollow' ) ) ) {
                        $this->mFollowPolicy = $policy;
                }
        }
@@ -806,7 +833,7 @@ class OutputPage extends ContextSource {
         * Set the new value of the "action text", this will be added to the
         * "HTML title", separated from it with " - ".
         *
-        * @param $text String: new value of the "action text"
+        * @param string $text new value of the "action text"
         */
        public function setPageTitleActionText( $text ) {
                $this->mPageTitleActionText = $text;
@@ -897,9 +924,9 @@ class OutputPage extends ContextSource {
        }
 
        /**
-        * Replace the subtile with $str
+        * Replace the subtitle with $str
         *
-        * @param $str String|Message: new value of the subtitle. String should be safe HTML.
+        * @param string|Message $str new value of the subtitle. String should be safe HTML.
         */
        public function setSubtitle( $str ) {
                $this->clearSubtitle();
@@ -910,7 +937,7 @@ class OutputPage extends ContextSource {
         * Add $str to the subtitle
         *
         * @deprecated in 1.19; use addSubtitle() instead
-        * @param $str String|Message to add to the subtitle
+        * @param string|Message $str to add to the subtitle
         */
        public function appendSubtitle( $str ) {
                $this->addSubtitle( $str );
@@ -919,7 +946,7 @@ class OutputPage extends ContextSource {
        /**
         * Add $str to the subtitle
         *
-        * @param $str String|Message to add to the subtitle. String should be safe HTML.
+        * @param string|Message $str to add to the subtitle. String should be safe HTML.
         */
        public function addSubtitle( $str ) {
                if ( $str instanceof Message ) {
@@ -1031,7 +1058,7 @@ class OutputPage extends ContextSource {
         * for the new version
         * @see addFeedLink()
         *
-        * @param $val String: query to append to feed links or false to output
+        * @param string $val query to append to feed links or false to output
         *        default links
         */
        public function setFeedAppendQuery( $val ) {
@@ -1051,8 +1078,8 @@ class OutputPage extends ContextSource {
        /**
         * Add a feed link to the page header
         *
-        * @param $format String: feed type, should be a key of $wgFeedClasses
-        * @param $href String: URL
+        * @param string $format feed type, should be a key of $wgFeedClasses
+        * @param string $href URL
         */
        public function addFeedLink( $format, $href ) {
                global $wgAdvertisedFeedTypes;
@@ -1136,7 +1163,7 @@ class OutputPage extends ContextSource {
        /**
         * Add new language links
         *
-        * @param $newLinkArray array Associative array mapping language code to the page
+        * @param array $newLinkArray Associative array mapping language code to the page
         *                      name
         */
        public function addLanguageLinks( $newLinkArray ) {
@@ -1146,7 +1173,7 @@ class OutputPage extends ContextSource {
        /**
         * Reset the language links and add new language links
         *
-        * @param $newLinkArray array Associative array mapping language code to the page
+        * @param array $newLinkArray Associative array mapping language code to the page
         *                      name
         */
        public function setLanguageLinks( $newLinkArray ) {
@@ -1165,7 +1192,7 @@ class OutputPage extends ContextSource {
        /**
         * Add an array of categories, with names in the keys
         *
-        * @param $categories Array mapping category name => sort key
+        * @param array $categories mapping category name => sort key
         */
        public function addCategoryLinks( $categories ) {
                global $wgContLang;
@@ -1226,7 +1253,7 @@ class OutputPage extends ContextSource {
        /**
         * Reset the category links (but not the category list) and add $categories
         *
-        * @param $categories Array mapping category name => sort key
+        * @param array $categories mapping category name => sort key
         */
        public function setCategoryLinks( $categories ) {
                $this->mCategoryLinks = array();
@@ -1280,11 +1307,11 @@ class OutputPage extends ContextSource {
        /**
         * Show what level of JavaScript / CSS untrustworthiness is allowed on this page
         * @see ResourceLoaderModule::$origin
-        * @param $type String ResourceLoaderModule TYPE_ constant
+        * @param string $type ResourceLoaderModule TYPE_ constant
         * @return Int ResourceLoaderModule ORIGIN_ class constant
         */
        public function getAllowedModules( $type ) {
-               if( $type == ResourceLoaderModule::TYPE_COMBINED ) {
+               if ( $type == ResourceLoaderModule::TYPE_COMBINED ) {
                        return min( array_values( $this->mAllowedModules ) );
                } else {
                        return isset( $this->mAllowedModules[$type] )
@@ -1303,7 +1330,7 @@ class OutputPage extends ContextSource {
        }
 
        /**
-        * As for setAllowedModules(), but don't inadvertantly make the page more accessible
+        * As for setAllowedModules(), but don't inadvertently make the page more accessible
         * @param  $type String
         * @param  $level Int ResourceLoaderModule class constant
         */
@@ -1314,7 +1341,7 @@ class OutputPage extends ContextSource {
        /**
         * Prepend $text to the body HTML
         *
-        * @param $text String: HTML
+        * @param string $text HTML
         */
        public function prependHTML( $text ) {
                $this->mBodytext = $text . $this->mBodytext;
@@ -1323,7 +1350,7 @@ class OutputPage extends ContextSource {
        /**
         * Append $text to the body HTML
         *
-        * @param $text String: HTML
+        * @param string $text HTML
         */
        public function addHTML( $text ) {
                $this->mBodytext .= $text;
@@ -1401,7 +1428,7 @@ class OutputPage extends ContextSource {
         * @param $timestamp Mixed: string, or null
         * @return Mixed: previous value
         */
-       public function setRevisionTimestamp( $timestamp) {
+       public function setRevisionTimestamp( $timestamp ) {
                return wfSetVar( $this->mRevisionTimestamp, $timestamp );
        }
 
@@ -1467,7 +1494,7 @@ class OutputPage extends ContextSource {
         * @param $interface Boolean: is this text in the user interface language?
         */
        public function addWikiText( $text, $linestart = true, $interface = true ) {
-               $title = $this->getTitle(); // Work arround E_STRICT
+               $title = $this->getTitle(); // Work around E_STRICT
                if ( !$title ) {
                        throw new MWException( 'Title is null' );
                }
@@ -1477,7 +1504,7 @@ class OutputPage extends ContextSource {
        /**
         * Add wikitext with a custom Title object
         *
-        * @param $text String: wikitext
+        * @param string $text wikitext
         * @param $title Title object
         * @param $linestart Boolean: is this the start of a line?
         */
@@ -1488,7 +1515,7 @@ class OutputPage extends ContextSource {
        /**
         * Add wikitext with a custom Title object and tidy enabled.
         *
-        * @param $text String: wikitext
+        * @param string $text wikitext
         * @param $title Title object
         * @param $linestart Boolean: is this the start of a line?
         */
@@ -1499,7 +1526,7 @@ class OutputPage extends ContextSource {
        /**
         * Add wikitext with tidy enabled
         *
-        * @param $text String: wikitext
+        * @param string $text wikitext
         * @param $linestart Boolean: is this the start of a line?
         */
        public function addWikiTextTidy( $text, $linestart = true ) {
@@ -1510,7 +1537,7 @@ class OutputPage extends ContextSource {
        /**
         * Add wikitext with a custom Title object
         *
-        * @param $text String: wikitext
+        * @param string $text wikitext
         * @param $title Title object
         * @param $linestart Boolean: is this the start of a line?
         * @param $tidy Boolean: whether to use tidy
@@ -1597,7 +1624,6 @@ class OutputPage extends ContextSource {
                $this->addHTML( $text );
        }
 
-
        /**
         * Add the output of a QuickTemplate to the output buffer
         *
@@ -1627,7 +1653,7 @@ class OutputPage extends ContextSource {
        public function parse( $text, $linestart = true, $interface = false, $language = null ) {
                global $wgParser;
 
-               if( is_null( $this->getTitle() ) ) {
+               if ( is_null( $this->getTitle() ) ) {
                        throw new MWException( 'Empty $mTitle in ' . __METHOD__ );
                }
 
@@ -1743,7 +1769,7 @@ class OutputPage extends ContextSource {
        /**
         * Add an HTTP header that will influence on the cache
         *
-        * @param $header String: header name
+        * @param string $header header name
         * @param $option Array|null
         * @todo FIXME: Document the $option parameter; it appears to be for
         *        X-Vary-Options but what format is acceptable?
@@ -1751,8 +1777,8 @@ class OutputPage extends ContextSource {
        public function addVaryHeader( $header, $option = null ) {
                if ( !array_key_exists( $header, $this->mVaryHeader ) ) {
                        $this->mVaryHeader[$header] = (array)$option;
-               } elseif( is_array( $option ) ) {
-                       if( is_array( $this->mVaryHeader[$header] ) ) {
+               } elseif ( is_array( $option ) ) {
+                       if ( is_array( $this->mVaryHeader[$header] ) ) {
                                $this->mVaryHeader[$header] = array_merge( $this->mVaryHeader[$header], $option );
                        } else {
                                $this->mVaryHeader[$header] = $option;
@@ -1786,7 +1812,7 @@ class OutputPage extends ContextSource {
                $this->addVaryHeader( 'Cookie', $cookiesOption );
 
                $headers = array();
-               foreach( $this->mVaryHeader as $header => $option ) {
+               foreach ( $this->mVaryHeader as $header => $option ) {
                        $newheader = $header;
                        if ( is_array( $option ) && count( $option ) > 0 ) {
                                $newheader .= ';' . implode( ';', $option );
@@ -1808,11 +1834,11 @@ class OutputPage extends ContextSource {
         */
        function addAcceptLanguage() {
                $lang = $this->getTitle()->getPageLanguage();
-               if( !$this->getRequest()->getCheck( 'variant' ) && $lang->hasVariants() ) {
+               if ( !$this->getRequest()->getCheck( 'variant' ) && $lang->hasVariants() ) {
                        $variants = $lang->getVariants();
                        $aloption = array();
                        foreach ( $variants as $variant ) {
-                               if( $variant === $lang->getCode() ) {
+                               if ( $variant === $lang->getCode() ) {
                                        continue;
                                } else {
                                        $aloption[] = 'string-contains=' . $variant;
@@ -1893,12 +1919,11 @@ class OutputPage extends ContextSource {
                        $response->header( $this->getXVO() );
                }
 
-               if( $this->mEnableClientCache ) {
-                       if(
+               if ( $this->mEnableClientCache ) {
+                       if (
                                $wgUseSquid && session_id() == '' && !$this->isPrintable() &&
                                $this->mSquidMaxage != 0 && !$this->haveCacheVaryCookies()
-                       )
-                       {
+                       ) {
                                if ( $wgUseESI ) {
                                        # We'll purge the proxy cache explicitly, but require end user agents
                                        # to revalidate against the proxy on each visit.
@@ -1925,7 +1950,7 @@ class OutputPage extends ContextSource {
                                $response->header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', 0 ) . ' GMT' );
                                $response->header( "Cache-Control: private, must-revalidate, max-age=0" );
                        }
-                       if( $this->mLastModified ) {
+                       if ( $this->mLastModified ) {
                                $response->header( "Last-Modified: {$this->mLastModified}" );
                        }
                } else {
@@ -1940,7 +1965,7 @@ class OutputPage extends ContextSource {
        }
 
        /**
-        * Get the message associed with the HTTP response code $code
+        * Get the message associated with the HTTP response code $code
         *
         * @param $code Integer: status code
         * @return String or null: message or null if $code is not in the list of
@@ -1960,7 +1985,7 @@ class OutputPage extends ContextSource {
        public function output() {
                global $wgLanguageCode, $wgDebugRedirects, $wgMimeType, $wgVaryOnXFP;
 
-               if( $this->mDoNothing ) {
+               if ( $this->mDoNothing ) {
                        return;
                }
 
@@ -1975,9 +2000,9 @@ class OutputPage extends ContextSource {
                        $redirect = $this->mRedirect;
                        $code = $this->mRedirectCode;
 
-                       if( wfRunHooks( "BeforePageRedirect", array( $this, &$redirect, &$code ) ) ) {
-                               if( $code == '301' || $code == '303' ) {
-                                       if( !$wgDebugRedirects ) {
+                       if ( wfRunHooks( "BeforePageRedirect", array( $this, &$redirect, &$code ) ) ) {
+                               if ( $code == '301' || $code == '303' ) {
+                                       if ( !$wgDebugRedirects ) {
                                                $message = HttpStatus::getMessage( $code );
                                                $response->header( "HTTP/1.1 $code $message" );
                                        }
@@ -1989,7 +2014,7 @@ class OutputPage extends ContextSource {
                                $this->sendCacheControl();
 
                                $response->header( "Content-Type: text/html; charset=utf-8" );
-                               if( $wgDebugRedirects ) {
+                               if ( $wgDebugRedirects ) {
                                        $url = htmlspecialchars( $redirect );
                                        print "<html>\n<head>\n<title>Redirect</title>\n</head>\n<body>\n";
                                        print "<p>Location: <a href=\"$url\">$url</a></p>\n";
@@ -2049,7 +2074,7 @@ class OutputPage extends ContextSource {
        /**
         * Actually output something with print().
         *
-        * @param $ins String: the string to output
+        * @param string $ins the string to output
         */
        public function out( $ins ) {
                print $ins;
@@ -2068,8 +2093,8 @@ class OutputPage extends ContextSource {
         * indexing, clear the current text and redirect, set the page's title
         * and optionally an custom HTML title (content of the "<title>" tag).
         *
-        * @param $pageTitle String|Message will be passed directly to setPageTitle()
-        * @param $htmlTitle String|Message will be passed directly to setHTMLTitle();
+        * @param string|Message $pageTitle will be passed directly to setPageTitle()
+        * @param string|Message $htmlTitle will be passed directly to setHTMLTitle();
         *                   optional, if not passed the "<title>" attribute will be
         *                   based on $pageTitle
         */
@@ -2095,10 +2120,10 @@ class OutputPage extends ContextSource {
         *
         * @param $title Mixed: message key (string) for page title, or a Message object
         * @param $msg Mixed: message key (string) for page text, or a Message object
-        * @param $params Array: message parameters; ignored if $msg is a Message object
+        * @param array $params message parameters; ignored if $msg is a Message object
         */
        public function showErrorPage( $title, $msg, $params = array() ) {
-               if( !$title instanceof Message ) {
+               if ( !$title instanceof Message ) {
                        $title = $this->msg( $title );
                }
 
@@ -2116,8 +2141,8 @@ class OutputPage extends ContextSource {
        /**
         * Output a standard permission error page
         *
-        * @param $errors Array: error message keys
-        * @param $action String: action that was denied or null if unknown
+        * @param array $errors error message keys
+        * @param string $action action that was denied or null if unknown
         */
        public function showPermissionsErrorPage( $errors, $action = null ) {
                // For some action (read, edit, create and upload), display a "login to do this action"
@@ -2201,7 +2226,7 @@ class OutputPage extends ContextSource {
        /**
         * Display an error page noting that a given permission bit is required.
         * @deprecated since 1.18, just throw the exception directly
-        * @param $permission String: key required
+        * @param string $permission key required
         * @throws PermissionsError
         */
        public function permissionRequired( $permission ) {
@@ -2220,8 +2245,8 @@ class OutputPage extends ContextSource {
        /**
         * Format a list of error messages
         *
-        * @param $errors Array of arrays returned by Title::getUserPermissionsErrors
-        * @param $action String: action that was denied or null if unknown
+        * @param array $errors of arrays returned by Title::getUserPermissionsErrors
+        * @param string $action action that was denied or null if unknown
         * @return String: the wikitext error-messages, formatted into a list.
         */
        public function formatPermissionsErrorMessage( $errors, $action = null ) {
@@ -2239,7 +2264,7 @@ class OutputPage extends ContextSource {
                if ( count( $errors ) > 1 ) {
                        $text .= '<ul class="permissions-errors">' . "\n";
 
-                       foreach( $errors as $error ) {
+                       foreach ( $errors as $error ) {
                                $text .= '<li>';
                                $text .= call_user_func_array( array( $this, 'msg' ), $error )->plain();
                                $text .= "</li>\n";
@@ -2287,7 +2312,7 @@ class OutputPage extends ContextSource {
 
                if ( !empty( $reasons ) ) {
                        // Permissions error
-                       if( $source ) {
+                       if ( $source ) {
                                $this->setPageTitle( $this->msg( 'viewsource-title', $this->getTitle()->getPrefixedText() ) );
                                $this->addBacklinkSubtitle( $this->getTitle() );
                        } else {
@@ -2300,7 +2325,7 @@ class OutputPage extends ContextSource {
                }
 
                // Show source, if supplied
-               if( is_string( $source ) ) {
+               if ( is_string( $source ) ) {
                        $this->addWikiMsg( 'viewsourcetext' );
 
                        $pageLang = $this->getTitle()->getPageLanguage();
@@ -2326,13 +2351,13 @@ $templates
                # If the title doesn't exist, it's fairly pointless to print a return
                # link to it.  After all, you just tried editing it and couldn't, so
                # what's there to do there?
-               if( $this->getTitle()->exists() ) {
+               if ( $this->getTitle()->exists() ) {
                        $this->returnToMain( null, $this->getTitle() );
                }
        }
 
        /**
-        * Turn off regular page output and return an error reponse
+        * Turn off regular page output and return an error response
         * for when rate limiting has triggered.
         */
        public function rateLimited() {
@@ -2350,7 +2375,7 @@ $templates
         */
        public function showLagWarning( $lag ) {
                global $wgSlaveLagWarning, $wgSlaveLagCritical;
-               if( $lag >= $wgSlaveLagWarning ) {
+               if ( $lag >= $wgSlaveLagWarning ) {
                        $message = $lag < $wgSlaveLagCritical
                                ? 'lag-warn-normal'
                                : 'lag-warn-high';
@@ -2389,20 +2414,19 @@ $templates
         * Add a "return to" link pointing to a specified title
         *
         * @param $title Title to link
-        * @param $query Array query string parameters
-        * @param $text String text of the link (input is not escaped)
+        * @param array $query query string parameters
+        * @param string $text text of the link (input is not escaped)
         * @param $options Options array to pass to Linker
         */
        public function addReturnTo( $title, $query = array(), $text = null, $options = array() ) {
-               if( in_array( 'http', $options ) ) {
+               if ( in_array( 'http', $options ) ) {
                        $proto = PROTO_HTTP;
-               } elseif( in_array( 'https', $options ) ) {
+               } elseif ( in_array( 'https', $options ) ) {
                        $proto = PROTO_HTTPS;
                } else {
                        $proto = PROTO_RELATIVE;
                }
 
-               $this->addLink( array( 'rel' => 'next', 'href' => $title->getFullURL( '', false, $proto ) ) );
                $link = $this->msg( 'returnto' )->rawParams(
                        Linker::link( $title, $text, array(), $query, $options ) )->escaped();
                $this->addHTML( "<p id=\"mw-returnto\">{$link}</p>\n" );
@@ -2414,7 +2438,7 @@ $templates
         *
         * @param $unused
         * @param $returnto Title or String to return to
-        * @param $returntoquery String: query string for the return to link
+        * @param string $returntoquery query string for the return to link
         */
        public function returnToMain( $unused = null, $returnto = null, $returntoquery = null ) {
                if ( $returnto == null ) {
@@ -2532,7 +2556,7 @@ $templates
 
                        wfRunHooks( 'AjaxAddScript', array( &$this ) );
 
-                       if( $wgAjaxWatch && $this->getUser()->isLoggedIn() ) {
+                       if ( $wgAjaxWatch && $this->getUser()->isLoggedIn() ) {
                                $this->addModules( 'mediawiki.page.watch.ajax' );
                        }
 
@@ -2571,9 +2595,9 @@ $templates
        /**
         * TODO: Document
         * @param $modules Array/string with the module name(s)
-        * @param $only String ResourceLoaderModule TYPE_ class constant
+        * @param string $only ResourceLoaderModule TYPE_ class constant
         * @param $useESI boolean
-        * @param $extraQuery Array with extra query parameters to add to each request. array( param => value )
+        * @param array $extraQuery with extra query parameters to add to each request. array( param => value )
         * @param $loadCall boolean If true, output an (asynchronous) mw.loader.load() call rather than a "<script src='...'>" tag
         * @return string html "<script>" and "<style>" tags
         */
@@ -2601,6 +2625,9 @@ $templates
                                return $links;
                        }
                }
+               if ( !is_null( $this->mTarget ) ) {
+                       $extraQuery['target'] = $this->mTarget;
+               }
 
                // Create keyed-by-group list of module objects from modules list
                $groups = array();
@@ -2613,8 +2640,8 @@ $templates
                                        && $only == ResourceLoaderModule::TYPE_SCRIPTS )
                                || ( $module->getOrigin() > $this->getAllowedModules( ResourceLoaderModule::TYPE_STYLES )
                                        && $only == ResourceLoaderModule::TYPE_STYLES )
-                               )
-                       {
+                               || ( $this->mTarget && !in_array( $this->mTarget, $module->getTargets() ) )
+                       {
                                continue;
                        }
 
@@ -2649,7 +2676,7 @@ $templates
                        );
                        $context = new ResourceLoaderContext( $resourceLoader, new FauxRequest( $query ) );
                        // Extract modules that know they're empty
-                       $emptyModules = array ();
+                       $emptyModules = array();
                        foreach ( $grpModules as $key => $module ) {
                                if ( $module->isKnownEmpty( $context ) ) {
                                        $emptyModules[$key] = 'ready';
@@ -2660,13 +2687,9 @@ $templates
                        if ( count( $emptyModules ) > 0 && $only !== ResourceLoaderModule::TYPE_STYLES ) {
                                // If we're only getting the styles, we don't need to do anything for empty modules.
                                $links .= Html::inlineScript(
-
                                                ResourceLoader::makeLoaderConditionalScript(
-
                                                                ResourceLoader::makeLoaderStateScript( $emptyModules )
-
                                                )
-
                                ) . "\n";
                        }
 
@@ -2696,7 +2719,7 @@ $templates
                        }
                        // Special handling for the user group; because users might change their stuff
                        // on-wiki like user pages, or user preferences; we need to find the highest
-                       // timestamp of these user-changable modules so we can ensure cache misses on change
+                       // timestamp of these user-changeable modules so we can ensure cache misses on change
                        // This should NOT be done for the site group (bug 27564) because anons get that too
                        // and we shouldn't be putting timestamps in Squid-cached HTML
                        $version = null;
@@ -2733,7 +2756,7 @@ $templates
                                // Automatically select style/script elements
                                if ( $only === ResourceLoaderModule::TYPE_STYLES ) {
                                        $link = Html::linkedStyle( $url );
-                               } else if ( $loadCall ) {
+                               } elseif ( $loadCall ) {
                                        $link = Html::inlineScript(
                                                ResourceLoader::makeLoaderConditionalScript(
                                                        Xml::encodeJsCall( 'mw.loader.load', array( $url, 'text/javascript', true ) )
@@ -2744,7 +2767,7 @@ $templates
                                }
                        }
 
-                       if( $group == 'noscript' ) {
+                       if ( $group == 'noscript' ) {
                                $links .= Html::rawElement( 'noscript', array(), $link ) . "\n";
                        } else {
                                $links .= $link . "\n";
@@ -2848,14 +2871,14 @@ $templates
                        );
                        $defaultModules['site'] = 'loading';
                } else {
-                       // The wiki is configured to not allow a site module.
-                       $defaultModules['site'] = 'missing';
+                       // Site module is empty, save request by marking ready in advance (bug 46857)
+                       $defaultModules['site'] = 'ready';
                }
 
                // Add user JS if enabled
                if ( $wgAllowUserJs ) {
                        if ( $this->getUser()->isLoggedIn() ) {
-                               if( $this->getTitle() && $this->getTitle()->isJsSubpage() && $this->userCanPreview() ) {
+                               if ( $this->getTitle() && $this->getTitle()->isJsSubpage() && $this->userCanPreview() ) {
                                        # XXX: additional security check/prompt?
                                        // We're on a preview of a JS subpage
                                        // Exclude this page from the user module in case it's in there (bug 26283)
@@ -2875,15 +2898,14 @@ $templates
                                }
                                $defaultModules['user'] = 'loading';
                        } else {
-                               // Non-logged-in users have no user module. Treat it as empty and 'ready' to avoid
-                               // blocking default gadgets that might depend on it. Although arguably default-enabled
-                               // gadgets should not depend on the user module, it's harmless and less error-prone to
-                               // handle this case.
+                               // Non-logged-in users have an empty user module.
+                               // Save request by marking ready in advance (bug 46857)
                                $defaultModules['user'] = 'ready';
                        }
                } else {
-                       // User JS disabled
-                       $defaultModules['user'] = 'missing';
+                       // User modules are disabled on this wiki.
+                       // Save request by marking ready in advance (bug 46857)
+                       $defaultModules['user'] = 'ready';
                }
 
                // Group JS is only enabled if site JS is enabled.
@@ -2894,13 +2916,13 @@ $templates
                                );
                                $defaultModules['user.groups'] = 'loading';
                        } else {
-                               // Non-logged-in users have no user.groups module. Treat it as empty and 'ready' to
-                               // avoid blocking gadgets that might depend upon the module.
+                               // Non-logged-in users have no user.groups module.
+                               // Save request by marking ready in advance (bug 46857)
                                $defaultModules['user.groups'] = 'ready';
                        }
                } else {
                        // Site (and group JS) disabled
-                       $defaultModules['user.groups'] = 'missing';
+                       $defaultModules['user.groups'] = 'ready';
                }
 
                $loaderInit = '';
@@ -2952,7 +2974,6 @@ $templates
                $this->mJsConfigVars[$keys] = $value;
        }
 
-
        /**
         * Get an array containing the variables to be set in mw.config in JavaScript.
         *
@@ -3010,7 +3031,7 @@ $templates
                        'wgCanonicalNamespace' => $nsname,
                        'wgCanonicalSpecialPageName' => $canonicalName,
                        'wgNamespaceNumber' => $title->getNamespace(),
-                       'wgPageName' => $title->getPrefixedDBKey(),
+                       'wgPageName' => $title->getPrefixedDBkey(),
                        'wgTitle' => $title->getText(),
                        'wgCurRevisionId' => $latestRevID,
                        'wgArticleId' => $pageID,
@@ -3026,7 +3047,7 @@ $templates
                        'wgDefaultDateFormat' => $lang->getDefaultDateFormat(),
                        'wgMonthNames' => $lang->getMonthNamesArray(),
                        'wgMonthNamesShort' => $lang->getMonthAbbreviationsArray(),
-                       'wgRelevantPageName' => $relevantTitle->getPrefixedDBKey(),
+                       'wgRelevantPageName' => $relevantTitle->getPrefixedDBkey(),
                );
                if ( $user->isLoggedIn() ) {
                        $vars['wgUserId'] = $user->getId();
@@ -3044,7 +3065,7 @@ $templates
                        $vars['wgIsMainPage'] = true;
                }
                if ( $this->mRedirectedFrom ) {
-                       $vars['wgRedirectedFrom'] = $this->mRedirectedFrom->getPrefixedDBKey();
+                       $vars['wgRedirectedFrom'] = $this->mRedirectedFrom->getPrefixedDBkey();
                }
 
                // Allow extensions to add their custom variables to the mw.config map.
@@ -3082,7 +3103,7 @@ $templates
        }
 
        /**
-        * @param $addContentType bool: Whether "<meta>" specifying content type should be returned
+        * @param bool $addContentType Whether "<meta>" specifying content type should be returned
         *
         * @return array in format "link name or number => 'link html'".
         */
@@ -3120,7 +3141,7 @@ $templates
                ) );
 
                $p = "{$this->mIndexPolicy},{$this->mFollowPolicy}";
-               if( $p !== 'index,follow' ) {
+               if ( $p !== 'index,follow' ) {
                        // http://www.robotstxt.org/wc/meta-user.html
                        // Only show if it's different from the default robots policy
                        $tags['meta-robots'] = Html::element( 'meta', array(
@@ -3223,7 +3244,6 @@ $templates
                        ) );
                }
 
-
                # Language variants
                if ( !$wgDisableLangConversion && $wgCanonicalLanguageLinks ) {
                        $lang = $this->getTitle()->getPageLanguage();
@@ -3269,7 +3289,7 @@ $templates
 
                # Feeds
                if ( $wgFeed ) {
-                       foreach( $this->getSyndicationLinks() as $format => $link ) {
+                       foreach ( $this->getSyndicationLinks() as $format => $link ) {
                                # Use the page name for the title.  In principle, this could
                                # lead to issues with having the same name for different feeds
                                # corresponding to the same page, but we can't avoid that at
@@ -3304,7 +3324,7 @@ $templates
                                foreach ( $wgAdvertisedFeedTypes as $format ) {
                                        $tags[] = $this->feedLink(
                                                $format,
-                                               $rctitle->getLocalURL( "feed={$format}" ),
+                                               $rctitle->getLocalURL( array( 'feed' => $format ) ),
                                                $this->msg( "site-{$format}-feed", $wgSitename )->text() # For grep: 'site-rss-feed', 'site-atom-feed'.
                                        );
                                }
@@ -3333,7 +3353,7 @@ $templates
 
        /**
         * @param $unused
-        * @param $addContentType bool: Whether "<meta>" specifying content type should be returned
+        * @param bool $addContentType Whether "<meta>" specifying content type should be returned
         *
         * @return string HTML tag links to be put in the header.
         */
@@ -3344,9 +3364,9 @@ $templates
        /**
         * Generate a "<link rel/>" for a feed.
         *
-        * @param $type String: feed type
-        * @param $url String: URL to the feed
-        * @param $text String: value of the "title" attribute
+        * @param string $type feed type
+        * @param string $url URL to the feed
+        * @param string $text value of the "title" attribute
         * @return String: HTML fragment
         */
        private function feedLink( $type, $url, $text ) {
@@ -3362,22 +3382,22 @@ $templates
         * Add a local or specified stylesheet, with the given media options.
         * Meant primarily for internal use...
         *
-        * @param $style String: URL to the file
-        * @param $media String: to specify a media type, 'screen', 'printable', 'handheld' or any.
-        * @param $condition String: for IE conditional comments, specifying an IE version
-        * @param $dir String: set to 'rtl' or 'ltr' for direction-specific sheets
+        * @param string $style URL to the file
+        * @param string $media to specify a media type, 'screen', 'printable', 'handheld' or any.
+        * @param string $condition for IE conditional comments, specifying an IE version
+        * @param string $dir set to 'rtl' or 'ltr' for direction-specific sheets
         */
        public function addStyle( $style, $media = '', $condition = '', $dir = '' ) {
                $options = array();
                // Even though we expect the media type to be lowercase, but here we
                // force it to lowercase to be safe.
-               if( $media ) {
+               if ( $media ) {
                        $options['media'] = $media;
                }
-               if( $condition ) {
+               if ( $condition ) {
                        $options['condition'] = $condition;
                }
-               if( $dir ) {
+               if ( $dir ) {
                        $options['dir'] = $dir;
                }
                $this->styles[$style] = $options;
@@ -3386,10 +3406,10 @@ $templates
        /**
         * Adds inline CSS styles
         * @param $style_css Mixed: inline CSS
-        * @param $flip String: Set to 'flip' to flip the CSS if needed
+        * @param string $flip Set to 'flip' to flip the CSS if needed
         */
        public function addInlineStyle( $style_css, $flip = 'noflip' ) {
-               if( $flip === 'flip' && $this->getLanguage()->isRTL() ) {
+               if ( $flip === 'flip' && $this->getLanguage()->isRTL() ) {
                        # If wanted, and the interface is right-to-left, flip the CSS
                        $style_css = CSSJanus::transform( $style_css, true, false );
                }
@@ -3403,8 +3423,7 @@ $templates
         * @return string
         */
        public function buildCssLinks() {
-               global $wgUseSiteCss, $wgAllowUserCss, $wgAllowUserCssPrefs,
-                       $wgLang, $wgContLang;
+               global $wgUseSiteCss, $wgAllowUserCss, $wgAllowUserCssPrefs, $wgContLang;
 
                $this->getSkin()->setupSkinUserCss( $this );
 
@@ -3420,7 +3439,7 @@ $templates
                if ( $wgUseSiteCss ) {
                        $moduleStyles[] = 'site';
                        $moduleStyles[] = 'noscript';
-                       if( $this->getUser()->isLoggedIn() ) {
+                       if ( $this->getUser()->isLoggedIn() ) {
                                $moduleStyles[] = 'user.groups';
                        }
                }
@@ -3438,7 +3457,7 @@ $templates
                                // If needed, Janus it first. This is user-supplied CSS, so it's
                                // assumed to be right for the content language directionality.
                                $previewedCSS = $this->getRequest()->getText( 'wpTextbox1' );
-                               if ( $wgLang->getDir() !== $wgContLang->getDir() ) {
+                               if ( $this->getLanguage()->getDir() !== $wgContLang->getDir() ) {
                                        $previewedCSS = CSSJanus::transform( $previewedCSS, true, false );
                                }
                                $otherTags .= Html::inlineStyle( $previewedCSS );
@@ -3501,9 +3520,9 @@ $templates
                }
                $this->mExtStyles = array();
 
-               foreach( $this->styles as $file => $options ) {
+               foreach ( $this->styles as $file => $options ) {
                        $link = $this->styleLink( $file, $options );
-                       if( $link ) {
+                       if ( $link ) {
                                $links[$file] = $link;
                        }
                }
@@ -3513,28 +3532,28 @@ $templates
        /**
         * Generate \<link\> tags for stylesheets
         *
-        * @param $style String: URL to the file
-        * @param $options Array: option, can contain 'condition', 'dir', 'media'
+        * @param string $style URL to the file
+        * @param array $options option, can contain 'condition', 'dir', 'media'
         *                 keys
         * @return String: HTML fragment
         */
        protected function styleLink( $style, $options ) {
-               if( isset( $options['dir'] ) ) {
-                       if( $this->getLanguage()->getDir() != $options['dir'] ) {
+               if ( isset( $options['dir'] ) ) {
+                       if ( $this->getLanguage()->getDir() != $options['dir'] ) {
                                return '';
                        }
                }
 
-               if( isset( $options['media'] ) ) {
+               if ( isset( $options['media'] ) ) {
                        $media = self::transformCssMedia( $options['media'] );
-                       if( is_null( $media ) ) {
+                       if ( is_null( $media ) ) {
                                return '';
                        }
                } else {
                        $media = 'all';
                }
 
-               if( substr( $style, 0, 1 ) == '/' ||
+               if ( substr( $style, 0, 1 ) == '/' ||
                        substr( $style, 0, 5 ) == 'http:' ||
                        substr( $style, 0, 6 ) == 'https:' ) {
                        $url = $style;
@@ -3545,7 +3564,7 @@ $templates
 
                $link = Html::linkedStyle( $url, $media );
 
-               if( isset( $options['condition'] ) ) {
+               if ( isset( $options['condition'] ) ) {
                        $condition = htmlspecialchars( $options['condition'] );
                        $link = "<!--[if $condition]>$link<![endif]-->";
                }
@@ -3555,7 +3574,7 @@ $templates
        /**
         * Transform "media" attribute based on request parameters
         *
-        * @param $media String: current value of the "media" attribute
+        * @param string $media current value of the "media" attribute
         * @return String: modified value of the "media" attribute, or null to skip
         * this stylesheet
         */
@@ -3570,22 +3589,22 @@ $templates
                        'printable' => 'print',
                        'handheld' => 'handheld',
                );
-               foreach( $switches as $switch => $targetMedia ) {
-                       if( $wgRequest->getBool( $switch ) ) {
-                               if( $media == $targetMedia ) {
+               foreach ( $switches as $switch => $targetMedia ) {
+                       if ( $wgRequest->getBool( $switch ) ) {
+                               if ( $media == $targetMedia ) {
                                        $media = '';
-                               } elseif( preg_match( $screenMediaQueryRegex, $media ) === 1 ) {
+                               } elseif ( preg_match( $screenMediaQueryRegex, $media ) === 1 ) {
                                        // This regex will not attempt to understand a comma-separated media_query_list
                                        //
                                        // Example supported values for $media: 'screen', 'only screen', 'screen and (min-width: 982px)' ),
                                        // Example NOT supported value for $media: '3d-glasses, screen, print and resolution > 90dpi'
                                        //
-                                       // If it's a print request, we never want any kind of screen styesheets
+                                       // If it's a print request, we never want any kind of screen stylesheets
                                        // If it's a handheld request (currently the only other choice with a switch),
                                        // we don't want simple 'screen' but we might want screen queries that
                                        // have a max-width or something, so we'll pass all others on and let the
                                        // client do the query.
-                                       if( $targetMedia == 'print' || $media == 'screen' ) {
+                                       if ( $targetMedia == 'print' || $media == 'screen' ) {
                                                return null;
                                        }
                                }
@@ -3593,13 +3612,13 @@ $templates
                }
 
                // Expand longer media queries as iPhone doesn't grok 'handheld'
-               if( $wgHandheldForIPhone ) {
+               if ( $wgHandheldForIPhone ) {
                        $mediaAliases = array(
                                'screen' => 'screen and (min-device-width: 481px)',
                                'handheld' => 'handheld, only screen and (max-device-width: 480px)',
                        );
 
-                       if( isset( $mediaAliases[$media] ) ) {
+                       if ( isset( $mediaAliases[$media] ) ) {
                                $media = $mediaAliases[$media];
                        }
                }
@@ -3683,7 +3702,7 @@ $templates
         * Include jQuery core. Use this to avoid loading it multiple times
         * before we get a usable script loader.
         *
-        * @param $modules Array: list of jQuery modules which should be loaded
+        * @param array $modules list of jQuery modules which should be loaded
         * @return Array: the list of modules which were not loaded.
         * @since 1.16
         * @deprecated since 1.17