Подсчет сообщений и удаление пользователей

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

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

Подсчет сообщений и удаление пользователей

Сообщение romeo_piter »

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

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

Как решить эту проблему?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Re: Подсчет сообщений и удаление пользователей

Сообщение rxu »

romeo_piter писал(а): Считаю это глубоко неправильным, а вызвано это явно любовью у разработчиков
romeo_piter, давайте отбросим психотерапевтические изыскания в отношении разработчиков и остановимся на том, что это просто баг.
Изображение
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 18 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 36 раз
Поблагодарили: 1526 раз

Re: Подсчет сообщений и удаление пользователей

Сообщение Sheer »

rxu писал(а): и остановимся на том, что это просто баг
... и напишем об этом в соответствующей теме Сообщаем об ошибках phpBB 3.1.x разработчикам
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
romeo_piter
phpBB 2.0.22
Сообщения: 1369
Стаж: 16 лет
Благодарил (а): 163 раза
Поблагодарили: 20 раз

Re: Подсчет сообщений и удаление пользователей

Сообщение romeo_piter »

То что это признано багом сразу - меня радует. Спасибо.
Есть ли какая-нить волшебная заплаточка, вот так прям сразу. А то аж свербит кого-нибудь поудалять.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 18 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 36 раз
Поблагодарили: 1526 раз

Re: Подсчет сообщений и удаление пользователей

Сообщение Sheer »

romeo_piter писал(а): вот так прям сразу
Будет слишком затратно. Нужно перебрать всех пользователей, и в цикле подсчитать все сообщения всех пользователей, чтобы затем отсеять тех, кто не оставил реально ни одного сообщения. Правильнее в БД в таблицу usersввести еще одно поле, куда бы записывалось реальное количество сообщений пользователя. Значит нужно переделывать функцию submit_post()
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
romeo_piter
phpBB 2.0.22
Сообщения: 1369
Стаж: 16 лет
Благодарил (а): 163 раза
Поблагодарили: 20 раз

Re: Подсчет сообщений и удаление пользователей

Сообщение romeo_piter »

У меня где-то лежит тобой писанный скрипт под 3.0
Он первой итерацией сохранял старые значения постов, записывая их в новую ячейку, затирал старую и записывал в нее пересчитанные значения (без учета счетчиков).
После этого юзеры удалялись. Второй итерацией новая ячейка возвращала значения в старую.
Но я не уверен в 2-х вещах,
применим ли скрипт 3.0 на 3.1 и найду ли я его после переезда.

Если он рабочий и найду - выложу в паблик если ты не против.

Отправлено спустя 36 секунд:
Только это неудобно. Удобнее бы было изменить механизм удаления
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Re: Подсчет сообщений и удаление пользователей

Сообщение rxu »

Sheer писал(а): Нужно перебрать всех пользователей, и в цикле подсчитать все сообщения всех пользователей, чтобы затем отсеять тех, кто не оставил реально ни одного сообщения
Можно и проще

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

SELECT COUNT() FROM phpbb_posts GROUP BY poster_id
Вопрос только в том, сколько займет выполнение на больших конференциях. Хотя, в принципе, индекс по poster_id имеется.
Можно сюда добавить выборку по таблице юзеров где user_posts = 0, для сокращения объема общей выборки.
Изображение
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 18 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 36 раз
Поблагодарили: 1526 раз

Re: Подсчет сообщений и удаление пользователей

Сообщение Sheer »

romeo_piter писал(а): тобой писанный скрипт
Э... не помню. Может быть и было такое. Но это неправильно, ибо был сделан под конкретную задачу.
romeo_piter писал(а): изменить механизм удаления
Это будет очень просто, если в новой версии движка
Sheer писал(а): в таблицу users ввести еще одно поле
Тогда еще при миграции нужно будет пересчитать счетчики. Тоже так ничего себе задачка, если пользователей тысячи, а сообщений десятки и более тысяч.

Отправлено спустя 26 секунд:
rxu писал(а): сколько займет выполнение на больших конференциях
Вот-вот, и я о том.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 18 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 36 раз
Поблагодарили: 1526 раз

Re: Подсчет сообщений и удаление пользователей

Сообщение Sheer »

rxu писал(а): Можно и проще

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

SELECT COUNT(p.post_id) AS user_posts, p.poster_id FROM phpbb_posts p GROUP BY p.poster_id
rxu писал(а): выборку по таблице юзеров где user_posts = 0,
Чет не соображу как. LEFT JOIN ?
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Re: Подсчет сообщений и удаление пользователей

Сообщение rxu »

Sheer писал(а): Чет не соображу как

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

SELECT COUNT(p.post_id) AS user_posts, p.poster_id FROM phpbb_posts p, phpbb_users u
WHERE u.user_posts = 0
AND u.user_id = p.poster_id
GROUP BY p.poster_id
Не знаю, что получится.
Изображение
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 18 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 36 раз
Поблагодарили: 1526 раз

Re: Подсчет сообщений и удаление пользователей

Сообщение Sheer »

Ага...

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

SELECT COUNT(p.post_id) AS user_posts, p.poster_id, u.user_id  FROM phpbb_posts p LEFT JOIN phpbb_users u ON p.poster_id=u.user_id WHERE u.user_posts = 0 GROUP BY p.poster_id
Отправлено спустя 1 минуту 8 секунд:
rxu писал(а): Не знаю, что получится.
тоже самое. Какой легче?
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Re: Подсчет сообщений и удаление пользователей

Сообщение rxu »

Думаю, без разницы.
Изображение

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