Support tokenizer functions in Diffusion

Summary: Ref T4100. Ref T5595. Support tokenizer functions + edgelogic for repositories.

Test Plan: Searched for repositories.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T5595, T4100

Differential Revision: https://secure.phabricator.com/D12533
This commit is contained in:
epriestley
2015-04-23 08:25:17 -07:00
parent 83617073f5
commit cf154ae9f4
3 changed files with 67 additions and 50 deletions

View File

@@ -20,7 +20,10 @@ final class PhabricatorRepositorySearchEngine
$saved->setParameter('hosted', $request->getStr('hosted'));
$saved->setParameter('types', $request->getArr('types'));
$saved->setParameter('name', $request->getStr('name'));
$saved->setParameter('anyProjectPHIDs', $request->getArr('anyProjects'));
$saved->setParameter(
'projects',
$this->readProjectsFromRequest($request, 'projects'));
return $saved;
}
@@ -60,10 +63,9 @@ final class PhabricatorRepositorySearchEngine
$query->withNameContains($name);
}
$any_project_phids = $saved->getParameter('anyProjectPHIDs');
if ($any_project_phids) {
$query->withAnyProjects($any_project_phids);
}
$adjusted = clone $saved;
$adjusted->setParameter('projects', $this->readProjectTokens($saved));
$this->setQueryProjects($query, $adjusted);
return $query;
}
@@ -76,7 +78,7 @@ final class PhabricatorRepositorySearchEngine
$types = $saved_query->getParameter('types', array());
$types = array_fuse($types);
$name = $saved_query->getParameter('name');
$any_project_phids = $saved_query->getParameter('anyProjectPHIDs', array());
$projects = $this->readProjectTokens($saved_query);
$form
->appendChild(
@@ -91,10 +93,10 @@ final class PhabricatorRepositorySearchEngine
->setValue($name))
->appendControl(
id(new AphrontFormTokenizerControl())
->setDatasource(new PhabricatorProjectDatasource())
->setName('anyProjects')
->setLabel(pht('In Any Project'))
->setValue($any_project_phids))
->setDatasource(new PhabricatorProjectLogicalDatasource())
->setName('projects')
->setLabel(pht('Projects'))
->setValue($projects))
->appendChild(
id(new AphrontFormSelectControl())
->setName('status')
@@ -266,4 +268,15 @@ final class PhabricatorRepositorySearchEngine
return $list;
}
private function readProjectTokens(PhabricatorSavedQuery $saved) {
$projects = $saved->getParameter('projects', array());
$any = $saved->getParameter('anyProjectPHIDs', array());
foreach ($any as $project) {
$projects[] = 'any('.$project.')';
}
return $projects;
}
}