本文整理汇总了PHP中WikiFactory::getClusters方法的典型用法代码示例。如果您正苦于以下问题:PHP WikiFactory::getClusters方法的具体用法?PHP WikiFactory::getClusters怎么用?PHP WikiFactory::getClusters使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WikiFactory
的用法示例。
在下文中一共展示了WikiFactory::getClusters方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: doRun
/**
* Do the whole dirty job of renaming user
*
* @return bool True if the process succeded
*/
private function doRun()
{
global $wgMemc, $wgAuth;
$this->addLog("User rename global task start." . (!empty($this->mFakeUserId) ? ' Process is being repeated.' : null));
$this->addLog("Renaming user {$this->mOldUsername} (ID {$this->mUserId}) to {$this->mNewUsername}");
$hookName = 'RenameUser::Abort';
$this->addLog("Broadcasting hook: {$hookName}");
// Give other affected extensions a chance to validate or abort
if (!wfRunHooks($hookName, array($this->mUserId, $this->mOldUsername, $this->mNewUsername, &$this->mErrors))) {
$this->addLog("Aborting procedure as requested by hook.");
$this->addError(wfMsgForContent('userrenametool-error-extension-abort'));
wfProfileOut(__METHOD__);
return false;
}
//enumerate IDs for wikis the user has been active in
$this->addLog("Searching for user activity on wikis.");
$wikiIDs = RenameUserHelper::lookupRegisteredUserActivity($this->mUserId);
$this->addLog("Found " . count($wikiIDs) . " wikis: " . implode(', ', $wikiIDs));
$hookName = 'UserRename::BeforeAccountRename';
$this->addLog("Broadcasting hook: {$hookName}");
wfRunHooks($hookName, array($this->mUserId, $this->mOldUsername, $this->mNewUsername));
//rename the user account across clusters
$clusters = WikiFactory::getClusters();
foreach ($clusters as $clusterName) {
if (!$this->renameAccount($clusterName)) {
$this->addLog("Renaming user account on cluster {$clusterName} resulted in a failure.");
//if main shared DB, rename operation failed and not repeating then something's wrong dude...
if ($clusterName === RenameUserHelper::CLUSTER_DEFAULT && empty($this->mFakeUserId)) {
$this->addLog("Cluster {$clusterName} is the main shared DB, aborting.");
$this->addError(wfMsgForContent('userrenametool-error-cannot-rename-account'));
wfProfileOut(__METHOD__);
return false;
}
}
}
$this->invalidateUser($this->mNewUsername);
/*if not repeating the process
create a new account storing the old username and some extra information in the realname field
this avoids creating new accounts with the old name and let's resume/repeat the process in case is needed*/
$this->addLog("Creating fake user account");
$fakeUser = null;
if (empty($this->mFakeUserId)) {
//IMPORTANT: thi extension is meant to be enabled only on community central
$fakeUser = User::createNew($this->mOldUsername);
$fakeUser->setOption('renameData', self::RENAME_TAG . '=' . $this->mNewUsername . ';' . self::PROCESS_TAG . '=' . '1');
$fakeUser->saveToCache();
$this->mFakeUserId = $fakeUser->getId();
$this->addLog("Created fake user account with ID {$this->mFakeUserId} and renameData '{$fakeUser->getOption('renameData', '')}'");
} else {
$fakeUser = User::newFromId($this->mFakeUserId);
$this->addLog("Fake user account already exists: {$this->mFakeUserId}");
}
$this->invalidateUser($this->mOldUsername);
//Block the user from logging in before logging him out
$this->addLog("Creating a Phalanx block for the user.");
if (empty($this->mPhalanxBlockId)) {
$this->mPhalanxBlockId = PhalanxHelper::save(array('text' => $this->mNewUsername, 'exact' => 1, 'case' => 1, 'regex' => 0, 'timestamp' => wfTimestampNow(), 'expire' => null, 'author_id' => $this->mRequestorId, 'reason' => 'User rename process requested', 'lang' => null, 'type' => Phalanx::TYPE_USER), false);
if (!$this->mPhalanxBlockId) {
$this->addLog("Creation of the block failed.");
$this->addError(wfMsgForContent('userrenametool-error-cannot-create-block'));
wfProfileOut(__METHOD__);
return false;
} else {
$fakeUser->setOption('renameData', $fakeUser->getOption('renameData', '') . ';' . self::PHALANX_BLOCK_TAG . '=' . $this->mPhalanxBlockId);
$fakeUser->saveSettings();
$this->addLog("Block created with ID {$this->mPhalanxBlockId}.");
}
} else {
$this->addLog("Block with ID {$this->mPhalanxBlockId} already exists.");
}
$hookName = 'UserRename::AfterAccountRename';
$this->addLog("Broadcasting hook: {$hookName}");
wfRunHooks($hookName, array($this->mUserId, $this->mOldUsername, $this->mNewUsername));
//process global tables
$this->addLog("Initializing update of global shared DB's.");
$this->updateGlobal();
// create a new task for the Task Manager to handle all the global tables
$this->addLog("Setting up a task for processing global DB");
$task = new UserRenameGlobalTask();
$task->createTask(array('rename_user_id' => $this->mUserId, 'rename_old_name' => $this->mOldUsername, 'rename_new_name' => $this->mNewUsername, 'tasks' => self::$mStatsDefaults), TASK_QUEUED);
$this->addLog("Task created with ID " . $task->getID());
$this->addLog("Setting up a task for processing local DB's");
//create a new task for the Task Manager to handle all the local tables per each wiki
$task = new UserRenameLocalTask();
$task->createTask(array('city_ids' => $wikiIDs, 'requestor_id' => $this->mRequestorId, 'requestor_name' => $this->mRequestorName, 'rename_user_id' => $this->mUserId, 'rename_old_name' => $this->mOldUsername, 'rename_new_name' => $this->mNewUsername, 'rename_fake_user_id' => $this->mFakeUserId, 'phalanx_block_id' => $this->mPhalanxBlockId, 'reason' => $this->mReason, 'global_task_id' => $this->mGlobalTask->getID()), TASK_QUEUED);
$this->addLog("Task created with ID " . $task->getID());
$this->addLog("User rename global task end.");
wfProfileOut(__METHOD__);
return true;
}