test: auto add log

这个提交包含在:
WaitSpring 2024-04-17 15:31:50 +08:00
父节点 4fa899f055
当前提交 f176c65fba
共有 1 个文件被更改,包括 55 次插入2 次删除

查看文件

@ -11,6 +11,7 @@ use MediaWiki\User\UserGroupManager;
use MediaWiki\Hook\SpecialContributionsBeforeMainOutputHook;
use MediaWiki\MediaWikiServices;
use MediaWiki\SpecialPage;
use ManualLogEntry;
use RequestContext;
use Config;
use Title;
@ -26,7 +27,7 @@ class PermissionsHook implements
/** @var config */
private $config;
/** @var config */
/** @var userGroupManager */
private $userGroupManager;
/**
@ -41,7 +42,7 @@ class PermissionsHook implements
Config $config,
UserGroupManager $userGroupManager,
UserOptionsLookup $userOptionsLookup,
UserRegistrationLookup $userRegistrationLookup,
UserRegistrationLookup $userRegistrationLookup
) {
$this->permissionManager = $permissionManager;
$this->config = $config;
@ -117,6 +118,48 @@ class PermissionsHook implements
}
}
/**
* @param UserIdentity $user
* @param $added_group
*
* @return void
*/
private function addGroupLog($user, $added_group)
{
$oldGroups = $this->permissionManager->getAllPermissions($user); // previous groups
$newGroups = array_merge($oldGroups, [$added_group]); // all groups
$logEntry = new ManualLogEntry('rights', 'autopromote');
$logEntry->setPerformer($user);
$logEntry->setTarget($user->getUserPage());
$logEntry->setParameters([
'4::oldgroups' => $oldGroups,
'5::newgroups' => $newGroups,
]);
$logid = $logEntry->insert();
$logEntry->publish($logid);
}
/**
* @param UserIdentity $user
* @param $removed_group
*
* @return void
*/
private function removeGroupLog($user, $removed_group)
{
$oldGroups = $this->permissionManager->getAllPermissions($user); // previous groups
$newGroups = array_diff($oldGroups, [$removed_group]); // all groups
$logEntry = new ManualLogEntry('rights', 'autopromote');
$logEntry->setPerformer($user);
$logEntry->setTarget($user->getUserPage());
$logEntry->setParameters([
'4::oldgroups' => $oldGroups,
'5::newgroups' => $newGroups,
]);
$logid = $logEntry->insert();
$logEntry->publish($logid);
}
/**
* @param Title $title
* @param User $user
@ -157,11 +200,14 @@ class PermissionsHook implements
in_array($this->config->get('RNRSExemptGroup'), $this->permissionManager->getUserPermissions($user))
) {
$this->userGroupManager->removeUserFromGroup($user, $this->config->get('RNRSExemptGroup'));
$this->removeGroupLog($user, $this->config->get('RNRSExemptGroup'));
if (
$rnrsverified_enabled_confirmed_group &&
!in_array($this->config->get('RNRSConfirmedGroup'), $this->permissionManager->getUserPermissions($user))
) {
$this->userGroupManager->addUserToGroup($user, $this->config->get('RNRSConfirmedGroup'));
$this->addGroupLog($user, $this->config->get('RNRSConfirmedGroup'));
}
}
return true;
@ -172,6 +218,7 @@ class PermissionsHook implements
!in_array($this->config->get('RNRSConfirmedGroup'), $this->permissionManager->getUserPermissions($user))
) {
$this->userGroupManager->addUserToGroup($user, $this->config->get('RNRSConfirmedGroup'));
$this->addGroupLog($user, $this->config->get('RNRSConfirmedGroup'));
}
return true;
} else if (
@ -183,6 +230,7 @@ class PermissionsHook implements
in_array($this->config->get('RNRSConfirmedGroup'), $this->permissionManager->getUserPermissions($user))
) {
$this->userGroupManager->removeUserFromGroup($user, $this->config->get('RNRSConfirmedGroup'));
$this->removeGroupLog($user, $this->config->get('RNRSExemptGroup'));
}
return true;
} else if (
@ -229,11 +277,14 @@ class PermissionsHook implements
in_array($this->config->get('RNRSExemptGroup'), $this->permissionManager->getUserPermissions($user))
) {
$this->userGroupManager->removeUserFromGroup($user, $this->config->get('RNRSExemptGroup'));
$this->removeGroupLog($user, $this->config->get('RNRSExemptGroup'));
if (
$rnrsverified_enabled_confirmed_group &&
!in_array($this->config->get('RNRSConfirmedGroup'), $this->permissionManager->getUserPermissions($user))
) {
$this->userGroupManager->addUserToGroup($user, $this->config->get('RNRSConfirmedGroup'));
$this->addGroupLog($user, $this->config->get('RNRSConfirmedGroup'));
}
}
} else if (($rnrsverified_mode1 || $rnrsverified_mode2) && !$rnrsverified_mode3) {
@ -243,6 +294,7 @@ class PermissionsHook implements
!in_array($this->config->get('RNRSConfirmedGroup'), $this->permissionManager->getUserPermissions($user))
) {
$this->userGroupManager->addUserToGroup($user, $this->config->get('RNRSConfirmedGroup'));
$this->addGroupLog($user, $this->config->get('RNRSConfirmedGroup'));
}
} else if (
!($rnrsverified_mode1 || $rnrsverified_mode2) && $rnrsverified_mode3
@ -253,6 +305,7 @@ class PermissionsHook implements
in_array($this->config->get('RNRSConfirmedGroup'), $this->permissionManager->getUserPermissions($user))
) {
$this->userGroupManager->removeUserFromGroup($user, $this->config->get('RNRSConfirmedGroup'));
$this->removeGroupLog($user, $this->config->get('RNRSExemptGroup'));
}
}