обновление с 1.10.1 до 1.9 (логины)

904
Конечно, заголовок - шутка, но доля истины в нём есть.
Речь о Логинах, которые в 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);
просмотр фотографий пользователей от alexbabo + ajax | обновление с 1.10.1 до 1.9 (комментарии)
Комментарии (19)
Реклама
cms
Ленивый 23 января 2013 в 23:57 +2
small user social cms
В догонку:
Все эти манипуляции позволят старым пользователям с цифровыми логинами спокойно жить на обновлённом сайте, НО новым пользователям зарегаться с цифровым логином не получится. Если кому-то надо и это убрать - обращайтесь.
Ленивый 24 января 2013 в 00:07 +3
small user social cms
Продолжая тему обновления с 1.10 до 1.9 -
На двух сайтах пришлось вернуть форму отправки комментов, которая открываются, собственно, как тут, а не во всплывающем окне посередине экрана. Причина - пользователям нужно иметь возможность смотреть то, что они комментят. Ещё кому-нибудь актуально??
Александр I 24 января 2013 в 00:36 0
small user social cms
Да, актуально.
Zau4man 24 января 2013 в 08:42 0
small user social cms
Очень актуально.
Dost 24 января 2013 в 00:16 +2
small user social cms
А поздно...Мои пользователи с одного сайта разбежались и причем, как оказалось, на них весь сайт держался. Но лучше поздно, чем никогда)) Плюсы и спасибо!!!
reload 24 января 2013 в 00:28 0
small user social cms
Dost, никогда не поздно) Вы им рассылочку сделайте с извинениями, и вернуться) возможно) попробовать стоит!)
Александр 24 января 2013 в 00:32 0
small user social cms
Продолжая тему обновления с 1.10 до 1.9 -
На двух сайтах пришлось вернуть форму отправки комментов, которая открываются, собственно, как тут, а не во всплывающем окне посередине экрана. Причина - пользователям нужно иметь возможность смотреть то, что они комментят. Ещё кому-нибудь актуально??

Актуально все к чему привыкли на 1.9
Моим тоже многим не понравилось вылетающее окно
yury 24 января 2013 в 01:55 0
no avatar
а можешь выложить хак?
Dost 24 января 2013 в 00:49 0
small user social cms
Я их пол года развлекал, пока они наконец стали сами между собой общаться. Одной рассылки мало. Нужно им что то еще предложить. Неее, поезд ушел и я перегорел. Отдал под Sape уже и забыл.
eoleg 24 января 2013 в 01:28 0
small user social cms
+
Zau4man 24 января 2013 в 08:42 0
small user social cms
Премного благодарен.
Пойду тестировать.
lokanaft 24 января 2013 в 09:44 0
small user social cms
Эммм, а не судьба юзерам было логины просто переделать и если на них ссылаются где любо, то редирект по единому префиксу?
Fuze 24 января 2013 в 10:14 0
small user social cms
ИМХО - решение не гуд,

- добавляется еще один запрос к базе на каждый метод
- много редактировать и соответственно поддерживать потом

lokanaft:
а не судьба юзерам было логины просто переделать
единственное правильное решение.

думаю тут можно обойтись запросом к базе, например так (к числовым логинам добавится префикс prefix )
Код SQL:
  1. UPDATE cms_users SET `login` = CONCAT('prefix', login) WHERE `login` REGEXP '^([0-9]+)$';
не забываем про бекапы
picaboo 24 января 2013 в 10:19 +2
small user social cms
надо было подобное в мигратор кинуть, матюгался бы народ, но ошибок бы не возникало зато.
Ленивый 24 января 2013 в 11:29 0
small user social cms
Тот факт, что народ бы матюкался - это есть главная ошибка! ИМХО
Ленивый 24 января 2013 в 11:24 0
small user social cms
Fuze:
ИМХО - решение не гуд,
Я бы отнёс эту фразу кое к чему другому!!! )))

Но с Вами вступать в полемику не буду.
Fuze 24 января 2013 в 12:19 0
small user social cms
Я бы отнёс эту фразу кое к чему другому!!! )))
опять на свой личный счет приняли? Зачем?)

покритиковал немного, обосновал, предложил свое решение - в чем недовольство?

Но с Вами вступать в полемику не буду.
зачем вообще писали комментарий тогда.
StaryiSV 24 января 2013 в 15:11 +1
small user social cms
для тех, кто регистрировался через вконтакте, с номером телефона вместо логина, не плохое решение. Ленивый , от меня плюс.
Нил™ 1 февраля 2013 в 01:24 +1
small user social cms
блин я смотрю переход к 1.10 это не обновление, это больше похоже на переход к другой цмс(( при чем не факт что более лучшую. Увы, но пока только такое впечатление по тому что вижу. если только вопросы безопасности...