X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiQueryAllDeletedRevisions.php;h=b09b97702db586a13a16d2f04238fe5ff47875d7;hb=2b7d97e6a49c46eeb0e1018dd51ae5e79b2f373e;hp=a559683a33642cc415fdc0581ebb6039cead5bfc;hpb=601519ee36462faabacf4547c9aefaf7e8726476;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiQueryAllDeletedRevisions.php b/includes/api/ApiQueryAllDeletedRevisions.php index a559683a33..b09b97702d 100644 --- a/includes/api/ApiQueryAllDeletedRevisions.php +++ b/includes/api/ApiQueryAllDeletedRevisions.php @@ -41,20 +41,23 @@ class ApiQueryAllDeletedRevisions extends ApiQueryRevisionsBase { * @return void */ protected function run( ApiPageSet $resultPageSet = null ) { - $user = $this->getUser(); // Before doing anything at all, let's check permissions - if ( !$user->isAllowed( 'deletedhistory' ) ) { - $this->dieUsage( - 'You don\'t have permission to view deleted revision information', - 'permissiondenied' - ); - } + $this->checkUserRightsAny( 'deletedhistory' ); + $user = $this->getUser(); $db = $this->getDB(); $params = $this->extractRequestParams( false ); $result = $this->getResult(); + // If the user wants no namespaces, they get no pages. + if ( $params['namespace'] === [] ) { + if ( $resultPageSet === null ) { + $result->addValue( 'query', $this->getModuleName(), [] ); + } + return; + } + // This module operates in two modes: // 'user': List deleted revs by a certain user // 'all': List all deleted revs in NS @@ -67,16 +70,20 @@ class ApiQueryAllDeletedRevisions extends ApiQueryRevisionsBase { foreach ( [ 'from', 'to', 'prefix', 'excludeuser' ] as $param ) { if ( !is_null( $params[$param] ) ) { $p = $this->getModulePrefix(); - $this->dieUsage( "The '{$p}{$param}' parameter cannot be used with '{$p}user'", - 'badparams' ); + $this->dieWithError( + [ 'apierror-invalidparammix-cannotusewith', $p.$param, "{$p}user" ], + 'invalidparammix' + ); } } } else { foreach ( [ 'start', 'end' ] as $param ) { if ( !is_null( $params[$param] ) ) { $p = $this->getModulePrefix(); - $this->dieUsage( "The '{$p}{$param}' parameter may only be used with '{$p}user'", - 'badparams' ); + $this->dieWithError( + [ 'apierror-invalidparammix-mustusewith', $p.$param, "{$p}user" ], + 'invalidparammix' + ); } } } @@ -92,7 +99,7 @@ class ApiQueryAllDeletedRevisions extends ApiQueryRevisionsBase { $optimizeGenerateTitles = true; } else { $p = $this->getModulePrefix(); - $this->setWarning( "For better performance when generating titles, set {$p}dir=newer" ); + $this->addWarning( [ 'apiwarn-alldeletedrevisions-performance', $p ], 'performance' ); } } @@ -140,12 +147,7 @@ class ApiQueryAllDeletedRevisions extends ApiQueryRevisionsBase { $this->addFields( [ 'ar_text', 'ar_flags', 'old_text', 'old_flags' ] ); // This also means stricter restrictions - if ( !$user->isAllowedAny( 'undelete', 'deletedtext' ) ) { - $this->dieUsage( - 'You don\'t have permission to view deleted revision content', - 'permissiondenied' - ); - } + $this->checkUserRightsAny( [ 'deletedtext', 'undelete' ] ); } $miser_ns = null; @@ -153,10 +155,10 @@ class ApiQueryAllDeletedRevisions extends ApiQueryRevisionsBase { if ( $mode == 'all' ) { if ( $params['namespace'] !== null ) { $namespaces = $params['namespace']; - $this->addWhereFld( 'ar_namespace', $namespaces ); } else { $namespaces = MWNamespace::getValidNamespaces(); } + $this->addWhereFld( 'ar_namespace', $namespaces ); // For from/to/prefix, we have to consider the potential // transformations of the title in all specified namespaces. @@ -447,7 +449,7 @@ class ApiQueryAllDeletedRevisions extends ApiQueryRevisionsBase { return [ 'action=query&list=alldeletedrevisions&adruser=Example&adrlimit=50' => 'apihelp-query+alldeletedrevisions-example-user', - 'action=query&list=alldeletedrevisions&adrdir=newer&adrlimit=50' + 'action=query&list=alldeletedrevisions&adrdir=newer&adrnamespace=0&adrlimit=50' => 'apihelp-query+alldeletedrevisions-example-ns-main', ]; }