MediaWiki REL1_37
MediaWiki\User\UserGroupManager Class Reference

Managers user groups. More...

Inheritance diagram for MediaWiki\User\UserGroupManager:
Collaboration diagram for MediaWiki\User\UserGroupManager:

Public Member Functions

 __construct (ServiceOptions $options, ConfiguredReadOnlyMode $configuredReadOnlyMode, ILBFactory $loadBalancerFactory, HookContainer $hookContainer, UserEditTracker $userEditTracker, GroupPermissionsLookup $groupPermissionsLookup, JobQueueGroup $jobQueueGroup, LoggerInterface $logger, array $clearCacheCallbacks=[], $dbDomain=false)
 
 addUserToAutopromoteOnceGroups (UserIdentity $user, string $event)
 Add the user to the group if he/she meets given criteria.
 
 addUserToGroup (UserIdentity $user, string $group, string $expiry=null, bool $allowUpdate=false)
 Add the user to the given group.
 
 addUserToMultipleGroups (UserIdentity $user, array $groups, string $expiry=null, bool $allowUpdate=false)
 Add the user to the given list of groups.
 
 clearCache (UserIdentity $user)
 Cleans cached group memberships for a given user.
 
 getGroupsChangeableBy (Authority $authority)
 Returns an array of groups that this $actor can add and remove.
 
 getGroupsChangeableByGroup (string $group)
 Returns an array of the groups that a particular group can add/remove.
 
 getQueryInfo ()
 Return the tables and fields to be selected to construct new UserGroupMembership object using newGroupMembershipFromRow method.
 
 getUserAutopromoteGroups (UserIdentity $user)
 Get the groups for the given user based on $wgAutopromote.
 
 getUserAutopromoteOnceGroups (UserIdentity $user, string $event)
 Get the groups for the given user based on the given criteria.
 
 getUserEffectiveGroups (UserIdentity $user, int $queryFlags=self::READ_NORMAL, bool $recache=false)
 Get the list of implicit group memberships the user has.
 
 getUserFormerGroups (UserIdentity $user, int $queryFlags=self::READ_NORMAL)
 Returns the groups the user has belonged to.
 
 getUserGroupMemberships (UserIdentity $user, int $queryFlags=self::READ_NORMAL)
 Loads and returns UserGroupMembership objects for all the groups a user currently belongs to.
 
 getUserGroups (UserIdentity $user, int $queryFlags=self::READ_NORMAL)
 Get the list of explicit group memberships this user has.
 
 getUserImplicitGroups (UserIdentity $user, int $queryFlags=self::READ_NORMAL, bool $recache=false)
 Get the list of implicit group memberships this user has.
 
 listAllGroups ()
 Return the set of defined explicit groups.
 
 listAllImplicitGroups ()
 Get a list of all configured implicit groups.
 
 loadGroupMembershipsFromArray (UserIdentity $user, array $userGroups, int $queryFlags=self::READ_NORMAL)
 Load the user groups cache from the provided user groups data.
 
 newGroupMembershipFromRow (\stdClass $row)
 Creates a new UserGroupMembership instance from $row.
 
 purgeExpired ()
 Purge expired memberships from the user_groups table.
 
 removeUserFromGroup (UserIdentity $user, string $group)
 Remove the user from the given group.
 

Public Attributes

const CONSTRUCTOR_OPTIONS
 
- Public Attributes inherited from IDBAccessObject
const READ_NONE = -1
 Constants for object loading bitfield flags (higher => higher QoS)
 

Private Member Functions

 canUseCachedValues (UserIdentity $user, string $cacheKind, int $queryFlags)
 Determines if it's ok to use cached options values for a given user and query flags.
 
 checkCondition (array $cond, User $user)
 As recCheckCondition, but not recursive.
 
 clearUserCacheForKind (UserIdentity $user, string $cacheKind)
 Clears a cached group membership and query key for a given user.
 
 expandChangeableGroupConfig (array $config, string $group)
 
 getCacheKey (UserIdentity $user)
 Gets a unique key for various caches.
 
 getDBConnectionRefForQueryFlags (int $queryFlags)
 
 recCheckCondition ( $cond, User $user)
 Recursively check a condition.
 
 setCache (string $userKey, string $cacheKind, array $groupValue, int $queryFlags)
 Sets cached group memberships and query flags for a given user.
 

Private Attributes

callable[] $clearCacheCallbacks
 
string false $dbDomain
 
GroupPermissionsLookup $groupPermissionsLookup
 
HookContainer $hookContainer
 
HookRunner $hookRunner
 
JobQueueGroup $jobQueueGroup
 for this $dbDomain
 
ILoadBalancer $loadBalancer
 
ILBFactory $loadBalancerFactory
 
LoggerInterface $logger
 
ServiceOptions $options
 
array $queryFlagsUsedForCaching = []
 An assoc.
 
ReadOnlyMode $readOnlyMode
 
UserEditTracker $userEditTracker
 
array $userGroupCache = []
 Service caches, an assoc.
 
const CACHE_EFFECTIVE = 'effective'
 string key for effective groups cache
 
const CACHE_FORMER = 'former'
 string key for former groups cache
 
const CACHE_IMPLICIT = 'implicit'
 string key for implicit groups cache
 
const CACHE_MEMBERSHIP = 'membership'
 string key for group memberships cache
 

Detailed Description

Managers user groups.

Since
1.35

Definition at line 52 of file UserGroupManager.php.

Constructor & Destructor Documentation

◆ __construct()

MediaWiki\User\UserGroupManager::__construct ( ServiceOptions  $options,
ConfiguredReadOnlyMode  $configuredReadOnlyMode,
ILBFactory  $loadBalancerFactory,
HookContainer  $hookContainer,
UserEditTracker  $userEditTracker,
GroupPermissionsLookup  $groupPermissionsLookup,
JobQueueGroup  $jobQueueGroup,
LoggerInterface  $logger,
array  $clearCacheCallbacks = [],
  $dbDomain = false 
)

Member Function Documentation

◆ addUserToAutopromoteOnceGroups()

MediaWiki\User\UserGroupManager::addUserToAutopromoteOnceGroups ( UserIdentity  $user,
string  $event 
)

Add the user to the group if he/she meets given criteria.

Contrary to autopromotion by $wgAutopromote, the group will be possible to remove manually via Special:UserRights. In such case it will not be re-added automatically. The user will also not lose the group if they no longer meet the criteria.

Parameters
UserIdentity$userUser to add to the groups
string$eventKey in $wgAutopromoteOnce (each event has groups/criteria)
Returns
string[] Array of groups the user has been promoted to.
See also
$wgAutopromoteOnce

Definition at line 598 of file UserGroupManager.php.

◆ addUserToGroup()

MediaWiki\User\UserGroupManager::addUserToGroup ( UserIdentity  $user,
string  $group,
string  $expiry = null,
bool  $allowUpdate = false 
)

Add the user to the given group.

This takes immediate effect. If the user is already in the group, the expiry time will be updated to the new expiry time. (If $expiry is omitted or null, the membership will be altered to never expire.)

Parameters
UserIdentity$user
string$groupName of the group to add
string | null$expiryOptional expiry timestamp in any format acceptable to wfTimestamp(), or null if the group assignment should not expire
bool$allowUpdateWhether to perform "upsert" instead of INSERT
Exceptions
InvalidArgumentException
Returns
bool

Definition at line 734 of file UserGroupManager.php.

◆ addUserToMultipleGroups()

MediaWiki\User\UserGroupManager::addUserToMultipleGroups ( UserIdentity  $user,
array  $groups,
string  $expiry = null,
bool  $allowUpdate = false 
)

Add the user to the given list of groups.

Since
1.37
Parameters
UserIdentity$user
string[]$groupsNames of the groups to add
string | null$expiryOptional expiry timestamp in any format acceptable to wfTimestamp(), or null if the group assignment should not expire
bool$allowUpdateWhether to perform "upsert" instead of INSERT
Exceptions
InvalidArgumentException

Definition at line 852 of file UserGroupManager.php.

◆ canUseCachedValues()

MediaWiki\User\UserGroupManager::canUseCachedValues ( UserIdentity  $user,
string  $cacheKind,
int  $queryFlags 
)
private

Determines if it's ok to use cached options values for a given user and query flags.

Parameters
UserIdentity$user
string$cacheKindone of self::CACHE_* constants
int$queryFlags
Returns
bool

Definition at line 1177 of file UserGroupManager.php.

◆ checkCondition()

MediaWiki\User\UserGroupManager::checkCondition ( array  $cond,
User  $user 
)
private

As recCheckCondition, but not recursive.

The only valid conditions are those whose first element is one of APCOND_* defined in Defines.php. Other types will throw an exception if no extension evaluates them.

Parameters
array$condA condition, which must not contain other conditions
User$userThe user to check the condition against
Returns
bool Whether the condition is true for the user
Exceptions
InvalidArgumentExceptionif autopromote condition was not recognized.

Definition at line 522 of file UserGroupManager.php.

◆ clearCache()

MediaWiki\User\UserGroupManager::clearCache ( UserIdentity  $user)

Cleans cached group memberships for a given user.

Parameters
UserIdentity$user

Definition at line 1116 of file UserGroupManager.php.

◆ clearUserCacheForKind()

MediaWiki\User\UserGroupManager::clearUserCacheForKind ( UserIdentity  $user,
string  $cacheKind 
)
private

Clears a cached group membership and query key for a given user.

Parameters
UserIdentity$user
string$cacheKindone of self::CACHE_* constants

Definition at line 1146 of file UserGroupManager.php.

◆ expandChangeableGroupConfig()

MediaWiki\User\UserGroupManager::expandChangeableGroupConfig ( array  $config,
string  $group 
)
private
Parameters
array$config
string$group
Returns
string[]

Definition at line 1023 of file UserGroupManager.php.

◆ getCacheKey()

MediaWiki\User\UserGroupManager::getCacheKey ( UserIdentity  $user)
private

Gets a unique key for various caches.

Parameters
UserIdentity$user
Returns
string

Definition at line 1166 of file UserGroupManager.php.

◆ getDBConnectionRefForQueryFlags()

MediaWiki\User\UserGroupManager::getDBConnectionRefForQueryFlags ( int  $queryFlags)
private
Parameters
int$queryFlagsa bit field composed of READ_XXX flags
Returns
DBConnRef

Definition at line 1156 of file UserGroupManager.php.

◆ getGroupsChangeableBy()

MediaWiki\User\UserGroupManager::getGroupsChangeableBy ( Authority  $authority)

Returns an array of groups that this $actor can add and remove.

Since
1.37
Parameters
Authority$authority
Returns
array [ 'add' => [ addablegroups ], 'remove' => [ removablegroups ], 'add-self' => [ addablegroups to self ], 'remove-self' => [ removable groups from self ] ]

Definition at line 1075 of file UserGroupManager.php.

◆ getGroupsChangeableByGroup()

MediaWiki\User\UserGroupManager::getGroupsChangeableByGroup ( string  $group)

Returns an array of the groups that a particular group can add/remove.

Since
1.37
Parameters
string$groupThe group to check for whether it can add/remove
Returns
array [ 'add' => [ addablegroups ], 'remove' => [ removablegroups ], 'add-self' => [ addablegroups to self ], 'remove-self' => [ removable groups from self ] ]

Definition at line 1046 of file UserGroupManager.php.

◆ getQueryInfo()

MediaWiki\User\UserGroupManager::getQueryInfo ( )

Return the tables and fields to be selected to construct new UserGroupMembership object using newGroupMembershipFromRow method.

Returns
array[] With three keys:
  • tables: (string[]) to include in the $table to IDatabase->select()
  • fields: (string[]) to include in the $vars to IDatabase->select()
  • joins: (string[]) to include in the $joins to IDatabase->select()
Access: internal

Definition at line 936 of file UserGroupManager.php.

◆ getUserAutopromoteGroups()

MediaWiki\User\UserGroupManager::getUserAutopromoteGroups ( UserIdentity  $user)

Get the groups for the given user based on $wgAutopromote.

Parameters
UserIdentity$userThe user to get the groups for
Returns
string[] Array of groups to promote to.
See also
$wgAutopromote

Definition at line 390 of file UserGroupManager.php.

◆ getUserAutopromoteOnceGroups()

MediaWiki\User\UserGroupManager::getUserAutopromoteOnceGroups ( UserIdentity  $user,
string  $event 
)

Get the groups for the given user based on the given criteria.

Does not return groups the user already belongs to or has once belonged.

Parameters
UserIdentity$userThe user to get the groups for
string$eventKey in $wgAutopromoteOnce (each event has groups/criteria)
Returns
string[] Groups the user should be promoted to.
See also
$wgAutopromoteOnce

Definition at line 416 of file UserGroupManager.php.

References User\newFromIdentity().

◆ getUserEffectiveGroups()

MediaWiki\User\UserGroupManager::getUserEffectiveGroups ( UserIdentity  $user,
int  $queryFlags = self::READ_NORMAL,
bool  $recache = false 
)

Get the list of implicit group memberships the user has.

This includes all explicit groups, plus 'user' if logged in, '*' for all accounts, and autopromoted groups

Parameters
UserIdentity$user
int$queryFlags
bool$recacheWhether to avoid the cache
Returns
string[] internal group names

Definition at line 306 of file UserGroupManager.php.

References User\newFromIdentity().

◆ getUserFormerGroups()

MediaWiki\User\UserGroupManager::getUserFormerGroups ( UserIdentity  $user,
int  $queryFlags = self::READ_NORMAL 
)

Returns the groups the user has belonged to.

The user may still belong to the returned groups. Compare with getUserGroups().

The function will not return groups the user had belonged to before MW 1.17

Parameters
UserIdentity$user
int$queryFlags
Returns
string[] Names of the groups the user has belonged to.

Definition at line 349 of file UserGroupManager.php.

◆ getUserGroupMemberships()

MediaWiki\User\UserGroupManager::getUserGroupMemberships ( UserIdentity  $user,
int  $queryFlags = self::READ_NORMAL 
)

Loads and returns UserGroupMembership objects for all the groups a user currently belongs to.

Parameters
UserIdentity$userthe user to search for
int$queryFlags
Returns
UserGroupMembership[] Associative array of (group name => UserGroupMembership object)

Definition at line 676 of file UserGroupManager.php.

◆ getUserGroups()

MediaWiki\User\UserGroupManager::getUserGroups ( UserIdentity  $user,
int  $queryFlags = self::READ_NORMAL 
)

Get the list of explicit group memberships this user has.

The implicit * and user groups are not included.

Parameters
UserIdentity$user
int$queryFlags
Returns
string[]

Definition at line 661 of file UserGroupManager.php.

◆ getUserImplicitGroups()

MediaWiki\User\UserGroupManager::getUserImplicitGroups ( UserIdentity  $user,
int  $queryFlags = self::READ_NORMAL,
bool  $recache = false 
)

Get the list of implicit group memberships this user has.

This includes 'user' if logged in, '*' for all accounts, and autopromoted groups

Parameters
UserIdentity$user
int$queryFlags
bool$recacheWhether to avoid the cache
Returns
string[] internal group names

Definition at line 266 of file UserGroupManager.php.

References MediaWiki\User\UserIdentity\isRegistered().

◆ listAllGroups()

MediaWiki\User\UserGroupManager::listAllGroups ( )

Return the set of defined explicit groups.

The implicit groups (by default *, 'user' and 'autoconfirmed') are not included, as they are defined automatically, not in the database.

Returns
string[] internal group names

Definition at line 191 of file UserGroupManager.php.

Referenced by UsersPager\__construct().

◆ listAllImplicitGroups()

MediaWiki\User\UserGroupManager::listAllImplicitGroups ( )

Get a list of all configured implicit groups.

Returns
string[]

Definition at line 205 of file UserGroupManager.php.

◆ loadGroupMembershipsFromArray()

MediaWiki\User\UserGroupManager::loadGroupMembershipsFromArray ( UserIdentity  $user,
array  $userGroups,
int  $queryFlags = self::READ_NORMAL 
)

Load the user groups cache from the provided user groups data.

Access: internal
for use by the User object only
Parameters
UserIdentity$user
array$userGroupsan array of database query results
int$queryFlags

Definition at line 236 of file UserGroupManager.php.

◆ newGroupMembershipFromRow()

MediaWiki\User\UserGroupManager::newGroupMembershipFromRow ( \stdClass  $row)

Creates a new UserGroupMembership instance from $row.

The fields required to build an instance could be found using getQueryInfo() method.

Parameters
\\stdClass$rowA database result object
Returns
UserGroupMembership

Definition at line 218 of file UserGroupManager.php.

◆ purgeExpired()

MediaWiki\User\UserGroupManager::purgeExpired ( )

Purge expired memberships from the user_groups table.

Access: internal
Note
this could be slow and is intended for use in a background job
Returns
int|bool false if purging wasn't attempted (e.g. because of readonly), the number of rows purged (might be 0) otherwise

Definition at line 955 of file UserGroupManager.php.

References $res, and DB_PRIMARY.

◆ recCheckCondition()

MediaWiki\User\UserGroupManager::recCheckCondition (   $cond,
User  $user 
)
private

Recursively check a condition.

Conditions are in the form [ '&' or '|' or '^' or '!', cond1, cond2, ... ] where cond1, cond2, ... are themselves conditions; OR APCOND_EMAILCONFIRMED, OR [ APCOND_EMAILCONFIRMED ], OR [ APCOND_EDITCOUNT, number of edits ], OR [ APCOND_AGE, seconds since registration ], OR similar constructs defined by extensions. This function evaluates the former type recursively, and passes off to checkCondition for evaluation of the latter type.

Parameters
mixed$condA condition, possibly containing other conditions
User$userThe user to check the conditions against
Returns
bool Whether the condition is true

Definition at line 463 of file UserGroupManager.php.

◆ removeUserFromGroup()

MediaWiki\User\UserGroupManager::removeUserFromGroup ( UserIdentity  $user,
string  $group 
)

Remove the user from the given group.

This takes immediate effect.

Parameters
UserIdentity$user
string$groupName of the group to remove
Exceptions
InvalidArgumentException
Returns
bool

Definition at line 871 of file UserGroupManager.php.

References User\newFromIdentity().

◆ setCache()

MediaWiki\User\UserGroupManager::setCache ( string  $userKey,
string  $cacheKind,
array  $groupValue,
int  $queryFlags 
)
private

Sets cached group memberships and query flags for a given user.

Parameters
string$userKey
string$cacheKindone of self::CACHE_KIND_* constants
array$groupValue
int$queryFlags

Definition at line 1130 of file UserGroupManager.php.

Member Data Documentation

◆ $clearCacheCallbacks

callable [] MediaWiki\User\UserGroupManager::$clearCacheCallbacks
private

Definition at line 102 of file UserGroupManager.php.

Referenced by MediaWiki\User\UserGroupManager\__construct().

◆ $dbDomain

string false MediaWiki\User\UserGroupManager::$dbDomain
private

Definition at line 105 of file UserGroupManager.php.

Referenced by MediaWiki\User\UserGroupManager\__construct().

◆ $groupPermissionsLookup

GroupPermissionsLookup MediaWiki\User\UserGroupManager::$groupPermissionsLookup
private

Definition at line 93 of file UserGroupManager.php.

Referenced by MediaWiki\User\UserGroupManager\__construct().

◆ $hookContainer

HookContainer MediaWiki\User\UserGroupManager::$hookContainer
private

Definition at line 81 of file UserGroupManager.php.

Referenced by MediaWiki\User\UserGroupManager\__construct().

◆ $hookRunner

HookRunner MediaWiki\User\UserGroupManager::$hookRunner
private

Definition at line 84 of file UserGroupManager.php.

◆ $jobQueueGroup

JobQueueGroup MediaWiki\User\UserGroupManager::$jobQueueGroup
private

for this $dbDomain

Definition at line 96 of file UserGroupManager.php.

Referenced by MediaWiki\User\UserGroupManager\__construct().

◆ $loadBalancer

ILoadBalancer MediaWiki\User\UserGroupManager::$loadBalancer
private

Definition at line 78 of file UserGroupManager.php.

◆ $loadBalancerFactory

ILBFactory MediaWiki\User\UserGroupManager::$loadBalancerFactory
private

Definition at line 75 of file UserGroupManager.php.

Referenced by MediaWiki\User\UserGroupManager\__construct().

◆ $logger

LoggerInterface MediaWiki\User\UserGroupManager::$logger
private

Definition at line 99 of file UserGroupManager.php.

Referenced by MediaWiki\User\UserGroupManager\__construct().

◆ $options

ServiceOptions MediaWiki\User\UserGroupManager::$options
private

Definition at line 72 of file UserGroupManager.php.

Referenced by MediaWiki\User\UserGroupManager\__construct().

◆ $queryFlagsUsedForCaching

array MediaWiki\User\UserGroupManager::$queryFlagsUsedForCaching = []
private

An assoc.

array that stores query flags used to retrieve user groups from the database and is stored in the following format:

userKey => [ self::CACHE_IMPLICIT => implicit groups query flag self::CACHE_EFFECTIVE => effective groups query flag self::CACHE_MEMBERSHIP => membership groups query flag self::CACHE_FORMER => former groups query flag ]

Definition at line 143 of file UserGroupManager.php.

◆ $readOnlyMode

ReadOnlyMode MediaWiki\User\UserGroupManager::$readOnlyMode
private

Definition at line 87 of file UserGroupManager.php.

◆ $userEditTracker

UserEditTracker MediaWiki\User\UserGroupManager::$userEditTracker
private

Definition at line 90 of file UserGroupManager.php.

Referenced by MediaWiki\User\UserGroupManager\__construct().

◆ $userGroupCache

array MediaWiki\User\UserGroupManager::$userGroupCache = []
private

Service caches, an assoc.

array keyed after the user-keys generated by the getCacheKey method and storing values in the following format:

userKey => [ self::CACHE_IMPLICIT => implicit groups cache self::CACHE_EFFECTIVE => effective groups cache self::CACHE_MEMBERSHIP => [ ] // Array of UserGroupMembership objects self::CACHE_FORMER => former groups cache ]

Definition at line 130 of file UserGroupManager.php.

◆ CACHE_EFFECTIVE

const MediaWiki\User\UserGroupManager::CACHE_EFFECTIVE = 'effective'
private

string key for effective groups cache

Definition at line 111 of file UserGroupManager.php.

◆ CACHE_FORMER

const MediaWiki\User\UserGroupManager::CACHE_FORMER = 'former'
private

string key for former groups cache

Definition at line 117 of file UserGroupManager.php.

◆ CACHE_IMPLICIT

const MediaWiki\User\UserGroupManager::CACHE_IMPLICIT = 'implicit'
private

string key for implicit groups cache

Definition at line 108 of file UserGroupManager.php.

◆ CACHE_MEMBERSHIP

const MediaWiki\User\UserGroupManager::CACHE_MEMBERSHIP = 'membership'
private

string key for group memberships cache

Definition at line 114 of file UserGroupManager.php.

◆ CONSTRUCTOR_OPTIONS

const MediaWiki\User\UserGroupManager::CONSTRUCTOR_OPTIONS
Initial value:
= [
'AddGroups',
'Autopromote',
'AutopromoteOnce',
'AutopromoteOnceLogInRC',
'EmailAuthentication',
'ImplicitGroups',
'GroupPermissions',
'GroupsAddToSelf',
'GroupsRemoveFromSelf',
'RevokePermissions',
'RemoveGroups',
]
Access: internal
For use by ServiceWiring

Definition at line 57 of file UserGroupManager.php.


The documentation for this class was generated from the following file: