All pastes #283749 Raw Edit

Stuff

public text v1 · immutable
#283749 ·published 2006-12-18 16:02 UTC
rendered paste body
// 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, ';
			$approvalsql2 = 'LEFT JOIN '.$db->prefix.'posts AS p ON t.id=p.topic_id ';
			$approvalsql3 = 'HAVING p.approved=1 ';
			$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, ';
		$approvalsql2 = 'LEFT JOIN '.$db->prefix.'posts AS pb ON t.id=pb.topic_id ';
		$approvalsql3 = 'HAVING pb.approved=1 ';
		$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;

	}
}