MediaWiki  master
ActorMigration Class Reference

This class handles the logic for the actor table migration. More...

Public Member Functions

 __construct ( $stage)
 
 getInsertValues (IDatabase $dbw, $key, UserIdentity $user)
 Get UPDATE fields for the actor. More...
 
 getInsertValuesWithTempTable (IDatabase $dbw, $key, UserIdentity $user)
 Get UPDATE fields for the actor. More...
 
 getJoin ( $key)
 Get SELECT fields and joins for the actor key. More...
 
 getWhere (IDatabase $db, $key, $users, $useId=true)
 Get WHERE condition for the actor. More...
 
 isAnon ( $field)
 Return an SQL condition to test if a user field is anonymous. More...
 
 isNotAnon ( $field)
 Return an SQL condition to test if a user field is non-anonymous. More...
 

Static Public Member Functions

static newMigration ()
 Static constructor. More...
 

Public Attributes

const MIGRATION_STAGE_SCHEMA_COMPAT = 1
 Constant for extensions to feature-test whether $wgActorTableSchemaMigrationStage expects MIGRATION_* or SCHEMA_COMPAT_*. More...
 

Static Private Member Functions

static getFieldNames ( $key)
 

Private Attributes

static array array null $joinCache = null
 Cache for self::getJoin() More...
 
int $stage
 Combination of SCHEMA_COMPAT_* constants. More...
 

Static Private Attributes

static array static array $formerTempTables = []
 Fields that formerly used $tempTables Key is '$key', value is the MediaWiki version in which it was removed from $tempTables. More...
 
static array $specialFields
 Define fields that use non-standard mapping Keys are the user id column name, values are arrays with two elements (the user text column name and the actor id column name) More...
 
static array $tempTables
 Define fields that use temporary tables for transitional purposes Keys are '$key', values are arrays with four fields: More...
 

Detailed Description

This class handles the logic for the actor table migration.

This is not intended to be a long-term part of MediaWiki; it will be deprecated and removed along with $wgActorTableSchemaMigrationStage.

Since
1.31

Definition at line 35 of file ActorMigration.php.

Constructor & Destructor Documentation

◆ __construct()

ActorMigration::__construct (   $stage)

Member Function Documentation

◆ getFieldNames()

static ActorMigration::getFieldNames (   $key)
staticprivate
Parameters
string$keyA key such as "rev_user" identifying the actor field being fetched.
Returns
string[] [ $text, $actor ]

Definition at line 138 of file ActorMigration.php.

◆ getInsertValues()

ActorMigration::getInsertValues ( IDatabase  $dbw,
  $key,
UserIdentity  $user 
)

Get UPDATE fields for the actor.

Parameters
IDatabase$dbwDatabase to use for creating an actor ID, if necessary
string$keyA key such as "rev_user" identifying the actor field being fetched.
UserIdentity$userUser to set in the update
Returns
array to merge into $values to IDatabase->update() or $a to IDatabase->insert()

Definition at line 204 of file ActorMigration.php.

References $ret, MediaWiki\User\UserIdentity\getActorId(), MediaWiki\User\UserIdentity\getId(), MediaWiki\User\UserIdentity\getName(), list, User\newFromAnyId(), null, SCHEMA_COMPAT_WRITE_NEW, and SCHEMA_COMPAT_WRITE_OLD.

◆ getInsertValuesWithTempTable()

ActorMigration::getInsertValuesWithTempTable ( IDatabase  $dbw,
  $key,
UserIdentity  $user 
)

Get UPDATE fields for the actor.

Parameters
IDatabase$dbwDatabase to use for creating an actor ID, if necessary
string$keyA key such as "rev_user" identifying the actor field being fetched.
UserIdentity$userUser to set in the update
Returns
array with two values:
  • array to merge into $values to IDatabase->update() or $a to IDatabase->insert()
  • callback to call with the primary key for the main table insert and extra fields needed for the temp table.

Definition at line 237 of file ActorMigration.php.

References $ret, $t, array(), as, MediaWiki\User\UserIdentity\getActorId(), MediaWiki\User\UserIdentity\getId(), MediaWiki\User\UserIdentity\getName(), list, User\newFromAnyId(), null, SCHEMA_COMPAT_WRITE_NEW, SCHEMA_COMPAT_WRITE_OLD, Wikimedia\Rdbms\IDatabase\upsert(), use, and wfDeprecated().

◆ getJoin()

ActorMigration::getJoin (   $key)

Get SELECT fields and joins for the actor key.

Parameters
string$keyA key such as "rev_user" identifying the actor field being fetched.
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: (array) to include in the $join_conds to IDatabase->select() All tables, fields, and joins are aliased, so + is safe to use.

Definition at line 153 of file ActorMigration.php.

References $t, $tables, list, and SCHEMA_COMPAT_READ_OLD.

◆ getWhere()

ActorMigration::getWhere ( IDatabase  $db,
  $key,
  $users,
  $useId = true 
)

Get WHERE condition for the actor.

Parameters
IDatabase$dbDatabase to use for quoting and list-making
string$keyA key such as "rev_user" identifying the actor field being fetched.
UserIdentity|UserIdentity[]$users Users to test for
bool$useIdIf false, don't try to query by the user ID. Intended for use with rc_user since it has an index on (rc_user_text,rc_timestamp) but not (rc_user,rc_timestamp).
Returns
array With three keys:
  • tables: (string[]) to include in the $table to IDatabase->select()
  • conds: (string) to include in the $cond to IDatabase->select()
  • orconds: (array[]) array of alternatives in case a union of multiple queries would be more efficient than a query with OR. May have keys 'actor', 'userid', 'username'. Since 1.32, this is guaranteed to contain just one alternative if $users contains a single user.
  • joins: (array) to include in the $join_conds to IDatabase->select() All tables and joins are aliased, so + is safe to use.

Definition at line 320 of file ActorMigration.php.

References $t, $tables, $user, as, ChangesListFilter\getName(), list, LIST_AND, LIST_OR, Wikimedia\Rdbms\IDatabase\makeList(), and SCHEMA_COMPAT_READ_NEW.

◆ isAnon()

ActorMigration::isAnon (   $field)

Return an SQL condition to test if a user field is anonymous.

Parameters
string$fieldField name or SQL fragment
Returns
string

Definition at line 120 of file ActorMigration.php.

References SCHEMA_COMPAT_READ_NEW.

◆ isNotAnon()

ActorMigration::isNotAnon (   $field)

Return an SQL condition to test if a user field is non-anonymous.

Parameters
string$fieldField name or SQL fragment
Returns
string

Definition at line 129 of file ActorMigration.php.

References SCHEMA_COMPAT_READ_NEW.

◆ newMigration()

static ActorMigration::newMigration ( )
static

Static constructor.

Returns
ActorMigration

Definition at line 111 of file ActorMigration.php.

Referenced by ChangesListSpecialPage\__construct(), WikiPage\archiveRevisions(), ImageListPager\buildQueryConds(), SiteStatsUpdate\cacheUpdate(), Orphans\checkOrphans(), WikiPage\commitRollback(), Block\defaultRetroactiveAutoblock(), LocalFileDeleteBatch\doDBInserts(), DeduplicateArchiveRevId\doDBUpdates(), PopulateIpChanges\doDBUpdates(), RevDelLogList\doQuery(), ReassignEdits\doReassignEdits(), WikiExporter\dumpLogs(), ApiQueryBlocks\execute(), ApiQueryDeletedrevs\execute(), FixUserRegistration\execute(), DeleteDefaultMessages\execute(), InitEditCount\execute(), ApiQueryLogEvents\execute(), ApiQueryContributors\execute(), LocalFileRestoreBatch\execute(), ChangesListSpecialPage\filterOnUserExperienceLevel(), Block\getAutoblockUpdateArray(), WikiPage\getContributors(), Block\getDatabaseArray(), User\getEditTimestamp(), EditPage\getLastDelete(), NewPagesPager\getQueryInfo(), NewFilesPager\getQueryInfo(), DeletedContribsPager\getQueryInfo(), OldLocalFile\getQueryInfo(), ContribsPager\getQueryInfo(), LocalFile\getQueryInfo(), ProtectedPagesPager\getQueryInfo(), Block\getQueryInfo(), ArchivedFile\getQueryInfo(), RecentChange\getQueryInfo(), BlockListPager\getQueryInfo(), ImageListPager\getQueryInfoReal(), RollbackEdits\getRollbackTitles(), DatabaseLogEntry\getSelectQueryData(), WikiRevision\importLogItem(), User\initEditCountInternal(), ManualLogEntry\insert(), RemoveUnusedAccounts\isInactiveAccount(), MediaWiki\Storage\PageEditStash\lastEditTime(), LogPager\limitPerformer(), ApiQueryUserContribs\prepareQuery(), RebuildRecentchanges\rebuildRecentChangesTablePass1(), RebuildRecentchanges\rebuildRecentChangesTablePass3(), RebuildRecentchanges\rebuildRecentChangesTablePass4(), OldLocalFile\recordOldUpload(), LocalFile\recordUpload2(), ApiQueryDeletedRevisions\run(), ApiQueryAllRevisions\run(), ApiQueryAllDeletedRevisions\run(), ApiQueryAllImages\run(), ApiQueryRevisions\run(), ApiQueryRecentChanges\run(), RecentChange\save(), LogPage\saveContent(), ApiQueryBase\showHiddenUsersAddBlockInfo(), WikiPageDbTestBase\testDoDeleteArticleReal_suppress(), WikiPageDbTestBase\testDoDeleteArticleReal_user0(), WikiPageDbTestBase\testDoDeleteArticleReal_userSysop(), MediaWiki\Tests\Revision\RevisionStoreFactoryTest\testGetRevisionStore(), ActorMigrationTest\testNewMigration(), MediaWiki\Tests\Revision\RevisionStoreFactoryTest\testValidConstruction_doesntCauseErrors(), and RecentChangesUpdateJob\updateActiveUsers().

Member Data Documentation

◆ $formerTempTables

array static array ActorMigration::$formerTempTables = []
staticprivate

Fields that formerly used $tempTables Key is '$key', value is the MediaWiki version in which it was removed from $tempTables.

Definition at line 69 of file ActorMigration.php.

◆ $joinCache

array array null ActorMigration::$joinCache = null
private

Cache for self::getJoin()

Definition at line 81 of file ActorMigration.php.

◆ $specialFields

array ActorMigration::$specialFields
staticprivate
Initial value:
= [
'ipb_by' => [ 'ipb_by_text', 'ipb_by_actor' ]

Define fields that use non-standard mapping Keys are the user id column name, values are arrays with two elements (the user text column name and the actor id column name)

Definition at line 76 of file ActorMigration.php.

◆ $stage

int ActorMigration::$stage
private

Combination of SCHEMA_COMPAT_* constants.

Definition at line 84 of file ActorMigration.php.

Referenced by __construct().

◆ $tempTables

array ActorMigration::$tempTables
staticprivate
Initial value:
= [
'rev_user' => [
'table' => 'revision_actor_temp'

Define fields that use temporary tables for transitional purposes Keys are '$key', values are arrays with four fields:

  • table: Temporary table name
  • pk: Temporary table column referring to the main table's primary key
  • field: Temporary table column referring actor.actor_id
  • joinPK: Main table's primary key

Definition at line 51 of file ActorMigration.php.

◆ MIGRATION_STAGE_SCHEMA_COMPAT

const ActorMigration::MIGRATION_STAGE_SCHEMA_COMPAT = 1

Constant for extensions to feature-test whether $wgActorTableSchemaMigrationStage expects MIGRATION_* or SCHEMA_COMPAT_*.

Definition at line 41 of file ActorMigration.php.


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