Gorets 3 Опубликовано: 16 января 2012 Рассказать Опубликовано: 16 января 2012 После массовой рассылки спамерских ПМ пользователям сайта пришлось вручную в таблице dle_pm удалять строки т.к. другого иного стандартного способа управления ПМ в DLE не существует. После удаления записей возникла необходимость пересчитать общее количество и количество непрочитанных ПМ в таблице пользователей dle_users Предлагаю вниманию один из возможных вариантов решения данной задачи. Достаточно выполнить один запрос к базе данных: update `dle_users` u left join ( select usr.user_id, usr.name, CASE WHEN ISNULL(pm.kvo) THEN 0 ELSE pm.kvo END as pm_all , CASE WHEN ISNULL(pm_unread.kvo) THEN 0 ELSE pm_unread.kvo END as pm_unread from `dle_users` usr left join ( select `user`, count(`user`) as kvo from dle_pm p where p.folder='inbox' group by p.`user`) pm on usr.`user_id` = pm.`user` left join ( select `user`, count(`user`) as kvo from dle_pm p2 where p2.folder='inbox'and p2.pm_read='no' group by p2.`user`) pm_unread on usr.`user_id` = pm_unread.`user` ) pm_select on pm_select.user_id = u.`user_id` set u.`pm_all` = pm_select.pm_all, u.`pm_unread` = pm_select.pm_unread код приведен для стандартного префикса таблиц 'dle_' Тестировалось на DLE 9.4, но быстрее всего будет актуально для всех версий скрипта за последние пару лет. Цитата Ссылка на сообщение Поделиться на других сайтах
alexmurphy 45 Опубликовано: 16 января 2012 Рассказать Опубликовано: 16 января 2012 После массовой рассылки спамерских ПМ пользователям сайта пришлось вручную в таблице dle_pm удалять строки т.к. другого иного стандартного способа управления ПМ в DLE не существует. Мастер оптимизации -> 4. Очистка персональных сообщений пользователей Цитата Ссылка на сообщение Поделиться на других сайтах
Gorets 3 Опубликовано: 17 января 2012 Рассказать Опубликовано: 17 января 2012 Автор Мастер оптимизации -> 4. Очистка персональных сообщений пользователей Вы можете очистить все персональные сообщения ваших пользователей А не сильно ли кардинально? В базе полно нормальных сообщений! Цитата Ссылка на сообщение Поделиться на других сайтах
sergey_479 3 Опубликовано: 19 января 2012 Рассказать Опубликовано: 19 января 2012 В мастере оптимизации есть пересчёт статистики, если не ошибаюсь он произведёт обновление кол-ва ПМ. Цитата Ссылка на сообщение Поделиться на других сайтах
Gorets 3 Опубликовано: 19 января 2012 Рассказать Опубликовано: 19 января 2012 Автор В мастере оптимизации есть пересчёт статистики, если не ошибаюсь он произведёт обновление кол-ва ПМ. ошибаетесь... я предложил этот вариант разработчику скрипта включить в ДЛЕ, но получил отказ. Я прекрасно понимаю, что это может понадобиться единицам, но всё же... Цитата Ссылка на сообщение Поделиться на других сайтах
a1ex 60 Опубликовано: 21 января 2012 Рассказать Опубликовано: 21 января 2012 запрос для извергов Цитата Ссылка на сообщение Поделиться на других сайтах
Gorets 3 Опубликовано: 24 января 2012 Рассказать Опубликовано: 24 января 2012 Автор запрос для извергов зато прекрасно справляется со свое задачей Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.