如何防止 MediaWiki 删除非默认签名?

如何防止 MediaWiki 删除非默认签名?

我们最近将 MediaWiki 从 1.13.2 升级到了 1.15.4。其中一个副作用是人们的签名会被自动删除。也就是说,在“我的偏好”下添加的签名会在几分钟后更改为与真实姓名字段相匹配。

我们设置$wgCleanSignatures = false在 LocalSettings.php 中但这不会改变行为。

有人知道如何预防这种情况吗?

更新:添加更多细节可能会有所帮助。

在我的偏好中我写道:

[[User:MyName|<span style="color:lightseagreen">My Name</span>]] ([[User talk:MyName|<span style="color:lightseagreen">Talk</span>]])

因此,我在讨论页面上的签名是:

--[[User:MyName|<span style="color:lightseagreen">My Name</span>]] ([[User talk:MyName|<span style="color:lightseagreen">Talk</span>]]) <time date stamp>

一小时后,偏好设置将恢复为:

My Name

我的签名变成:

--My Name <time date stamp>

答案1

这应该是使用外部身份验证的问题。当用户登录时,它会更新他们的属性,我猜在升级过程中它也会更新用户签名,请根据需要修改您的代码。

您可以从下面看到它是如何更新的。

还请检查此处,如果您使用自动登录,则有一些聊天记录,看起来签名已使用用户名更新,您需要修改代码。

http://www.mediawiki.org/wiki/Extension_talk:LDAP_Authentication/Archive_2#Signature_with_Real_Name

在 LdapAuthentication.php 中

/**
 * When a user logs in, update user with information from LDAP.
 *
 * @param User $user
 * @access public
 * TODO: fix the setExternalID stuff
 */
function updateUser( &$user ) {
    global $wgLDAPRetrievePrefs;
    global $wgLDAPUseLDAPGroups;
    global $wgLDAPUniqueBlockLogin, $wgLDAPUniqueRenameUser;

    $this->printDebug( "Entering updateUser", NONSENSITIVE );

    if ($this->authFailed) {
        $this->printDebug( "User didn't successfully authenticate, exiting.", NONSENSITIVE );
        return;
    }

    $saveSettings = false;

    //If we aren't pulling preferences, we don't want to accidentally
    //overwrite anything.
    if ( isset( $wgLDAPRetrievePrefs[$_SESSION['wsDomain']] ) && $wgLDAPRetrievePrefs[$_SESSION['wsDomain']] ) {
        $this->printDebug( "Setting user preferences.", NONSENSITIVE );

        if ( '' != $this->lang ) {
            $user->setOption( 'language', $this->lang );
        }
        if ( '' != $this->nickname ) {
            $user->setOption( 'nickname', $this->nickname );
        }
        if ( '' != $this->realname ) {
            $user->setRealName( $this->realname );
        }
        if ( '' != $this->email ) {
            $user->setEmail( $this->email );
        }
        if ( ( isset( $wgLDAPUniqueBlockLogin[$_SESSION['wsDomain']] ) && $wgLDAPUniqueBlockLogin[$_SESSION['wsDomain']] )
            || ( isset( $wgLDAPUniqueRenameUser[$_SESSION['wsDomain']] ) && $wgLDAPUniqueRenameUser[$_SESSION['wsDomain']] ) ) {

            if ( '' != $this->externalid ) {
                $user->setExternalID( $this->externalid );
            }
        }

        $saveSettings = true;
    }

    if ( isset( $wgLDAPUseLDAPGroups[$_SESSION['wsDomain']] ) && $wgLDAPUseLDAPGroups[$_SESSION['wsDomain']] ) {
        $this->printDebug( "Setting user groups.", NONSENSITIVE );
        $this->setGroups( $user );

        $saveSettings = true;
    }

    if ( $saveSettings ) {
        $this->printDebug( "Saving user settings.", NONSENSITIVE );
        $user->saveSettings();
    }
}

相关内容