Page MenuHomePhabricator

D20134.diff
No OneTemporary

D20134.diff

diff --git a/src/applications/typeahead/controller/PhabricatorTypeaheadModularDatasourceController.php b/src/applications/typeahead/controller/PhabricatorTypeaheadModularDatasourceController.php
--- a/src/applications/typeahead/controller/PhabricatorTypeaheadModularDatasourceController.php
+++ b/src/applications/typeahead/controller/PhabricatorTypeaheadModularDatasourceController.php
@@ -35,7 +35,26 @@
if (isset($sources[$class])) {
$source = $sources[$class];
- $source->setParameters($request->getRequestData());
+
+ $parameters = array();
+
+ $raw_parameters = $request->getStr('parameters');
+ if (strlen($raw_parameters)) {
+ try {
+ $parameters = phutil_json_decode($raw_parameters);
+ } catch (PhutilJSONParserException $ex) {
+ return $this->newDialog()
+ ->setTitle(pht('Invalid Parameters'))
+ ->appendParagraph(
+ pht(
+ 'The HTTP parameter named "parameters" for this request is '.
+ 'not a valid JSON parameter. JSON is required. Exception: %s',
+ $ex->getMessage()))
+ ->addCancelButton('/');
+ }
+ }
+
+ $source->setParameters($parameters);
$source->setViewer($viewer);
// NOTE: Wrapping the source in a Composite datasource ensures we perform
diff --git a/src/applications/typeahead/datasource/PhabricatorTypeaheadDatasource.php b/src/applications/typeahead/datasource/PhabricatorTypeaheadDatasource.php
--- a/src/applications/typeahead/datasource/PhabricatorTypeaheadDatasource.php
+++ b/src/applications/typeahead/datasource/PhabricatorTypeaheadDatasource.php
@@ -100,7 +100,7 @@
public function getDatasourceURI() {
$uri = new PhutilURI('/typeahead/class/'.get_class($this).'/');
- $uri->setQueryParams($this->parameters);
+ $uri->setQueryParams($this->newURIParameters());
return (string)$uri;
}
@@ -110,10 +110,22 @@
}
$uri = new PhutilURI('/typeahead/browse/'.get_class($this).'/');
- $uri->setQueryParams($this->parameters);
+ $uri->setQueryParams($this->newURIParameters());
return (string)$uri;
}
+ private function newURIParameters() {
+ if (!$this->parameters) {
+ return array();
+ }
+
+ $map = array(
+ 'parameters' => phutil_json_encode($this->parameters),
+ );
+
+ return $map;
+ }
+
abstract public function getPlaceholderText();
public function getBrowseTitle() {

File Metadata

Mime Type
text/plain
Expires
Thu, May 9, 8:46 PM (3 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6277165
Default Alt Text
D20134.diff (2 KB)

Event Timeline