Очистка списка пользователей и счетчик сообщений

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Очистка списка пользователей и счетчик сообщений

Сообщение romeo_piter »

Столкнулся с интересным геморроем.

Есть форумы, в которых у пользователей отключен счетчик сообщений.
Дабы не накручивать нетематическую часть.

Сегодня хотел сделать очистку списка пользователей и обнаружил, что при выставлении количества сообщений =0 предлагается удалить пользователей, у которых физически есть сообщения.

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

На мой взгляд, это глубоко нелогично.
Так и задумано или это у меня какой-то баг?

Есть ли возможность его обойти, чтобы не удалять пользователей, у которых физически есть хоть одно сообщение?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Очистка списка пользователей и счетчик сообщений

Сообщение Sheer »

Хм...
Информация о количестве постов в списке берется из таблицы users, ну например запросом, причем одним

Код: Выделить всё

SELECT * FROM  phpbb_users WHERE  user_posts = 0
Для поиска реального количества нужно прошерстить всю таблицу, ну или по лимиту, и потом пробежаться по полученному списку и подсчитать количество сообщений пользователей из списка (в цикле)

Код: Выделить всё

SELECT COUNT(post_id) AS total FROM phpbb_posts WHERE poster_id = ид_юзера
Мильён запросов...
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Очистка списка пользователей и счетчик сообщений

Сообщение romeo_piter »

Да, это понятно.
Как я понимаю, это всё же не мой баг, а нелогичность движка, что непосчитанные сообщения считаются за 0?

Как мне тогда быть? Изменять настройки для каждого форума, делать пересчеты, потом удалять пользователей и после этого снова восстанавливать настройки счетчиков? ((

Добавлено спустя 10 минут 51 секунду:
Тогда сразу насущный вопрос, не поможете составить sql, чтобы включить счетчик для всех групп во всех разделах?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Очистка списка пользователей и счетчик сообщений

Сообщение Sheer »

Ну.... некоторая нелогичность имеет место быть. Стоило бы в таблице users ввести еще поле, куда заносилось бы реальное, а не отображаемое количество.
romeo_piter писал(а):снова восстанавливать настройки счетчиков?
В таком случае пользователь, у которого один засчитанный пост и один не учтенный, после восстановления будет иметь два учтенных. Понел...?
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Очистка списка пользователей и счетчик сообщений

Сообщение romeo_piter »

Sheer писал(а):В таком случае пользователь, у которого один засчитанный пост и один не учтенный, после восстановления будет иметь два учтенных. Понел...?
В правах написано, что:
Счётчик сообщений включён
Учтите, что данная установка эффективна только при создании новых сообщений.
Это означает, что пересчет не поможет?
Как в первом случае, т.е. включении счетчика, так и во втором ((((((

Идиотизм, блин.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Очистка списка пользователей и счетчик сообщений

Сообщение Sheer »

Вкратце так. Если счетчик включен, то при отправке сообщение значение в поле user_posts в таблице users будет увеличено на единицу. Если нет, значит нет. А при пересчете, откуда движку знать, что неделю назад ты включал счетчик, а через два часа снова включил.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Очистка списка пользователей и счетчик сообщений

Сообщение romeo_piter »

Sheer писал(а):А при пересчете, откуда движку знать, что неделю назад ты включал счетчик, а через два часа снова включил.
Ну по логике пересчет должен пересчитывать физические посты в зависимости от некоторых условий, в данном случае, в зависимости от переключателя в счетчике.

А так хрень получается, например, был у меня раздел относительно нетематический, в нем был отключен счетчик, раздел разросся и превратился в тематический.
А сообщения в нем получается не учесть, и если например пользователь постил только в этом разделе, то он легко сносится при установке 0.

Хорошо меня чуйка не подвела, как чувствовал подвох, удалил юзверей, проверил, а тут такое веселье. (((

Добавлено спустя 4 минуты 50 секунд:
Судя по поиску у нас и на офе я чуть ли не единственный считаю подобное поведение проблемой )))
Хотя это реально проблема, особенно если не знаешь об этой особенности, а потом хочешь удалить 5000 юзверей )))
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Очистка списка пользователей и счетчик сообщений

Сообщение romeo_piter »

Sheer писал(а):А при пересчете, откуда движку знать, что неделю назад ты включал счетчик, а через два часа снова включил.
У меня созрел вопрос, как происходит пересчет, если не по физическим сообщениям?
Если мы обнулим поле user_posts, а потом сделаем пересчет - как будет происходить пересчет?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Очистка списка пользователей и счетчик сообщений

Сообщение Sheer »

А... ну.... надо в коде посмотреть. Вероятно по форумам, где включен счетчик. А тогда твой вариант сработает. Но придется обнулять user_posts
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Очистка списка пользователей и счетчик сообщений

Сообщение romeo_piter »

Проверил.
Не работает оно так.

Изменил право, пересчитал всё что можно было на главной странице админки - та же фигня.

Что примечательно, по ссылке Найти сообщения пользователя сверху видно общее реальное число (результаты поиска).

Ну разве не хрень?

Добавлено спустя 9 минут 54 секунды:
Вот нашел интересную тему на эту тему, только понимания больше не стало.
Пересчёт количества сообщений
И никто нигде внятно не описал механизм с этими несчастными счетчиками
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Очистка списка пользователей и счетчик сообщений

Сообщение romeo_piter »

Нашел тему на офе, пишут, что пересчет не помогает и если в разделе был отключен счетчик, то посты помечаются каким-то волшебным образом и при пересчете всё равно не будут учтены.

Вопрос, где они помечаются?

Тема вот: https://www.phpbb.com/community/viewtop ... #p13096944

Добавлено спустя 6 минут 45 секунд:
Ееееееееееее!!
Товарищи, нашел, извините мою бурную реакцию.

Вот решение: https://www.phpbb.com/community/viewtop ... #p12957631

Добавлено спустя 1 минуту 18 секунд:
Помечать пост или нет находится в таблице сообщений, ячейка post_postcount = 0

Если 0 - при синхронизации постов пост не считается
Если 1 - пост считается

Добавлено спустя 2 минуты 27 секунд:
Продолжаем мысли вслух, в моей ситуации надо сначала все сообщения форума сделать физическими, те всем присвоить 1
Произвести пересчет, после этого очистить список пользователей.

И теперь снова появляется загвоздка, как после этого вернуть всё на круги своя? Т.е. присвоить взад нули, там где счетчик сообщений отключен?

Добавлено спустя 10 минут 30 секунд:
Вижу такой алгоритм.

1. Создаем дополнительное поле post_realpostcount
2. В него кладем текущие значения из post_postcount
3. Всем значениям post_postcount присваиваем 1
4. Делаем синхронизацию поств
5. Производим манипуляции по удалению пользователей (т.к. все посты учтены)
6. После этого возвращаем значения из post_realpostcount в post_postcount

Дело за скриптом )
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Очистка списка пользователей и счетчик сообщений

Сообщение romeo_piter »

Sheer сваял скрипт для данного случая, за что ему огромное спасибо.

Скрипт поможет тем, кто хочется заняться удалением мертвых душ и не бояться, что случайно удалятся пользователи, имеющие сообщения при нулевом счетчике.
recount.rar
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Вернуться в «Поддержка phpBB 3.0.х»