@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
1<?php
2
3final class PhabricatorCustomFieldApplicationSearchAnyFunctionDatasource
4 extends PhabricatorTypeaheadDatasource {
5
6 public function getBrowseTitle() {
7 return pht('Browse Any');
8 }
9
10 public function getPlaceholderText() {
11 return pht('Type "any()"...');
12 }
13
14 public function getDatasourceApplicationClass() {
15 return null;
16 }
17
18 public function getDatasourceFunctions() {
19 return array(
20 'any' => array(
21 'name' => pht('Any Value'),
22 'summary' => pht('Find results with any value.'),
23 'description' => pht(
24 "This function includes results which have any value. Use a query ".
25 "like this to find results with any value:\n\n%s",
26 '> any()'),
27 ),
28 );
29 }
30
31 public function loadResults() {
32 $results = array(
33 $this->newAnyFunction(),
34 );
35 return $this->filterResultsAgainstTokens($results);
36 }
37
38 protected function evaluateFunction($function, array $argv_list) {
39 $results = array();
40
41 foreach ($argv_list as $argv) {
42 $results[] = new PhabricatorQueryConstraint(
43 PhabricatorQueryConstraint::OPERATOR_ANY,
44 null);
45 }
46
47 return $results;
48 }
49
50 public function renderFunctionTokens($function, array $argv_list) {
51 $results = array();
52 foreach ($argv_list as $argv) {
53 $results[] = PhabricatorTypeaheadTokenView::newFromTypeaheadResult(
54 $this->newAnyFunction());
55 }
56 return $results;
57 }
58
59 private function newAnyFunction() {
60 $name = pht('Any Value');
61 return $this->newFunctionResult()
62 ->setName($name.' any')
63 ->setDisplayName($name)
64 ->setIcon('fa-circle-o')
65 ->setPHID('any()')
66 ->setUnique(true)
67 ->addAttribute(pht('Select results with any value.'));
68 }
69
70}