Пользователь с самым большим количеством сообщений (около 10 000) неожиданно через админку удалил все свои сообщения. Казалось бы, ну и пусть, поплакали и разошлись, однако с этого момента на форуме начались жуткие баги:
1) ссылка «перейти к первому непрочитанному сообщению» промахивается, иногда на страницу и более. Я так понял, функция, рассчитывающая координаты этого сообщения, берет общее количество сообщения в теме, не учитывая удаленные, и таким образом промахивается;
2) темы, открытые этим пользователем и состоящие только из одного сообщения, всё еще висят в списке тем, но не открываются («Запрошенной темы не существует.»);
3) в темы, открытые этим пользователем и включающие чужие сообщения, писать нельзя («Сообщение не существует.»);
4) в темы, где последним отписавшимся был этот пользователь (о чем на странице списка тем все еще информируется, хотя самого сообщения в теме больше нету), писать нельзя («Сообщение не существует»);
средства «Синхронизировать статистику» и «Синхронизировать счётчики сообщений» в админке не помогли (по крайней мере в пунктах 2-4, для первого нужно время на проверку).
Поиск выдал эту тему: Re: Удаление всех сообщений одного пользователя
Опубликованные запросы ничего не изменили (оба «Удалено строк: 0.»).
Сейчас собираюсь делать откат базы, однако вполне логично предположить, что пользователь еще раз захочет удалить все свои сообщения (на что имеет право), и всё это вновь завертится в карусельке. В общем, вопрос: что было сделано не так при удалении сообщений/что надо сделать, чтобы исправить страшные последствия? Спасибо
phpBB: 3.0.8
MySQL(i) 5.0.90-log
моды:
first post on every page
popup layer on new pms
welcome PM on first login
склеивание подряд идущих сообщений
допил быстрого ответа (смайлики, ббкоды, быстрые цитаты, ник в ответ, отправка по ctrl+enter)
ббкод только для админа
быстрое редактирование
спойлеры bb2spoiler
множественное подтверждение одновременно
дополнительные поля профиля: контакт, твиттер, скайп
sitemap
upd: покопался в phpMyAdmin: в общем, встроенный удалятор всех сообщений пользователя или настолько суров и бескомпромиссен, что ограничивается чем-нибудь вроде "DELETE from phpbb_posts WHERE poster_id = жертва" + "UPDATE phpbb_users SET post_count = 0 where id = жертва", или вмешался сатана, ибо в таблице pphbb_topics и topic_last_poster_id, и topic_last_poster_name не изменялись и ссылаются на этого юзера, а topic_last_post_id на несуществующее сообщение...
Есть еще глупое предположение. Я не знаю, как устроена проверка прав на взаимодействие с базой данных, быть может, права на модификацию определенной таблицы выдается отдельно в зависимости от установленных на форуме прав удаляющего юзера? То есть, юзер тыкает "удалить все сообщения", форум смотрит, что он не администратор, а супермодератор с правом на управление пользователями и сообщениями, но, например, без каких-то других прав, и обрезает операцию удаления?
Баги после удаления всех сообщений пользователя
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
kefiijrw
- phpBB 1.0.0
- Сообщения: 5
- Стаж: 15 лет 9 месяцев
-
nissin
- phpBB 3.0.4
- Сообщения: 2229
- Стаж: 18 лет 9 месяцев
- Откуда: Астана
- Благодарил (а): 7 раз
- Поблагодарили: 344 раза
Re: Баги после удаления всех сообщений пользователя
Скорей всего при удалении такого большого количества сообщений скрипту не хватило времени для полной обработки, что привело к вышеуказанным глюкам. Попробуйте сделать синхронизацию форумов через администраторский раздел, если не поможет, то откатиться.

