Конечно, заголовок — шутка, но доля истины в нём есть.
Речь о Логинах, которые в 1.9 спокойно могли полностью состоять цифр, а в 1.10 сие пресекается!!! Поэтому юзеры с такими логинами не могут попасть в свой профиль и ещё бог знает куда.
Данная тема для тех, кто обновился до 1.10 но не хочет терять своих пользователей, которые не ведая о грядущих переменах, беспечно сделали себе числовой логин!!
Для любознательных: Пользователи с числовыми никами не могут попасть в свой профиль из-за функции getUser, которая в 1.10 стала умной и по тому, какая информация ей передана, числовая или текстовая, сама определяет, как ей искать пользователя, по id или по login
Именно поэтому ей нельзя передавать цифровой логин — она "подумает", что это id пользователя и вернёт что попало!
Забавность ситуации в том, что на всём сайте эта функция используется всего ДВАЖДЫ. Причём, один раз с id и один раз с login.
ПРАКТИЧЕСКАЯ ЧАСТЬ:
Чтобы все пользователи могли попадать в свой профиль:
в /components/users/frontend.php
УДАЛЯЕМ стр. 321
if(is_numeric($login)) { cmsCore::error404(); }
кому жалко — комментим.
Далее, стр. 323
$usr = $model->getUser($login);
ЗАМЕНИТЬ НА
$id_user = $inDB->get_field('cms_users', "login='{$login}'", 'id');
$usr = $model->getUser($id_user);
Суть замены проста: по логину юзера, получить его id и с этим id обратиться к функции getUser
ТЕПЕРЬ НЕ РАССЛАБЛЯТЬСЯ! Есть ещё одна, такая же хитрая функция — getShortUserData
И если вы не хотите, чтобы пользователи словили еррор 404 в других неожиданных местах, придётся сделать ещё несколько подобных замен:
в /components/comments/frontend.php стр. 50
в /components/forum/frontend.php стр. 1189
в /components/board/frontend.php стр. 147
строку $user = cmsUser::getShortUserData($login); ЗАМЕНИТЬ НА:
$id_user = $inDB->get_field('cms_users', "login='{$login}'", 'id');
$user = cmsUser::getShortUserData($id_user);
ДАЛЕЕ
в /components/users/photos.php стр. 120
и в том же файле
/components/users/photos.php стр. 521
строку $usr = cmsUser::getShortUserData($login); ЗАМЕНИТЬ НА:
$id_user = $inDB->get_field('cms_users', "login='{$login}'", 'id');
$usr = cmsUser::getShortUserData($id_user);
(обращаю внимание: выше была переменная $user а тут $usr)
И ПОСЛЕДНИЙ МОМЕНТ!!
в /components/registration/frontend.php стр. 53
используется e-mail — $usr = cmsUser::getShortUserData($email);
поэтому данную строчку нужно ЗАМЕНИТЬ НА
$id_user = $inDB->get_field('cms_users', "email='{$email}'", 'id');
$usr = cmsUser::getShortUserData($id_user);
Речь о Логинах, которые в 1.9 спокойно могли полностью состоять цифр, а в 1.10 сие пресекается!!! Поэтому юзеры с такими логинами не могут попасть в свой профиль и ещё бог знает куда.
Данная тема для тех, кто обновился до 1.10 но не хочет терять своих пользователей, которые не ведая о грядущих переменах, беспечно сделали себе числовой логин!!
Для любознательных: Пользователи с числовыми никами не могут попасть в свой профиль из-за функции getUser, которая в 1.10 стала умной и по тому, какая информация ей передана, числовая или текстовая, сама определяет, как ей искать пользователя, по id или по login
Именно поэтому ей нельзя передавать цифровой логин — она "подумает", что это id пользователя и вернёт что попало!
Забавность ситуации в том, что на всём сайте эта функция используется всего ДВАЖДЫ. Причём, один раз с id и один раз с login.
ПРАКТИЧЕСКАЯ ЧАСТЬ:
Чтобы все пользователи могли попадать в свой профиль:
в /components/users/frontend.php
УДАЛЯЕМ стр. 321
if(is_numeric($login)) { cmsCore::error404(); }
кому жалко — комментим.
Далее, стр. 323
$usr = $model->getUser($login);
ЗАМЕНИТЬ НА
$id_user = $inDB->get_field('cms_users', "login='{$login}'", 'id');
$usr = $model->getUser($id_user);
Суть замены проста: по логину юзера, получить его id и с этим id обратиться к функции getUser
ТЕПЕРЬ НЕ РАССЛАБЛЯТЬСЯ! Есть ещё одна, такая же хитрая функция — getShortUserData
И если вы не хотите, чтобы пользователи словили еррор 404 в других неожиданных местах, придётся сделать ещё несколько подобных замен:
в /components/comments/frontend.php стр. 50
в /components/forum/frontend.php стр. 1189
в /components/board/frontend.php стр. 147
строку $user = cmsUser::getShortUserData($login); ЗАМЕНИТЬ НА:
$id_user = $inDB->get_field('cms_users', "login='{$login}'", 'id');
$user = cmsUser::getShortUserData($id_user);
ДАЛЕЕ
в /components/users/photos.php стр. 120
и в том же файле
/components/users/photos.php стр. 521
строку $usr = cmsUser::getShortUserData($login); ЗАМЕНИТЬ НА:
$id_user = $inDB->get_field('cms_users', "login='{$login}'", 'id');
$usr = cmsUser::getShortUserData($id_user);
(обращаю внимание: выше была переменная $user а тут $usr)
И ПОСЛЕДНИЙ МОМЕНТ!!
в /components/registration/frontend.php стр. 53
используется e-mail — $usr = cmsUser::getShortUserData($email);
поэтому данную строчку нужно ЗАМЕНИТЬ НА
$id_user = $inDB->get_field('cms_users', "email='{$email}'", 'id');
$usr = cmsUser::getShortUserData($id_user);
Реклама #
Сергей Петрович 11 лет назад #
Все эти манипуляции позволят старым пользователям с цифровыми логинами спокойно жить на обновлённом сайте, НО новым пользователям зарегаться с цифровым логином не получится. Если кому-то надо и это убрать - обращайтесь.
Сергей Петрович 11 лет назад #
На двух сайтах пришлось вернуть форму отправки комментов, которая открываются, собственно, как тут, а не во всплывающем окне посередине экрана. Причина - пользователям нужно иметь возможность смотреть то, что они комментят. Ещё кому-нибудь актуально??
Александр I 11 лет назад #
Zau4man 11 лет назад #
Dost 11 лет назад #
reload 11 лет назад #
Александр 11 лет назад #
На двух сайтах пришлось вернуть форму отправки комментов, которая открываются, собственно, как тут, а не во всплывающем окне посередине экрана. Причина - пользователям нужно иметь возможность смотреть то, что они комментят. Ещё кому-нибудь актуально??
Актуально все к чему привыкли на 1.9
Моим тоже многим не понравилось вылетающее окно
Def 11 лет назад #
Dost 11 лет назад #
eoleg 11 лет назад #
Zau4man 11 лет назад #
Пойду тестировать.
lokanaft 11 лет назад #
Fuze 11 лет назад #
- добавляется еще один запрос к базе на каждый метод
- много редактировать и соответственно поддерживать потом
думаю тут можно обойтись запросом к базе, например так (к числовым логинам добавится префикс prefix )
picaboo 11 лет назад #
Сергей Петрович 11 лет назад #
Сергей Петрович 11 лет назад #
Но с Вами вступать в полемику не буду.
Fuze 11 лет назад #
покритиковал немного, обосновал, предложил свое решение - в чем недовольство?
StaryiSV 11 лет назад #
Нил™ 11 лет назад #