// Outer query to select the recent edit counts for the selected active users
$tables = [ 'qcc_users' => $subquery, 'recentchanges' ];
- $jconds = [ 'recentchanges' => [
- 'JOIN', $useActor ? 'rc_actor = actor_id' : 'rc_user_text = qcc_title',
- ] ];
- $conds = [
+ $jconds = [ 'recentchanges' => [ 'LEFT JOIN', [
+ $useActor ? 'rc_actor = actor_id' : 'rc_user_text = qcc_title',
'rc_type != ' . $dbr->addQuotes( RC_EXTERNAL ), // Don't count wikidata.
'rc_type != ' . $dbr->addQuotes( RC_CATEGORIZE ), // Don't count categorization changes.
'rc_log_type IS NULL OR rc_log_type != ' . $dbr->addQuotes( 'newusers' ),
'rc_timestamp >= ' . $dbr->addQuotes( $timestamp ),
- ];
+ ] ] ];
+ $conds = [];
return [
'tables' => $tables,
'qcc_title',
'user_name' => 'qcc_title',
'user_id' => 'user_id',
- 'recentedits' => 'COUNT(*)'
+ 'recentedits' => 'COUNT(rc_id)'
],
'options' => [ 'GROUP BY' => [ 'qcc_title' ] ],
'conds' => $conds,
];
}
- protected function buildQueryInfo( $offset, $limit, $descending ) {
+ protected function buildQueryInfo( $offset, $limit, $order ) {
$fname = __METHOD__ . ' (' . $this->getSqlComment() . ')';
$sortColumns = array_merge( [ $this->mIndexField ], $this->mExtraSortFields );
- if ( $descending ) {
+ if ( $order === self::QUERY_ASCENDING ) {
+ $dir = 'ASC';
$orderBy = $sortColumns;
$operator = $this->mIncludeOffset ? '>=' : '>';
} else {
+ $dir = 'DESC';
$orderBy = [];
foreach ( $sortColumns as $col ) {
$orderBy[] = $col . ' DESC';
}
$info = $this->getQueryInfo( [
'limit' => intval( $limit ),
- 'order' => $descending ? 'DESC' : 'ASC',
+ 'order' => $dir,
'conds' =>
$offset != '' ? [ $this->mIndexField . $operator . $this->mDb->addQuotes( $offset ) ] : [],
] );
$lang = $this->getLanguage();
$list = [];
- $user = User::newFromId( $row->user_id );
$ugms = self::getGroupMemberships( intval( $row->user_id ), $this->userGroupCache );
foreach ( $ugms as $ugm ) {