diff --git a/src/applications/base/PhabricatorApplication.php b/src/applications/base/PhabricatorApplication.php index 6bed54389a..0a397e1f4b 100644 --- a/src/applications/base/PhabricatorApplication.php +++ b/src/applications/base/PhabricatorApplication.php @@ -227,6 +227,20 @@ abstract class PhabricatorApplication { /* -( Application Management )--------------------------------------------- */ + public static function getByClass($class_name) { + + $selected = null; + $applications = PhabricatorApplication::getAllApplications(); + + foreach ($applications as $application) { + if (get_class($application) == $class_name) { + $selected = $application; + break; + } + } + return $selected; + } + public static function getAllApplications() { $classes = id(new PhutilSymbolLoader()) diff --git a/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php b/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php index 460dd6b0f1..259b3c7439 100644 --- a/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php +++ b/src/applications/meta/controller/PhabricatorApplicationDetailViewController.php @@ -13,15 +13,7 @@ final class PhabricatorApplicationDetailViewController $request = $this->getRequest(); $user = $request->getUser(); - $selected = null; - $applications = PhabricatorApplication::getAllApplications(); - - foreach ($applications as $application) { - if (get_class($application) == $this->application) { - $selected = $application; - break; - } - } + $selected = PhabricatorApplication::getByClass($this->application); if (!$selected) { return new Aphront404Response(); diff --git a/src/applications/meta/controller/PhabricatorApplicationUninstallController.php b/src/applications/meta/controller/PhabricatorApplicationUninstallController.php index 7ba660d3cf..f9b8ae3f83 100644 --- a/src/applications/meta/controller/PhabricatorApplicationUninstallController.php +++ b/src/applications/meta/controller/PhabricatorApplicationUninstallController.php @@ -14,7 +14,12 @@ final class PhabricatorApplicationUninstallController public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); - $app_name = substr($this->application, strlen('PhabricatorApplication')); + + $selected = PhabricatorApplication::getByClass($this->application); + + if (!$selected) { + return new Aphront404Response(); + } if ($request->isDialogFormPost()) { $this->manageApplication(); @@ -26,14 +31,18 @@ final class PhabricatorApplicationUninstallController $dialog = id(new AphrontDialogView()) ->setUser($user) ->setTitle('Confirmation') - ->appendChild('Install '. $app_name. ' application ?') + ->appendChild( + 'Install '. $selected->getName(). ' application ?' + ) ->addSubmitButton('Install') ->addCancelButton('/applications/view/'.$this->application); } else { $dialog = id(new AphrontDialogView()) ->setUser($user) ->setTitle('Confirmation') - ->appendChild('Really Uninstall '. $app_name. ' application ?') + ->appendChild( + 'Really Uninstall '. $selected->getName(). ' application ?' + ) ->addSubmitButton('Uninstall') ->addCancelButton('/applications/view/'.$this->application); }