aboutsummaryrefslogtreecommitdiffstats
path: root/includes/api
diff options
context:
space:
mode:
authorvladshapik <vlad.shapik@speedandfunction.com>2021-04-12 17:45:26 +0300
committerVlad.shapik <vlad.shapik@speedandfunction.com>2021-04-26 16:10:24 +0000
commit9cc797695baae499d477e3d87f644415ec276893 (patch)
tree42fc65fb029904a8db555c278dc230e5c0741b02 /includes/api
parentb1f51795bb19cde6128c33a9db45cc2cefb9d29e (diff)
downloadmediawikicore-9cc797695baae499d477e3d87f644415ec276893.tar.gz
mediawikicore-9cc797695baae499d477e3d87f644415ec276893.zip
Hard deprecate User ::isIP, ::getOptions
Bug: T275602 Change-Id: Id4be13751ca0a900e51214c1855a4624077a5a62
Diffstat (limited to 'includes/api')
-rw-r--r--includes/api/ApiMain.php7
-rw-r--r--includes/api/ApiOptions.php24
-rw-r--r--includes/api/ApiQuery.php5
-rw-r--r--includes/api/ApiQueryBlocks.php11
-rw-r--r--includes/api/ApiQueryUserContribs.php11
-rw-r--r--includes/api/ApiQueryUserInfo.php20
6 files changed, 69 insertions, 9 deletions
diff --git a/includes/api/ApiMain.php b/includes/api/ApiMain.php
index d77259e270c6..4b7cf27dd960 100644
--- a/includes/api/ApiMain.php
+++ b/includes/api/ApiMain.php
@@ -173,7 +173,12 @@ class ApiMain extends ApiBase {
]
],
'userrights' => ApiUserrights::class,
- 'options' => ApiOptions::class,
+ 'options' => [
+ 'class' => ApiOptions::class,
+ 'services' => [
+ 'UserOptionsManager',
+ ],
+ ],
'imagerotate' => ApiImageRotate::class,
'revisiondelete' => ApiRevisionDelete::class,
'managetags' => ApiManageTags::class,
diff --git a/includes/api/ApiOptions.php b/includes/api/ApiOptions.php
index 900945159a5a..ae55bad578ce 100644
--- a/includes/api/ApiOptions.php
+++ b/includes/api/ApiOptions.php
@@ -22,6 +22,7 @@
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MediaWikiServices;
+use MediaWiki\User\UserOptionsManager;
/**
* API module that facilitates the changing of user's preferences.
@@ -33,6 +34,27 @@ class ApiOptions extends ApiBase {
/** @var User User account to modify */
private $userForUpdates;
+ /** @var UserOptionsManager */
+ private $userOptionsManager;
+
+ /**
+ * @param ApiMain $main
+ * @param string $action
+ * @param UserOptionsManager|null $userOptionsManager
+ */
+ public function __construct(
+ ApiMain $main,
+ $action,
+ UserOptionsManager $userOptionsManager = null
+ ) {
+ parent::__construct( $main, $action );
+ /**
+ * This class is extended by GlobalPreferences extension.
+ * So it falls back to the global state.
+ */
+ $this->userOptionsManager = $userOptionsManager ?? MediaWikiServices::getInstance()->getUserOptionsManager();
+ }
+
/**
* Changes preferences of the current user.
*/
@@ -99,7 +121,7 @@ class ApiOptions extends ApiBase {
$htmlForm = new HTMLForm( [], $this );
}
$field = HTMLForm::loadInputFromParameters( $key, $prefs[$key], $htmlForm );
- $validation = $field->validate( $value, $user->getOptions() );
+ $validation = $field->validate( $value, $this->userOptionsManager->getOptions( $user ) );
}
break;
case 'registered-multiselect':
diff --git a/includes/api/ApiQuery.php b/includes/api/ApiQuery.php
index dad4cc6b66d3..cd4e3fe40294 100644
--- a/includes/api/ApiQuery.php
+++ b/includes/api/ApiQuery.php
@@ -92,6 +92,7 @@ class ApiQuery extends ApiBase {
'services' => [
'BlockRestrictionStore',
'CommentStore',
+ 'UserNameUtils',
],
],
'categorymembers' => ApiQueryCategoryMembers::class,
@@ -142,6 +143,7 @@ class ApiQuery extends ApiBase {
'services' => [
'CommentStore',
'UserIdentityLookup',
+ 'UserNameUtils',
],
],
'users' => ApiQueryUsers::class,
@@ -171,7 +173,8 @@ class ApiQuery extends ApiBase {
'services' => [
'TalkPageNotificationManager',
'WatchedItemStore',
- 'UserEditTracker'
+ 'UserEditTracker',
+ 'UserOptionsLookup',
]
],
'filerepoinfo' => ApiQueryFileRepoInfo::class,
diff --git a/includes/api/ApiQueryBlocks.php b/includes/api/ApiQueryBlocks.php
index e56079160412..e4dc81407571 100644
--- a/includes/api/ApiQueryBlocks.php
+++ b/includes/api/ApiQueryBlocks.php
@@ -22,6 +22,7 @@
use MediaWiki\Block\BlockRestrictionStore;
use MediaWiki\ParamValidator\TypeDef\UserDef;
+use MediaWiki\User\UserNameUtils;
use Wikimedia\IPUtils;
use Wikimedia\Rdbms\IResultWrapper;
@@ -38,21 +39,27 @@ class ApiQueryBlocks extends ApiQueryBase {
/** @var CommentStore */
private $commentStore;
+ /** @var UserNameUtils */
+ private $userNameUtils;
+
/**
* @param ApiQuery $query
* @param string $moduleName
* @param BlockRestrictionStore $blockRestrictionStore
* @param CommentStore $commentStore
+ * @param UserNameUtils $userNameUtils
*/
public function __construct(
ApiQuery $query,
$moduleName,
BlockRestrictionStore $blockRestrictionStore,
- CommentStore $commentStore
+ CommentStore $commentStore,
+ UserNameUtils $userNameUtils
) {
parent::__construct( $query, $moduleName, 'bk' );
$this->blockRestrictionStore = $blockRestrictionStore;
$this->commentStore = $commentStore;
+ $this->userNameUtils = $userNameUtils;
}
public function execute() {
@@ -283,7 +290,7 @@ class ApiQueryBlocks extends ApiQueryBase {
"baduser_{$encParamName}"
);
}
- $name = User::isIP( $user )
+ $name = $this->userNameUtils->isIP( $user ) || IPUtils::isIPv6( $user )
? $user
: User::getCanonicalName( $user, 'valid' );
if ( $name === false ) {
diff --git a/includes/api/ApiQueryUserContribs.php b/includes/api/ApiQueryUserContribs.php
index 07a3ae624d0f..faff0f8ae8dc 100644
--- a/includes/api/ApiQueryUserContribs.php
+++ b/includes/api/ApiQueryUserContribs.php
@@ -26,6 +26,7 @@ use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Storage\NameTableAccessException;
use MediaWiki\User\UserIdentity;
use MediaWiki\User\UserIdentityLookup;
+use MediaWiki\User\UserNameUtils;
use Wikimedia\Rdbms\SelectQueryBuilder;
/**
@@ -41,21 +42,27 @@ class ApiQueryUserContribs extends ApiQueryBase {
/** @var UserIdentityLookup */
private $userIdentityLookup;
+ /** @var UserNameUtils */
+ private $userNameUtils;
+
/**
* @param ApiQuery $query
* @param string $moduleName
* @param CommentStore $commentStore
* @param UserIdentityLookup $userIdentityLookup
+ * @param UserNameUtils $userNameUtils
*/
public function __construct(
ApiQuery $query,
$moduleName,
CommentStore $commentStore,
- UserIdentityLookup $userIdentityLookup
+ UserIdentityLookup $userIdentityLookup,
+ UserNameUtils $userNameUtils
) {
parent::__construct( $query, $moduleName, 'uc' );
$this->commentStore = $commentStore;
$this->userIdentityLookup = $userIdentityLookup;
+ $this->userNameUtils = $userNameUtils;
}
private $params, $multiUserMode, $orderBy, $parentLens;
@@ -187,7 +194,7 @@ class ApiQueryUserContribs extends ApiQueryBase {
);
}
- if ( User::isIP( $u ) || ExternalUserNames::isExternal( $u ) ) {
+ if ( $this->userNameUtils->isIP( $u ) || ExternalUserNames::isExternal( $u ) ) {
$names[$u] = null;
} else {
$name = User::getCanonicalName( $u, 'valid' );
diff --git a/includes/api/ApiQueryUserInfo.php b/includes/api/ApiQueryUserInfo.php
index 476d7f046345..5da4e49e8402 100644
--- a/includes/api/ApiQueryUserInfo.php
+++ b/includes/api/ApiQueryUserInfo.php
@@ -22,6 +22,7 @@
use MediaWiki\User\TalkPageNotificationManager;
use MediaWiki\User\UserEditTracker;
+use MediaWiki\User\UserOptionsLookup;
/**
* Query module to get information about the currently logged-in user
@@ -55,17 +56,32 @@ class ApiQueryUserInfo extends ApiQueryBase {
*/
private $userEditTracker;
+ /**
+ * @var UserOptionsLookup
+ */
+ private $userOptionsLookup;
+
+ /**
+ * @param ApiQuery $query
+ * @param string $moduleName
+ * @param TalkPageNotificationManager $talkPageNotificationManager
+ * @param WatchedItemStore $watchedItemStore
+ * @param UserEditTracker $userEditTracker
+ * @param UserOptionsLookup $userOptionsLookup
+ */
public function __construct(
ApiQuery $query,
$moduleName,
TalkPageNotificationManager $talkPageNotificationManager,
WatchedItemStore $watchedItemStore,
- UserEditTracker $userEditTracker
+ UserEditTracker $userEditTracker,
+ UserOptionsLookup $userOptionsLookup
) {
parent::__construct( $query, $moduleName, 'ui' );
$this->talkPageNotificationManager = $talkPageNotificationManager;
$this->watchedItemStore = $watchedItemStore;
$this->userEditTracker = $userEditTracker;
+ $this->userOptionsLookup = $userOptionsLookup;
}
public function execute() {
@@ -180,7 +196,7 @@ class ApiQueryUserInfo extends ApiQueryBase {
}
if ( isset( $this->prop['options'] ) ) {
- $vals['options'] = $user->getOptions();
+ $vals['options'] = $this->userOptionsLookup->getOptions( $user );
$vals['options'][ApiResult::META_BC_BOOLS] = array_keys( $vals['options'] );
}