public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); $view = $request->getURIData('view'); if (!$view) { $view = 'all'; } $pager = new PHUIPagerView(); $pager->setOffset($request->getInt('page')); switch ($view) { case 'sampled': $clause = 'sampleRate > 0'; $show_type = false; break; case 'my-runs': $clause = qsprintf(id(new PhabricatorXHProfSample())->establishConnection('r'), 'sampleRate = 0 AND userPHID = %s', $request->getUser()->getPHID()); $show_type = false; break; case 'manual': $clause = 'sampleRate = 0'; $show_type = false; break; case 'all': default: $clause = '1 = 1'; $show_type = true; break; } $samples = id(new PhabricatorXHProfSample())->loadAllWhere('%Q ORDER BY id DESC LIMIT %d, %d', $clause, $pager->getOffset(), $pager->getPageSize() + 1); $samples = $pager->sliceResults($samples); $pager->setURI($request->getRequestURI(), 'page'); $list = new PHUIObjectItemListView(); foreach ($samples as $sample) { $file_phid = $sample->getFilePHID(); $item = id(new PHUIObjectItemView())->setObjectName($sample->getID())->setHeader($sample->getRequestPath())->setHref($this->getApplicationURI('profile/' . $file_phid . '/'))->addAttribute(number_format($sample->getUsTotal()) . " μs"); if ($sample->getController()) { $item->addAttribute($sample->getController()); } $item->addAttribute($sample->getHostName()); $rate = $sample->getSampleRate(); if ($rate == 0) { $item->addIcon('flag-6', pht('Manual Run')); } else { $item->addIcon('flag-7', pht('Sampled (1/%d)', $rate)); } $item->addIcon('none', phabricator_datetime($sample->getDateCreated(), $viewer)); $list->addItem($item); } $list->setPager($pager); $list->setNoDataString(pht('There are no profiling samples.')); $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('XHProf Samples')); $title = pht('XHProf Samples'); return $this->newPage()->setTitle($title)->setCrumbs($crumbs)->appendChild($list); }
public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); $pager = new AphrontPagerView(); $pager->setOffset($request->getInt('page')); switch ($this->view) { case 'sampled': $clause = '`sampleRate` > 0'; $show_type = false; break; case 'my-runs': $clause = qsprintf(id(new PhabricatorXHProfSample())->establishConnection('r'), '`sampleRate` = 0 AND `userPHID` = %s', $request->getUser()->getPHID()); $show_type = false; break; case 'manual': $clause = '`sampleRate` = 0'; $show_type = false; break; case 'all': default: $clause = '1 = 1'; $show_type = true; break; } $samples = id(new PhabricatorXHProfSample())->loadAllWhere('%Q ORDER BY id DESC LIMIT %d, %d', $clause, $pager->getOffset(), $pager->getPageSize() + 1); $samples = $pager->sliceResults($samples); $pager->setURI($request->getRequestURI(), 'page'); $list = new PHUIObjectItemListView(); foreach ($samples as $sample) { $file_phid = $sample->getFilePHID(); $item = id(new PHUIObjectItemView())->setObjectName($sample->getID())->setHeader($sample->getRequestPath())->setHref($this->getApplicationURI('profile/' . $file_phid . '/'))->addAttribute(number_format($sample->getUsTotal()) . " μs"); if ($sample->getController()) { $item->addAttribute($sample->getController()); } $item->addAttribute($sample->getHostName()); $rate = $sample->getSampleRate(); if ($rate == 0) { $item->addIcon('flag-6', pht('Manual Run')); } else { $item->addIcon('flag-7', pht('Sampled (1/%d)', $rate)); } $item->addIcon('none', phabricator_datetime($sample->getDateCreated(), $user)); $list->addItem($item); } $list->setPager($pager); return $this->buildStandardPageResponse($list, array('title' => pht('XHProf Samples'), 'device' => true)); }
public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); $pager = id(new AphrontCursorPagerView())->readFromRequest($request); $tokens_given = id(new PhabricatorTokenGivenQuery())->setViewer($user)->executeWithCursorPager($pager); $handles = array(); if ($tokens_given) { $object_phids = mpull($tokens_given, 'getObjectPHID'); $user_phids = mpull($tokens_given, 'getAuthorPHID'); $handle_phids = array_merge($object_phids, $user_phids); $handles = id(new PhabricatorHandleQuery())->setViewer($user)->withPHIDs($handle_phids)->execute(); } $tokens = array(); if ($tokens_given) { $token_phids = mpull($tokens_given, 'getTokenPHID'); $tokens = id(new PhabricatorTokenQuery())->setViewer($user)->withPHIDs($token_phids)->execute(); $tokens = mpull($tokens, null, 'getPHID'); } $list = new PHUIObjectItemListView(); foreach ($tokens_given as $token_given) { $handle = $handles[$token_given->getObjectPHID()]; $token = idx($tokens, $token_given->getTokenPHID()); $item = id(new PHUIObjectItemView()); $item->setHeader($handle->getFullName()); $item->setHref($handle->getURI()); $item->addAttribute($token->renderIcon()); $item->addAttribute(pht('Given by %s on %s', $handles[$token_given->getAuthorPHID()]->renderLink(), phabricator_date($token_given->getDateCreated(), $user))); $list->addItem($item); } $list->setPager($pager); $title = pht('Tokens Given'); $nav = $this->buildSideNav(); $nav->setCrumbs($this->buildApplicationCrumbs()->addTextCrumb($title)); $nav->selectFilter('given/'); $nav->appendChild($list); return $this->buildApplicationPage($nav, array('title' => $title)); }