Don't display composer installed extensions/skins on Special:Version
authorKunal Mehta <legoktm@gmail.com>
Sat, 3 Jan 2015 23:28:02 +0000 (15:28 -0800)
committerBryanDavis <bdavis@wikimedia.org>
Mon, 5 Jan 2015 15:58:43 +0000 (15:58 +0000)
Extensions and skins should already be adding their credits through
$wgExtensionCredits, meaning that they would be duplicated in the
"Installed libraries" section.

Anything that has a type that begins with "mediawiki-" will now
be skipped.

Release notes were added for this commit and 528297f8db8dea.

Change-Id: Ie873b16c1a8a696c7de833ae69b263161d9e15a8

RELEASE-NOTES-1.25
includes/libs/composer/ComposerLock.php
includes/specials/SpecialVersion.php
maintenance/checkComposerLockUpToDate.php
tests/phpunit/data/composer/composer.lock
tests/phpunit/includes/libs/composer/ComposerLockTest.php

index 4e195c5..abbe9f7 100644 (file)
@@ -71,6 +71,10 @@ production.
   should implement supporting behavior. Not doing so can result in undefined
   behavior from API clients trying to continue through prefix results.
 * Update jQuery from v1.11.1 to v1.11.2.
+* Installed external libraries installed via composer will now be displayed
+  on Special:Version in their own section. Extensions or skins that are installed
+  via composer will not be shown in this section as it is assumed they will add
+  the proper credits to the skins or extensions section.
 
 ==== External libraries ====
 * MediaWiki now requires certain external libraries to be installed. In the past
index d2b0e8e..9c7bf2f 100644 (file)
@@ -27,7 +27,10 @@ class ComposerLock {
        public function getInstalledDependencies() {
                $deps = array();
                foreach ( $this->contents['packages'] as $installed ) {
-                       $deps[$installed['name']] = ComposerJson::normalizeVersion( $installed['version'] );
+                       $deps[$installed['name']] = array(
+                               'version' => ComposerJson::normalizeVersion( $installed['version'] ),
+                               'type' => $installed['type'],
+                       );
                }
 
                return $deps;
index 3747e92..c836656 100644 (file)
@@ -531,11 +531,16 @@ class SpecialVersion extends SpecialPage {
                        . Html::element( 'th', array(), $this->msg( 'version-libraries-library' )->text() )
                        . Html::element( 'th', array(), $this->msg( 'version-libraries-version' )->text() )
                        . Html::closeElement( 'tr' );
-               ;
-               foreach ( $lock->getInstalledDependencies() as $name => $version ) {
+
+               foreach ( $lock->getInstalledDependencies() as $name => $info ) {
+                       if ( strpos( $info['type'], 'mediawiki-' ) === 0 ) {
+                               // Skip any extensions or skins since they'll be listed
+                               // in their proper section
+                               continue;
+                       }
                        $out .= Html::openElement( 'tr' )
                                . Html::rawElement( 'td', array(), Linker::makeExternalLink( "https://packagist.org/packages/$name", $name ) )
-                               . Html::element( 'td', array(), $version )
+                               . Html::element( 'td', array(), $info['version'] )
                                . Html::closeElement( 'tr' );
                }
                $out .= Html::closeElement( 'table' );
index 5ef2de6..0b77578 100644 (file)
@@ -39,8 +39,8 @@ class CheckComposerLockUpToDate extends Maintenance {
                $installed = $lock->getInstalledDependencies();
                foreach ( $json->getRequiredDependencies() as $name => $version ) {
                        if ( isset( $installed[$name] ) ) {
-                               if ( $installed[$name] !== $version ) {
-                                       $this->output( "$name: {$installed[$name]} installed, $version required.\n" );
+                               if ( $installed[$name]['version'] !== $version ) {
+                                       $this->output( "$name: {$installed[$name]['version']} installed, $version required.\n" );
                                        $found = true;
                                }
                        } else {
index 8b490de..cae6a47 100644 (file)
         "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "hash": "cc6e7fc565b246cb30b0cac103a2b31e",
+    "hash": "a3bb80b0ac4c4a31e52574d48c032923",
     "packages": [
         {
-            "name": "cdb/cdb",
-            "version": "1.0.0",
+            "name": "composer/installers",
+            "version": "v1.0.19",
             "source": {
                 "type": "git",
-                "url": "https://github.com/wikimedia/cdb.git",
-                "reference": "918601ea3d31b8c37312e9c0e54446aa8bfb3425"
+                "url": "https://github.com/composer/installers.git",
+                "reference": "89d77bfbee79e16653f7162c86e602cc188471db"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/wikimedia/cdb/zipball/918601ea3d31b8c37312e9c0e54446aa8bfb3425",
-                "reference": "918601ea3d31b8c37312e9c0e54446aa8bfb3425",
+                "url": "https://api.github.com/repos/composer/installers/zipball/89d77bfbee79e16653f7162c86e602cc188471db",
+                "reference": "89d77bfbee79e16653f7162c86e602cc188471db",
                 "shasum": ""
             },
-            "require": {
-                "php": ">=5.3.2"
+            "replace": {
+                "roundcube/plugin-installer": "*",
+                "shama/baton": "*"
             },
             "require-dev": {
-                "phpunit/phpunit": "*"
+                "composer/composer": "1.0.*@dev",
+                "phpunit/phpunit": "4.1.*"
+            },
+            "type": "composer-installer",
+            "extra": {
+                "class": "Composer\\Installers\\Installer",
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
             },
-            "type": "library",
             "autoload": {
-                "classmap": [
-                    "src/"
-                ]
+                "psr-0": {
+                    "Composer\\Installers\\": "src/"
+                }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
-                "GPLv2"
+                "MIT"
             ],
             "authors": [
                 {
-                    "name": "Tim Starling",
-                    "email": "tstarling@wikimedia.org"
-                },
-                {
-                    "name": "Chad Horohoe",
-                    "email": "chad@wikimedia.org"
+                    "name": "Kyle Robinson Young",
+                    "email": "kyle@dontkry.com",
+                    "homepage": "https://github.com/shama"
                 }
             ],
-            "description": "Constant Database (CDB) wrapper library for PHP. Provides pure-PHP fallback when dba_* functions are absent.",
-            "homepage": "https://www.mediawiki.org/wiki/CDB",
-            "time": "2014-11-12 19:03:26"
+            "description": "A multi-framework Composer library installer",
+            "homepage": "http://composer.github.com/installers/",
+            "keywords": [
+                "Craft",
+                "Dolibarr",
+                "Hurad",
+                "MODX Evo",
+                "OXID",
+                "Thelia",
+                "WolfCMS",
+                "agl",
+                "annotatecms",
+                "bitrix",
+                "cakephp",
+                "chef",
+                "codeigniter",
+                "concrete5",
+                "croogo",
+                "dokuwiki",
+                "drupal",
+                "elgg",
+                "fuelphp",
+                "grav",
+                "installer",
+                "joomla",
+                "kohana",
+                "laravel",
+                "lithium",
+                "magento",
+                "mako",
+                "mediawiki",
+                "modulework",
+                "moodle",
+                "phpbb",
+                "piwik",
+                "ppi",
+                "puppet",
+                "roundcube",
+                "shopware",
+                "silverstripe",
+                "symfony",
+                "typo3",
+                "wordpress",
+                "zend",
+                "zikula"
+            ],
+            "time": "2014-11-29 01:29:17"
         },
         {
             "name": "cssjanus/cssjanus",
             "homepage": "http://leafo.net/lessphp/",
             "time": "2014-11-24 18:39:20"
         },
+        {
+            "name": "mediawiki/translate",
+            "version": "2014.12",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/wikimedia/mediawiki-extensions-Translate.git",
+                "reference": "2bc100763f3150380412faceea258c7378ce7ea0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Translate/zipball/2bc100763f3150380412faceea258c7378ce7ea0",
+                "reference": "2bc100763f3150380412faceea258c7378ce7ea0",
+                "shasum": ""
+            },
+            "require": {
+                "composer/installers": ">=1.0.1",
+                "mediawiki/universal-language-selector": "*",
+                "php": ">=5.3.0"
+            },
+            "suggest": {
+                "mediawiki/babel": "Users can easily indicate their language proficiency on their user page",
+                "mediawiki/translation-notifications": "Manage communication with translators",
+                "mustangostang/spyc": "More recent version of the bundled spyc library"
+            },
+            "type": "mediawiki-extension",
+            "autoload": {
+                "files": [
+                    "Translate.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0+"
+            ],
+            "authors": [
+                {
+                    "name": "Niklas Laxström",
+                    "email": "niklas.laxstrom@gmail.com",
+                    "role": "Lead nitpicker"
+                },
+                {
+                    "name": "Siebrand Mazeland",
+                    "email": "s.mazeland@xs4all.nl",
+                    "role": "Developer"
+                }
+            ],
+            "description": "The only standard solution to translate any kind of text with an avant-garde web interface within MediaWiki, including your documentation and software",
+            "homepage": "https://www.mediawiki.org/wiki/Extension:Translate",
+            "keywords": [
+                "g11n",
+                "i18n",
+                "internationalization",
+                "l10n",
+                "localization",
+                "m17n",
+                "mediawiki",
+                "translatewiki.net",
+                "translation"
+            ],
+            "time": "2014-12-30 15:21:24"
+        },
+        {
+            "name": "mediawiki/universal-language-selector",
+            "version": "2014.12",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/wikimedia/mediawiki-extensions-UniversalLanguageSelector.git",
+                "reference": "f730b0f47e2828001c1e03ec40d4681bfb0bff2d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-UniversalLanguageSelector/zipball/f730b0f47e2828001c1e03ec40d4681bfb0bff2d",
+                "reference": "f730b0f47e2828001c1e03ec40d4681bfb0bff2d",
+                "shasum": ""
+            },
+            "require": {
+                "composer/installers": ">=1.0.1",
+                "php": ">=5.3.0"
+            },
+            "suggest": {
+                "mediawiki/cldr": "Language names in all languages"
+            },
+            "type": "mediawiki-extension",
+            "autoload": {
+                "files": [
+                    "UniversalLanguageSelector.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0+",
+                "MIT"
+            ],
+            "description": "The primary aim is to allow users to select a language and configure its support in an easy way. Main features are language selection, input methods and web fonts.",
+            "homepage": "https://www.mediawiki.org/wiki/Extension:UniversalLanguageSelector",
+            "keywords": [
+                "Input methods",
+                "Language selection",
+                "Web fonts",
+                "mediawiki"
+            ],
+            "time": "2014-12-30 15:21:25"
+        },
+        {
+            "name": "oojs/oojs-ui",
+            "version": "v0.6.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/wikimedia/oojs-ui.git",
+                "reference": "50fa12637ad377f00bdbf1913406a3bfe9c1689e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/wikimedia/oojs-ui/zipball/50fa12637ad377f00bdbf1913406a3bfe9c1689e",
+                "reference": "50fa12637ad377f00bdbf1913406a3bfe9c1689e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "php/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "homepage": "https://www.mediawiki.org/wiki/OOjs_UI",
+            "time": "2014-12-16 20:50:05"
+        },
         {
             "name": "psr/log",
             "version": "1.0.0",
                 "psr-3"
             ],
             "time": "2012-12-21 11:40:51"
+        },
+        {
+            "name": "wikimedia/cdb",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/wikimedia/cdb.git",
+                "reference": "3b7d5366c88eccf2517ebac57c59eb557c82f46c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/wikimedia/cdb/zipball/3b7d5366c88eccf2517ebac57c59eb557c82f46c",
+                "reference": "3b7d5366c88eccf2517ebac57c59eb557c82f46c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "*"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "Tim Starling",
+                    "email": "tstarling@wikimedia.org"
+                },
+                {
+                    "name": "Chad Horohoe",
+                    "email": "chad@wikimedia.org"
+                }
+            ],
+            "description": "Constant Database (CDB) wrapper library for PHP. Provides pure-PHP fallback when dba_* functions are absent.",
+            "homepage": "https://www.mediawiki.org/wiki/CDB",
+            "time": "2014-12-08 19:26:44"
         }
     ],
     "packages-dev": [
         },
         {
             "name": "phpunit/php-code-coverage",
-            "version": "2.0.12",
+            "version": "2.0.14",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "7ce9da20f96964bb7a4033f53834df13328dbeab"
+                "reference": "ca158276c1200cc27f5409a5e338486bc0b4fc94"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7ce9da20f96964bb7a4033f53834df13328dbeab",
-                "reference": "7ce9da20f96964bb7a4033f53834df13328dbeab",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca158276c1200cc27f5409a5e338486bc0b4fc94",
+                "reference": "ca158276c1200cc27f5409a5e338486bc0b4fc94",
                 "shasum": ""
             },
             "require": {
                 "testing",
                 "xunit"
             ],
-            "time": "2014-12-02 13:17:01"
+            "time": "2014-12-26 13:28:33"
         },
         {
             "name": "phpunit/php-file-iterator",
         },
         {
             "name": "phpunit/phpunit",
-            "version": "4.3.5",
+            "version": "4.4.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "2dab9d593997db4abcf58d0daf798eb4e9cecfe1"
+                "reference": "6a5e49a86ce5e33b8d0657abe145057fc513543a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2dab9d593997db4abcf58d0daf798eb4e9cecfe1",
-                "reference": "2dab9d593997db4abcf58d0daf798eb4e9cecfe1",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6a5e49a86ce5e33b8d0657abe145057fc513543a",
+                "reference": "6a5e49a86ce5e33b8d0657abe145057fc513543a",
                 "shasum": ""
             },
             "require": {
                 "phpunit/phpunit-mock-objects": "~2.3",
                 "sebastian/comparator": "~1.0",
                 "sebastian/diff": "~1.1",
-                "sebastian/environment": "~1.0",
+                "sebastian/environment": "~1.1",
                 "sebastian/exporter": "~1.0",
+                "sebastian/global-state": "~1.0",
                 "sebastian/version": "~1.0",
                 "symfony/yaml": "~2.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.3.x-dev"
+                    "dev-master": "4.4.x-dev"
                 }
             },
             "autoload": {
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
-            "include-path": [
-                "",
-                "../../symfony/yaml/"
-            ],
             "license": [
                 "BSD-3-Clause"
             ],
                 }
             ],
             "description": "The PHP Unit Testing framework.",
-            "homepage": "http://www.phpunit.de/",
+            "homepage": "https://phpunit.de/",
             "keywords": [
                 "phpunit",
                 "testing",
                 "xunit"
             ],
-            "time": "2014-11-11 10:11:09"
+            "time": "2014-12-28 07:57:05"
         },
         {
             "name": "phpunit/phpunit-mock-objects",
         },
         {
             "name": "sebastian/comparator",
-            "version": "1.0.1",
+            "version": "1.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "e54a01c0da1b87db3c5a3c4c5277ddf331da4aef"
+                "reference": "c484a80f97573ab934e37826dba0135a3301b26a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e54a01c0da1b87db3c5a3c4c5277ddf331da4aef",
-                "reference": "e54a01c0da1b87db3c5a3c4c5277ddf331da4aef",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/c484a80f97573ab934e37826dba0135a3301b26a",
+                "reference": "c484a80f97573ab934e37826dba0135a3301b26a",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
                 "compare",
                 "equality"
             ],
-            "time": "2014-05-11 23:00:21"
+            "time": "2014-11-16 21:32:38"
         },
         {
             "name": "sebastian/diff",
             ],
             "time": "2014-09-10 00:51:36"
         },
+        {
+            "name": "sebastian/global-state",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/global-state.git",
+                "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
+                "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "suggest": {
+                "ext-uopz": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Snapshotting of global state",
+            "homepage": "http://www.github.com/sebastianbergmann/global-state",
+            "keywords": [
+                "global state"
+            ],
+            "time": "2014-10-06 09:23:50"
+        },
         {
             "name": "sebastian/version",
-            "version": "1.0.3",
+            "version": "1.0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/version.git",
-                "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43"
+                "reference": "a77d9123f8e809db3fbdea15038c27a95da4058b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
-                "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/a77d9123f8e809db3fbdea15038c27a95da4058b",
+                "reference": "a77d9123f8e809db3fbdea15038c27a95da4058b",
                 "shasum": ""
             },
             "type": "library",
             ],
             "description": "Library that helps with managing the version number of Git-hosted PHP projects",
             "homepage": "https://github.com/sebastianbergmann/version",
-            "time": "2014-03-07 15:35:33"
+            "time": "2014-12-15 14:25:24"
         },
         {
             "name": "symfony/yaml",
-            "version": "v2.6.0",
+            "version": "v2.6.1",
             "target-dir": "Symfony/Component/Yaml",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/Yaml.git",
-                "reference": "51c845cf3e4bfc182d1d5c05ed1c7338361d86f8"
+                "reference": "3346fc090a3eb6b53d408db2903b241af51dcb20"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Yaml/zipball/51c845cf3e4bfc182d1d5c05ed1c7338361d86f8",
-                "reference": "51c845cf3e4bfc182d1d5c05ed1c7338361d86f8",
+                "url": "https://api.github.com/repos/symfony/Yaml/zipball/3346fc090a3eb6b53d408db2903b241af51dcb20",
+                "reference": "3346fc090a3eb6b53d408db2903b241af51dcb20",
                 "shasum": ""
             },
             "require": {
             ],
             "description": "Symfony Yaml Component",
             "homepage": "http://symfony.com",
-            "time": "2014-11-20 13:24:23"
+            "time": "2014-12-02 20:19:20"
         }
     ],
     "aliases": [],
index 1b77106..b5fd5f6 100644 (file)
@@ -15,7 +15,7 @@ class ComposerLockTest extends MediaWikiTestCase {
         */
        public function testGetHash() {
                $lock = new ComposerLock( $this->lock );
-               $this->assertEquals( 'cc6e7fc565b246cb30b0cac103a2b31e', $lock->getHash() );
+               $this->assertEquals( 'a3bb80b0ac4c4a31e52574d48c032923', $lock->getHash() );
        }
 
        /**
@@ -24,10 +24,38 @@ class ComposerLockTest extends MediaWikiTestCase {
        public function testGetInstalledDependencies() {
                $lock = new ComposerLock( $this->lock );
                $this->assertArrayEquals( array(
-                       'cdb/cdb' => '1.0.0',
-                       'cssjanus/cssjanus' => '1.1.1',
-                       'leafo/lessphp' => '0.5.0',
-                       'psr/log' => '1.0.0',
+                       'wikimedia/cdb' => array(
+                               'version' => '1.0.1',
+                               'type' => 'library',
+                       ),
+                       'cssjanus/cssjanus' => array(
+                               'version' => '1.1.1',
+                               'type' => 'library',
+                       ),
+                       'leafo/lessphp' => array(
+                               'version' => '0.5.0',
+                               'type' => 'library',
+                       ),
+                       'psr/log' => array(
+                               'version' => '1.0.0',
+                               'type' => 'library',
+                       ),
+                       'oojs/oojs-ui' => array(
+                               'version' => '0.6.0',
+                               'type' => 'library',
+                       ),
+                       'composer/installers' => array(
+                               'version' => '1.0.19',
+                               'type' => 'composer-installer',
+                       ),
+                       'mediawiki/translate' => array(
+                               'version' => '2014.12',
+                               'type' => 'mediawiki-extension',
+                       ),
+                       'mediawiki/universal-language-selector' => array(
+                               'version' => '2014.12',
+                               'type' => 'mediawiki-extension',
+                       ),
                ), $lock->getInstalledDependencies(), false, true );
        }