Path: blob/master/src/applications/differential/query/DifferentialChangesetSearchEngine.php
12256 views
<?php12final class DifferentialChangesetSearchEngine3extends PhabricatorApplicationSearchEngine {45private $diff;67public function setDiff(DifferentialDiff $diff) {8$this->diff = $diff;9return $this;10}1112public function getDiff() {13return $this->diff;14}1516public function getResultTypeDescription() {17return pht('Differential Changesets');18}1920public function getApplicationClassName() {21return 'PhabricatorDifferentialApplication';22}2324public function canUseInPanelContext() {25return false;26}2728public function newQuery() {29$query = id(new DifferentialChangesetQuery());3031if ($this->diff) {32$query->withDiffs(array($this->diff));33}3435return $query;36}3738protected function buildQueryFromParameters(array $map) {39$query = $this->newQuery();4041if ($map['diffPHIDs']) {42$query->withDiffPHIDs($map['diffPHIDs']);43}4445return $query;46}4748protected function buildCustomSearchFields() {49return array(50id(new PhabricatorPHIDsSearchField())51->setLabel(pht('Diffs'))52->setKey('diffPHIDs')53->setAliases(array('diff', 'diffs', 'diffPHID'))54->setDescription(55pht('Find changesets attached to a particular diff.')),56);57}5859protected function getURI($path) {60$diff = $this->getDiff();61if ($diff) {62return '/differential/diff/'.$diff->getID().'/changesets/'.$path;63}6465throw new PhutilMethodNotImplementedException();66}6768protected function getBuiltinQueryNames() {69$names = array();70$names['all'] = pht('All Changesets');71return $names;72}7374public function buildSavedQueryFromBuiltin($query_key) {75$query = $this->newSavedQuery();76$query->setQueryKey($query_key);7778$viewer = $this->requireViewer();7980switch ($query_key) {81case 'all':82return $query->setParameter('order', 'oldest');83}8485return parent::buildSavedQueryFromBuiltin($query_key);86}8788protected function renderResultList(89array $changesets,90PhabricatorSavedQuery $query,91array $handles) {9293assert_instances_of($changesets, 'DifferentialChangeset');94$viewer = $this->requireViewer();9596$rows = array();97foreach ($changesets as $changeset) {98$link = phutil_tag(99'a',100array(101'href' => '/differential/changeset/?ref='.$changeset->getID(),102),103$changeset->getDisplayFilename());104105$type = $changeset->getChangeType();106107$title = DifferentialChangeType::getFullNameForChangeType($type);108109$add_lines = $changeset->getAddLines();110if (!$add_lines) {111$add_lines = null;112} else {113$add_lines = '+'.$add_lines;114}115116$rem_lines = $changeset->getDelLines();117if (!$rem_lines) {118$rem_lines = null;119} else {120$rem_lines = '-'.$rem_lines;121}122123$rows[] = array(124$changeset->newFileTreeIcon(),125$title,126$link,127);128}129130$table = id(new AphrontTableView($rows))131->setHeaders(132array(133null,134pht('Change'),135pht('Path'),136))137->setColumnClasses(138array(139null,140null,141'pri wide',142));143144return id(new PhabricatorApplicationSearchResultView())145->setTable($table);146}147148}149150151