3
final class HeraldTranscriptSearchEngine
4
extends PhabricatorApplicationSearchEngine {
6
public function getResultTypeDescription() {
7
return pht('Herald Transcripts');
10
public function getApplicationClassName() {
11
return 'PhabricatorHeraldApplication';
14
public function buildSavedQueryFromRequest(AphrontRequest $request) {
15
$saved = new PhabricatorSavedQuery();
17
$object_monograms = $request->getStrList('objectMonograms');
18
$saved->setParameter('objectMonograms', $object_monograms);
20
$ids = $request->getStrList('ids');
21
foreach ($ids as $key => $id) {
22
if (!$id || !is_numeric($id)) {
28
$saved->setParameter('ids', $ids);
33
public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) {
34
$query = id(new HeraldTranscriptQuery());
36
$object_monograms = $saved->getParameter('objectMonograms');
37
if ($object_monograms) {
38
$objects = id(new PhabricatorObjectQuery())
39
->setViewer($this->requireViewer())
40
->withNames($object_monograms)
42
$query->withObjectPHIDs(mpull($objects, 'getPHID'));
45
$ids = $saved->getParameter('ids');
47
$query->withIDs($ids);
53
public function buildSearchForm(
54
AphrontFormView $form,
55
PhabricatorSavedQuery $saved) {
57
$object_monograms = $saved->getParameter('objectMonograms', array());
58
$ids = $saved->getParameter('ids', array());
62
id(new AphrontFormTextControl())
63
->setName('objectMonograms')
64
->setLabel(pht('Object Monograms'))
65
->setValue(implode(', ', $object_monograms)))
67
id(new AphrontFormTextControl())
69
->setLabel(pht('Transcript IDs'))
70
->setValue(implode(', ', $ids)));
73
protected function getURI($path) {
74
return '/herald/transcript/'.$path;
77
public function getBuiltinQueryNames() {
83
public function buildSavedQueryFromBuiltin($query_key) {
84
$query = $this->newSavedQuery();
85
$query->setQueryKey($query_key);
87
$viewer_phid = $this->requireViewer()->getPHID();
94
return parent::buildSavedQueryFromBuiltin($query_key);
97
protected function getRequiredHandlePHIDsForResultList(
99
PhabricatorSavedQuery $query) {
100
return mpull($transcripts, 'getObjectPHID');
103
protected function renderResultList(
105
PhabricatorSavedQuery $query,
107
assert_instances_of($transcripts, 'HeraldTranscript');
109
$viewer = $this->requireViewer();
111
$list = new PHUIObjectItemListView();
112
foreach ($transcripts as $xscript) {
113
$view_href = phutil_tag(
116
'href' => '/herald/transcript/'.$xscript->getID().'/',
118
pht('View Full Transcript'));
120
$item = new PHUIObjectItemView();
121
$item->setObjectName($xscript->getID());
122
$item->setHeader($view_href);
123
if ($xscript->getDryRun()) {
124
$item->addAttribute(pht('Dry Run'));
126
$item->addAttribute($handles[$xscript->getObjectPHID()]->renderLink());
128
number_format((int)(1000 * $xscript->getDuration())).' ms');
131
phabricator_datetime($xscript->getTime(), $viewer));
133
$list->addItem($item);