Как восстановить удалённого пользователя с сообщениями?

Автор RBW, 04 ноября 2010, 17:51:35

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

RBW

SMF 2.0 RC1, около 550 тыс. сообщений и 900 пользователей. 
Был из админки удалён пользователь со всеми сообщениями и аттачментами.
Пользователь писал в самые разные разделы форума.
Как правильнее поступить, чтобы восстановить его полностью на место?
За месяц до удаления был сделан полный бэкап базы.
Для удаляемых постов имеется раздел "Корзина", все посты этого пользователя попали туда.  Ник автора сохранился, статус стал "Гость".
Смотрел навикатом: в текущей базе данных соотв. все посты с его ником теперь содержат id_board раздела "Корзина", но id_topic сохранились.
В таблице members этот пользователь, ес-но, отсутствует.

Рассматриваю такой вариант (при помощи NaviCat или MyAdmin):
1) создать пользователя в админке форума в текущей базе
2) скопировать этого пользователя в таблицу members текущей базы из бэкапной базы
3) из таблицы messages бэкапной базы в текущую базу перенести колонку id_board всех записей с ником этого пользователя. Таким образом все посты должны разместиться по прежним разделам и темам (?).
4) пересчитать статистику форума в админке

Правильно ли я думаю? Наверняка чего-то не учёл..

Макар

Ты не учел что у тебя двойка :) идешь в админку , обслуживание . Там есть меню присвоить сообщения гостя или пользователя другому пользователю. Вобщем создаешь заново пользователя, через админку - управление пользователями . Потом присваиваешь ему сообщения. Потом восстанавливаешь их из мусорки .
Если Вы здесь недавно, не обольщайтесь тоном некоторых дискуссий.
Все чаще слова - юзай поиск, приобретают смысл - иди в ж..........  Приобретение смысла автоматизированно - Ответы на любой вопрос по SMF
Не пишите несколько сообщений подряд - тут вам не Twitter  >:( в остальных ситуациях мы не сильно зверствуем 2funny

RBW

Makar
Знаю эту функцию, юзал при слиянии аккаунтов :)
Но их же придётся по-одному восстанавливать. А там их полторы тысячи...  Ладно, посижу, галок нащёлкаю..
Но восстановленные сообщения все попадут туда, где были, правильно?

А со статистикой? Сам форум нормально пересчитает?
Раньше форум (движки 1.0x/1.1x) пересчитывал статистику не полностью. Например, при восстановлении удалённых постов, счётчики сообщений пользователей не прибавлялись. Я раньше ставил сторонний мод пересчёта статистики PostRecount от MaximKat - он пересчитывал статистику полностью. Интересно, пойдёт ли мод под 2.0..

Макар

А включить функции быстрого модерирования ячейками ? И сделать вывод в разделе по сто тем (временно) это всего около сотни кликов сделат прийдется или того меньше .
Если Вы здесь недавно, не обольщайтесь тоном некоторых дискуссий.
Все чаще слова - юзай поиск, приобретают смысл - иди в ж..........  Приобретение смысла автоматизированно - Ответы на любой вопрос по SMF
Не пишите несколько сообщений подряд - тут вам не Twitter  >:( в остальных ситуациях мы не сильно зверствуем 2funny

RBW

#4
Они и включены, и темы по максимуму выводятся.
Всё, я понял, сверху общая галка же есть.. :)


-- upd
Хм.. не тут-то было... Создал юзера, присвоил сообщения, пытаюсь восстанавливать посты - выскакивает сообщение:
The following messages could not be restored; the original topic may have been removed:
Re: название темы
You will need to move these manually.
...
Это что-то глобальное, вообще ни один пост не восстанавливается ни от одного юзера ..  :( Точнее в таблице постов эта ошибка, но если зайти в сами посты, некоторые можно восстановить.. 

--upd2
В общем, решил "с нуля" копировать в базе со старого бэкапа. Благо юзер со времени того бэкапа ничего не писал больше.
Копирую по-порядку, выискивая в таблицах записи с нужным id_member
Встретились они у меня пока в таблицах log_boards, log_mark_read, log_polls, log_topics, members...
А вот со следующей таблицей messages заминочка вышла.. Там сообщения как от искомого id_member, так и от id_member=0
И тут я вспомнил, что в корзине лежит куча сообщений от этого пользователя, которые восстанавливать не нужно (флуд и т.п.).
Как-бы выделить посты, которые были актуальны на момент удаления и восстановить только их, а не все подряд??  :o

RBW

В общем, юзера-то восстановил, и голосования, и статистику его, но... в его темах и в темах с его участием постилось много народу, все их сообщения оказались тоже удалены.. так что, скрепя сердце, решил откатиться на старый бэкап. Тем более что по политическим причинам форум несколько месяцев не функционирует.

В бэкапе оказалась битой таблица аттачментов (превед Navicat!)... Решил скопировать эту таблицу из последних дней работы форума в старую базу. Как я понимаю, в этой таблицы удалённые аттачменты никак не помечаются и записи не удаляются, если не провести в админке обслуживание аттачментов?