Some configurations (such as date formats and gender namespaces) have also
been updated when using the fallback language's configuration was inadequate.
The new or reinstated language fallbacks are (after cs ↔ sk in 1.28):
- hsb ↔ dsb, io → eo, mdf → ru, pnt → el, roa-tara → it.
+ ca ↔ oc; hsb ↔ dsb; io → eo; mdf → ru; pnt → el; roa-tara → it; rup → ro;
+ sh → bs, sr-el, hr.
==== No fallback for Ukrainian ====
* (T39314) The fallback from Ukrainian to Russian was removed. The Ukrainian
'CheckStorage' => __DIR__ . '/maintenance/storage/checkStorage.php',
'CheckSyntax' => __DIR__ . '/maintenance/checkSyntax.php',
'CheckUsernames' => __DIR__ . '/maintenance/checkUsernames.php',
- 'ChronologyProtector' => __DIR__ . '/includes/libs/rdbms/ChronologyProtector.php',
'ClassCollector' => __DIR__ . '/includes/utils/AutoloadGenerator.php',
'CleanupAncientTables' => __DIR__ . '/maintenance/cleanupAncientTables.php',
'CleanupBlocks' => __DIR__ . '/maintenance/cleanupBlocks.php',
'TrackBlobs' => __DIR__ . '/maintenance/storage/trackBlobs.php',
'TrackingCategories' => __DIR__ . '/includes/TrackingCategories.php',
'TraditionalImageGallery' => __DIR__ . '/includes/gallery/TraditionalImageGallery.php',
- 'TransactionProfiler' => __DIR__ . '/includes/libs/rdbms/TransactionProfiler.php',
'TransformParameterError' => __DIR__ . '/includes/media/MediaTransformOutput.php',
'TransformTooBigImageAreaError' => __DIR__ . '/includes/media/MediaTransformOutput.php',
'TransformationalImageHandler' => __DIR__ . '/includes/media/TransformationalImageHandler.php',
'WikiRevision' => __DIR__ . '/includes/import/WikiRevision.php',
'WikiStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
'WikiTextStructure' => __DIR__ . '/includes/content/WikiTextStructure.php',
+ 'Wikimedia\\Rdbms\\ChronologyProtector' => __DIR__ . '/includes/libs/rdbms/ChronologyProtector.php',
'Wikimedia\\Rdbms\\ConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/ConnectionManager.php',
'Wikimedia\\Rdbms\\SessionConsistentConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/SessionConsistentConnectionManager.php',
+ 'Wikimedia\\Rdbms\\TransactionProfiler' => __DIR__ . '/includes/libs/rdbms/TransactionProfiler.php',
'WikitextContent' => __DIR__ . '/includes/content/WikitextContent.php',
'WikitextContentHandler' => __DIR__ . '/includes/content/WikitextContentHandler.php',
'WinCacheBagOStuff' => __DIR__ . '/includes/libs/objectcache/WinCacheBagOStuff.php',
},
"requires": {
"type": "object",
- "description": "Indicates what versions of MediaWiki core are required. This syntax may be extended in the future, for example to check dependencies between other extensions.",
+ "description": "Indicates what versions of MediaWiki core or extensions are required. This syntax may be extended in the future, for example to check dependencies between other services.",
+ "additionalProperties": false,
"properties": {
"MediaWiki": {
"type": "string",
"description": "Version constraint string against MediaWiki core."
+ },
+ "extensions": {
+ "type": "object",
+ "description": "Set of version constraint strings against specific extensions."
+ },
+ "skins": {
+ "type": "object",
+ "description": "Set of version constraint strings against specific skins."
}
}
},
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\ChronologyProtector;
/**
* The MediaWiki class is the helper class for the index.php entry point.
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
+use Wikimedia\ScopedCallback;
/**
* Class for scanning through chronological, log-structured data or change logs
* @file
* @ingroup Database
*/
+
+namespace Wikimedia\Rdbms;
+
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
use Wikimedia\WaitConditionLoop;
+use BagOStuff;
+use DBMasterPos;
+use ILoadBalancer;
/**
* Class for ensuring a consistent ordering of events as seen by the user, despite replication.
$this->clientId = md5( $client['ip'] . "\n" . $client['agent'] );
$this->key = $store->makeGlobalKey( __CLASS__, $this->clientId );
$this->waitForPosTime = $posTime;
- $this->logger = new \Psr\Log\NullLogger();
+ $this->logger = new NullLogger();
}
public function setLogger( LoggerInterface $logger ) {
* @author Aaron Schulz
*/
+namespace Wikimedia\Rdbms;
+
use Psr\Log\LoggerInterface;
use Psr\Log\LoggerAwareInterface;
use Psr\Log\NullLogger;
+use RuntimeException;
/**
* Helper class that detects high-contention DB queries via profiling calls
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerInterface;
use Wikimedia\ScopedCallback;
+use Wikimedia\Rdbms\TransactionProfiler;
/**
* Relational database abstraction object
use Psr\Log\LoggerInterface;
use Wikimedia\ScopedCallback;
+use Wikimedia\Rdbms\TransactionProfiler;
+use Wikimedia\Rdbms\ChronologyProtector;
/**
* An interface for generating database load balancers
*/
use Psr\Log\LoggerInterface;
use Wikimedia\ScopedCallback;
+use Wikimedia\Rdbms\TransactionProfiler;
/**
* Database connection, tracking, load balancing, and transaction manager for a cluster
use \MediaWiki\MediaWikiServices;
use \Wikimedia\WaitConditionLoop;
+use \Wikimedia\Rdbms\TransactionProfiler;
/**
* Class to store objects in the database
* @defgroup Profiler Profiler
*/
use Wikimedia\ScopedCallback;
+use Wikimedia\Rdbms\TransactionProfiler;
/**
* Profiler base class that defines the interface and some trivial
"editusergroup": "Load user groups",
"editinguser": "Changing user rights of {{GENDER:$1|user}} <strong>[[User:$1|$1]]</strong> $2",
"viewinguserrights": "Viewing user rights of {{GENDER:$1|user}} <strong>[[User:$1|$1]]</strong> $2",
- "userrights-editusergroup": "Edit user groups",
- "userrights-viewusergroup": "View user groups",
+ "userrights-editusergroup": "Edit {{GENDER:$1|user}} groups",
+ "userrights-viewusergroup": "View {{GENDER:$1|user}} groups",
"saveusergroups": "Save {{GENDER:$1|user}} groups",
"userrights-groupsmember": "Member of:",
"userrights-groupsmember-auto": "Implicit member of:",
$line = $this->lines[$this->pos++];
$heading = $this->getHeading( $line );
$expectedEnd = 'end' . $heading;
- $contents = $line;
+ $contents = "$line\n";
do {
$line = $this->lines[$this->pos++];
* @copyright © 2013 Wikimedia Foundation Inc.
*/
+use Wikimedia\Rdbms\TransactionProfiler;
+
/**
* Fake class around abstract class so we can call concrete methods.
*/
<?php
+use Wikimedia\Rdbms\TransactionProfiler;
+
/**
* Helper for testing the methods from the Database class
* @since 1.22
<?php
+
+use Wikimedia\Rdbms\ChronologyProtector;
+
/**
* Holds tests for LBFactory abstract MediaWiki class.
*
return $mock;
}
+
+ public function testSubPageRedirect() {
+ $this->setMwGlobals( [
+ 'wgScript' => '/w/index.php',
+ ] );
+
+ $ctx = new RequestContext;
+ $sp = Title::newFromText( 'Special:Search/foo_bar' );
+ SpecialPageFactory::executePath( $sp, $ctx );
+ $url = $ctx->getOutput()->getRedirect();
+ // some older versions of hhvm have a bug that doesn't parse relative
+ // urls with a port, so help it out a little bit.
+ // https://github.com/facebook/hhvm/issues/7136
+ $url = wfExpandUrl( $url, PROTO_CURRENT );
+
+ $parts = parse_url( $url );
+ $this->assertEquals( '/w/index.php', $parts['path'] );
+ parse_str( $parts['query'], $query );
+ $this->assertEquals( 'Special:Search', $query['title'] );
+ $this->assertEquals( 'foo bar', $query['search'] );
+ }
}
class SpecialSearchTestMockResultSet extends SearchResultSet {
+++ /dev/null
-<?php
-
-class SpecialSearchText extends \PHPUnit_Framework_TestCase {
- public function testSubPageRedirect() {
- $ctx = new RequestContext;
-
- SpecialPageFactory::executePath(
- Title::newFromText( 'Special:Search/foo_bar' ),
- $ctx
- );
- $url = $ctx->getOutput()->getRedirect();
- // some older versions of hhvm have a bug that doesn't parse relative
- // urls with a port, so help it out a little bit.
- // https://github.com/facebook/hhvm/issues/7136
- $url = wfExpandUrl( $url, PROTO_CURRENT );
-
- $parts = parse_url( $url );
- $this->assertEquals( '/w/index.php', $parts['path'] );
- parse_str( $parts['query'], $query );
- $this->assertEquals( 'Special:Search', $query['title'] );
- $this->assertEquals( 'foo bar', $query['search'] );
- }
-}