Merge "objectcache: make sure variant keys are namespaced as keys should be"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 20 Nov 2017 20:41:16 +0000 (20:41 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 20 Nov 2017 20:41:16 +0000 (20:41 +0000)
RELEASE-NOTES-1.31
includes/specials/SpecialUserrights.php
includes/title/TitleValue.php
resources/Resources.php
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ItemMenuOptionWidget.js
resources/src/mediawiki.special/mediawiki.special.css
resources/src/mediawiki.special/mediawiki.special.userrights.css
tests/phpunit/includes/RevisionTest.php
tests/phpunit/includes/title/TitleValueTest.php

index a76ce0b..8caab05 100644 (file)
@@ -96,6 +96,8 @@ changes to languages because of Phabricator reports.
 * Due to significant refactoring, method ContribsPager::getUserCond() that had
   no access restriction has been removed.
 * Revision::setUserIdAndName() was deprecated.
+* Access to TitleValue class properties was deprecated, the relevant getters
+  should be used instead.
 
 == Compatibility ==
 MediaWiki 1.31 requires PHP 5.5.9 or later. There is experimental support for
index 0a712ef..4e4394d 100644 (file)
@@ -140,7 +140,7 @@ class UserrightsPage extends SpecialPage {
                $this->setHeaders();
                $this->outputHeader();
 
-               $out->addModuleStyles( 'mediawiki.special' );
+               $out->addModuleStyles( 'mediawiki.special.userrights.styles' );
                $this->addHelpLink( 'Help:Assigning permissions' );
 
                $this->switchForm();
index e2ee967..77c1953 100644 (file)
@@ -36,24 +36,28 @@ use Wikimedia\Assert\Assert;
 class TitleValue implements LinkTarget {
 
        /**
+        * @deprecated in 1.31. This class is immutable. Use the getter for access.
         * @var int
         */
-       private $namespace;
+       protected $namespace;
 
        /**
+        * @deprecated in 1.31. This class is immutable. Use the getter for access.
         * @var string
         */
-       private $dbkey;
+       protected $dbkey;
 
        /**
+        * @deprecated in 1.31. This class is immutable. Use the getter for access.
         * @var string
         */
-       private $fragment;
+       protected $fragment;
 
        /**
+        * @deprecated in 1.31. This class is immutable. Use the getter for access.
         * @var string
         */
-       private $interwiki;
+       protected $interwiki;
 
        /**
         * Constructs a TitleValue.
index 715f339..d9fa8e0 100644 (file)
@@ -2230,12 +2230,14 @@ return [
                ],
        ],
        'mediawiki.special.userrights' => [
-               'styles' => 'resources/src/mediawiki.special/mediawiki.special.userrights.css',
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.userrights.js',
                'dependencies' => [
                        'mediawiki.notification.convertmessagebox',
                ],
        ],
+       'mediawiki.special.userrights.styles' => [
+               'styles' => 'resources/src/mediawiki.special/mediawiki.special.userrights.css',
+       ],
        'mediawiki.special.watchlist' => [
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.watchlist.js',
                'messages' => [
index db43a53..51fc9bc 100644 (file)
                this.excludeLabel = new OO.ui.LabelWidget( {
                        label: mw.msg( 'rcfilters-filter-excluded' )
                } );
-               this.excludeLabel.toggle( this.itemModel.isSelected() && this.invertModel.isSelected() );
+               this.excludeLabel.toggle(
+                       this.itemModel.getGroupModel().getView() === 'namespaces' &&
+                       this.itemModel.isSelected() &&
+                       this.invertModel.isSelected()
+               );
 
                layout = new OO.ui.FieldLayout( this.checkboxWidget, {
                        label: $label,
                this.checkboxWidget.setSelected( this.itemModel.isSelected() );
 
                this.highlightButton.toggle( this.filtersViewModel.isHighlightEnabled() );
-               this.excludeLabel.toggle( this.itemModel.isSelected() && this.invertModel.isSelected() );
+               this.excludeLabel.toggle(
+                       this.itemModel.getGroupModel().getView() === 'namespaces' &&
+                       this.itemModel.isSelected() &&
+                       this.invertModel.isSelected()
+               );
        };
 
        /**
index 7f3b09a..5d0ec49 100644 (file)
        color: #72777d;
        font-size: 90%;
 }
-
-/* Special:UserRights */
-.mw-userrights-disabled {
-       color: #72777d;
-}
-.mw-userrights-groups * td,
-.mw-userrights-groups * th {
-       padding-right: 1.5em;
-}
-
-.mw-userrights-groups * th {
-       text-align: left;
-}
index a4b4087..acfdb56 100644 (file)
        display: inline-block;
        vertical-align: middle;
 }
+
+.mw-userrights-disabled {
+       color: #72777d;
+}
+.mw-userrights-groups * td,
+.mw-userrights-groups * th {
+       padding-right: 1.5em;
+}
+
+.mw-userrights-groups * th {
+       text-align: left;
+}
index 6965f09..d933d93 100644 (file)
@@ -372,6 +372,7 @@ class RevisionTest extends MediaWikiTestCase {
         * @covers Revision::fetchFromConds
         */
        public function testFetchFromConds( $flags, array $options ) {
+               $this->setMwGlobals( 'wgCommentTableSchemaMigrationStage', MIGRATION_OLD );
                $conditions = [ 'conditionsArray' ];
 
                $db = $this->getMock( IDatabase::class );
@@ -650,6 +651,7 @@ class RevisionTest extends MediaWikiTestCase {
        public function testSelectFields( $contentHandlerUseDB, $expected ) {
                $this->hideDeprecated( 'Revision::selectFields' );
                $this->setMwGlobals( 'wgContentHandlerUseDB', $contentHandlerUseDB );
+               $this->setMwGlobals( 'wgCommentTableSchemaMigrationStage', MIGRATION_OLD );
                $this->assertEquals( $expected, Revision::selectFields() );
        }
 
@@ -708,6 +710,7 @@ class RevisionTest extends MediaWikiTestCase {
        public function testSelectArchiveFields( $contentHandlerUseDB, $expected ) {
                $this->hideDeprecated( 'Revision::selectArchiveFields' );
                $this->setMwGlobals( 'wgContentHandlerUseDB', $contentHandlerUseDB );
+               $this->setMwGlobals( 'wgCommentTableSchemaMigrationStage', MIGRATION_OLD );
                $this->assertEquals( $expected, Revision::selectArchiveFields() );
        }
 
index 4dbda74..f833554 100644 (file)
@@ -116,4 +116,33 @@ class TitleValueTest extends MediaWikiTestCase {
 
                $this->assertEquals( $text, $title->getText() );
        }
+
+       public function provideTestToString() {
+               yield [
+                       new TitleValue( 0, 'Foo' ),
+                       '0:Foo'
+               ];
+               yield [
+                       new TitleValue( 1, 'Bar_Baz' ),
+                       '1:Bar_Baz'
+               ];
+               yield [
+                       new TitleValue( 9, 'JoJo', 'Frag' ),
+                       '9:JoJo#Frag'
+               ];
+               yield [
+                       new TitleValue( 200, 'tea', 'Fragment', 'wikicode' ),
+                       'wikicode:200:tea#Fragment'
+               ];
+       }
+
+       /**
+        * @dataProvider provideTestToString
+        */
+       public function testToString( TitleValue $value, $expected ) {
+               $this->assertSame(
+                       $expected,
+                       $value->__toString()
+               );
+       }
 }