ConfirmAccount扩展修复失败

时间:2018-03-21 22:36:23

标签: mediawiki

我尝试修复ConfirmAccount extension,但我的修复似乎不起作用。有什么建议吗?

详细信息:

“修剪旧请求不会经常触发,因此旧的拒绝请求可能会持续存在。” https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Known_issues

此行为可防止被拒绝的电子邮件再次请求帐户。管理员拒绝帐户请求后,相同的用户名/电子邮件无法提交其他请求。第二次尝试时出错:

  

用户名已在待处理的帐户请求中使用。

我们想要启用重新请求。要修复,我想在每次拒绝后强制修剪,以清除请求缓存。

目前看来修剪发生在 \ extensions \ ConfirmAccount \ frontend \ specialpages \ actions \ ConfirmAccount_body.php

文件中
# Every 30th view, prune old deleted items
if ( 0 == mt_rand( 0, 29 ) ) {
ConfirmAccount::runAutoMaintenance();
}

因此,函数runAutoMaintenance似乎是修剪功能。 runAutoMaintenance位于 \ ConfirmAccount \ backend \ ConfirmAccount.class.php

class ConfirmAccount {
/** * Move old stale requests to rejected list. Delete old rejected requests. */
public static function runAutoMaintenance() {
...

为了在每次拒绝操作后致电runAutoMaintenance,我认为对runAutoMaintenance的调用应放在功能rejectRequest中,位于文件 \ extensions \ ConfirmAccount \ business中\ AccountConfirmSubmission.php

具体来说,我认为它可以直接进入:

# Clear cache for notice of how many account requests there are
ConfirmAccount::clearAccountRequestCountCache();

也许在接受,保持和垃圾邮件操作之后也应该进行修剪。不确定。目前,在Reject之后修剪应该处理原始问题。

我尝试了上述修复程序,但它似乎无法正常工作。我很茫然。

有人可以帮助确定此修复无效的原因吗?

原始代码:

protected function rejectRequest( IContextSource $context ) {
....
# Clear cache for notice of how many account requests there are
ConfirmAccount::clearAccountRequestCountCache();
....

新代码:

protected function rejectRequest( IContextSource $context ) {
....
# Clear cache for notice of how many account requests there are
ConfirmAccount::clearAccountRequestCountCache();
# Prune
ConfirmAccount::runAutoMaintenance();
....

在第二次请求时,仍然会收到“用户名已在待处理的帐户请求中使用。”

1 个答案:

答案 0 :(得分:0)

看起来我解决了它。有两个步骤:

  • 将被拒绝的项目设置为立即过期(在 LocalSettings.php 中)
  • 修剪在请求操作开始时拒绝的项目(在 RequestAccount_body.php 中)

<强>详细信息:

LocalSettings.php 中,在需要声明之后,将Rejected-Age设置为0.这样可以确保在修剪操作中删除被拒绝的请求:

require_once "$IP/extensions/ConfirmAccount/ConfirmAccount.php";
$wgRejectedAccountMaxAge = 0;

将Prune代码添加到显示Request表单的函数中,在/ConfirmAccount/frontend/specialpages/actions/RequestAccount_body.php,function showForm。在函数中添加最后一个命令:

旧代码:

$out->addWikiMsg( 'requestaccount-footer' );
}

新代码:

$out->addWikiMsg( 'requestaccount-footer' );        
# PRUNE
ConfirmAccount::runAutoMaintenance();
}