* @file
*/
+use MediaWiki\MediaWikiServices;
+use MediaWiki\Revision\RevisionRecord;
+
/**
* Query module to enumerate all revisions.
*
}
/**
- * @param ApiPageSet $resultPageSet
+ * @param ApiPageSet|null $resultPageSet
* @return void
*/
protected function run( ApiPageSet $resultPageSet = null ) {
$db = $this->getDB();
$params = $this->extractRequestParams( false );
+ $revisionStore = MediaWikiServices::getInstance()->getRevisionStore();
$result = $this->getResult();
if ( $resultPageSet === null ) {
$this->parseParameters( $params );
- $revQuery = Revision::getQueryInfo(
+ $revQuery = $revisionStore->getQueryInfo(
$this->fetchContent ? [ 'page', 'text' ] : [ 'page' ]
);
$this->addTables( $revQuery['tables'] );
}
if ( $params['user'] !== null ) {
- $id = User::idFromName( $params['user'] );
- if ( $id ) {
- $this->addWhereFld( 'rev_user', $id );
- } else {
- $this->addWhereFld( 'rev_user_text', $params['user'] );
- }
+ $actorQuery = ActorMigration::newMigration()
+ ->getWhere( $db, 'rev_user', User::newFromName( $params['user'], false ) );
+ $this->addTables( $actorQuery['tables'] );
+ $this->addJoinConds( $actorQuery['joins'] );
+ $this->addWhere( $actorQuery['conds'] );
} elseif ( $params['excludeuser'] !== null ) {
- $id = User::idFromName( $params['excludeuser'] );
- if ( $id ) {
- $this->addWhere( 'rev_user != ' . $id );
- } else {
- $this->addWhere( 'rev_user_text != ' . $db->addQuotes( $params['excludeuser'] ) );
- }
+ $actorQuery = ActorMigration::newMigration()
+ ->getWhere( $db, 'rev_user', User::newFromName( $params['excludeuser'], false ) );
+ $this->addTables( $actorQuery['tables'] );
+ $this->addJoinConds( $actorQuery['joins'] );
+ $this->addWhere( 'NOT(' . $actorQuery['conds'] . ')' );
}
if ( $params['user'] !== null || $params['excludeuser'] !== null ) {
// Paranoia: avoid brute force searches (T19342)
if ( !$this->getUser()->isAllowed( 'deletedhistory' ) ) {
- $bitmask = Revision::DELETED_USER;
+ $bitmask = RevisionRecord::DELETED_USER;
} elseif ( !$this->getUser()->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
- $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
+ $bitmask = RevisionRecord::DELETED_USER | RevisionRecord::DELETED_RESTRICTED;
} else {
$bitmask = 0;
}
$generated[] = $row->rev_id;
}
} else {
- $revision = Revision::newFromRow( $row );
+ $revision = $revisionStore->newRevisionFromRow( $row );
$rev = $this->extractRevisionInfo( $revision, $row );
if ( !isset( $pageMap[$row->rev_page] ) ) {
$index = $nextIndex++;
$pageMap[$row->rev_page] = $index;
- $title = $revision->getTitle();
+ $title = Title::newFromLinkTarget( $revision->getPageAsLinkTarget() );
$a = [
'pageid' => $title->getArticleID(),
'revisions' => [ $rev ],