MediaWiki  master
MediaWiki\User\ActorStore Class Reference
Inheritance diagram for MediaWiki\User\ActorStore:
Collaboration diagram for MediaWiki\User\ActorStore:

Public Member Functions

 __construct (ILoadBalancer $loadBalancer, UserNameUtils $userNameUtils, LoggerInterface $logger, $wikiId=WikiAwareEntity::LOCAL)
 
 acquireActorId (UserIdentity $user, IDatabase $dbw=null)
 Attempt to assign an actor ID to the given $user If it is already assigned, return the existing ID. More...
 
 findActorId (UserIdentity $user, IDatabase $db)
 Find the actor_id of the given $user. More...
 
 findActorIdByName ( $name, IDatabase $db)
 Find the actor_id of the given $name. More...
 
 getActorById (int $actorId, IDatabase $db)
 Find an actor by $id. More...
 
 getUnknownActor ()
 In case all reasonable attempts of initializing a proper actor from the database have failed, entities can be attributed to special 'Unknown user' actor. More...
 
 getUserIdentityByName (string $name, int $queryFlags=self::READ_NORMAL)
 Find an actor by $name. More...
 
 getUserIdentityByUserId (int $userId, int $queryFlags=self::READ_NORMAL)
 Find an actor by $userId. More...
 
 newActorFromRow (stdClass $row)
 Instantiate a new UserIdentity object based on a $row from the actor table. More...
 
 newActorFromRowFields ( $userId, $name, $actorId)
 Instantiate a new UserIdentity object based on field values from a DB row. More...
 
 newSelectQueryBuilder (IDatabase $db=null)
 Returns a specialized SelectQueryBuilder for querying the UserIdentity objects. More...
 
 normalizeUserName (string $name, $rigor=UserNameUtils::RIGOR_NONE)
 Returns a canonical form of user name suitable for storage. More...
 
- Public Member Functions inherited from MediaWiki\User\ActorNormalization
 findActorIdByName (string $name, IDatabase $db)
 Find the actor_id for the given name. More...
 

Public Attributes

const UNKNOWN_USER_NAME = 'Unknown user'
 
- Public Attributes inherited from IDBAccessObject
const READ_NONE = -1
 Constants for object loading bitfield flags (higher => higher QoS) More...
 

Private Member Functions

 addUserIdentityToCache (int $actorId, UserIdentity $actor)
 
 attachActorId (UserIdentity $user, int $id)
 Attach the actor ID to $user for backwards compatibility. More...
 
 checkDatabaseDomain (IDatabase $db)
 Throws an exception if the given database connection does not belong to the wiki this RevisionStore is bound to. More...
 
 findActorIdInternal (string $name, IDatabase $db, array $queryOptions=[])
 Find actor_id of the given $user using the passed $db connection. More...
 
 getDBConnectionRefForQueryFlags (int $queryFlags)
 
 newSelectQueryBuilderForQueryFlags ( $queryFlags)
 Returns a specialized SelectQueryBuilder for querying the UserIdentity objects. More...
 

Private Attributes

MapCacheLRU $actorsByActorId
 int actor ID => [ UserIdentity, int actor ID ] More...
 
MapCacheLRU $actorsByName
 string user name => [ UserIdentity, int actor ID ] More...
 
MapCacheLRU $actorsByUserId
 int user ID => [ UserIdentity, int actor ID ] More...
 
ILoadBalancer $loadBalancer
 
LoggerInterface $logger
 
UserNameUtils $userNameUtils
 
string false $wikiId
 
const LOCAL_CACHE_SIZE = 5
 

Detailed Description

Definition at line 43 of file ActorStore.php.

Constructor & Destructor Documentation

◆ __construct()

MediaWiki\User\ActorStore::__construct ( ILoadBalancer  $loadBalancer,
UserNameUtils  $userNameUtils,
LoggerInterface  $logger,
  $wikiId = WikiAwareEntity::LOCAL 
)
Parameters
ILoadBalancer$loadBalancer
UserNameUtils$userNameUtils
LoggerInterface$logger
string | false$wikiId

Definition at line 76 of file ActorStore.php.

References MediaWiki\User\ActorStore\$loadBalancer, MediaWiki\User\ActorStore\$logger, MediaWiki\User\ActorStore\$userNameUtils, and MediaWiki\User\ActorStore\$wikiId.

Member Function Documentation

◆ acquireActorId()

MediaWiki\User\ActorStore::acquireActorId ( UserIdentity  $user,
IDatabase  $dbw = null 
)

Attempt to assign an actor ID to the given $user If it is already assigned, return the existing ID.

Parameters
UserIdentity$user
IDatabase | null$dbwThe database connection to acquire the ID from. The database must correspond to ActorStore's wiki ID. If not given, an appropriate database connection will acquired from the LoadBalancer provided to the constructor. Not providing a database connection triggers a deprecation warning! In the future, this parameter will be required.
Returns
int greater then 0
Exceptions
CannotCreateActorExceptionif no actor ID has been assigned to this $user

Implements MediaWiki\User\ActorNormalization.

Definition at line 423 of file ActorStore.php.

References MediaWiki\User\ActorStore\attachActorId(), MediaWiki\User\ActorStore\checkDatabaseDomain(), MediaWiki\User\ActorStore\findActorIdInternal(), MediaWiki\User\ActorStore\getDBConnectionRefForQueryFlags(), MediaWiki\User\UserIdentity\getId(), MediaWiki\User\UserIdentity\getName(), MediaWiki\User\ActorStore\newActorFromRowFields(), MediaWiki\User\ActorStore\normalizeUserName(), and wfDeprecatedMsg().

Referenced by MediaWiki\User\ActorStore\getUnknownActor().

◆ addUserIdentityToCache()

MediaWiki\User\ActorStore::addUserIdentityToCache ( int  $actorId,
UserIdentity  $actor 
)
private

◆ attachActorId()

MediaWiki\User\ActorStore::attachActorId ( UserIdentity  $user,
int  $id 
)
private

Attach the actor ID to $user for backwards compatibility.

Todo:
remove this method when no longer needed (T273974).
Parameters
UserIdentity$user
int$id

Definition at line 303 of file ActorStore.php.

Referenced by MediaWiki\User\ActorStore\acquireActorId(), and MediaWiki\User\ActorStore\findActorId().

◆ checkDatabaseDomain()

MediaWiki\User\ActorStore::checkDatabaseDomain ( IDatabase  $db)
private

Throws an exception if the given database connection does not belong to the wiki this RevisionStore is bound to.

Parameters
IDatabase$db

Definition at line 537 of file ActorStore.php.

References Wikimedia\Rdbms\IDatabase\getDomainID().

Referenced by MediaWiki\User\ActorStore\acquireActorId(), MediaWiki\User\ActorStore\getActorById(), and MediaWiki\User\ActorStore\newSelectQueryBuilder().

◆ findActorId()

MediaWiki\User\ActorStore::findActorId ( UserIdentity  $user,
IDatabase  $db 
)

Find the actor_id of the given $user.

Parameters
UserIdentity$user
IDatabase$dbThe database connection to operate on. The database must correspond to ActorStore's wiki ID.
Returns
int|null

Implements MediaWiki\User\ActorNormalization.

Definition at line 319 of file ActorStore.php.

References MediaWiki\User\ActorStore\attachActorId(), MediaWiki\User\ActorStore\findActorIdInternal(), MediaWiki\User\UserIdentity\getName(), and MediaWiki\User\ActorStore\normalizeUserName().

◆ findActorIdByName()

MediaWiki\User\ActorStore::findActorIdByName (   $name,
IDatabase  $db 
)

Find the actor_id of the given $name.

Parameters
string$name
IDatabase$dbThe database connection to operate on. The database must correspond to ActorStore's wiki ID.
Returns
int|null

Definition at line 353 of file ActorStore.php.

References MediaWiki\User\ActorStore\findActorIdInternal(), and MediaWiki\User\ActorStore\normalizeUserName().

◆ findActorIdInternal()

MediaWiki\User\ActorStore::findActorIdInternal ( string  $name,
IDatabase  $db,
array  $queryOptions = [] 
)
private

Find actor_id of the given $user using the passed $db connection.

Parameters
string$name
IDatabase$dbThe database connection to operate on. The database must correspond to ActorStore's wiki ID.
array$queryOptions
Returns
int|null

Definition at line 374 of file ActorStore.php.

References Wikimedia\Rdbms\IDatabase\selectRow().

Referenced by MediaWiki\User\ActorStore\acquireActorId(), MediaWiki\User\ActorStore\findActorId(), and MediaWiki\User\ActorStore\findActorIdByName().

◆ getActorById()

MediaWiki\User\ActorStore::getActorById ( int  $actorId,
IDatabase  $db 
)

Find an actor by $id.

Parameters
int$actorId
IDatabase$dbThe database connection to operate on. The database must correspond to ActorStore's wiki ID.
Returns
UserIdentity|null Returns null if no actor with this $actorId exists in the database.

Implements MediaWiki\User\ActorNormalization.

Definition at line 214 of file ActorStore.php.

References MediaWiki\User\ActorStore\checkDatabaseDomain(), MediaWiki\User\ActorStore\newSelectQueryBuilder(), and MediaWiki\User\ActorStore\newSelectQueryBuilderForQueryFlags().

◆ getDBConnectionRefForQueryFlags()

MediaWiki\User\ActorStore::getDBConnectionRefForQueryFlags ( int  $queryFlags)
private
Parameters
int$queryFlagsa bit field composed of READ_XXX flags
Returns
array [ IDatabase $db, array $options ]

Definition at line 526 of file ActorStore.php.

References DBAccessObjectUtils\getDBOptions().

Referenced by MediaWiki\User\ActorStore\acquireActorId(), MediaWiki\User\ActorStore\getUnknownActor(), MediaWiki\User\ActorStore\newSelectQueryBuilder(), and MediaWiki\User\ActorStore\newSelectQueryBuilderForQueryFlags().

◆ getUnknownActor()

MediaWiki\User\ActorStore::getUnknownActor ( )

In case all reasonable attempts of initializing a proper actor from the database have failed, entities can be attributed to special 'Unknown user' actor.

Returns
UserIdentity

Implements MediaWiki\User\ActorNormalization.

Definition at line 553 of file ActorStore.php.

References MediaWiki\User\ActorStore\acquireActorId(), MediaWiki\User\ActorStore\getDBConnectionRefForQueryFlags(), and MediaWiki\User\ActorStore\getUserIdentityByName().

◆ getUserIdentityByName()

MediaWiki\User\ActorStore::getUserIdentityByName ( string  $name,
int  $queryFlags = self::READ_NORMAL 
)

Find an actor by $name.

Parameters
string$name
int$queryFlagsone of IDBAccessObject constants
Returns
UserIdentity|null
Exceptions
InvalidArgumentExceptionif non-normalizable actor name is passed.

Implements MediaWiki\User\UserIdentityLookup.

Definition at line 251 of file ActorStore.php.

References MediaWiki\User\ActorStore\newSelectQueryBuilderForQueryFlags(), and MediaWiki\User\ActorStore\normalizeUserName().

Referenced by MediaWiki\User\ActorStore\getUnknownActor().

◆ getUserIdentityByUserId()

MediaWiki\User\ActorStore::getUserIdentityByUserId ( int  $userId,
int  $queryFlags = self::READ_NORMAL 
)

Find an actor by $userId.

Parameters
int$userId
int$queryFlagsone of IDBAccessObject constants
Returns
UserIdentity|null

Implements MediaWiki\User\UserIdentityLookup.

Definition at line 279 of file ActorStore.php.

References MediaWiki\User\ActorStore\newSelectQueryBuilderForQueryFlags().

◆ newActorFromRow()

MediaWiki\User\ActorStore::newActorFromRow ( stdClass  $row)

Instantiate a new UserIdentity object based on a $row from the actor table.

Use this method when an actor row was already fetched from the DB via a join. This method just constructs a new instance and does not try fetching missing values from the DB again, use UserIdentityLookup for that.

Parameters
stdClass$rowwith the following fields:
  • int actor_id
  • string actor_name
  • int|null actor_user
Returns
UserIdentity
Exceptions
InvalidArgumentException

Implements MediaWiki\User\ActorNormalization.

Definition at line 109 of file ActorStore.php.

References MediaWiki\User\ActorStore\addUserIdentityToCache(), if, and MediaWiki\User\ActorStore\normalizeUserName().

◆ newActorFromRowFields()

MediaWiki\User\ActorStore::newActorFromRowFields (   $userId,
  $name,
  $actorId 
)

Instantiate a new UserIdentity object based on field values from a DB row.

Until ActorMigration is completed, the actor table joins alias actor field names to legacy field names. This method is convenience to construct the UserIdentity based on legacy field names. It's more relaxed with typing then ::newFromRow to better support legacy code, so always prefer ::newFromRow in new code. Eventually, once ActorMigration is completed and all queries use explicit join with actor table, this method will be deprecated and removed.

Exceptions
InvalidArgumentException
Parameters
int | null$userId
string | null$name
int | null$actorId
Returns
UserIdentity

Implements MediaWiki\User\ActorNormalization.

Definition at line 152 of file ActorStore.php.

References MediaWiki\User\ActorStore\addUserIdentityToCache(), and MediaWiki\User\ActorStore\normalizeUserName().

Referenced by MediaWiki\User\ActorStore\acquireActorId().

◆ newSelectQueryBuilder()

MediaWiki\User\ActorStore::newSelectQueryBuilder ( IDatabase  $db = null)

Returns a specialized SelectQueryBuilder for querying the UserIdentity objects.

Parameters
IDatabase | null$dbThe database connection to perform the query on. The database must correspond to ActorStore's wiki ID. If not given, an appropriate database connection will acquired from the LoadBalancer provided to the constructor.
Returns
UserSelectQueryBuilder

Implements MediaWiki\User\UserIdentityLookup.

Definition at line 587 of file ActorStore.php.

References MediaWiki\User\ActorStore\checkDatabaseDomain(), and MediaWiki\User\ActorStore\getDBConnectionRefForQueryFlags().

Referenced by MediaWiki\User\ActorStore\getActorById(), and MediaWiki\User\ActorStore\newSelectQueryBuilderForQueryFlags().

◆ newSelectQueryBuilderForQueryFlags()

MediaWiki\User\ActorStore::newSelectQueryBuilderForQueryFlags (   $queryFlags)
private

◆ normalizeUserName()

MediaWiki\User\ActorStore::normalizeUserName ( string  $name,
  $rigor = UserNameUtils::RIGOR_NONE 
)

Returns a canonical form of user name suitable for storage.

Access: internal
Parameters
string$name
string$rigorUserNameUtils::RIGOR_XXX
Returns
string|null

Definition at line 507 of file ActorStore.php.

References ExternalUserNames\isExternal().

Referenced by MediaWiki\User\ActorStore\acquireActorId(), MediaWiki\User\ActorStore\findActorId(), MediaWiki\User\ActorStore\findActorIdByName(), MediaWiki\User\ActorStore\getUserIdentityByName(), MediaWiki\User\ActorStore\newActorFromRow(), and MediaWiki\User\ActorStore\newActorFromRowFields().

Member Data Documentation

◆ $actorsByActorId

MapCacheLRU MediaWiki\User\ActorStore::$actorsByActorId
private

int actor ID => [ UserIdentity, int actor ID ]

Definition at line 62 of file ActorStore.php.

◆ $actorsByName

MapCacheLRU MediaWiki\User\ActorStore::$actorsByName
private

string user name => [ UserIdentity, int actor ID ]

Definition at line 68 of file ActorStore.php.

◆ $actorsByUserId

MapCacheLRU MediaWiki\User\ActorStore::$actorsByUserId
private

int user ID => [ UserIdentity, int actor ID ]

Definition at line 65 of file ActorStore.php.

◆ $loadBalancer

ILoadBalancer MediaWiki\User\ActorStore::$loadBalancer
private

Definition at line 50 of file ActorStore.php.

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

◆ $logger

LoggerInterface MediaWiki\User\ActorStore::$logger
private

Definition at line 56 of file ActorStore.php.

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

◆ $userNameUtils

UserNameUtils MediaWiki\User\ActorStore::$userNameUtils
private

Definition at line 53 of file ActorStore.php.

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

◆ $wikiId

string false MediaWiki\User\ActorStore::$wikiId
private

Definition at line 59 of file ActorStore.php.

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

◆ LOCAL_CACHE_SIZE

const MediaWiki\User\ActorStore::LOCAL_CACHE_SIZE = 5
private

Definition at line 47 of file ActorStore.php.

◆ UNKNOWN_USER_NAME

const MediaWiki\User\ActorStore::UNKNOWN_USER_NAME = 'Unknown user'

Definition at line 45 of file ActorStore.php.


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