public function processRequest() { $drequest = $this->diffusionRequest; $request = $this->getRequest(); $page_size = $request->getInt('pagesize', 100); $offset = $request->getInt('page', 0); $history_query = DiffusionHistoryQuery::newFromDiffusionRequest($drequest); $history_query->setOffset($offset); $history_query->setLimit($page_size + 1); if (!$request->getBool('copies')) { $history_query->needDirectChanges(true); $history_query->needChildChanges(true); } $history = $history_query->loadHistory(); $phids = array(); foreach ($history as $item) { $data = $item->getCommitData(); if ($data) { if ($data->getCommitDetail('authorPHID')) { $phids[$data->getCommitDetail('authorPHID')] = true; } } } $phids = array_keys($phids); $handles = id(new PhabricatorObjectHandleData($phids))->loadHandles(); $pager = new AphrontPagerView(); $pager->setPageSize($page_size); $pager->setOffset($offset); if (count($history) == $page_size + 1) { array_pop($history); $pager->setHasMorePages(true); } else { $pager->setHasMorePages(false); } $pager->setURI($request->getRequestURI(), 'page'); $content = array(); $content[] = $this->buildCrumbs(array('branch' => true, 'path' => true, 'view' => 'history')); if ($request->getBool('copies')) { $button_title = 'Hide Copies/Branches'; } else { $button_title = 'Show Copies/Branches'; } $button_uri = $request->getRequestURI()->alter('copies', !$request->getBool('copies')); $button = phutil_render_tag('a', array('class' => 'button small grey', 'href' => $button_uri), phutil_escape_html($button_title)); $history_table = new DiffusionHistoryTableView(); $history_table->setDiffusionRequest($drequest); $history_table->setHandles($handles); $history_table->setHistory($history); $history_panel = new AphrontPanelView(); $history_panel->setHeader('History'); $history_panel->addButton($button); $history_panel->appendChild($history_table); $history_panel->appendChild($pager); $content[] = $history_panel; // TODO: Sometimes we do have a change view, we need to look at the most // recent history entry to figure it out. $nav = $this->buildSideNav('history', false); $nav->appendChild($content); return $this->buildStandardPageResponse($nav, array('title' => 'history')); }
protected function execute(ConduitAPIRequest $request) { $drequest = DiffusionRequest::newFromDictionary(array('callsign' => $request->getValue('callsign'), 'path' => $request->getValue('path'))); $history = DiffusionHistoryQuery::newFromDiffusionRequest($drequest)->setLimit(self::RESULT_LIMIT)->needDirectChanges(true)->needChildChanges(true)->loadHistory(); $raw_commit_identifiers = mpull($history, 'getCommitIdentifier'); $result = array(); foreach ($raw_commit_identifiers as $id) { $result[] = 'r' . $request->getValue('callsign') . $id; } return $result; }
protected function executeQuery() { $drequest = $this->getRequest(); $repository = $drequest->getRepository(); $path = $drequest->getPath(); $history_query = DiffusionHistoryQuery::newFromDiffusionRequest($drequest); $history_query->setLimit(1); $history_query->needChildChanges(true); $history_query->needDirectChanges(true); $history_array = $history_query->loadHistory(); $history = reset($history_array); return array($history->getCommit(), $history->getCommitData()); }
public function processRequest() { $drequest = $this->diffusionRequest; $content = array(); $crumbs = $this->buildCrumbs(); $content[] = $crumbs; $content[] = $this->buildPropertiesTable($drequest->getRepository()); $history_query = DiffusionHistoryQuery::newFromDiffusionRequest($drequest); $history_query->setLimit(15); $history_query->needParents(true); $history = $history_query->loadHistory(); $browse_query = DiffusionBrowseQuery::newFromDiffusionRequest($drequest); $browse_results = $browse_query->loadPaths(); $phids = array(); foreach ($history as $item) { $data = $item->getCommitData(); if ($data) { if ($data->getCommitDetail('authorPHID')) { $phids[$data->getCommitDetail('authorPHID')] = true; } if ($data->getCommitDetail('committerPHID')) { $phids[$data->getCommitDetail('committerPHID')] = true; } } } foreach ($browse_results as $item) { $data = $item->getLastCommitData(); if ($data) { if ($data->getCommitDetail('authorPHID')) { $phids[$data->getCommitDetail('authorPHID')] = true; } if ($data->getCommitDetail('committerPHID')) { $phids[$data->getCommitDetail('committerPHID')] = true; } } } $phids = array_keys($phids); $handles = id(new PhabricatorObjectHandleData($phids))->loadHandles(); $history_table = new DiffusionHistoryTableView(); $history_table->setDiffusionRequest($drequest); $history_table->setHandles($handles); $history_table->setHistory($history); $history_table->loadRevisions(); $history_table->setParents($history_query->getParents()); $history_table->setIsHead(true); $callsign = $drequest->getRepository()->getCallsign(); $all = phutil_render_tag('a', array('href' => "/diffusion/{$callsign}/history/"), 'View Full Commit History'); $panel = new AphrontPanelView(); $panel->setHeader("Recent Commits · {$all}"); $panel->appendChild($history_table); $content[] = $panel; $browse_table = new DiffusionBrowseTableView(); $browse_table->setDiffusionRequest($drequest); $browse_table->setHandles($handles); $browse_table->setPaths($browse_results); $browse_panel = new AphrontPanelView(); $browse_panel->setHeader('Browse Repository'); $browse_panel->appendChild($browse_table); $content[] = $browse_panel; $content[] = $this->buildTagListTable($drequest); $content[] = $this->buildBranchListTable($drequest); $readme = $browse_query->renderReadme($browse_results); if ($readme) { $panel = new AphrontPanelView(); $panel->setHeader('README'); $panel->appendChild($readme); $content[] = $panel; } return $this->buildStandardPageResponse($content, array('title' => $drequest->getRepository()->getName())); }
public function processRequest() { $drequest = $this->diffusionRequest; $request = $this->getRequest(); $page_size = $request->getInt('pagesize', 100); $offset = $request->getInt('page', 0); $history_query = DiffusionHistoryQuery::newFromDiffusionRequest($drequest); $history_query->setOffset($offset); $history_query->setLimit($page_size + 1); if (!$request->getBool('copies')) { $history_query->needDirectChanges(true); $history_query->needChildChanges(true); } $show_graph = !strlen($drequest->getPath()); if ($show_graph) { $history_query->needParents(true); } $history = $history_query->loadHistory(); $pager = new AphrontPagerView(); $pager->setPageSize($page_size); $pager->setOffset($offset); if (count($history) == $page_size + 1) { array_pop($history); $pager->setHasMorePages(true); } else { $pager->setHasMorePages(false); } $pager->setURI($request->getRequestURI(), 'page'); $content = array(); $content[] = $this->buildCrumbs(array('branch' => true, 'path' => true, 'view' => 'history')); if ($request->getBool('copies')) { $button_title = 'Hide Copies/Branches'; $copies_new = null; } else { $button_title = 'Show Copies/Branches'; $copies_new = true; } $button = phutil_render_tag('a', array('class' => 'button small grey', 'href' => $request->getRequestURI()->alter('copies', $copies_new)), phutil_escape_html($button_title)); $history_table = new DiffusionHistoryTableView(); $history_table->setDiffusionRequest($drequest); $history_table->setHistory($history); $history_table->loadRevisions(); $phids = $history_table->getRequiredHandlePHIDs(); $handles = $this->loadViewerHandles($phids); $history_table->setHandles($handles); if ($show_graph) { $history_table->setParents($history_query->getParents()); $history_table->setIsHead($offset == 0); } $history_panel = new AphrontPanelView(); $history_panel->setHeader('History'); $history_panel->addButton($button); $history_panel->appendChild($history_table); $history_panel->appendChild($pager); $content[] = $history_panel; // TODO: Sometimes we do have a change view, we need to look at the most // recent history entry to figure it out. $nav = $this->buildSideNav('history', false); $nav->appendChild($content); return $this->buildStandardPageResponse($nav, array('title' => 'history')); }