Agora_Driver_SplitSql::_buildThreadsQuery PHP Метод

_buildThreadsQuery() приватный Метод

Build threads query.
private _buildThreadsQuery ( string $forum_owner = null, integer $thread_root, boolean $all_levels = false, string $sort_by = 'message_modifystamp', integer $sort_dir, boolean $message_view = false, string $from, string $count )
$forum_owner string Forum owner
$thread_root integer Message at which to start the thread. If null get all forum threads
$all_levels boolean Show all child levels or just one level.
$sort_by string The column by which to sort.
$sort_dir integer The direction by which to sort: 0 - ascending 1 - descending
$message_view boolean
$from string The thread to start listing at.
$count string The number of threads to return.
    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);
    }