/** * Список тем */ public function forum($id) { if (!($forum = Forum::find_by_id($id))) { App::abort('default', 'Данного раздела не существует!'); } $total = Topic::count(['conditions' => ['forum_id = ?', $id]]); $page = App::paginate(Setting::get('topics_per_page'), $total); $topics = Topic::all(['conditions' => ['forum_id = ?', $id], 'offset' => $page['offset'], 'limit' => $page['limit'], 'order' => 'updated_at desc', 'include' => ['forum', 'post_count', 'post_last' => ['user']]]); /* $topics = Topic::all([ 'select' => 't.*, p.user_id post_user, p.created_at post_created', 'from' => 'topics as t', 'conditions' => ['t.forum_id = ?', $id], 'joins' => ['LEFT JOIN ( SELECT topic_id, MAX(created_at) AS max FROM posts GROUP BY topic_id ) AS latest ON t.id = latest.topic_id LEFT JOIN posts p ON p.created_at = latest.max AND p.topic_id = latest.topic_id'], 'offset' => $page['offset'], 'limit' => $page['limit'], 'order' => 't.updated_at desc', 'include' => [ 'forum', 'post_count', ],*/ $crumbs = ['/forum' => 'Форум', $forum->title]; if ($forum->parent_id) { $crumbs = ['/forum' => 'Форум', '/forum/' . $forum->parent_id => $forum->parent()->title, $forum->title]; } App::view('forums.forum', compact('forum', 'topics', 'page', 'crumbs')); }
/** * Количество сообщений в форума * @return integer сообщений в форуме */ function forumCount() { return Topic::count() . '/' . Post::count(); }
/** * A request to unsubscribe from a topic has been made. * * @param \Ratchet\ConnectionInterface $conn * @param string|Topic $topic The topic to unsubscribe from */ public function onUnSubscribe(ConnectionInterface $conn, $topic) { $this->console->info("onUnSubscribe: topic: {$topic} {$topic->count()}"); }