aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--RELEASE-NOTES-1.435
-rw-r--r--includes/Message/Message.php8
-rw-r--r--includes/Message/UserGroupMembershipParam.php2
-rw-r--r--includes/libs/Message/MessageValue.php2
-rw-r--r--includes/libs/Message/ParamType.php1
-rw-r--r--includes/libs/Message/ScalarParam.php8
-rw-r--r--tests/phpunit/includes/Message/TextFormatterTest.php3
-rw-r--r--tests/phpunit/includes/language/MessageTest.php2
-rw-r--r--tests/phpunit/unit/includes/Message/UserGroupMembershipParamTest.php8
-rw-r--r--tests/phpunit/unit/includes/libs/Message/MessageValueTest.php2
10 files changed, 32 insertions, 9 deletions
diff --git a/RELEASE-NOTES-1.43 b/RELEASE-NOTES-1.43
index 3f00e3db547b..e807deedb57e 100644
--- a/RELEASE-NOTES-1.43
+++ b/RELEASE-NOTES-1.43
@@ -365,6 +365,11 @@ because of Phabricator reports.
DatabaseBlockStore.
* DatabaseBlockStore::getReadStage() and ::getWriteStage() are deprecated.
Use the new schema unconditionally.
+* To support a future change allowing serializing of MessageValue objects
+ as JSON, the methods MessageValue::objectParams(), Message::objectParams()
+ and Message::objectParam() are deprecated. The UserGroupMembershipParam
+ class, the ParamType::OBJECT constant, and passing Stringable objects to
+ ScalarParam are likewise deprecated.
* …
=== Other changes in 1.43 ===
diff --git a/includes/Message/Message.php b/includes/Message/Message.php
index 297ddfd4d9ed..0c96968dae58 100644
--- a/includes/Message/Message.php
+++ b/includes/Message/Message.php
@@ -718,6 +718,7 @@ class Message implements MessageSpecifier, Serializable {
* Add parameters that represent stringable objects
*
* @since 1.38
+ * @deprecated since 1.43
*
* @param Stringable|Stringable[] ...$params stringable parameters,
* or a single argument that is an array of stringable parameters.
@@ -725,11 +726,14 @@ class Message implements MessageSpecifier, Serializable {
* @return self $this
*/
public function objectParams( ...$params ) {
+ wfDeprecated( __METHOD__, '1.43' );
if ( isset( $params[0] ) && is_array( $params[0] ) ) {
$params = $params[0];
}
foreach ( $params as $param ) {
- $this->parameters[] = self::objectParam( $param );
+ // Suppress redundant deprecation warning
+ // phpcs:ignore Generic.PHP.NoSilencedErrors
+ $this->parameters[] = @self::objectParam( $param );
}
return $this;
}
@@ -1285,12 +1289,14 @@ class Message implements MessageSpecifier, Serializable {
/**
* @since 1.38
+ * @deprecated since 1.43
*
* @param Stringable $object
*
* @return Stringable[] Array with a single "object" key.
*/
public static function objectParam( Stringable $object ) {
+ wfDeprecated( __METHOD__, '1.43' );
return [ 'object' => $object ];
}
diff --git a/includes/Message/UserGroupMembershipParam.php b/includes/Message/UserGroupMembershipParam.php
index d9f5551cc043..3f9107072dfd 100644
--- a/includes/Message/UserGroupMembershipParam.php
+++ b/includes/Message/UserGroupMembershipParam.php
@@ -28,6 +28,7 @@ use Stringable;
/**
* @since 1.38
+ * @deprecated since 1.43 Use Language::getGroupMemberName() instead
*/
class UserGroupMembershipParam implements Stringable {
/** @var string */
@@ -37,6 +38,7 @@ class UserGroupMembershipParam implements Stringable {
private $member;
public function __construct( string $group, UserIdentity $member ) {
+ wfDeprecated( __CLASS__, '1.43' );
$this->group = $group;
$this->member = $member;
}
diff --git a/includes/libs/Message/MessageValue.php b/includes/libs/Message/MessageValue.php
index 3af73e460223..39b8365b0b11 100644
--- a/includes/libs/Message/MessageValue.php
+++ b/includes/libs/Message/MessageValue.php
@@ -97,10 +97,12 @@ class MessageValue {
/**
* Chainable mutator which adds object parameters
*
+ * @deprecated since 1.43
* @param Stringable ...$values stringable object values
* @return $this
*/
public function objectParams( ...$values ) {
+ wfDeprecated( __METHOD__, '1.43' );
foreach ( $values as $value ) {
$this->params[] = new ScalarParam( ParamType::OBJECT, $value );
}
diff --git a/includes/libs/Message/ParamType.php b/includes/libs/Message/ParamType.php
index 100adb70d9f8..1d17ea0cf660 100644
--- a/includes/libs/Message/ParamType.php
+++ b/includes/libs/Message/ParamType.php
@@ -68,6 +68,7 @@ class ParamType {
/**
* For arbitrary stringable objects
* @since 1.38
+ * @deprecated since 1.43
*/
public const OBJECT = 'object';
diff --git a/includes/libs/Message/ScalarParam.php b/includes/libs/Message/ScalarParam.php
index ca976f4f67b0..0de41ddf4c2f 100644
--- a/includes/libs/Message/ScalarParam.php
+++ b/includes/libs/Message/ScalarParam.php
@@ -20,6 +20,7 @@ class ScalarParam extends MessageParam {
*
* @param string $type One of the ParamType constants.
* @param string|int|float|MessageValue|Stringable $value
+ * Using Stringable objects is deprecated since 1.43.
*/
public function __construct( $type, $value ) {
if ( $type === ParamType::LIST ) {
@@ -27,8 +28,11 @@ class ScalarParam extends MessageParam {
'ParamType::LIST cannot be used with ScalarParam; use ListParam instead'
);
}
- if ( !is_string( $value ) && !is_numeric( $value ) &&
- !$value instanceof MessageValue && !$value instanceof Stringable ) {
+ if ( $value instanceof Stringable ) {
+ wfDeprecatedMsg( 'Passing Stringable objects to ScalarParam' .
+ ' was deprecated in MediaWiki 1.43', '1.43' );
+ } elseif ( !is_string( $value ) && !is_numeric( $value ) &&
+ !$value instanceof MessageValue ) {
$type = is_object( $value ) ? get_class( $value ) : gettype( $value );
throw new InvalidArgumentException(
"Scalar parameter must be a string, number, or MessageValue; got $type"
diff --git a/tests/phpunit/includes/Message/TextFormatterTest.php b/tests/phpunit/includes/Message/TextFormatterTest.php
index 03c0495d7f9d..0ffaf7565490 100644
--- a/tests/phpunit/includes/Message/TextFormatterTest.php
+++ b/tests/phpunit/includes/Message/TextFormatterTest.php
@@ -95,7 +95,8 @@ class TextFormatterTest extends MediaWikiIntegrationTestCase {
'test (group-bot) $2'
];
- yield [ ( new MessageValue( 'test' ) )
+ // Deprecated, silence deprecation warnings
+ @yield [ ( new MessageValue( 'test' ) )
->objectParams(
new UserGroupMembershipParam( 'bot', new UserIdentityValue( 1, 'user' ) )
),
diff --git a/tests/phpunit/includes/language/MessageTest.php b/tests/phpunit/includes/language/MessageTest.php
index d34dfec0055f..1aa91a75456b 100644
--- a/tests/phpunit/includes/language/MessageTest.php
+++ b/tests/phpunit/includes/language/MessageTest.php
@@ -493,6 +493,8 @@ class MessageTest extends MediaWikiLangTestCase {
}
public function testUserGroupMemberParams() {
+ $this->expectDeprecationAndContinue( '/UserGroupMembershipParam/' );
+ $this->expectDeprecationAndContinue( '/objectParams/' );
$lang = $this->getServiceContainer()->getLanguageFactory()->getLanguage( 'qqx' );
$msg = new RawMessage( '$1' );
$this->setUserLang( $lang );
diff --git a/tests/phpunit/unit/includes/Message/UserGroupMembershipParamTest.php b/tests/phpunit/unit/includes/Message/UserGroupMembershipParamTest.php
index cf758e7580cb..6d02a865c3ac 100644
--- a/tests/phpunit/unit/includes/Message/UserGroupMembershipParamTest.php
+++ b/tests/phpunit/unit/includes/Message/UserGroupMembershipParamTest.php
@@ -41,7 +41,7 @@ class UserGroupMembershipParamTest extends MediaWikiUnitTestCase {
}
public function testConstruct() {
- $param = new UserGroupMembershipParam( $this->group, $this->member );
+ $param = @new UserGroupMembershipParam( $this->group, $this->member );
$this->assertSame( $this->group, $param->getGroup() );
$this->assertSame( $this->member, $param->getMember() );
}
@@ -50,7 +50,7 @@ class UserGroupMembershipParamTest extends MediaWikiUnitTestCase {
$groupMock = 'users';
$userNameMock = 'MockUser';
$userIdentityMock = new UserIdentityValue( 1, $userNameMock );
- $param = new UserGroupMembershipParam( $groupMock, $userIdentityMock );
+ $param = @new UserGroupMembershipParam( $groupMock, $userIdentityMock );
$this->assertSame( $groupMock, $param->getGroup(),
'Group name should match the constructor argument.' );
}
@@ -59,7 +59,7 @@ class UserGroupMembershipParamTest extends MediaWikiUnitTestCase {
$groupMock = 'users';
$userNameMock = 'MockUser';
$userIdentityMock = new UserIdentityValue( 1, $userNameMock );
- $param = new UserGroupMembershipParam( $groupMock, $userIdentityMock );
+ $param = @new UserGroupMembershipParam( $groupMock, $userIdentityMock );
$this->assertSame( $userIdentityMock, $param->getMember(),
'User identity object should match the constructor argument.' );
}
@@ -70,7 +70,7 @@ class UserGroupMembershipParamTest extends MediaWikiUnitTestCase {
$userIdentityMock = new UserIdentityValue( 2, 'MockAdminUser' );
// Create the UserGroupMembershipParam instance with mocks.
- $param = new UserGroupMembershipParam( $groupMock, $userIdentityMock );
+ $param = @new UserGroupMembershipParam( $groupMock, $userIdentityMock );
$expectedString = 'sysop:MockAdminUser';
// Asserting if the string representation is as expected.
$this->assertSame( $expectedString, (string)$param,
diff --git a/tests/phpunit/unit/includes/libs/Message/MessageValueTest.php b/tests/phpunit/unit/includes/libs/Message/MessageValueTest.php
index fc408b01a6a5..45cbe6092f4d 100644
--- a/tests/phpunit/unit/includes/libs/Message/MessageValueTest.php
+++ b/tests/phpunit/unit/includes/libs/Message/MessageValueTest.php
@@ -188,7 +188,7 @@ class MessageValueTest extends TestCase {
public function testUserGroupMemberParams() {
$mv = new MessageValue( 'key' );
- $mv2 = $mv->objectParams(
+ $mv2 = @$mv->objectParams(
new UserGroupMembershipParam( 'bot', new UserIdentityValue( 1, 'user' ) )
);
$this->assertSame( '<message key="key">' .