Код: Выделить всё
$sql = 'SELECT f.forum_id, f.forum_name, f.forum_topics_per_page, t.topic_id, t.topic_type, t.topic_last_post_time, t2.topic_id AS last_topic_id
FROM ' . TOPICS_TABLE . ' t
LEFT JOIN ' . FORUMS_TABLE . ' f ON t.forum_id = f.forum_id
LEFT JOIN (SELECT topic_id, forum_id FROM ' . TOPICS_TABLE . '
WHERE topic_approved = 1
' . $soft . '
ORDER BY CASE
WHEN topic_type = ' . POST_NORMAL . ' THEN 1
WHEN topic_type = ' . POST_STICKY . ' THEN 2
' . ((defined('POST_ARTICLE')) ? 'WHEN topic_type = ' . POST_ARTICLE . ' THEN 3' : '') . '
ELSE 4
END, topic_last_post_time) t2 ON t2.forum_id = f.forum_id
WHERE t.topic_approved = 1
' . (($excl) ? 'AND (t.topic_type = ' . POST_GLOBAL . ' OR ' . $db->sql_in_set('f.forum_id', $excl, true) . ')' : '') . '
' . $soft_t . '
GROUP BY t.topic_id
ORDER BY f.forum_id,
CASE
WHEN t.topic_type = ' . POST_ANNOUNCE . ' THEN 1
' . ((defined('POST_ARTICLE')) ? 'WHEN topic_type = ' . POST_ARTICLE . ' THEN 2' : '') . '
WHEN t.topic_type = ' . POST_STICKY . ' THEN 3
ELSE 4
END, t.topic_last_post_time DESC';А то, что не валидировали - это хорошо, поскольку почти сразу после отправки мода на валидацию я обнаружил, что на форумах с миллионами сообщений эта версия уводит сервер в глубокий даун, а читать и отвечать на бесконечное нытьё по поводу "установил мод и сервер лёг. памагите! памагите!!" я не хочу. Поэтому имейте в виду, что если у вас гигантский форум, то вам подойдёт только версия 2.0.2, т.к. алгоритм с "точным подсчётом времени модификации страниц" в 2.1.1 доказал свою полную несостоятельность, как я изначально и думал.

