Path: blob/master/src/applications/metamta/query/PhabricatorMetaMTAMailSearchEngine.php
12256 views
<?php12final class PhabricatorMetaMTAMailSearchEngine3extends PhabricatorApplicationSearchEngine {45public function getResultTypeDescription() {6return pht('MetaMTA Mails');7}89public function getApplicationClassName() {10return 'PhabricatorMetaMTAApplication';11}1213public function canUseInPanelContext() {14return false;15}1617public function newQuery() {18return new PhabricatorMetaMTAMailQuery();19}2021protected function shouldShowOrderField() {22return false;23}2425protected function buildCustomSearchFields() {26return array(27id(new PhabricatorUsersSearchField())28->setLabel(pht('Actors'))29->setKey('actorPHIDs')30->setAliases(array('actor', 'actors')),31id(new PhabricatorUsersSearchField())32->setLabel(pht('Recipients'))33->setKey('recipientPHIDs')34->setAliases(array('recipient', 'recipients')),35);36}3738protected function buildQueryFromParameters(array $map) {39$query = $this->newQuery();4041if ($map['actorPHIDs']) {42$query->withActorPHIDs($map['actorPHIDs']);43}4445if ($map['recipientPHIDs']) {46$query->withRecipientPHIDs($map['recipientPHIDs']);47}4849return $query;50}5152protected function getURI($path) {53return '/mail/'.$path;54}5556protected function getBuiltinQueryNames() {57$names = array(58'inbox' => pht('Inbox'),59'outbox' => pht('Outbox'),60);6162return $names;63}6465public function buildSavedQueryFromBuiltin($query_key) {66$viewer = $this->requireViewer();6768$query = $this->newSavedQuery();69$query->setQueryKey($query_key);7071switch ($query_key) {72case 'inbox':73return $query->setParameter(74'recipientPHIDs',75array($viewer->getPHID()));76case 'outbox':77return $query->setParameter(78'actorPHIDs',79array($viewer->getPHID()));80}8182return parent::buildSavedQueryFromBuiltin($query_key);83}8485protected function getRequiredHandlePHIDsForResultList(86array $objects,87PhabricatorSavedQuery $query) {8889$phids = array();90foreach ($objects as $mail) {91$phids[] = $mail->getExpandedRecipientPHIDs();92}93return array_mergev($phids);94}9596protected function renderResultList(97array $mails,98PhabricatorSavedQuery $query,99array $handles) {100101assert_instances_of($mails, 'PhabricatorMetaMTAMail');102$viewer = $this->requireViewer();103$list = new PHUIObjectItemListView();104105foreach ($mails as $mail) {106if ($mail->hasSensitiveContent()) {107$header = phutil_tag('em', array(), pht('Content Redacted'));108} else {109$header = $mail->getSubject();110}111112$item = id(new PHUIObjectItemView())113->setUser($viewer)114->setObject($mail)115->setEpoch($mail->getDateCreated())116->setObjectName(pht('Mail %d', $mail->getID()))117->setHeader($header)118->setHref($this->getURI('detail/'.$mail->getID().'/'));119120$status = $mail->getStatus();121$status_name = PhabricatorMailOutboundStatus::getStatusName($status);122$status_icon = PhabricatorMailOutboundStatus::getStatusIcon($status);123$status_color = PhabricatorMailOutboundStatus::getStatusColor($status);124$item->setStatusIcon($status_icon.' '.$status_color, $status_name);125126$list->addItem($item);127}128129return id(new PhabricatorApplicationSearchResultView())130->setContent($list);131}132}133134135