У меня такая проблема наблюдается. Если делаю тему важной, она становится видна во всех форумах и у неё пропадает форум родитель. Я (пользователь с правами основатель) могу добавить тему в закладки и потом в личном разделе, в закладках, её лицезреть. Обычный пользователь если добавляет такую тему в закладки он её в личном разделе, в закладках, лицезреть не может, при этом в таблице bookmarks запись делается и если зайдет в тему, ему уже предлагают снять закладку.
Порылся в файлах, нашел проблему. Хочу сообщить как решил и узнать ваше мнение, могут ли быть конфликты в дальнейшем.
В файле ucp_main.php
Запрос в котором наблюдаю проблему:
Код: Выделить всё
$result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
Еще точнее проблема в условии для этого запроса, которое берется из этой строки
Код: Выделить всё
AND ' . $db->sql_in_set('f.forum_id', $forbidden_forum_ary, true, true),
Для меня, админа, доступ есть везде и поэтому условие возвращает
"1=1"
Для обычного пользователя накладывается ограничение, например такое:
Код: Выделить всё
f.forum_id NOT IN (52, 8, 46, 58, 124, 140, 142, 148)
Сам запрос выглядит так, выложу нужную часть:
Код: Выделить всё
SELECT t . * , f.forum_name, b.topic_id AS b_topic_id, tt.mark_time, ft.mark_time AS forum_mark_time, tp.topic_posted
FROM (phpbb_bookmarks b)
LEFT JOIN phpbb_topics t ON ( b.topic_id = t.topic_id )
LEFT JOIN phpbb_forums f ON ( t.forum_id = f.forum_id )
...
WHERE b.user_id =492
AND f.forum_id NOT
IN ( 52, 8, 46, 58, 124, 140, 142, 148 )
Весь смысл в том, что после такого запроса для строки с "Важной" темой элемент f.forum_id не существует вообще и условие
f.forum_id NOT IN ( 52, 8, 46, 58, 124, 140, 142, 148 ) не проходит и в итоге в личном разделе, в закладках, тема не отображается.
Решил проблему так. Условие делаю такое "
t.forum_id NOT IN ( 52, 8, 46, 58, 124, 140, 142, 148 )" Этот элемент всегда существует в данном запросе и для "важной" темы равен 0, в остальных случаях равен f.forum_id и в итоге "важная" тема в закладках у пользователя появляется.
Вообщем зачем я нагородил такой огород, на 99% уверен, что сделал правильно. Но все же хотел уточнить, что вы думаете. правильно?
upd. форум 3.0.8