diff --git a/src/applications/base/PhabricatorApplication.php b/src/applications/base/PhabricatorApplication.php index 938073273b..ebe44f0f89 100644 --- a/src/applications/base/PhabricatorApplication.php +++ b/src/applications/base/PhabricatorApplication.php @@ -82,6 +82,13 @@ abstract class PhabricatorApplication return false; } + /** + * Return true if this application should not appear in application lists in + * the UI. Primarily intended for unit test applications or other + * pseudo-applications. + * + * @return bool True to remove application from UI lists. + */ public function isUnlisted() { return false; } @@ -89,6 +96,8 @@ abstract class PhabricatorApplication /** * Returns true if an application is first-party (developed by Phacility) * and false otherwise. + * + * @return bool True if this application is developed by Phacility. */ final public function isFirstParty() { $where = id(new ReflectionClass($this))->getFileName(); diff --git a/src/applications/meta/controller/PhabricatorApplicationsListController.php b/src/applications/meta/controller/PhabricatorApplicationsListController.php index 5a05aee538..0a358fecc1 100644 --- a/src/applications/meta/controller/PhabricatorApplicationsListController.php +++ b/src/applications/meta/controller/PhabricatorApplicationsListController.php @@ -30,10 +30,6 @@ final class PhabricatorApplicationsListController $applications = msort($applications, 'getName'); foreach ($applications as $application) { - if ($application->isUnlisted()) { - continue; - } - $item = id(new PHUIObjectItemView()) ->setHeader($application->getName()) ->setHref('/applications/view/'.get_class($application).'/') diff --git a/src/applications/meta/query/PhabricatorAppSearchEngine.php b/src/applications/meta/query/PhabricatorAppSearchEngine.php index 9824664948..d3c82e6d79 100644 --- a/src/applications/meta/query/PhabricatorAppSearchEngine.php +++ b/src/applications/meta/query/PhabricatorAppSearchEngine.php @@ -21,7 +21,8 @@ final class PhabricatorAppSearchEngine public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { $query = id(new PhabricatorApplicationQuery()) - ->setOrder(PhabricatorApplicationQuery::ORDER_NAME); + ->setOrder(PhabricatorApplicationQuery::ORDER_NAME) + ->withUnlisted(false); $name = $saved->getParameter('name'); if (strlen($name)) { diff --git a/src/applications/meta/query/PhabricatorApplicationQuery.php b/src/applications/meta/query/PhabricatorApplicationQuery.php index c15ece6eb6..30106cd1f2 100644 --- a/src/applications/meta/query/PhabricatorApplicationQuery.php +++ b/src/applications/meta/query/PhabricatorApplicationQuery.php @@ -7,6 +7,7 @@ final class PhabricatorApplicationQuery private $beta; private $firstParty; private $nameContains; + private $unlisted; private $classes; private $phids; @@ -35,6 +36,11 @@ final class PhabricatorApplicationQuery return $this; } + public function withUnlisted($unlisted) { + $this->unlisted = $unlisted; + return $this; + } + public function withClasses(array $classes) { $this->classes = $classes; return $this; @@ -103,6 +109,14 @@ final class PhabricatorApplicationQuery } } + if ($this->unlisted !== null) { + foreach ($apps as $key => $app) { + if ($app->isUnlisted() != $this->unlisted) { + unset($apps[$key]); + } + } + } + switch ($this->order) { case self::ORDER_NAME: $apps = msort($apps, 'getName'); diff --git a/src/applications/settings/panel/PhabricatorSettingsPanelHomePreferences.php b/src/applications/settings/panel/PhabricatorSettingsPanelHomePreferences.php index 37480acf35..13a46ba0ef 100644 --- a/src/applications/settings/panel/PhabricatorSettingsPanelHomePreferences.php +++ b/src/applications/settings/panel/PhabricatorSettingsPanelHomePreferences.php @@ -21,7 +21,11 @@ final class PhabricatorSettingsPanelHomePreferences require_celerity_resource('phabricator-settings-css'); - $apps = PhabricatorApplication::getAllInstalledApplications(); + $apps = id(new PhabricatorApplicationQuery()) + ->setViewer($user) + ->withUnlisted(false) + ->execute(); + $pref_tiles = PhabricatorUserPreferences::PREFERENCE_APP_TILES; $tiles = $preferences->getPreference($pref_tiles, array()); @@ -137,7 +141,7 @@ final class PhabricatorSettingsPanelHomePreferences )); $app_column = hsprintf( - "%s
Default: %s" + "%s
Default: %s" , $app->getName(), $default_name); $rows[] = array( @@ -176,14 +180,12 @@ final class PhabricatorSettingsPanelHomePreferences $panel = id(new AphrontPanelView()) - ->setHeader($group_name) - ->addClass('phabricator-settings-panelview') - ->appendChild($table) - ->setNoBackground(); - + ->setHeader($group_name) + ->addClass('phabricator-settings-panelview') + ->appendChild($table) + ->setNoBackground(); $output[] = $panel; - } $form @@ -205,9 +207,7 @@ final class PhabricatorSettingsPanelHomePreferences ->setFormError($error_view) ->setForm($form); - return array( - $form_box, - ); + return $form_box; } }