ids ); $queryInfo = DatabaseLogEntry::getSelectQueryData(); $queryInfo['conds'] += [ 'log_id' => $ids ]; $queryInfo['options'] += [ 'ORDER BY' => 'log_id DESC' ]; 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 ChangeTagsLogItem( $this, $row ); } /** * Add/remove change tags from all the log entries 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, null, $item->getId(), $params, $reason, $user ); // Should only fail on second and subsequent times if the user trips // the rate limiter if ( !$status->isOK() ) { break; } } return $status; } }