Подсчет сообщений и удаление пользователей
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение

-
- phpBB 2.0.22
- Сообщения: 1369
- Стаж: 16 лет
- Благодарил (а): 163 раза
- Поблагодарили: 20 раз
Подсчет сообщений и удаление пользователей
Одна из опций удаления пользователей - количество сообщений. Только есть одна беда, которая переехала из 2 в 3 и из 3 в 3.1 - в данном случае не учитываются разделы, где был отключен счетчик сообщений. Таким образом, удаляя пользователей у которых 0 сообщений мы удаляем тех, кто писал, например, в беседках, флудразделах или разделах где по каким-то причинам когда-то был отключен счетчик.
В моем случае самое страшное - это барахолка, там счетчик был отключен.
Считаю это глубоко неправильным, а вызвано это явно любовью у разработчиков объединения всего и вся в кучу (поиск и навигация в кучу, разнородные права в одно право и ты пы) - примеров много.
Счетчик при удалении пользователей должен учитывать все физически присутствующие сообщения, а не просто брать из базы значение количества постов.
Как решить эту проблему?
В моем случае самое страшное - это барахолка, там счетчик был отключен.
Считаю это глубоко неправильным, а вызвано это явно любовью у разработчиков объединения всего и вся в кучу (поиск и навигация в кучу, разнородные права в одно право и ты пы) - примеров много.
Счетчик при удалении пользователей должен учитывать все физически присутствующие сообщения, а не просто брать из базы значение количества постов.
Как решить эту проблему?
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: Подсчет сообщений и удаление пользователей
romeo_piter, давайте отбросим психотерапевтические изыскания в отношении разработчиков и остановимся на том, что это просто баг.
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: Подсчет сообщений и удаление пользователей
... и напишем об этом в соответствующей теме Сообщаем об ошибках phpBB 3.1.x разработчикам
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- phpBB 2.0.22
- Сообщения: 1369
- Стаж: 16 лет
- Благодарил (а): 163 раза
- Поблагодарили: 20 раз
Re: Подсчет сообщений и удаление пользователей
То что это признано багом сразу - меня радует. Спасибо.
Есть ли какая-нить волшебная заплаточка, вот так прям сразу. А то аж свербит кого-нибудь поудалять.
Есть ли какая-нить волшебная заплаточка, вот так прям сразу. А то аж свербит кого-нибудь поудалять.
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: Подсчет сообщений и удаление пользователей
Будет слишком затратно. Нужно перебрать всех пользователей, и в цикле подсчитать все сообщения всех пользователей, чтобы затем отсеять тех, кто не оставил реально ни одного сообщения. Правильнее в БД в таблицу
users
ввести еще одно поле, куда бы записывалось реальное количество сообщений пользователя. Значит нужно переделывать функцию submit_post()
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- phpBB 2.0.22
- Сообщения: 1369
- Стаж: 16 лет
- Благодарил (а): 163 раза
- Поблагодарили: 20 раз
Re: Подсчет сообщений и удаление пользователей
У меня где-то лежит тобой писанный скрипт под 3.0
Он первой итерацией сохранял старые значения постов, записывая их в новую ячейку, затирал старую и записывал в нее пересчитанные значения (без учета счетчиков).
После этого юзеры удалялись. Второй итерацией новая ячейка возвращала значения в старую.
Но я не уверен в 2-х вещах,
применим ли скрипт 3.0 на 3.1 и найду ли я его после переезда.
Если он рабочий и найду - выложу в паблик если ты не против.
Отправлено спустя 36 секунд:
Только это неудобно. Удобнее бы было изменить механизм удаления
Он первой итерацией сохранял старые значения постов, записывая их в новую ячейку, затирал старую и записывал в нее пересчитанные значения (без учета счетчиков).
После этого юзеры удалялись. Второй итерацией новая ячейка возвращала значения в старую.
Но я не уверен в 2-х вещах,
применим ли скрипт 3.0 на 3.1 и найду ли я его после переезда.
Если он рабочий и найду - выложу в паблик если ты не против.
Отправлено спустя 36 секунд:
Только это неудобно. Удобнее бы было изменить механизм удаления
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: Подсчет сообщений и удаление пользователей
Можно и проще
Код: Выделить всё
SELECT COUNT() FROM phpbb_posts GROUP BY poster_id
poster_id
имеется.Можно сюда добавить выборку по таблице юзеров где user_posts = 0, для сокращения объема общей выборки.
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: Подсчет сообщений и удаление пользователей
Э... не помню. Может быть и было такое. Но это неправильно, ибо был сделан под конкретную задачу.
Это будет очень просто, если в новой версии движка
Тогда еще при миграции нужно будет пересчитать счетчики. Тоже так ничего себе задачка, если пользователей тысячи, а сообщений десятки и более тысяч.
Отправлено спустя 26 секунд:
Вот-вот, и я о том.
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: Подсчет сообщений и удаление пользователей
Код: Выделить всё
SELECT COUNT(p.post_id) AS user_posts, p.poster_id FROM phpbb_posts p GROUP BY p.poster_id
Чет не соображу как.
LEFT JOIN
?Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: Подсчет сообщений и удаление пользователей
Код: Выделить всё
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
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: Подсчет сообщений и удаление пользователей
Ага...
Отправлено спустя 1 минуту 8 секунд:
Код: Выделить всё
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
тоже самое. Какой легче?
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.