aboutsummaryrefslogtreecommitdiffstats
path: root/includes/api/ApiQueryDeletedrevs.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/api/ApiQueryDeletedrevs.php')
-rw-r--r--includes/api/ApiQueryDeletedrevs.php25
1 files changed, 20 insertions, 5 deletions
diff --git a/includes/api/ApiQueryDeletedrevs.php b/includes/api/ApiQueryDeletedrevs.php
index 6b3cdf372c4e..01d48bc9bd13 100644
--- a/includes/api/ApiQueryDeletedrevs.php
+++ b/includes/api/ApiQueryDeletedrevs.php
@@ -21,9 +21,12 @@
*/
use MediaWiki\MediaWikiServices;
+use MediaWiki\ParamValidator\TypeDef\UserDef;
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Revision\SlotRecord;
use MediaWiki\Storage\NameTableAccessException;
+use Wikimedia\ParamValidator\ParamValidator;
+use Wikimedia\ParamValidator\TypeDef\IntegerDef;
/**
* Query module to enumerate all deleted revisions.
@@ -146,7 +149,15 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
$this->getResult()->addParsedLimit( $this->getModuleName(), $limit );
}
- $this->validateLimit( 'limit', $limit, 1, $userMax, $botMax );
+ $limit = $this->getMain()->getParamValidator()->validateValue(
+ $this, 'limit', $limit, [
+ ParamValidator::PARAM_TYPE => 'limit',
+ IntegerDef::PARAM_MIN => 1,
+ IntegerDef::PARAM_MAX => $userMax,
+ IntegerDef::PARAM_MAX2 => $botMax,
+ IntegerDef::PARAM_IGNORE_RANGE => true,
+ ]
+ );
if ( $fld_token ) {
// Undelete tokens are identical for all pages, so we cache one here
@@ -181,14 +192,14 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
if ( $params['user'] !== null ) {
// Don't query by user ID here, it might be able to use the ar_usertext_timestamp index.
$actorQuery = ActorMigration::newMigration()
- ->getWhere( $db, 'ar_user', User::newFromName( $params['user'], false ), false );
+ ->getWhere( $db, 'ar_user', $params['user'], false );
$this->addTables( $actorQuery['tables'] );
$this->addJoinConds( $actorQuery['joins'] );
$this->addWhere( $actorQuery['conds'] );
} elseif ( $params['excludeuser'] !== null ) {
// Here there's no chance of using ar_usertext_timestamp.
$actorQuery = ActorMigration::newMigration()
- ->getWhere( $db, 'ar_user', User::newFromName( $params['excludeuser'], false ) );
+ ->getWhere( $db, 'ar_user', $params['excludeuser'] );
$this->addTables( $actorQuery['tables'] );
$this->addJoinConds( $actorQuery['joins'] );
$this->addWhere( 'NOT(' . $actorQuery['conds'] . ')' );
@@ -442,10 +453,14 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
],
'tag' => null,
'user' => [
- ApiBase::PARAM_TYPE => 'user'
+ ApiBase::PARAM_TYPE => 'user',
+ UserDef::PARAM_ALLOWED_USER_TYPES => [ 'name', 'ip', 'id', 'interwiki' ],
+ UserDef::PARAM_RETURN_OBJECT => true,
],
'excludeuser' => [
- ApiBase::PARAM_TYPE => 'user'
+ ApiBase::PARAM_TYPE => 'user',
+ UserDef::PARAM_ALLOWED_USER_TYPES => [ 'name', 'ip', 'id', 'interwiki' ],
+ UserDef::PARAM_RETURN_OBJECT => true,
],
'prop' => [
ApiBase::PARAM_DFLT => 'user|comment',