// Fetch list of topics to display on this page if ($pun_user['is_guest'] || $pun_config['o_show_dot'] == '0') { // Without "has posted" indication if ($cur_forum['approval'] == 1) { if ($is_admmod) { $approvalsql1 = 'p.approved AS has_unapproved, '; $approvalsql2 = 'LEFT JOIN '.$db->prefix.'posts AS p ON t.id=p.topic_id AND p.approved=0 '; $approvalsql3 = ''; $approvalsql4 = ''; } else { $approvalsql1 = 'p.approved, p.poster_id, '; $approvalsql2 = 'LEFT JOIN '.$db->prefix.'posts AS p ON t.id=p.topic_id '; $approvalsql3 = 'HAVING p.approved=1 '.(($pun_user['is_guest']) ? '' : 'OR p.poster_id='.$pun_user['id'].' '); $approvalsql4 = ',p.id '; } switch ($db_type) { case 'mysql': case 'mysqli': $sql = 'SELECT '.$approvalsql1.'t.id, t.subject, t.poster, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_views, t.num_replies, t.closed, t.sticky, t.moved_to FROM '.$db->prefix.'topics AS t '.$approvalsql2.'WHERE t.forum_id='.$id.' GROUP BY t.id '.$approvalsql3.'ORDER BY sticky DESC, '.(($cur_forum['sort_by'] == '1') ? 'posted' : 'last_post').' DESC '.$approvalsql4.'LIMIT '.$start_from.', '.$pun_user['disp_topics']; break; case 'sqlite': $sql = 'SELECT '.$approvalsql1.'t.id, t.subject, t.poster, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_views, t.num_replies, t.closed, t.sticky, t.moved_to FROM '.$db->prefix.'topics AS t '.$approvalsql2.'WHERE t.id IN(SELECT id FROM '.$db->prefix.'topics WHERE forum_id='.$id.' ORDER BY sticky DESC, '.(($cur_forum['sort_by'] == '1') ? 'posted' : 'last_post').' DESC '.$approvalsql4.'LIMIT '.$start_from.', '.$pun_user['disp_topics'].') GROUP BY t.id '.$approvalsql3.'ORDER BY t.sticky DESC, t.last_post DESC'; break; default: $sql = 'SELECT '.$approvalsql1.'t.id, t.subject, t.poster, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_views, t.num_replies, t.closed, t.sticky, t.moved_to FROM '.$db->prefix.'topics AS t '.$approvalsql2.'WHERE t.forum_id='.$id.' GROUP BY t.id, t.subject, t.poster, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_views, t.num_replies, t.closed, t.sticky, t.moved_to, p.poster_id '.$approvalsql3.'ORDER BY sticky DESC, '.(($cur_forum['sort_by'] == '1') ? 'posted' : 'last_post').' DESC '.$approvalsql4.'LIMIT '.$start_from.', '.$pun_user['disp_topics']; break; } } else { $sql = 'SELECT id, poster, subject, posted, last_post, last_post_id, last_poster, num_views, num_replies, closed, sticky, moved_to FROM '.$db->prefix.'topics WHERE forum_id='.$id.' ORDER BY sticky DESC, '.(($cur_forum['sort_by'] == '1') ? 'posted' : 'last_post').' DESC LIMIT '.$start_from.', '.$pun_user['disp_topics']; } } else { // With "has posted" indication // Check if we need to highlight or filter unapproved posts if ($is_admmod && $cur_forum['approval'] == 1) { $approvalsql1 = 'pb.approved AS has_unapproved, '; $approvalsql2 = 'LEFT JOIN '.$db->prefix.'posts AS pb ON t.id=pb.topic_id AND pb.approved=0 '; $approvalsql3 = ''; $approvalsql4 = ''; } elseif ($cur_forum['approval'] == 1) { $approvalsql1 = 'pb.approved, pb.poster_id, '; $approvalsql2 = 'LEFT JOIN '.$db->prefix.'posts AS pb ON t.id=pb.topic_id '; $approvalsql3 = 'HAVING pb.approved=1 OR pb.poster_id='.$pun_user['id'].' '; $approvalsql4 = ',pb.id '; } else { $approvalsql1 = ''; $approvalsql2 = ''; $approvalsql3 = ''; $approvalsql4 = ''; } switch ($db_type) { case 'mysql': case 'mysqli': $sql = 'SELECT p.poster_id AS has_posted, '.$approvalsql1.'t.id, t.subject, t.poster, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_views, t.num_replies, t.closed, t.sticky, t.moved_to FROM '.$db->prefix.'topics AS t LEFT JOIN '.$db->prefix.'posts AS p ON t.id=p.topic_id AND p.poster_id='.$pun_user['id'].' '.$approvalsql2.'WHERE t.forum_id='.$id.' GROUP BY t.id '.$approvalsql3.'ORDER BY sticky DESC, '.(($cur_forum['sort_by'] == '1') ? 'posted' : 'last_post').' DESC '.$approvalsql4.'LIMIT '.$start_from.', '.$pun_user['disp_topics']; break; case 'sqlite': $sql = 'SELECT p.poster_id AS has_posted, '.$approvalsql1.'t.id, t.subject, t.poster, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_views, t.num_replies, t.closed, t.sticky, t.moved_to FROM '.$db->prefix.'topics AS t LEFT JOIN '.$db->prefix.'posts AS p ON t.id=p.topic_id AND p.poster_id='.$pun_user['id'].' '.$approvalsql2.'WHERE t.id IN(SELECT id FROM '.$db->prefix.'topics WHERE forum_id='.$id.' ORDER BY sticky DESC, '.(($cur_forum['sort_by'] == '1') ? 'posted' : 'last_post').' DESC '.$approvalsql4.'LIMIT '.$start_from.', '.$pun_user['disp_topics'].') GROUP BY t.id '.$approvalsql3.'ORDER BY t.sticky DESC, t.last_post DESC'; break; default: $sql = 'SELECT p.poster_id AS has_posted, '.$approvalsql1.'t.id, t.subject, t.poster, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_views, t.num_replies, t.closed, t.sticky, t.moved_to FROM '.$db->prefix.'topics AS t LEFT JOIN '.$db->prefix.'posts AS p ON t.id=p.topic_id AND p.poster_id='.$pun_user['id'].' '.$approvalsql2.'WHERE t.forum_id='.$id.' GROUP BY t.id, t.subject, t.poster, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_views, t.num_replies, t.closed, t.sticky, t.moved_to, p.poster_id '.$approvalsql3.'ORDER BY sticky DESC, '.(($cur_forum['sort_by'] == '1') ? 'posted' : 'last_post').' DESC '.$approvalsql4.'LIMIT '.$start_from.', '.$pun_user['disp_topics']; break; } }