From 1e49fa5d7a11a8eda594c2902b49ec56a7b26400 Mon Sep 17 00:00:00 2001 From: "This, that and the other" Date: Tue, 31 Jan 2017 01:21:47 +1100 Subject: [PATCH] Make user_groups queries honor $wgDisableUserGroupExpiry Follow-up to Icf78cce3f3e362677d10897b8d1103b3df91fa08. Change-Id: I94102ceb00398940965280d8742a2747631dcc87 --- includes/SiteStats.php | 5 ++++- includes/api/ApiQueryAllImages.php | 4 +++- includes/api/ApiQueryAllUsers.php | 4 +++- includes/api/ApiQueryContributors.php | 4 +++- includes/api/ApiQueryUsers.php | 6 ++++-- includes/specials/pagers/ActiveUsersPager.php | 4 +++- includes/specials/pagers/ContribsPager.php | 5 ++++- includes/specials/pagers/NewFilesPager.php | 4 +++- includes/specials/pagers/UsersPager.php | 4 +++- 9 files changed, 30 insertions(+), 10 deletions(-) diff --git a/includes/SiteStats.php b/includes/SiteStats.php index 42b080f455..105a581888 100644 --- a/includes/SiteStats.php +++ b/includes/SiteStats.php @@ -186,6 +186,7 @@ class SiteStats { wfMemcKey( 'SiteStats', 'groupcounts', $group ), $cache::TTL_HOUR, function ( $oldValue, &$ttl, array &$setOpts ) use ( $group ) { + global $wgDisableUserGroupExpiry; $dbr = wfGetDB( DB_REPLICA ); $setOpts += Database::getCacheSetOptions( $dbr ); @@ -195,7 +196,9 @@ class SiteStats { 'COUNT(*)', [ 'ug_group' => $group, - 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() ) + $wgDisableUserGroupExpiry ? + '1' : + 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() ) ], __METHOD__ ); diff --git a/includes/api/ApiQueryAllImages.php b/includes/api/ApiQueryAllImages.php index 22561a9bce..ef6bb6ad99 100644 --- a/includes/api/ApiQueryAllImages.php +++ b/includes/api/ApiQueryAllImages.php @@ -198,7 +198,9 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { [ 'ug_group' => User::getGroupsWithPermission( 'bot' ), 'ug_user = img_user', - 'ug_expiry IS NULL OR ug_expiry >=' . $db->addQuotes( $db->timestamp() ) + $this->getConfig()->get( 'DisableUserGroupExpiry' ) ? + '1' : + 'ug_expiry IS NULL OR ug_expiry >= ' . $db->addQuotes( $db->timestamp() ) ] ] ] ); $groupCond = ( $params['filterbots'] == 'nobots' ? 'NULL' : 'NOT NULL' ); diff --git a/includes/api/ApiQueryAllUsers.php b/includes/api/ApiQueryAllUsers.php index 3faccf99be..1c3b171fd4 100644 --- a/includes/api/ApiQueryAllUsers.php +++ b/includes/api/ApiQueryAllUsers.php @@ -122,7 +122,9 @@ class ApiQueryAllUsers extends ApiQueryBase { [ 'ug1.ug_user=user_id', 'ug1.ug_group' => $params['group'], - 'ug1.ug_expiry IS NULL OR ug1.ug_expiry >= ' . $db->addQuotes( $db->timestamp() ) + $this->getConfig()->get( 'DisableUserGroupExpiry' ) ? + '1' : + 'ug1.ug_expiry IS NULL OR ug1.ug_expiry >= ' . $db->addQuotes( $db->timestamp() ) ] ] ] ); diff --git a/includes/api/ApiQueryContributors.php b/includes/api/ApiQueryContributors.php index 89fffd6cef..148e315a3d 100644 --- a/includes/api/ApiQueryContributors.php +++ b/includes/api/ApiQueryContributors.php @@ -163,7 +163,9 @@ class ApiQueryContributors extends ApiQueryBase { [ 'ug_user=rev_user', 'ug_group' => $limitGroups, - 'ug_expiry IS NULL OR ug_expiry >= ' . $db->addQuotes( $db->timestamp() ) + $this->getConfig()->get( 'DisableUserGroupExpiry' ) ? + '1' : + 'ug_expiry IS NULL OR ug_expiry >= ' . $db->addQuotes( $db->timestamp() ) ] ] ] ); $this->addWhereIf( 'ug_user IS NULL', $excludeGroups ); diff --git a/includes/api/ApiQueryUsers.php b/includes/api/ApiQueryUsers.php index 01265cc7c0..3a814c4c49 100644 --- a/includes/api/ApiQueryUsers.php +++ b/includes/api/ApiQueryUsers.php @@ -172,8 +172,10 @@ class ApiQueryUsers extends ApiQueryBase { $this->addJoinConds( [ 'user_groups' => [ 'INNER JOIN', 'ug_user=user_id' ] ] ); $this->addFields( [ 'user_name' ] ); $this->addFields( UserGroupMembership::selectFields() ); - $this->addWhere( 'ug_expiry IS NULL OR ug_expiry >= ' . - $db->addQuotes( $db->timestamp() ) ); + if ( !$this->getConfig()->get( 'DisableUserGroupExpiry' ) ) { + $this->addWhere( 'ug_expiry IS NULL OR ug_expiry >= ' . + $db->addQuotes( $db->timestamp() ) ); + } $userGroupsRes = $this->select( __METHOD__ ); foreach ( $userGroupsRes as $row ) { diff --git a/includes/specials/pagers/ActiveUsersPager.php b/includes/specials/pagers/ActiveUsersPager.php index e2f4d4b57d..1fec05d39d 100644 --- a/includes/specials/pagers/ActiveUsersPager.php +++ b/includes/specials/pagers/ActiveUsersPager.php @@ -101,7 +101,9 @@ class ActiveUsersPager extends UsersPager { $tables[] = 'user_groups'; $conds[] = 'ug_user = user_id'; $conds['ug_group'] = $this->groups; - $conds[] = 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() ); + if ( !$this->getConfig()->get( 'DisableUserGroupExpiry' ) ) { + $conds[] = 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() ); + } } if ( $this->excludegroups !== [] ) { foreach ( $this->excludegroups as $group ) { diff --git a/includes/specials/pagers/ContribsPager.php b/includes/specials/pagers/ContribsPager.php index 3993f620d9..367d07304f 100644 --- a/includes/specials/pagers/ContribsPager.php +++ b/includes/specials/pagers/ContribsPager.php @@ -223,7 +223,10 @@ class ContribsPager extends ReverseChronologicalPager { 'LEFT JOIN', [ 'ug_user = rev_user', 'ug_group' => $groupsWithBotPermission, - 'ug_expiry IS NULL OR ug_expiry >= ' . $this->mDb->addQuotes( $this->mDb->timestamp() ) + $this->getConfig()->get( 'DisableUserGroupExpiry' ) ? + '1' : + 'ug_expiry IS NULL OR ug_expiry >= ' . + $this->mDb->addQuotes( $this->mDb->timestamp() ) ] ]; } diff --git a/includes/specials/pagers/NewFilesPager.php b/includes/specials/pagers/NewFilesPager.php index 76f90bd312..4bf5dff667 100644 --- a/includes/specials/pagers/NewFilesPager.php +++ b/includes/specials/pagers/NewFilesPager.php @@ -67,7 +67,9 @@ class NewFilesPager extends ReverseChronologicalPager { [ 'ug_group' => $groupsWithBotPermission, 'ug_user = img_user', - 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() ) + $this->getConfig()->get( 'DisableUserGroupExpiry' ) ? + '1' : + 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() ) ] ]; } diff --git a/includes/specials/pagers/UsersPager.php b/includes/specials/pagers/UsersPager.php index da3a30be8c..12039aa1e0 100644 --- a/includes/specials/pagers/UsersPager.php +++ b/includes/specials/pagers/UsersPager.php @@ -112,7 +112,9 @@ class UsersPager extends AlphabeticPager { if ( $this->requestedGroup != '' ) { $conds['ug_group'] = $this->requestedGroup; - $conds[] = 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() ); + if ( !$this->getConfig()->get( 'DisableUserGroupExpiry' ) ) { + $conds[] = 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() ); + } } if ( $this->requestedUser != '' ) { -- 2.20.1