public function processRequest()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $question = PonderQuestionQuery::loadSingle($user, $this->questionID);
     if (!$question) {
         return new Aphront404Response();
     }
     $question->attachRelated();
     $question->attachVotes($user->getPHID());
     $object_phids = array($user->getPHID(), $question->getAuthorPHID());
     $answers = $question->getAnswers();
     $comments = $question->getComments();
     foreach ($comments as $comment) {
         $object_phids[] = $comment->getAuthorPHID();
     }
     foreach ($answers as $answer) {
         $object_phids[] = $answer->getAuthorPHID();
         $comments = $answer->getComments();
         foreach ($comments as $comment) {
             $object_phids[] = $comment->getAuthorPHID();
         }
     }
     $subscribers = PhabricatorSubscribersQuery::loadSubscribersForPHID($question->getPHID());
     $object_phids = array_merge($object_phids, $subscribers);
     $handles = $this->loadViewerHandles($object_phids);
     $this->loadHandles($object_phids);
     $detail_panel = new PonderQuestionDetailView();
     $detail_panel->setQuestion($question)->setUser($user)->setHandles($handles);
     $responses_panel = new PonderAnswerListView();
     $responses_panel->setQuestion($question)->setHandles($handles)->setUser($user)->setAnswers($answers);
     $answer_add_panel = new PonderAddAnswerView();
     $answer_add_panel->setQuestion($question)->setUser($user)->setActionURI("/ponder/answer/add/");
     $header = id(new PhabricatorHeaderView())->setObjectName('Q' . $question->getID())->setHeader($question->getTitle());
     $actions = $this->buildActionListView($question);
     $properties = $this->buildPropertyListView($question, $subscribers);
     $nav = $this->buildSideNavView($question);
     $nav->appendChild(array($header, $actions, $properties, $detail_panel, $responses_panel, $answer_add_panel));
     $nav->selectFilter(null);
     return $this->buildApplicationPage($nav, array('device' => true, 'title' => 'Q' . $question->getID() . ' ' . $question->getTitle()));
 }
 public function processRequest()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $question = PonderQuestionQuery::loadSingle($user, $this->questionID);
     if (!$question) {
         return new Aphront404Response();
     }
     $question->attachRelated($user->getPHID());
     $answers = $question->getAnswers();
     $object_phids = array($user->getPHID(), $question->getAuthorPHID());
     foreach ($answers as $answer) {
         $object_phids[] = $answer->getAuthorPHID();
     }
     $handles = id(new PhabricatorObjectHandleData($object_phids))->loadHandles();
     $detail_panel = new PonderQuestionDetailView();
     $detail_panel->setQuestion($question)->setUser($user)->setHandles($handles);
     $responses_panel = new PonderAnswerListView();
     $responses_panel->setQuestion($question)->setHandles($handles)->setUser($user)->setAnswers($answers);
     $answer_add_panel = new PonderAddAnswerView();
     $answer_add_panel->setQuestion($question)->setUser($user)->setActionURI("/ponder/answer/add/");
     return $this->buildStandardPageResponse(array($detail_panel, $responses_panel, $answer_add_panel), array('title' => 'Q' . $question->getID() . ' ' . $question->getTitle()));
 }