@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at upstream/main 106 lines 2.7 kB view raw
1<?php 2 3final class PhabricatorWorkerBulkJobSearchEngine 4 extends PhabricatorApplicationSearchEngine { 5 6 public function getResultTypeDescription() { 7 return pht('Daemon Bulk Jobs'); 8 } 9 10 public function getApplicationClassName() { 11 return PhabricatorDaemonsApplication::class; 12 } 13 14 public function newQuery() { 15 return id(new PhabricatorWorkerBulkJobQuery()); 16 } 17 18 public function canUseInPanelContext() { 19 return false; 20 } 21 22 protected function buildQueryFromParameters(array $map) { 23 $query = $this->newQuery(); 24 25 if ($map['authorPHIDs']) { 26 $query->withAuthorPHIDs($map['authorPHIDs']); 27 } 28 29 return $query; 30 } 31 32 protected function buildCustomSearchFields() { 33 return array( 34 id(new PhabricatorUsersSearchField()) 35 ->setLabel(pht('Authors')) 36 ->setKey('authorPHIDs') 37 ->setAliases(array('author', 'authors')), 38 ); 39 } 40 41 protected function getURI($path) { 42 return '/daemon/bulk/'.$path; 43 } 44 45 protected function getBuiltinQueryNames() { 46 $names = array(); 47 48 if ($this->requireViewer()->isLoggedIn()) { 49 $names['authored'] = pht('Authored Jobs'); 50 } 51 52 $names['all'] = pht('All Jobs'); 53 54 return $names; 55 } 56 57 public function buildSavedQueryFromBuiltin($query_key) { 58 59 $query = $this->newSavedQuery(); 60 $query->setQueryKey($query_key); 61 62 switch ($query_key) { 63 case 'all': 64 return $query; 65 case 'authored': 66 return $query->setParameter( 67 'authorPHIDs', 68 array($this->requireViewer()->getPHID())); 69 } 70 71 return parent::buildSavedQueryFromBuiltin($query_key); 72 } 73 74 /** 75 * @param array<PhabricatorWorkerBulkJob> $jobs 76 * @param PhabricatorSavedQuery $query 77 * @param array<PhabricatorObjectHandle> $handles 78 */ 79 protected function renderResultList( 80 array $jobs, 81 PhabricatorSavedQuery $query, 82 array $handles) { 83 assert_instances_of($jobs, PhabricatorWorkerBulkJob::class); 84 85 $viewer = $this->requireViewer(); 86 87 $list = id(new PHUIObjectItemListView()) 88 ->setUser($viewer); 89 foreach ($jobs as $job) { 90 $size = pht('%s Bulk Task(s)', new PhutilNumber($job->getSize())); 91 92 $item = id(new PHUIObjectItemView()) 93 ->setObjectName(pht('Bulk Job %d', $job->getID())) 94 ->setHeader($job->getJobName()) 95 ->addAttribute(phabricator_datetime($job->getDateCreated(), $viewer)) 96 ->setHref($job->getManageURI()) 97 ->addIcon($job->getStatusIcon(), $job->getStatusName()) 98 ->addIcon('none', $size); 99 100 $list->addItem($item); 101 } 102 103 return id(new PhabricatorApplicationSearchResultView()) 104 ->setContent($list); 105 } 106}