Allow configuring default enabled extensions as part of installation (#2757)

This is needed for the testing library
This commit is contained in:
Alexander Skvortsov 2021-04-07 22:47:54 -04:00 committed by GitHub
parent 9a9a644c56
commit 809e0d2ae0
2 changed files with 34 additions and 20 deletions

View File

@ -22,6 +22,7 @@ class Installation
private $debug = false; private $debug = false;
private $baseUrl; private $baseUrl;
private $customSettings = []; private $customSettings = [];
private $enabledExtensions = null;
/** @var DatabaseConfig */ /** @var DatabaseConfig */
private $dbConfig; private $dbConfig;
@ -78,6 +79,13 @@ class Installation
return $this; return $this;
} }
public function extensions($enabledExtensions)
{
$this->enabledExtensions = $enabledExtensions;
return $this;
}
public function adminUser(AdminUser $admin) public function adminUser(AdminUser $admin)
{ {
$this->adminUser = $admin; $this->adminUser = $admin;
@ -152,7 +160,7 @@ class Installation
}); });
$pipeline->pipe(function () { $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; return $pipeline;

View File

@ -22,6 +22,23 @@ use League\Flysystem\Filesystem;
class EnableBundledExtensions implements Step 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 * @var ConnectionInterface
*/ */
@ -37,11 +54,17 @@ class EnableBundledExtensions implements Step
*/ */
private $assetPath; 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->database = $database;
$this->vendorPath = $vendorPath; $this->vendorPath = $vendorPath;
$this->assetPath = $assetPath; $this->assetPath = $assetPath;
$this->enabledExtensions = $enabledExtensions ?? self::EXTENSION_WHITELIST;
} }
public function getMessage() 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 * @return \Illuminate\Support\Collection
*/ */
@ -109,7 +115,7 @@ class EnableBundledExtensions implements Step
return $extension; return $extension;
})->filter(function (Extension $extension) { })->filter(function (Extension $extension) {
return in_array($extension->getId(), self::EXTENSION_WHITELIST); return in_array($extension->getId(), $this->enabledExtensions);
})->sortBy(function (Extension $extension) { })->sortBy(function (Extension $extension) {
return $extension->getTitle(); return $extension->getTitle();
})->mapWithKeys(function (Extension $extension) { })->mapWithKeys(function (Extension $extension) {