Тех. проблема, которая решается правкой перевода

Тех. проблема, которая решается правкой перевода

от Artem Andreev -
Количество ответов: 2
Изображение пользователя Эксперт по Moodle
Ни у кого не возникало следующе проблемы: не все пользователи могут подтвердить свою учетную запись. Получают письмо, переходят по ссылке, а им в отет - ошибка.

Истоки проблемы как оказалось лежат в том, что некоторые пользователи в логине используют русские символы. В этом случае строка подтверждения
http://www.cdp.tsure.ru/moodle/login/confirm.php?data=KnIypNG1kDuK9nJ/артем
некорректно обрабатывается и в bat и в IE и как подозреваю везде. Все, что до "артем", превращается в ссылку, а вот "артем" в ссылку не входит. Соответственно если по такой ссылке попытаться подтвердить учетную запись - в ответ получим "Ошибка"

Проблема решилась через редактирования перевода. В файле moodle.php emailconfirmation содержит следующий текст:
$string['emailconfirmation'] = 'Здравствуйте, $a->firstname.
Новая учетная запись была запрошена на сайте \'$a->sitename\', используя Ваш e-mail.
Чтобы подтвердить учетную запись, проследуйте по ссылке на web-адрес:
$a->link
С уважением администратор $a->admin';

Необходимо $a->link обрамить соответствующим тегом и получим:
$string['emailconfirmation'] = 'Здравствуйте, $a->firstname.
Новая учетная запись была запрошена на сайте \'$a->sitename\', используя Ваш e-mail.
Чтобы подтвердить учетную запись, проследуйте по ссылке на web-адрес:
<a href=\"$a->link\">$a->link</a>
С уважением администратор $a->admin';

В этом случае все обрабатывается корректно...
В ответ на Artem Andreev

Re: Тех. проблема, которая решается правкой перевода

от Artem Andreev -
Изображение пользователя Эксперт по Moodle
Так, да не так... Ссылка то теперь полная, но как переходы по этой ссылке обрабатывают разные почтовые программы, в том числе web-интерфейсы... В общем очень по-разному обрабатывают. И подтверждение по такой ссылке работает раз через десять... Может в tracker.moodle.org написать? Правда могут проигнорировать, отложив в долгий ящик... Голосование может помочь... А кто-нибудь вообще с этой проблемой сталкивался?
В ответ на Artem Andreev

Re: Тех. проблема, которая решается правкой перевода

от Artem Andreev -
Изображение пользователя Эксперт по Moodle
В общем первое решение оказалось дурацким и в переводе править ничего не надо... Надо в moodlelib.php в функции send_confirmation_email
в строке

$data->link = $CFG->wwwroot .'/login/confirm.php?data='. $user->secret .'/'. $user->username;

$user->username обработать функцией urlencode
Т.е. получим:
$data->link = $CFG->wwwroot .'/login/confirm.php?data='. $user->secret .'/'. urlencode($user->username);

Потестировал, вроде все нормально работает...