コード例 #1
0
ファイル: ActionMy.php プロジェクト: aeshion/ZeroPHP
 public function __invoke()
 {
     // 检查登录
     $session = $this->getSession();
     if (empty($session['user'])) {
         $session->addFlash('error', '请先登录');
         return new RedirectResponse($this->generateUrl('user_login'));
     }
     $user = UserModel::getUser($session['user']['id']);
     $request = $this->getRequest();
     $type = $request->query->get('type');
     if (!$type) {
         $type = 'post';
     }
     $page = $request->query->get('page');
     if (!$page) {
         $page = 1;
     }
     $size = 10;
     $pager = null;
     if ($type == 'post') {
         $pager = ThreadModel::listForumThreads($page, $size, function (QueryBuilder $qb) use($user) {
             /** @var UserModel $user */
             $qb->andWhere($qb->expr()->eq('author_id', ':author_id'))->setParameter(':author_id', $user->id);
         });
         $data = $pager->getData();
         foreach ($data as $key => $value) {
             $forum_id = $value['forum_id'];
             $forum = ForumModel::getForum($forum_id);
             $value['forum'] = $forum;
             $data[$key] = $value;
         }
         $pager->setData($data);
     } elseif ($type == 'reply') {
         $data = PostModel::getPostsWhere(function (QueryBuilder $qb) use($user) {
             /** @var UserModel $user */
             $qb->andWhere($qb->expr()->eq('author_id', ':author_id'))->setParameter(':author_id', $user->id);
         });
         $thread_ids = array();
         foreach ($data as $key => $value) {
             $thread_ids[] = $value['thread_id'];
         }
         $thread_ids = array_unique($thread_ids);
         $pager = ThreadModel::listForumThreads($page, $size, function (QueryBuilder $qb) use($thread_ids) {
             /** @var UserModel $user */
             $qb->andWhere($qb->expr()->in('thread_id', $thread_ids));
         });
         $data = $pager->getData();
         foreach ($data as $key => $value) {
             $forum_id = $value['forum_id'];
             $forum = ForumModel::getForum($forum_id);
             $value['forum'] = $forum;
             $data[$key] = $value;
         }
         $pager->setData($data);
     }
     $pager->setQuery(array('type' => $type));
     return $this->render('thread/my.html.twig', array('pager' => $pager));
 }