* Avoid extensive permission checks, just rely on User::isAllowed("rollback")
* Preload page_latest data in initial RC query, no need to run thousands of queries afterwards
$page = $rc->getTitle();
/** Check for rollback and edit permissions, disallow special pages, and only
* show a link on the top-most revision */
- if( $page->quickUserCan('rollback') && $page->quickUserCan('edit')
- && $page->getLatestRevID() == $rc->mAttribs['rc_this_oldid'] )
+ if ($wgUser->isAllowed('rollback') && $rc->mAttribs['page_latest'] == $rc->mAttribs['rc_this_oldid'] )
{
$rev = new Revision( array(
'id' => $rc->mAttribs['rc_this_oldid'],
$join_conds['watchlist'] = array('LEFT JOIN',
"wl_user={$uid} AND wl_title=rc_title AND wl_namespace=rc_namespace");
}
-
+ if ($wgUser->isAllowed("rollback")) {
+ $tables[] = 'page';
+ $join_conds['page'] = array('LEFT JOIN', 'rc_namespace=page_namespace AND rc_title=page_title AND rc_this_oldid=page_latest');
+ }
// Tag stuff.
$fields = array(); // Fields are * in this case, so let the function modify an empty array to keep it happy.
ChangeTags::modifyDisplayQuery( $tables, $fields, $conds, $join_conds, $opts['tagfilter'] );