ids ); $revQuery = Revision::getQueryInfo( [ 'user' ] ); $queryInfo = [ 'tables' => $revQuery['tables'], 'fields' => $revQuery['fields'], 'conds' => [ 'rev_page' => $this->title->getArticleID(), 'rev_id' => $ids, ], 'options' => [ 'ORDER BY' => 'rev_id DESC' ], 'join_conds' => $revQuery['joins'], ]; ChangeTags::modifyDisplayQuery( $queryInfo['tables'], $queryInfo['fields'], $queryInfo['conds'], $queryInfo['join_conds'], $queryInfo['options'], '' ); return $db->select( $queryInfo['tables'], $queryInfo['fields'], $queryInfo['conds'], __METHOD__, $queryInfo['options'], $queryInfo['join_conds'] ); } public function newItem( $row ) { return new ChangeTagsRevisionItem( $this, $row ); } /** * Add/remove change tags from all the revisions in the list. * * @param array $tagsToAdd * @param array $tagsToRemove * @param array $params * @param string $reason * @param User $user * @return Status */ public function updateChangeTagsOnAll( $tagsToAdd, $tagsToRemove, $params, $reason, $user ) { // phpcs:ignore Generic.CodeAnalysis.ForLoopWithTestFunctionCall for ( $this->reset(); $this->current(); $this->next() ) { $item = $this->current(); $status = ChangeTags::updateTagsWithChecks( $tagsToAdd, $tagsToRemove, null, $item->getId(), null, $params, $reason, $user ); // Should only fail on second and subsequent times if the user trips // the rate limiter if ( !$status->isOK() ) { break; } } return $status; } }