// Paranoia: avoid brute force searches (T19342)
if ( $params['namespace'] !== null || !is_null( $title ) || !is_null( $user ) ) {
- if ( !$this->getUser()->isAllowed( 'deletedhistory' ) ) {
+ if ( !$this->getPermissionManager()->userHasRight( $this->getUser(), 'deletedhistory' ) ) {
$titleBits = LogPage::DELETED_ACTION;
$userBits = LogPage::DELETED_USER;
- } elseif ( !$this->getUser()->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
+ } elseif ( !$this->getPermissionManager()
+ ->userHasAnyRight( $this->getUser(), 'suppressrevision', 'viewsuppressed' )
+ ) {
$titleBits = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
$userBits = LogPage::DELETED_USER | LogPage::DELETED_RESTRICTED;
} else {
}
}
+ // T220999: MySQL/MariaDB (10.1.37) can sometimes irrationally decide that querying `actor` before
+ // `logging` and filesorting is somehow better than querying $limit+1 rows from `logging`.
+ // Tell it not to reorder the query. But not when `letag` was used, as it seems as likely
+ // to be harmed as helped in that case.
+ if ( $params['tag'] === null ) {
+ $this->addOption( 'STRAIGHT_JOIN' );
+ }
+
$count = 0;
$res = $this->select( __METHOD__ );
$result = $this->getResult();