diff --git a/src/Install/Installation.php b/src/Install/Installation.php index 0ee3e5248..243614da0 100644 --- a/src/Install/Installation.php +++ b/src/Install/Installation.php @@ -22,6 +22,7 @@ class Installation private $debug = false; private $baseUrl; private $customSettings = []; + private $enabledExtensions = null; /** @var DatabaseConfig */ private $dbConfig; @@ -78,6 +79,13 @@ class Installation return $this; } + public function extensions($enabledExtensions) + { + $this->enabledExtensions = $enabledExtensions; + + return $this; + } + public function adminUser(AdminUser $admin) { $this->adminUser = $admin; @@ -152,7 +160,7 @@ class Installation }); $pipeline->pipe(function () { - return new Steps\EnableBundledExtensions($this->db, $this->paths->vendor, $this->getAssetPath()); + return new Steps\EnableBundledExtensions($this->db, $this->paths->vendor, $this->getAssetPath(), $this->enabledExtensions); }); return $pipeline; diff --git a/src/Install/Steps/EnableBundledExtensions.php b/src/Install/Steps/EnableBundledExtensions.php index 63a12a688..496a44fe8 100644 --- a/src/Install/Steps/EnableBundledExtensions.php +++ b/src/Install/Steps/EnableBundledExtensions.php @@ -22,6 +22,23 @@ use League\Flysystem\Filesystem; class EnableBundledExtensions implements Step { + const EXTENSION_WHITELIST = [ + 'flarum-approval', + 'flarum-bbcode', + 'flarum-emoji', + 'flarum-lang-english', + 'flarum-flags', + 'flarum-likes', + 'flarum-lock', + 'flarum-markdown', + 'flarum-mentions', + 'flarum-statistics', + 'flarum-sticky', + 'flarum-subscriptions', + 'flarum-suspend', + 'flarum-tags', + ]; + /** * @var ConnectionInterface */ @@ -37,11 +54,17 @@ class EnableBundledExtensions implements Step */ private $assetPath; - public function __construct(ConnectionInterface $database, $vendorPath, $assetPath) + /** + * @var string[]|null + */ + private $enabledExtensions; + + public function __construct(ConnectionInterface $database, $vendorPath, $assetPath, $enabledExtensions = null) { $this->database = $database; $this->vendorPath = $vendorPath; $this->assetPath = $assetPath; + $this->enabledExtensions = $enabledExtensions ?? self::EXTENSION_WHITELIST; } public function getMessage() @@ -66,23 +89,6 @@ class EnableBundledExtensions implements Step ); } - const EXTENSION_WHITELIST = [ - 'flarum-approval', - 'flarum-bbcode', - 'flarum-emoji', - 'flarum-lang-english', - 'flarum-flags', - 'flarum-likes', - 'flarum-lock', - 'flarum-markdown', - 'flarum-mentions', - 'flarum-statistics', - 'flarum-sticky', - 'flarum-subscriptions', - 'flarum-suspend', - 'flarum-tags', - ]; - /** * @return \Illuminate\Support\Collection */ @@ -109,7 +115,7 @@ class EnableBundledExtensions implements Step return $extension; })->filter(function (Extension $extension) { - return in_array($extension->getId(), self::EXTENSION_WHITELIST); + return in_array($extension->getId(), $this->enabledExtensions); })->sortBy(function (Extension $extension) { return $extension->getTitle(); })->mapWithKeys(function (Extension $extension) {