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

+42
5.63K
Добрый день.

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

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

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. Запустить в браузере site.ru/jmigrator

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

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

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

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

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

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

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

Архив с компонентом — скачать
+3
SpaceSel SpaceSel 9 лет назад #
Второй мигратор. Дело движется. joke Глядишь, и полный выйдет, а там и мультиязычность для двойки. Эх, светлое будущее laugh
PS: Отличная работа. Самому уже не нужно, но думаю, люди оценят.
+1
Странник Странник 9 лет назад #
В полку утилит прибыло! Пора заводить в Универсальном каталоге (где пункт меню "Дополнения") подраздел "Утилиты"
0
Денис Васильевич Денис Васильевич 9 лет назад #
Вернее, в полку утилитчиков! laugh
+2
Pasha Pasha 9 лет назад #
Если есть желающие все это укомплектовывать и развивать могу скинуть "продвинутую" версию "мигратора" контента в котором присутствует выбор целевых каталогов и автоматический поиск и перенос используемых в статьях рисунков.
0
Князь Мышкин Князь Мышкин 9 лет назад #
Во!
Грядет то время, когда кто-то напишет в блог постинг "Вот, ребята. Я собрал в одну утилиту все миграторы, что были у нас и просто сделал кнопку "Перенести", пользуйтесь!"

Авторам различных миграторов большущее спасибо за труды!
+1
Денис Васильевич Денис Васильевич 9 лет назад #
Наверняка вас уже обругать хотели за длительное отсутствие joke А вы тут с подарочком ;)
0
Ris Ris 9 лет назад #
Увы, не заработало.
Закинул в базу таблицы, изменив префикс. Закинул мигратор на сайт. Всё великолепно запускается.

Спойлер
Но на нажатие кнопок нет никакой реакции.
Что я делаю не так?
Весь процесс происходит на денвере, на локальном компьютере.
0
SJen SJen 9 лет назад #
надо посмотреть ошибку после клика в фаербаге (вкладка с Сеть->XHR) - возможно php выдает какую-то ошибку. Но если сайт на денвере, то это сможете увидеть только вы..
0
Ris Ris 9 лет назад #
Установил фаерфокс. В нем почти все работает. Кроме переноса самих пользователей:

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

Спойлер
0
SJen SJen 9 лет назад #
Замечательно что переносится остальное.

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

Остается вариант добавить побольше логов в перенос пользователей и выяснить на чем спотыкается компонент. Если есть возможность выложить сайт в интернет (на поддомен какой-нибудь) - это бы упростило поиск ошибки.
0
Ris Ris 9 лет назад #
Сайт на поддомене есть. Вечером все подготовлю к тестовому переносу и отпишусь.

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

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

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

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

А можно и не допиливать. Один раз запустить лису ради такого дела - не напрягает.
+1
SJen SJen 9 лет назад #
благодарю за тест! Я закину версию с учетом корректировок.

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

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

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

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

А про мыло мне, кажется, два варианта есть:
1. оставить как есть, потому что у каждого действительно свои правила и скрипт проще чуток допиливать под себя, чем делать универсальным под все случаи жизни.
2. делать супер функциональный компонент для переноса пользователей (соответственно немного платный) - но я думаю это не вариант, это того не стоит. По временным затратам..
0
Ris Ris 9 лет назад #
Согласен.
Кому надо - сам поправит. Кто не может поправить - тому не надо.
+5
SJen SJen 9 лет назад #
Обновил архив
0
Kewa2008 Kewa2008 9 лет назад #
Решил попробовать перенести своих пользователей с 1,7 на 2,2.
Скачал, разархивировал в корень, открываю страницу http://site.ru/jmigrator, выдает ошибку 403. Открыл все доступы к этой папке и всем подпапкам\файлам, трясу своего админа на предмет серверных ограничений. Все безрезультатно, ошибка никуда не уходит. Бьюсь уже третий день. Мб кто подскажет в чем может быть проблема?
0
kirkr kirkr 8 лет назад #
Под новую версию не делал еще?
0
Ris Ris 8 лет назад #
А в чем отличие таблицы cms_users новой версии от старой?
0
volchoc volchoc 8 лет назад #
Спасибо. Все прошло отлично. После заметил такую непонятность - у админа все друзья на месте, но под моим аватаром(админ), где они показываются, в скобках (0). Зашел с учетки пользователя - там все норм.

Может кеш почистить? В двойке я не нашел как его почистить. А все тупо удалить из папки побоялся
0
DimaGrr DimaGrr 8 лет назад #
Такой же глюк, в профиле пишет Друзья (0) (хотя в ленте их 3). И ещё из 10 друзей перенеслось почему-то только 3...?
0
Станислав Григорьевич (Мозголом) Станислав Григорьевич (Мозголом) 6 лет назад #
Когда уже разработчики выпустят официальный, рабочий мигратор с первой ветки на вторую, просто кинули нас на первой ветки, при том что сейчас всё выпускается только для второй. Столько лет ждём, ждём а результата никакого! В ручную сайт переносить не реально, когда более 1000 статей и более 4000 блогов пользователей. Наболело уже сильно.
0
Igor-san Igor-san 4 года назад #
Новостей нет? Искал - не нашел, попробовал существующие способы - не получается.
0
Ris Ris 4 года назад #
Когда уже разработчики выпустят официальный, рабочий мигратор с первой ветки на вторую
Никогда. Такой мигратор нереален.
Легко сделать мигратор со свежеустановленного сайта на первой ветке на вторую ветку.
Если установлены какие-то дополнительные плагины и дополнения - миграция перестаёт быть простой.
И да, url не сохраняются при миграции.

Встречный вопрос: зачем нужно мигрировать сайт с первой ветки на вторую? Версия 1.10.7 вполне рабочая и много сайтов на ней работают до сих пор и не собираются никуда мигрировать.

Еще от автора

Обновление компонента "Мне нравится"
Приветствую. Закончил версию с исправлением ошибок и багов, всем пользователям обновление выслано на электронку.
Обновление компонента  "Каталог дополнений в админку"
Приветствую. Обновление самого популярного аддона из официального каталога дополнений.
Обновленный парсер Яндекс.Карт
Приветствую Изменения довольно значительны, поэтому имеет смысл оформить их отдельным постом.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.