Path: blob/master/src/applications/diffusion/query/DiffusionRepositoryIdentitySearchEngine.php
12242 views
<?php12final class DiffusionRepositoryIdentitySearchEngine3extends PhabricatorApplicationSearchEngine {45public function getResultTypeDescription() {6return pht('Repository Identities');7}89public function getApplicationClassName() {10return 'PhabricatorDiffusionApplication';11}1213public function newQuery() {14return new PhabricatorRepositoryIdentityQuery();15}1617protected function buildCustomSearchFields() {18return array(19id(new PhabricatorUsersSearchField())20->setLabel(pht('Matching Users'))21->setKey('effectivePHIDs')22->setAliases(23array(24'effective',25'effectivePHID',26))27->setDescription(pht('Search for identities by effective user.')),28id(new DiffusionIdentityAssigneeSearchField())29->setLabel(pht('Assigned To'))30->setKey('assignedPHIDs')31->setAliases(32array(33'assigned',34'assignedPHID',35))36->setDescription(pht('Search for identities by explicit assignee.')),37id(new PhabricatorSearchTextField())38->setLabel(pht('Identity Contains'))39->setKey('match')40->setDescription(pht('Search for identities by substring.')),41id(new PhabricatorSearchThreeStateField())42->setLabel(pht('Has Matching User'))43->setKey('hasEffectivePHID')44->setOptions(45pht('(Show All)'),46pht('Show Identities With Matching Users'),47pht('Show Identities Without Matching Users')),48);49}5051protected function buildQueryFromParameters(array $map) {52$query = $this->newQuery();5354if ($map['hasEffectivePHID'] !== null) {55$query->withHasEffectivePHID($map['hasEffectivePHID']);56}5758if ($map['match'] !== null) {59$query->withIdentityNameLike($map['match']);60}6162if ($map['assignedPHIDs']) {63$query->withAssignedPHIDs($map['assignedPHIDs']);64}6566if ($map['effectivePHIDs']) {67$query->withEffectivePHIDs($map['effectivePHIDs']);68}6970return $query;71}7273protected function getURI($path) {74return '/diffusion/identity/'.$path;75}7677protected function getBuiltinQueryNames() {78$names = array(79'all' => pht('All Identities'),80);8182return $names;83}8485public function buildSavedQueryFromBuiltin($query_key) {8687$query = $this->newSavedQuery();88$query->setQueryKey($query_key);8990switch ($query_key) {91case 'all':92return $query;93}9495return parent::buildSavedQueryFromBuiltin($query_key);96}9798protected function renderResultList(99array $identities,100PhabricatorSavedQuery $query,101array $handles) {102assert_instances_of($identities, 'PhabricatorRepositoryIdentity');103104$viewer = $this->requireViewer();105106$list = id(new PHUIObjectItemListView())107->setViewer($viewer);108109$phids = array();110foreach ($identities as $identity) {111$phids[] = $identity->getCurrentEffectiveUserPHID();112$phids[] = $identity->getManuallySetUserPHID();113}114115$handles = $viewer->loadHandles($phids);116117$unassigned = DiffusionIdentityUnassignedDatasource::FUNCTION_TOKEN;118119foreach ($identities as $identity) {120$item = id(new PHUIObjectItemView())121->setObjectName($identity->getObjectName())122->setHeader($identity->getIdentityShortName())123->setHref($identity->getURI())124->setObject($identity);125126$status_icon = 'fa-circle-o grey';127128$effective_phid = $identity->getCurrentEffectiveUserPHID();129if ($effective_phid) {130$item->addIcon(131'fa-id-badge',132pht('Matches User: %s', $handles[$effective_phid]->getName()));133134$status_icon = 'fa-id-badge';135}136137$assigned_phid = $identity->getManuallySetUserPHID();138if ($assigned_phid) {139if ($assigned_phid === $unassigned) {140$item->addIcon(141'fa-ban',142pht('Explicitly Unassigned'));143$status_icon = 'fa-ban';144} else {145$item->addIcon(146'fa-user',147pht('Assigned To: %s', $handles[$assigned_phid]->getName()));148$status_icon = 'fa-user';149}150}151152$item->setStatusIcon($status_icon);153154$list->addItem($item);155}156157$result = new PhabricatorApplicationSearchResultView();158$result->setObjectList($list);159$result->setNoDataString(pht('No Identities found.'));160161return $result;162}163164}165166167