我们最近将MediaWiki从1.13.2升级到1.15.4。 其中一个副作用是人的签名被自动删除。 也就是说,在MY PREFERENCES下添加的签名会在几分钟后更改为与真实姓名字段匹配。
我们在LocalSettings.php中设置$ wgCleanSignatures = false ,但是这不会改变行为。
有谁知道如何防止这个?
更新:这可能有助于添加更多的细节。
在我的偏好中,我写道:
[[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>
这应该是使用外部authentication的问题。 当用户login时更新他们的属性,我猜测在这个过程中升级过程中它也在更新用户签名,根据需要修改你的代码。
你可以从下面看到它的更新。
另外在这里检查,有一些聊天,如果你使用自动login它看起来像签名更新与用户名,你需要修改代码。
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(); } }