~ubuntu-branches/ubuntu/vivid/phabricator/vivid-proposed

« back to all changes in this revision

Viewing changes to phabricator/src/applications/herald/query/HeraldTranscriptSearchEngine.php

  • Committer: Package Import Robot
  • Author(s): Richard Sellam
  • Date: 2014-10-23 20:49:26 UTC
  • Revision ID: package-import@ubuntu.com-20141023204926-ar20vnfjqwxysrce
Tags: upstream-0~git20141023
ImportĀ upstreamĀ versionĀ 0~git20141023

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
 
 
3
final class HeraldTranscriptSearchEngine
 
4
  extends PhabricatorApplicationSearchEngine {
 
5
 
 
6
  public function getResultTypeDescription() {
 
7
    return pht('Herald Transcripts');
 
8
  }
 
9
 
 
10
  public function getApplicationClassName() {
 
11
    return 'PhabricatorHeraldApplication';
 
12
  }
 
13
 
 
14
  public function buildSavedQueryFromRequest(AphrontRequest $request) {
 
15
    $saved = new PhabricatorSavedQuery();
 
16
 
 
17
    $object_monograms = $request->getStrList('objectMonograms');
 
18
    $saved->setParameter('objectMonograms', $object_monograms);
 
19
 
 
20
    $ids = $request->getStrList('ids');
 
21
    foreach ($ids as $key => $id) {
 
22
      if (!$id || !is_numeric($id)) {
 
23
        unset($ids[$key]);
 
24
      } else {
 
25
        $ids[$key] = $id;
 
26
      }
 
27
    }
 
28
    $saved->setParameter('ids', $ids);
 
29
 
 
30
    return $saved;
 
31
  }
 
32
 
 
33
  public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) {
 
34
    $query = id(new HeraldTranscriptQuery());
 
35
 
 
36
    $object_monograms = $saved->getParameter('objectMonograms');
 
37
    if ($object_monograms) {
 
38
      $objects = id(new PhabricatorObjectQuery())
 
39
        ->setViewer($this->requireViewer())
 
40
        ->withNames($object_monograms)
 
41
        ->execute();
 
42
      $query->withObjectPHIDs(mpull($objects, 'getPHID'));
 
43
    }
 
44
 
 
45
    $ids = $saved->getParameter('ids');
 
46
    if ($ids) {
 
47
      $query->withIDs($ids);
 
48
    }
 
49
 
 
50
    return $query;
 
51
  }
 
52
 
 
53
  public function buildSearchForm(
 
54
    AphrontFormView $form,
 
55
    PhabricatorSavedQuery $saved) {
 
56
 
 
57
    $object_monograms = $saved->getParameter('objectMonograms', array());
 
58
    $ids = $saved->getParameter('ids', array());
 
59
 
 
60
    $form
 
61
      ->appendChild(
 
62
        id(new AphrontFormTextControl())
 
63
          ->setName('objectMonograms')
 
64
          ->setLabel(pht('Object Monograms'))
 
65
          ->setValue(implode(', ', $object_monograms)))
 
66
      ->appendChild(
 
67
        id(new AphrontFormTextControl())
 
68
          ->setName('ids')
 
69
          ->setLabel(pht('Transcript IDs'))
 
70
          ->setValue(implode(', ', $ids)));
 
71
  }
 
72
 
 
73
  protected function getURI($path) {
 
74
    return '/herald/transcript/'.$path;
 
75
  }
 
76
 
 
77
  public function getBuiltinQueryNames() {
 
78
    return array(
 
79
      'all' => pht('All'),
 
80
    );
 
81
  }
 
82
 
 
83
  public function buildSavedQueryFromBuiltin($query_key) {
 
84
    $query = $this->newSavedQuery();
 
85
    $query->setQueryKey($query_key);
 
86
 
 
87
    $viewer_phid = $this->requireViewer()->getPHID();
 
88
 
 
89
    switch ($query_key) {
 
90
      case 'all':
 
91
        return $query;
 
92
    }
 
93
 
 
94
    return parent::buildSavedQueryFromBuiltin($query_key);
 
95
  }
 
96
 
 
97
  protected function getRequiredHandlePHIDsForResultList(
 
98
    array $transcripts,
 
99
    PhabricatorSavedQuery $query) {
 
100
    return mpull($transcripts, 'getObjectPHID');
 
101
  }
 
102
 
 
103
  protected function renderResultList(
 
104
    array $transcripts,
 
105
    PhabricatorSavedQuery $query,
 
106
    array $handles) {
 
107
    assert_instances_of($transcripts, 'HeraldTranscript');
 
108
 
 
109
    $viewer = $this->requireViewer();
 
110
 
 
111
    $list = new PHUIObjectItemListView();
 
112
    foreach ($transcripts as $xscript) {
 
113
      $view_href = phutil_tag(
 
114
        'a',
 
115
        array(
 
116
          'href' => '/herald/transcript/'.$xscript->getID().'/',
 
117
        ),
 
118
        pht('View Full Transcript'));
 
119
 
 
120
      $item = new PHUIObjectItemView();
 
121
      $item->setObjectName($xscript->getID());
 
122
      $item->setHeader($view_href);
 
123
      if ($xscript->getDryRun()) {
 
124
        $item->addAttribute(pht('Dry Run'));
 
125
      }
 
126
      $item->addAttribute($handles[$xscript->getObjectPHID()]->renderLink());
 
127
      $item->addAttribute(
 
128
        number_format((int)(1000 * $xscript->getDuration())).' ms');
 
129
      $item->addIcon(
 
130
        'none',
 
131
        phabricator_datetime($xscript->getTime(), $viewer));
 
132
 
 
133
      $list->addItem($item);
 
134
    }
 
135
 
 
136
    return $list;
 
137
  }
 
138
 
 
139
}