public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); $this->feedOffset = $request->getInt('off'); $this->questionOffset = $request->getInt('qoff'); $this->answerOffset = $request->getInt('aoff'); $side_nav = new AphrontSideNavView(); foreach (self::$pages as $pagename => $pagetitle) { $class = ""; if ($pagename == $this->page) { $class = 'aphront-side-nav-selected'; } $linky = phutil_render_tag('a', array('href' => '/ponder/' . $pagename . '/', 'class' => $class), phutil_escape_html($pagetitle)); $side_nav->addNavItem($linky); } switch ($this->page) { case self::PAGE_FEED: $data = PonderQuestionQuery::loadHottest($user, $this->feedOffset, self::FEED_PAGE_SIZE + 1); $phids = array(); foreach ($data as $question) { $phids[] = $question->getAuthorPHID(); } $handles = id(new PhabricatorObjectHandleData($phids))->loadHandles(); $side_nav->appendChild(id(new PonderQuestionFeedView())->setUser($user)->setData($data)->setHandles($handles)->setOffset($this->feedOffset)->setPageSize(self::FEED_PAGE_SIZE)->setURI(new PhutilURI("/ponder/feed/"), "off")); break; case self::PAGE_PROFILE: $questions = PonderQuestionQuery::loadByAuthor($user, $user->getPHID(), $this->questionOffset, self::PROFILE_QUESTION_PAGE_SIZE + 1); $answers = PonderAnswerQuery::loadByAuthorWithQuestions($user, $user->getPHID(), $this->answerOffset, self::PROFILE_ANSWER_PAGE_SIZE + 1); $phids = array($user->getPHID()); $handles = id(new PhabricatorObjectHandleData($phids))->loadHandles(); $side_nav->appendChild(id(new PonderUserProfileView())->setUser($user)->setQuestions($questions)->setAnswers($answers)->setHandles($handles)->setQuestionOffset($this->questionOffset)->setAnswerOffset($this->answerOffset)->setPageSize(self::PROFILE_QUESTION_PAGE_SIZE)->setURI(new PhutilURI("/ponder/profile/"), "qoff", "aoff")); break; } return $this->buildStandardPageResponse($side_nav, array('title' => self::$pages[$this->page])); }