Correct a parameter order swap in "diffusion.historyquery" for Mercurial
[phabricator.git] / src / applications / pholio / query / PholioMockSearchEngine.php
blobcbb175b2ded5a3bdab74d46be5dfc8713596be92
1 <?php
3 final class PholioMockSearchEngine extends PhabricatorApplicationSearchEngine {
5 public function getResultTypeDescription() {
6 return pht('Pholio Mocks');
9 public function getApplicationClassName() {
10 return 'PhabricatorPholioApplication';
13 public function newQuery() {
14 return id(new PholioMockQuery())
15 ->needCoverFiles(true)
16 ->needImages(true)
17 ->needTokenCounts(true);
20 protected function buildCustomSearchFields() {
21 return array(
22 id(new PhabricatorUsersSearchField())
23 ->setKey('authorPHIDs')
24 ->setAliases(array('authors'))
25 ->setLabel(pht('Authors')),
26 id(new PhabricatorSearchCheckboxesField())
27 ->setKey('statuses')
28 ->setLabel(pht('Status'))
29 ->setOptions(
30 id(new PholioMock())
31 ->getStatuses()),
35 protected function buildQueryFromParameters(array $map) {
36 $query = $this->newQuery();
38 if ($map['authorPHIDs']) {
39 $query->withAuthorPHIDs($map['authorPHIDs']);
42 if ($map['statuses']) {
43 $query->withStatuses($map['statuses']);
46 return $query;
49 protected function getURI($path) {
50 return '/pholio/'.$path;
53 protected function getBuiltinQueryNames() {
54 $names = array(
55 'open' => pht('Open Mocks'),
56 'all' => pht('All Mocks'),
59 if ($this->requireViewer()->isLoggedIn()) {
60 $names['authored'] = pht('Authored');
63 return $names;
66 public function buildSavedQueryFromBuiltin($query_key) {
67 $query = $this->newSavedQuery();
68 $query->setQueryKey($query_key);
70 switch ($query_key) {
71 case 'open':
72 return $query->setParameter(
73 'statuses',
74 array('open'));
75 case 'all':
76 return $query;
77 case 'authored':
78 return $query->setParameter(
79 'authorPHIDs',
80 array($this->requireViewer()->getPHID()));
83 return parent::buildSavedQueryFromBuiltin($query_key);
86 protected function renderResultList(
87 array $mocks,
88 PhabricatorSavedQuery $query,
89 array $handles) {
90 assert_instances_of($mocks, 'PholioMock');
92 $viewer = $this->requireViewer();
93 $handles = $viewer->loadHandles(mpull($mocks, 'getAuthorPHID'));
95 $xform = PhabricatorFileTransform::getTransformByKey(
96 PhabricatorFileThumbnailTransform::TRANSFORM_PINBOARD);
98 $board = new PHUIPinboardView();
99 foreach ($mocks as $mock) {
101 $image = $mock->getCoverFile();
102 $image_uri = $image->getURIForTransform($xform);
103 list($x, $y) = $xform->getTransformedDimensions($image);
105 $header = 'M'.$mock->getID().' '.$mock->getName();
106 $item = id(new PHUIPinboardItemView())
107 ->setUser($viewer)
108 ->setHeader($header)
109 ->setObject($mock)
110 ->setURI('/M'.$mock->getID())
111 ->setImageURI($image_uri)
112 ->setImageSize($x, $y)
113 ->setDisabled($mock->isClosed())
114 ->addIconCount('fa-picture-o', count($mock->getActiveImages()))
115 ->addIconCount('fa-trophy', $mock->getTokenCount());
117 if ($mock->getAuthorPHID()) {
118 $author_handle = $handles[$mock->getAuthorPHID()];
119 $datetime = phabricator_date($mock->getDateCreated(), $viewer);
120 $item->appendChild(
121 pht('By %s on %s', $author_handle->renderLink(), $datetime));
124 $board->addItem($item);
127 $result = new PhabricatorApplicationSearchResultView();
128 $result->setContent($board);
130 return $result;
133 protected function getNewUserBody() {
134 $create_button = id(new PHUIButtonView())
135 ->setTag('a')
136 ->setText(pht('Create a Mock'))
137 ->setHref('/pholio/create/')
138 ->setColor(PHUIButtonView::GREEN);
140 $icon = $this->getApplication()->getIcon();
141 $app_name = $this->getApplication()->getName();
142 $view = id(new PHUIBigInfoView())
143 ->setIcon($icon)
144 ->setTitle(pht('Welcome to %s', $app_name))
145 ->setDescription(
146 pht('Upload sets of images for review with revision history and '.
147 'inline comments.'))
148 ->addAction($create_button);
150 return $view;