Назад | Перейти на главную страницу

Как предотвратить удаление MediaWiki нестандартных подписей?

Недавно мы обновили MediaWiki с 1.13.2 до 1.15.4. Одним из побочных эффектов является автоматическое удаление подписей людей. То есть подпись, добавленная в МОИ ПРЕДПОЧТЕНИЯ, изменяется в соответствии с полем Настоящее имя через несколько минут.

Мы устанавливаем $ wgCleanSignatures = ложь в 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>

Это должно вызвать проблемы с использованием внешней аутентификации. Когда пользователь входит в систему, он обновляет свои атрибуты, и я предполагаю, что во время этого процесса во время обновления он также обновляет подпись пользователей, при необходимости модифицируйте ваш код.

Ниже вы можете увидеть, как он обновляется.

Также проверьте здесь, есть некоторый чат о том, что если вы используете автоматический вход, похоже, что подпись обновлена ​​с именем пользователя, вам нужно изменить код.

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();
    }
}