From 843daf633d1b38f4d2ee0e0abf27169ef8ca34dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Sevilla=20Mart=C3=ADn?= <6401250+datitisev@users.noreply.github.com> Date: Thu, 28 Jan 2021 19:41:04 -0500 Subject: [PATCH] Use extension names instead of IDs when erroring on enable/disable reqs (#2563) --- .../Exception/DependentExtensionsException.php | 15 ++------------- .../DependentExtensionsExceptionHandler.php | 5 +++-- .../Exception/MissingDependenciesException.php | 15 ++------------- .../MissingDependenciesExceptionHandler.php | 5 +++-- src/Extension/Extension.php | 8 ++++++++ src/Extension/ExtensionManager.php | 15 ++++++++++++++- src/Install/Steps/EnableBundledExtensions.php | 2 +- 7 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/Extension/Exception/DependentExtensionsException.php b/src/Extension/Exception/DependentExtensionsException.php index ab2634706..3966cbaf9 100644 --- a/src/Extension/Exception/DependentExtensionsException.php +++ b/src/Extension/Exception/DependentExtensionsException.php @@ -11,6 +11,7 @@ namespace Flarum\Extension\Exception; use Exception; use Flarum\Extension\Extension; +use Flarum\Extension\ExtensionManager; /** * This exception is thrown when someone attempts to disable an extension @@ -30,18 +31,6 @@ class DependentExtensionsException extends Exception $this->extension = $extension; $this->dependent_extensions = $dependent_extensions; - parent::__construct($extension->getId().' could not be disabled, because it is a dependency of: '.implode(', ', $this->getDependentExtensionIds())); - } - - /** - * Get array of IDs for extensions that depend on this extension. - * - * @return array - */ - public function getDependentExtensionIds() - { - return array_map(function (Extension $extension) { - return $extension->getId(); - }, $this->dependent_extensions); + parent::__construct($extension->getTitle().' could not be disabled, because it is a dependency of: '.implode(', ', ExtensionManager::pluckTitles($dependent_extensions))); } } diff --git a/src/Extension/Exception/DependentExtensionsExceptionHandler.php b/src/Extension/Exception/DependentExtensionsExceptionHandler.php index a8ad87727..d54baa5e4 100644 --- a/src/Extension/Exception/DependentExtensionsExceptionHandler.php +++ b/src/Extension/Exception/DependentExtensionsExceptionHandler.php @@ -9,6 +9,7 @@ namespace Flarum\Extension\Exception; +use Flarum\Extension\ExtensionManager; use Flarum\Foundation\ErrorHandling\HandledError; class DependentExtensionsExceptionHandler @@ -26,8 +27,8 @@ class DependentExtensionsExceptionHandler { return [ [ - 'extension' => $e->extension->getId(), - 'extensions' => $e->getDependentExtensionIds(), + 'extension' => $e->extension->getTitle(), + 'extensions' => ExtensionManager::pluckTitles($e->dependent_extensions), ] ]; } diff --git a/src/Extension/Exception/MissingDependenciesException.php b/src/Extension/Exception/MissingDependenciesException.php index 114348ca4..cd2407261 100644 --- a/src/Extension/Exception/MissingDependenciesException.php +++ b/src/Extension/Exception/MissingDependenciesException.php @@ -11,6 +11,7 @@ namespace Flarum\Extension\Exception; use Exception; use Flarum\Extension\Extension; +use Flarum\Extension\ExtensionManager; /** * This exception is thrown when someone attempts to enable an extension @@ -30,18 +31,6 @@ class MissingDependenciesException extends Exception $this->extension = $extension; $this->missing_dependencies = $missing_dependencies; - parent::__construct($extension->getId().' could not be enabled, because it depends on: '.implode(', ', $this->getMissingDependencyIds())); - } - - /** - * Get array of IDs for missing (disabled) extensions that this extension depends on. - * - * @return array - */ - public function getMissingDependencyIds() - { - return array_map(function (Extension $extension) { - return $extension->getId(); - }, $this->missing_dependencies); + parent::__construct($extension->getTitle().' could not be enabled, because it depends on: '.implode(', ', ExtensionManager::pluckTitles($missing_dependencies))); } } diff --git a/src/Extension/Exception/MissingDependenciesExceptionHandler.php b/src/Extension/Exception/MissingDependenciesExceptionHandler.php index 39f8980cc..f04eba709 100644 --- a/src/Extension/Exception/MissingDependenciesExceptionHandler.php +++ b/src/Extension/Exception/MissingDependenciesExceptionHandler.php @@ -9,6 +9,7 @@ namespace Flarum\Extension\Exception; +use Flarum\Extension\ExtensionManager; use Flarum\Foundation\ErrorHandling\HandledError; class MissingDependenciesExceptionHandler @@ -26,8 +27,8 @@ class MissingDependenciesExceptionHandler { return [ [ - 'extension' => $e->extension->getId(), - 'extensions' => $e->getMissingDependencyIds(), + 'extension' => $e->extension->getTitle(), + 'extensions' => ExtensionManager::pluckTitles($e->missing_dependencies), ] ]; } diff --git a/src/Extension/Extension.php b/src/Extension/Extension.php index 84e3fc702..0844164c4 100644 --- a/src/Extension/Extension.php +++ b/src/Extension/Extension.php @@ -278,6 +278,14 @@ class Extension implements Arrayable return $this->id; } + /** + * @return string + */ + public function getTitle() + { + return $this->composerJsonAttribute('extra.flarum-extension.title'); + } + /** * @return string */ diff --git a/src/Extension/ExtensionManager.php b/src/Extension/ExtensionManager.php index 7b393dc5a..6f5ee9ba8 100644 --- a/src/Extension/ExtensionManager.php +++ b/src/Extension/ExtensionManager.php @@ -114,7 +114,7 @@ class ExtensionManager } $this->extensions = $extensions->sortBy(function ($extension, $name) { - return $extension->composerJsonAttribute('extra.flarum-extension.title'); + return $extension->getTitle(); }); } @@ -369,4 +369,17 @@ class ExtensionManager return isset($enabled[$extension]); } + + /** + * Returns the titles of the extensions passed. + * + * @param array $exts + * @return string[] + */ + public static function pluckTitles(array $exts) + { + return array_map(function (Extension $extension) { + return $extension->getTitle(); + }, $exts); + } } diff --git a/src/Install/Steps/EnableBundledExtensions.php b/src/Install/Steps/EnableBundledExtensions.php index 14167e527..63a12a688 100644 --- a/src/Install/Steps/EnableBundledExtensions.php +++ b/src/Install/Steps/EnableBundledExtensions.php @@ -111,7 +111,7 @@ class EnableBundledExtensions implements Step })->filter(function (Extension $extension) { return in_array($extension->getId(), self::EXTENSION_WHITELIST); })->sortBy(function (Extension $extension) { - return $extension->composerJsonAttribute('extra.flarum-extension.title'); + return $extension->getTitle(); })->mapWithKeys(function (Extension $extension) { return [$extension->getId() => $extension]; });