Страница 1 из 1

Синхронизация счетчика участников групп

Добавлено: 14.06.2018 17:34
Гриif
Адм.раздел > Пользователи и группы > Управление группами > Участники (какой-то из групп)
В счетчике показывает, скажем, 300 участников, но на деле их там, скажем, 100 только. При том страниц все равно будет 100500
/adm/index.php?i=acp_groups&icat=12&mode=manage&action=list&g=777&start=120
, но далее от тех 100 имеющихся юзеров будет пагинация на пустые страницы.

Не уверен связано ли, но тоже проблема:
В /memberlist.php?mode=
юзеру будет писать "Основная группа", например, "Новые пользователи", но его давно в ней нету.

Синхронизировать статистику
Синхронизировать счётчики сообщений
в адм. разделе делал не раз.

В консоле php bin/phpbbcli.php reparser:reparse тоже неоднократно, но это уже, наверн, другое - потому оффтоп.
но даже (stk подводит куда больше) через консоль не распарсивает все сообщения: есть вариант верный? случайно натыкаюсь на сообщения, где не обработало... сколько на всей конференции таких неизвестно. как сделать, чтоб оно отработало все?



Как уладить? :)

Re: Синхронизация счетчика участников групп

Добавлено: 14.06.2018 19:36
nissin
Гриif, есть подозрение, что удаляли пользователей нештатно (например SQL запросом).

Re: Синхронизация счетчика участников групп

Добавлено: 14.06.2018 20:47
Татьяна5
Гриif, что делали с форумом до возникновения проблемы?

Re: Синхронизация счетчика участников групп

Добавлено: 14.06.2018 20:53
Гриif
nissin, ...сперва хотел ответить твердо "нет" (не зря же в этой схеме через админку делал), но задумался... Может, до того и было такое (изначально как шашкой махал sql-запросами: не думал, что тут все так переплетено). Бэкапы все есть - так что не все потерянно, но в каком сплетении конкретно "заковырка" и как все решить с минимальными энергозатратами мне не понятно...

Татьяна5, тут и "проблема" - громкое слово: без понятия даже когда это возникло. Случайно заметил, а когда возникло - кто ж его знает...

Re: Синхронизация счетчика участников групп

Добавлено: 14.06.2018 20:55
Татьяна5
Гриif писал(а): 14.06.2018 20:53 изначально как шашкой махал sql-запросами
Если так, то сначала пройтись "аварийным комплексом" в STK, а если не поможет - разбирать структуру БД, подробно, и синхронизировать данные там уже вручную. Скорей всего, понадобится второй вариант

Отправлено спустя 51 секунду:
https://www.phpbbguru.net/database/tables/ - это от 3.0, но в основном то, что надо

Re: Синхронизация счетчика участников групп

Добавлено: 14.06.2018 21:26
nissin
Дело в том, что эти счётчики нигде не хранятся и подсчёт количества пользователей в группе идёт запросом к таблице phpbb_user_group:

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

				// Total number of group members (non-leaders)
				$sql = 'SELECT COUNT(user_id) AS total_members
					FROM ' . USER_GROUP_TABLE . "
					WHERE group_id = $group_id
						AND group_leader = 0";
				$result = $db->sql_query($sql);
				$total_members = (int) $db->sql_fetchfield('total_members');
				$db->sql_freeresult($result);
Если количество неверное, значит в этой таблице содержится неактуальная информация:

Re: Синхронизация счетчика участников групп

Добавлено: 15.06.2018 11:56
Гриif
В общем, предстоит много муторной работы... Спасибо за наводки.

Re: Синхронизация счетчика участников групп

Добавлено: 17.06.2018 18:11
Гриif
А помогите, плз, sql-запросом: если в таблице phpbb3_user_group user_id есть, а в phpbb3_users такого user_id нету, то удалить строку из phpbb3_user_group (таким образом очистятся хвосты: когда удалил юзеров из phpbb3_users, но записи о них остались в phpbb3_user_group)

Re: Синхронизация счетчика участников групп

Добавлено: 18.06.2018 9:40
Pazh
Гриif,

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

delete from phpbb3_user_group  where user_id not in (select user_id from phpbb3_users) 

Re: Синхронизация счетчика участников групп

Добавлено: 18.06.2018 10:26
Гриif
Pazh, спасибо большое! Похоже, все оказалось легче, чем думалось: этот запрос решил описанную проблему. Кроме части:
Не уверен связано ли, но тоже проблема:
В /memberlist.php?mode=
юзеру будет писать "Основная группа", например, "Новые пользователи", но его давно в ней нету.
но это и логично :)

Re: Синхронизация счетчика участников групп

Добавлено: 18.06.2018 10:39
Pazh
Гриif, Группа по-умолчанию хранится в таблице phpbb3_users поле group_id