Provide MW_VERSION and deprecate fake global $wgVersion

$wgVersion is not a configuration variable, it should never be
changed at run-time.

While we've gone in the route of class constants for most constants,
this one will not benefit from class-autoloading since it needs to
be present from the very beginning.

MW_VERSION is named similarly as PHP_VERSION, and $wgVersion is
now soft-deprecated.

Bug: T212738
Change-Id: I04628de4152dd5c72646813e08ff35e422e265a4
This commit is contained in:
Timo Tijhof 2020-02-25 01:28:12 +00:00 committed by Krinkle
parent 7f637d3b4a
commit a5d5ea82ca
5 changed files with 17 additions and 7 deletions

View file

@ -451,6 +451,7 @@ because of Phabricator reports.
- getAllContentFormats
- protected $handler (not need anymore)
- cleanupHandlersCache (not need anymore)
* (T212738) The $wgVersion global is deprecated; instead, use MW_VERSION.
* $wgMemc is deprecated, use
MediaWikiServices::getInstance()->getLocalServerObjectCache() instead.
* ImagePage::getImageLimitsFromOptions() is deprecated. Use static function

View file

@ -71,8 +71,9 @@ $wgConfigRegistry = [
/**
* MediaWiki version number
* @since 1.2
* @deprecated since 1.35; use the MW_VERSION constant instead
*/
$wgVersion = '1.35.0-alpha';
$wgVersion = MW_VERSION;
/**
* Name of the site. It must be changed in LocalSettings.php

View file

@ -29,6 +29,15 @@ use Wikimedia\Rdbms\IDatabase;
* @defgroup Constants MediaWiki constants
*/
/**
* The running version of MediaWiki.
*
* This replaces the the $wgVersion global found in earlier versions.
*
* @since 1.35
*/
define( 'MW_VERSION', '1.35.0-alpha' );
# Obsolete aliases
/** @{

View file

@ -9,19 +9,19 @@
class MediaWikiVersionFetcher {
/**
* Returns the MediaWiki version, in the format used by MediaWiki's wgVersion global.
* Get the MediaWiki version, extracted from the PHP source file where it is defined.
*
* @return string
* @throws RuntimeException
*/
public function fetchVersion() {
$defaultSettings = file_get_contents( __DIR__ . '/DefaultSettings.php' );
$code = file_get_contents( __DIR__ . '/Defines.php' );
$matches = [];
preg_match( "/wgVersion = '([0-9a-zA-Z\.\-]+)';/", $defaultSettings, $matches );
preg_match( "/define\( 'MW_VERSION', '([0-9a-zA-Z\.\-]+)'/", $code, $matches );
if ( count( $matches ) !== 2 ) {
throw new RuntimeException( 'Could not extract the MediaWiki version from DefaultSettings.php' );
throw new RuntimeException( 'Could not extract the MediaWiki version from Defines.php' );
}
return $matches[1];

View file

@ -13,9 +13,8 @@
class MediaWikiVersionFetcherTest extends \MediaWikiIntegrationTestCase {
public function testReturnsResult() {
global $wgVersion;
$versionFetcher = new MediaWikiVersionFetcher();
$this->assertSame( $wgVersion, $versionFetcher->fetchVersion() );
$this->assertSame( MW_VERSION, $versionFetcher->fetchVersion() );
}
}