Пример #1
0
 protected function handle()
 {
     $session = $this->getSession();
     $thread_id = $this->threadId;
     $thread = ThreadModel::getThread($thread_id);
     if (!$thread) {
         $session->addFlash('error', '帖子不存在');
         return new RedirectResponse($this->generateUrl('admin_forum_thread_manage'));
     }
     $request = $this->getRequest();
     $page = $request->query->get('page');
     if (!$page) {
         $page = 1;
     }
     $size = 10;
     $posts_pager = PostModel::listForumPosts($page, $size, function (QueryBuilder $qb) use($thread) {
         /** @var ThreadModel $thread */
         $qb->andWhere($qb->expr()->eq('forum_id', ':forum_id'))->setParameter(':forum_id', $thread->forumId);
         $qb->andWhere($qb->expr()->eq('thread_id', ':thread_id'))->setParameter(':thread_id', $thread->threadId);
         $qb->addOrderBy('create_timestamp');
     });
     $data = $posts_pager->getData();
     foreach ($data as $key => $post) {
         if ($post['reply_post_id']) {
             $reply_post = PostModel::getPost($post['reply_post_id']);
             if ($reply_post) {
                 $data[$key]['reply_post'] = $reply_post->toArray();
             }
         }
     }
     $posts_pager->setData($data);
     return $this->render('thread/thread-view.html.twig', array('thread' => $thread, 'posts_pager' => $posts_pager));
 }
Пример #2
0
 public function __invoke($thread_id)
 {
     // 主题
     $thread = ThreadModel::getThread($thread_id);
     if (!$thread) {
         $session = $this->getSession();
         $session->addFlash('error', '帖子主题不存在');
         return new RedirectResponse($this->getRequest()->server->get('HTTP_REFERER'));
     }
     $forum = ForumModel::getForum($thread->forumId);
     if (!$forum) {
         $session = $this->getSession();
         $session->addFlash('error', '论坛版块不存在');
         return new RedirectResponse($this->getRequest()->server->get('HTTP_REFERER'));
     }
     // 增加浏览数
     $thread->views += 1;
     $thread = ThreadModel::saveThread($thread);
     $request = $this->getRequest();
     $page = $request->query->get('page');
     if (!$page) {
         $page = 1;
     }
     $size = 10;
     $posts_pager = PostModel::listForumPosts($page, $size, function (QueryBuilder $qb) use($thread) {
         /** @var ThreadModel $thread */
         $qb->andWhere($qb->expr()->eq('forum_id', ':forum_id'))->setParameter(':forum_id', $thread->forumId);
         $qb->andWhere($qb->expr()->eq('thread_id', ':thread_id'))->setParameter(':thread_id', $thread->threadId);
         $qb->addOrderBy('create_timestamp');
     });
     $data = $posts_pager->getData();
     foreach ($data as $key => $post) {
         if ($post['reply_post_id']) {
             $reply_post = PostModel::getPost($post['reply_post_id']);
             if ($reply_post) {
                 $data[$key]['reply_post'] = $reply_post->toArray();
             }
         }
     }
     $posts_pager->setData($data);
     return $this->render('thread/view.html.twig', array('forum' => $forum, 'thread' => $thread, 'posts_pager' => $posts_pager));
 }