private function _buildThreadsQuery($forum_owner = null, $thread_root = 0, $all_levels = false, $sort_by = 'message_modifystamp', $sort_dir = 0, $message_view = false, $from = 0, $count = 0)
{
$params = array();
$where = '';
$sql = 'SELECT m.message_id, m.forum_id, m.message_thread, m.parents, m.message_author, ' . 'm.message_subject, m.message_timestamp, m.locked, m.view_count, ' . 'm.message_seq, m.attachments';
if ($message_view) {
$sql .= ', m.body';
}
if ($thread_root == 0) {
$sql .= ', m.last_message_id, m.last_message_author, m.message_modifystamp AS last_message_timestamp';
}
/* Get messages form a specific owner */
if ($forum_owner !== null) {
$sql .= ', f.forum_name FROM ' . $this->_threads_table . ' m, ' . $this->_forums_table . ' f';
$where .= ' AND f.author = ? AND f.forum_id = m.forum_id ';
$params[] = $forum_owner;
} else {
$sql .= ' FROM ' . $this->_threads_table . ' m';
/* Get messages form a specific forum */
if ($this->_forum_id) {
$where .= ' AND m.forum_id = ?';
$params[] = $this->_forum_id;
}
}
/* Get all levels? */
if (!$all_levels) {
$where .= ' AND m.parents = ?';
$params[] = '';
}
/* Get only approved messages. */
if ($this->_forum['forum_moderated']) {
$where .= ' AND m.approved = ?';
$params[] = 1;
}
if ($thread_root) {
$where .= ' AND (message_id = ? OR message_thread = ?)';
$params[] = (int) $thread_root;
$params[] = (int) $thread_root;
}
/* Sort by result column. */
$sql .= ' WHERE ' . substr($where, 5) . ' ORDER BY ' . $sort_by . ' ' . ($sort_dir ? 'DESC' : 'ASC');
return array($sql, $params);
}