Мигратор для InstantCMS 1* -> 2.2.1. Пользователи и все связанные таблицы.

2583
Добрый день.

Написал мигратор пользователей и всех связанных с ними таблиц из первой ветки на вторую.

Что переносится:

1. Сами пользователи (никнейм, пароль и тд) - этот пункт встречался на форуме..
2. Аватары, город, статус, карма..
3. Внутренние сообщения
4. История изменения кармы
5. Друзья
6. Записи на стене



Делал для себя, сильно разукрашивать не стал - все сделано в формате компонента для 2*.
Нужно закинуть архив в корень сайта и развернуть.

Последовательность работы:

1. Закинуть в БД сайта таблицы из первой ветки:

cms_user_friends - таблица друзей
cms_user_karma - изменение кармы
cms_user_msg - сообщения
cms_user_wall - записи на стене
cms_user_profiles - аватары, город, статус и тд
cms_users - электронка, пароль и тд

Важно! Префикс таблиц должен отличаться от префикса в базе данных второй ветки.

Развернуть в корне сайта архив с компонентом

3. Запустить в браузере http://site.ru/jmigrator

Последовательно запустить миграцию каждого пункта. Если пользователей много - перенос последнего пункта будет занимать продолжительное время. Остальные пункты мигрируют быстро.

После миграции нужно копировать папку с аватарами в папку uploads в корне сайта - папка users лежит внутри images.

Супер важно!! Бэкапы обязательно делаем. Перед миграцией все таблицы очищаются (не удаляется только пользователь с id=1 из таблицы users).

Делал для себя, баги никто не отменял - найдете, пишите.

После всех действий:

1. появятся пользователи с аватарами, городами в профиле и статусами с хобби.
2. будет работать система сообщений с полным архивом сообщений
3. записи на стенах в профиле
4. друзья
5. история кармы

АРХИВ ОБНОВЛЕН 02.06.2015

Архив с компонентом - скачать
Полное погружение в аякс - слушаем музыку и гуляем по сайту одновременно (демо шаблона для 2.*) | Парсер Яндекс.Карт для InstantMaps (версия 1.3, обновление )
Теги: мигратор
Комментарии (30)
SpaceSel 29 мая 2015 в 16:55 +3
small user social cms
Второй мигратор. Дело движется. joke Глядишь, и полный выйдет, а там и мультиязычность для двойки. Эх, светлое будущее laugh
PS: Отличная работа. Самому уже не нужно, но думаю, люди оценят.
Кирилл Эдуардович (Странник) 29 мая 2015 в 17:19 0
small user social cms
В полку утилит прибыло! Пора заводить в Универсальном каталоге (где пункт меню "Дополнения") подраздел "Утилиты"
Денис Васильевич 30 мая 2015 в 13:33 0
small user social cms
Вернее, в полку утилитчиков! laugh
Pasha 29 мая 2015 в 17:50 +2
small user social cms
Если есть желающие все это укомплектовывать и развивать могу скинуть "продвинутую" версию "мигратора" контента в котором присутствует выбор целевых каталогов и автоматический поиск и перенос используемых в статьях рисунков.
Князь Мышкин 29 мая 2015 в 18:33 0
small user social cms
Во!
Грядет то время, когда кто-то напишет в блог постинг "Вот, ребята. Я собрал в одну утилиту все миграторы, что были у нас и просто сделал кнопку "Перенести", пользуйтесь!"

Авторам различных миграторов большущее спасибо за труды!
Денис Васильевич 30 мая 2015 в 13:32 +1
small user social cms
Наверняка вас уже обругать хотели за длительное отсутствие joke А вы тут с подарочком ;)
Ris 31 мая 2015 в 18:44 0
small user social cms
Увы, не заработало.
Закинул в базу таблицы, изменив префикс. Закинул мигратор на сайт. Всё великолепно запускается.

Спойлер
Но на нажатие кнопок нет никакой реакции.
Что я делаю не так?
Весь процесс происходит на денвере, на локальном компьютере.
SJen 31 мая 2015 в 19:09 0
no profile
надо посмотреть ошибку после клика в фаербаге (вкладка с Сеть->XHR) - возможно php выдает какую-то ошибку. Но если сайт на денвере, то это сможете увидеть только вы..
Ris 31 мая 2015 в 19:56 0
small user social cms
Установил фаерфокс. В нем почти все работает. Кроме переноса самих пользователей:

Спойлер
Лог из фаербага при попытке переноса юзеров:

Спойлер
SJen 1 июня 2015 в 06:09 0
no profile
Замечательно что переносится остальное.

По логу ошибки нет, то есть сервер все делает успешно (возвращает код ответа 200).
Хотел уже предложить попробовать решение с форума и потом увидел кто его автор laugh А ваше решение пользователей успешно переносит?

Остается вариант добавить побольше логов в перенос пользователей и выяснить на чем спотыкается компонент. Если есть возможность выложить сайт в интернет (на поддомен какой-нибудь) - это бы упростило поиск ошибки.
Ris 1 июня 2015 в 08:07 0
small user social cms
Сайт на поддомене есть. Вечером все подготовлю к тестовому переносу и отпишусь.

А старым мигратором, как ни странно, переносит.
Денис Васильевич 1 июня 2015 в 16:44 0
small user social cms
Ребят, дайте ссылки на утилиты для ICMS 2, в частности был ещё один мигратор. Хочу "утащить" в блог на сайт .
Pasha 1 июня 2015 в 19:07 0
small user social cms
SJen, вы javascript с php перепутали :)
Код PHP:
  1. function jmigrator_migrate(type, table1, table2 = '', table3 = ''){
SJen 1 июня 2015 в 19:14 0
no profile
Возможно, увлекся))
Но это не объясняет почему не работает один пункт из пяти.. Более того, почему у меня работают все пункты. Надо проверить на чистом движке еще раз
Pasha 1 июня 2015 в 19:39 0
small user social cms
Так потому и не работает, вы же вместо названий таблиц мусор передаете. Правда это благополучно кушает firefox, но ему доверять нельзя, он слишком гуманен.
SJen 1 июня 2015 в 19:51 0
no profile
Все-таки хелп подсказывает, что код корректный. Скорее проблема в серверной части.
Pasha 1 июня 2015 в 20:03 0
small user social cms
Не, он корректный только для лисы, остальные браузеры расценивают это как ошибку со всеми вытекающими.... И несмотря на уверения хелпа что это не так последний хром ошибается в том числе. Я на эти грабли уже когда-то наступал, пока не догадался в ишаке посмотреть smile
lokanaft 1 июня 2015 в 20:05 0
small user social cms
Там же вроде написано, что это экспериментальная возможность и работает не везде.
Fuze 1 июня 2015 в 20:41 +1
small user social cms
В функциях javascript нельзя устанавливать аргументам значения по умолчанию, как, например, в php.
Если параметр не передан при вызове, он считается равным undefined.
Можно проверить, равен ли аргумент undefined, и если да, то записать в него значение по умолчанию или же использовать оператор ||.

Код JAVASCRIPT:
  1. if (table2 === undefined) {
  2. table2 = '';
  3. }
  4.  
  5. table2 = table2 || '';
Ris 1 июня 2015 в 22:05 +1
small user social cms
Заработало из-под фаерфокса на реальном VDS.
Включил отладку, при нажатии кнопки сайт сразу ругнулся на неизвестный колумн p.signature_html

Удалил упоминание о нем из jmigrator\system\controllers\jmigrator\model.php - всё тут же заработало! dance

Причем повторяющиеся имейлы не пропустило, а дописало к ним "номер". То есть vasya@vasya.ru, vasya@vasya.ru1, vasya@vasya.ru2 и т.д.
Отличная работа! Немного допилить под хром и великолепный инструмент для переноса юзеров!

А можно и не допиливать. Один раз запустить лису ради такого дела - не напрягает.
SJen 2 июня 2015 в 04:53 +1
no profile
благодарю за тест! Я закину версию с учетом корректировок.

Про email да, забыл написать - скрипт старается записать всех юзеров. Сначала записываются пользователи, под которыми заходили позднее(сортировка по дате авторизации и регистрации).
Ris 2 июня 2015 в 22:09 0
small user social cms
А на денвере сразу не заработало. Вылетало в ошибку 30 секунд. Пришлось вставить в модель.пхп в самый верх:
Код PHP:
  1. <?php
Нумератор повторных мыл тоже пришлось переделать слегка в связи со спецификой порядков на нашем сайте.
Так исторически сложилось, что основным пользователем считается самый первый. Остальные его аккаунты "смиты" и не то чтобы запрещены, но слегка вторичны. smile

Поэтому все DESC в выборке заменил на ASC и переделал конкатенацию вот так:

Код PHP:
  1. $row['email']=($numemail*1111). ($row['email']);
Объясняю зачем:
С цифрами впереди мыла пользователей с повторным мылом легче искать. Можно просто отсортировать таблицу по мылу и все повторные всплывают вверх. smile
После этого им можно разослать письма на почты с просьбой сменить почтовый ящик.
SJen 3 июня 2015 в 05:09 0
no profile
А на денвере сразу не заработало. Вылетало в ошибку 30 секунд. Пришлось вставить в модель.пхп в самый верх:

Про время все верно - перенос пользователей самый ресурсозатратный (я у себя тоже время увеличивал), но я об этом пару слов в описании написал.

А про мыло мне, кажется, два варианта есть:
1. оставить как есть, потому что у каждого действительно свои правила и скрипт проще чуток допиливать под себя, чем делать универсальным под все случаи жизни.
2. делать супер функциональный компонент для переноса пользователей (соответственно немного платный) - но я думаю это не вариант, это того не стоит. По временным затратам..
Ris 3 июня 2015 в 09:45 0
small user social cms
Согласен.
Кому надо - сам поправит. Кто не может поправить - тому не надо.
SJen 2 июня 2015 в 06:06 +5
no profile
Обновил архив
Kewa2008 12 октября 2015 в 18:28 0
small user social cms
Решил попробовать перенести своих пользователей с 1,7 на 2,2.
Скачал, разархивировал в корень, открываю страницу http://site.ru/jmigrator, выдает ошибку 403. Открыл все доступы к этой папке и всем подпапкам\файлам, трясу своего админа на предмет серверных ограничений. Все безрезультатно, ошибка никуда не уходит. Бьюсь уже третий день. Мб кто подскажет в чем может быть проблема?
kirkr 20 мая 2016 в 07:18 0
small user social cms
Под новую версию не делал еще?
Ris 20 мая 2016 в 08:59 0
small user social cms
А в чем отличие таблицы cms_users новой версии от старой?
volchoc 5 июня 2016 в 17:51 0
small user social cms
Спасибо. Все прошло отлично. После заметил такую непонятность - у админа все друзья на месте, но под моим аватаром(админ), где они показываются, в скобках (0). Зашел с учетки пользователя - там все норм.

Может кеш почистить? В двойке я не нашел как его почистить. А все тупо удалить из папки побоялся
DimaGrr 16 ноября 2016 в 10:43 0
small user social cms
Такой же глюк, в профиле пишет Друзья (0) (хотя в ленте их 3). И ещё из 10 друзей перенеслось почему-то только 3...?