Path: blob/master/src/applications/dashboard/editfield/PhabricatorDashboardQueryPanelQueryEditField.php
13450 views
<?php12final class PhabricatorDashboardQueryPanelQueryEditField3extends PhabricatorEditField {45private $applicationControlID;67public function setApplicationControlID($id) {8$this->applicationControlID = $id;9return $this;10}1112public function getApplicationControlID() {13return $this->applicationControlID;14}1516protected function newControl() {17$engines = id(new PhutilClassMapQuery())18->setAncestorClass('PhabricatorApplicationSearchEngine')19->setFilterMethod('canUseInPanelContext')20->execute();2122$value = $this->getValueForControl();2324$queries = array();25$seen = false;26foreach ($engines as $engine_class => $engine) {27$engine->setViewer($this->getViewer());28$engine_queries = $engine->loadEnabledNamedQueries();29$query_map = mpull($engine_queries, 'getQueryName', 'getQueryKey');30asort($query_map);3132foreach ($query_map as $key => $name) {33$queries[$engine_class][] = array('key' => $key, 'name' => $name);34if ($key == $value) {35$seen = true;36}37}38}3940if (strlen($value) && !$seen) {41$name = pht('Custom Query ("%s")', $value);42} else {43$name = pht('(None)');44}4546$options = array($value => $name);4748$application_id = $this->getApplicationControlID();49$control_id = celerity_generate_unique_node_id();5051Javelin::initBehavior(52'dashboard-query-panel-select',53array(54'applicationID' => $application_id,55'queryID' => $control_id,56'options' => $queries,57'value' => array(58'key' => strlen($value) ? $value : null,59'name' => $name,60),61));6263return id(new AphrontFormSelectControl())64->setID($control_id)65->setOptions($options);66}6768protected function newHTTPParameterType() {69return new AphrontSelectHTTPParameterType();70}7172protected function newConduitParameterType() {73return new ConduitStringParameterType();74}7576}777879