diff options
author | Martin Urbanec <martin.urbanec@wikimedia.cz> | 2021-12-11 12:12:40 +0100 |
---|---|---|
committer | Martin Urbanec <martin.urbanec@wikimedia.cz> | 2021-12-13 10:22:23 +0100 |
commit | 07545c2389a46c01bbd38b8cabb3e8b762cf0c56 (patch) | |
tree | 88d49a514c0330b061491ad5b8541d1e14e12242 | |
parent | bf7621acd85cd172d292518c0284d6c3f83e1b1a (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.php | 18 |
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 |