Path: blob/master/src/applications/fund/query/FundBackerSearchEngine.php
12256 views
<?php12final class FundBackerSearchEngine3extends PhabricatorApplicationSearchEngine {45private $initiative;67public function setInitiative(FundInitiative $initiative) {8$this->initiative = $initiative;9return $this;10}1112public function getInitiative() {13return $this->initiative;14}1516public function getResultTypeDescription() {17return pht('Fund Backers');18}1920public function getApplicationClassName() {21return 'PhabricatorFundApplication';22}2324public function buildSavedQueryFromRequest(AphrontRequest $request) {25$saved = new PhabricatorSavedQuery();2627$saved->setParameter(28'backerPHIDs',29$this->readUsersFromRequest($request, 'backers'));3031return $saved;32}3334public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) {35$query = id(new FundBackerQuery());3637$query->withStatuses(array(FundBacker::STATUS_PURCHASED));3839if ($this->getInitiative()) {40$query->withInitiativePHIDs(41array(42$this->getInitiative()->getPHID(),43));44}4546$backer_phids = $saved->getParameter('backerPHIDs');47if ($backer_phids) {48$query->withBackerPHIDs($backer_phids);49}5051return $query;52}5354public function buildSearchForm(55AphrontFormView $form,56PhabricatorSavedQuery $saved) {5758$backer_phids = $saved->getParameter('backerPHIDs', array());5960$form61->appendControl(62id(new AphrontFormTokenizerControl())63->setLabel(pht('Backers'))64->setName('backers')65->setDatasource(new PhabricatorPeopleDatasource())66->setValue($backer_phids));67}6869protected function getURI($path) {70if ($this->getInitiative()) {71return '/fund/backers/'.$this->getInitiative()->getID().'/'.$path;72} else {73return '/fund/backers/'.$path;74}75}7677protected function getBuiltinQueryNames() {78$names = array();79$names['all'] = pht('All Backers');8081return $names;82}8384public function buildSavedQueryFromBuiltin($query_key) {85$query = $this->newSavedQuery();86$query->setQueryKey($query_key);8788switch ($query_key) {89case 'all':90return $query;91}9293return parent::buildSavedQueryFromBuiltin($query_key);94}9596protected function getRequiredHandlePHIDsForResultList(97array $backers,98PhabricatorSavedQuery $query) {99100$phids = array();101foreach ($backers as $backer) {102$phids[] = $backer->getBackerPHID();103$phids[] = $backer->getInitiativePHID();104}105106return $phids;107}108109protected function renderResultList(110array $backers,111PhabricatorSavedQuery $query,112array $handles) {113assert_instances_of($backers, 'FundBacker');114115$viewer = $this->requireViewer();116117$rows = array();118foreach ($backers as $backer) {119$rows[] = array(120$handles[$backer->getInitiativePHID()]->renderLink(),121$handles[$backer->getBackerPHID()]->renderLink(),122$backer->getAmountAsCurrency()->formatForDisplay(),123phabricator_datetime($backer->getDateCreated(), $viewer),124);125}126127$table = id(new AphrontTableView($rows))128->setNoDataString(pht('No backers found.'))129->setHeaders(130array(131pht('Initiative'),132pht('Backer'),133pht('Amount'),134pht('Date'),135))136->setColumnClasses(137array(138null,139null,140'wide right',141'right',142));143144$result = new PhabricatorApplicationSearchResultView();145$result->setTable($table);146147return $result;148}149150}151152153