summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Urbanec <martin.urbanec@wikimedia.cz>2021-12-11 12:12:40 +0100
committerMartin Urbanec <martin.urbanec@wikimedia.cz>2021-12-13 10:22:23 +0100
commit07545c2389a46c01bbd38b8cabb3e8b762cf0c56 (patch)
tree88d49a514c0330b061491ad5b8541d1e14e12242
parentbf7621acd85cd172d292518c0284d6c3f83e1b1a (diff)
UserSelectQueryBuilder: Make it possible to filter via user's hidden status
This will be useful at least in GrowthExperiments, where we rely on UserSelectQueryBuilder to see usernames of all mentees assigned to a particular mentor. Bug: T291966 Change-Id: I6f465f4ebffebe122f4924c6bb6ee24fceea566b
-rw-r--r--includes/user/UserSelectQueryBuilder.php18
1 files changed, 18 insertions, 0 deletions
diff --git a/includes/user/UserSelectQueryBuilder.php b/includes/user/UserSelectQueryBuilder.php
index 491167edd974..20f7e6b913fb 100644
--- a/includes/user/UserSelectQueryBuilder.php
+++ b/includes/user/UserSelectQueryBuilder.php
@@ -163,6 +163,24 @@ class UserSelectQueryBuilder extends SelectQueryBuilder {
}
/**
+ * Filter based on user hidden status
+ *
+ * @param bool $hidden True - only hidden users, false - no hidden users
+ * @return $this
+ */
+ public function hidden( bool $hidden ): self {
+ $this->leftJoin( 'ipblocks', null, [ "actor_user=ipb_user" ] );
+ if ( $hidden ) {
+ // only hidden users
+ $this->conds( [ 'ipb_deleted = 1' ] );
+ } else {
+ // filter out hidden users
+ $this->conds( [ 'ipb_deleted = 0 OR ipb_deleted IS NULL' ] );
+ }
+ return $this;
+ }
+
+ /**
* Fetch a single UserIdentity that matches specified criteria.
*
* @return UserIdentity|null