небольшое изменение к праву unlim - разгружаем анонсер.
1) создаём крон-задачку. делаем в includes/cron/jobs новый файл: update_unlim_cache.php с содержимым:
<?php
$sql = "
SELECT ug.user_id
FROM ". BB_GROUPS ." g
LEFT JOIN ". BB_USER_GROUP ." ug ON(g.group_id = ug.group_id AND ug.user_pending != 1)
WHERE g.group_single_user = 0
AND g.group_opt & 4 = 4
";
$user_ids = array();
$user_ids = DB()->fetch_rowset($sql, 'user_id');
$user_ids_csv = join(',', $user_ids);
CACHE('bb')->set('tr_unlim', $user_ids_csv);добавляем эту крон-задачу с 5-минутным интервалом:
INSERT INTO `bb_cron` (cron_active, cron_title, cron_script, schedule, run_day, run_time, run_order, run_interval, log_enabled, disable_board) VALUES(1, 'Update unlimited users', 'update_unlim_cache.php', 'interval', NULL, NULL, 255, '00:05:00', 0, 0);
2) в announce.php удаляем блок:
$sql = "
SELECT g.group_opt
FROM bb_user_group ug
LEFT JOIN bb_groups g ON(g.group_id = ug.group_id AND ug.user_pending != 1)
WHERE ug.user_id = $user_id
AND g.group_single_user = 0
";
$group_opt_ary = DB()->fetch_rowset($sql, 'group_opt');
$group_opt = 0;
foreach ($group_opt_ary as $group_opt_tmp)
{
$group_opt = $group_opt | $group_opt_tmp;
}
require_once(INC_DIR .'functions.php');
if (bf($group_opt, 'group_opt', 'unlim')) $is_unlim = true;вместо него пишем:
if ($cached_unlim_users = CACHE('bb')->get('tr_unlim'))
{
$cached_unlim_users_ary = explode(',', $cached_unlim_users);
foreach ($cached_unlim_users_ary as $unlim_user)
{
if ($unlim_user == $user_id) $is_unlim = true;
}
}