diff --git a/phpBB/config/installer/container/services_install_finish.yml b/phpBB/config/installer/container/services_install_finish.yml index eeddf14070..fbacb9b672 100644 --- a/phpBB/config/installer/container/services_install_finish.yml +++ b/phpBB/config/installer/container/services_install_finish.yml @@ -7,6 +7,16 @@ services: tags: - { name: install_finish, order: 10 } + installer.install_finish.install_viglink: + class: phpbb\install\module\install_finish\task\install_extensions + arguments: + - '@installer.helper.container_factory' + - '@installer.helper.config' + - '@installer.helper.iohandler' + - '%core.root_path%' + tags: + - { name: install_finish, order: 20 } + installer.install_finish.notify_user: class: phpbb\install\module\install_finish\task\notify_user arguments: @@ -16,16 +26,7 @@ services: - '%core.root_path%' - '%core.php_ext%' tags: - - { name: install_finish, order: 20 } - - installer.install_finish.install_viglink: - class: phpbb\install\module\install_finish\task\install_viglink - arguments: - - @installer.helper.container_factory - - @installer.helper.config - - @installer.helper.iohandler - tags: - - { name: install_finish, order: 15 } + - { name: install_finish, order: 30 } installer.module.install_finish_collection: class: phpbb\di\ordered_service_collection diff --git a/phpBB/language/en/install.php b/phpBB/language/en/install.php index 73f7f400a6..d1bb5842df 100644 --- a/phpBB/language/en/install.php +++ b/phpBB/language/en/install.php @@ -301,7 +301,7 @@ $lang = array_merge($lang, array( 'TASK_ADD_MODULES' => 'Installing modules', // Install finish tasks - 'TASK_INSTALL_VIGLINK' => 'Installing viglink extension', + 'TASK_INSTALL_EXTENSIONS' => 'Installing packaged extensions', 'TASK_NOTIFY_USER' => 'Sending notification e-mail', 'TASK_POPULATE_MIGRATIONS' => 'Populating migrations', diff --git a/phpBB/phpbb/install/module/install_finish/task/install_viglink.php b/phpBB/phpbb/install/module/install_finish/task/install_extensions.php similarity index 63% rename from phpBB/phpbb/install/module/install_finish/task/install_viglink.php rename to phpBB/phpbb/install/module/install_finish/task/install_extensions.php index 1facb1eaf4..6b2881aa2f 100644 --- a/phpBB/phpbb/install/module/install_finish/task/install_viglink.php +++ b/phpBB/phpbb/install/module/install_finish/task/install_extensions.php @@ -14,9 +14,9 @@ namespace phpbb\install\module\install_finish\task; /** - * Installs viglink extension with default config + * Installs extensions that exist in ext folder upon install */ -class install_viglink extends \phpbb\install\task_base +class install_extensions extends \phpbb\install\task_base { /** * @var \phpbb\install\helper\config @@ -46,14 +46,18 @@ class install_viglink extends \phpbb\install\task_base /** @var \phpbb\extension\manager */ protected $extension_manager; + /** @var \Symfony\Component\Finder\Finder */ + protected $finder; + /** * Constructor * * @param \phpbb\install\helper\container_factory $container * @param \phpbb\install\helper\config $install_config * @param \phpbb\install\helper\iohandler\iohandler_interface $iohandler + * @param string $phpbb_root_path phpBB root path */ - public function __construct(\phpbb\install\helper\container_factory $container, \phpbb\install\helper\config $install_config, \phpbb\install\helper\iohandler\iohandler_interface $iohandler) + public function __construct(\phpbb\install\helper\container_factory $container, \phpbb\install\helper\config $install_config, \phpbb\install\helper\iohandler\iohandler_interface $iohandler, $phpbb_root_path) { $this->install_config = $install_config; $this->iohandler = $iohandler; @@ -62,6 +66,12 @@ class install_viglink extends \phpbb\install\task_base $this->user = $container->get('user'); $this->extension_manager = $container->get('ext.manager'); $this->config = $container->get('config'); + $this->finder = new \Symfony\Component\Finder\Finder(); + $this->finder->in($phpbb_root_path . 'ext/') + ->ignoreUnreadableDirs() + ->depth('< 3') + ->files() + ->name('composer.json'); // Make sure asset version exists in config. Otherwise we might try to // insert the assets_version setting into the database and cause a @@ -83,21 +93,27 @@ class install_viglink extends \phpbb\install\task_base $this->user->setup(array('common', 'acp/common', 'cli')); $name = 'phpbb/viglink'; - // Should be available by default but make sure it is - if ($this->extension_manager->is_available($name)) + // Find available extensions + foreach ($this->finder as $file) { - $this->extension_manager->enable($name); - $this->extension_manager->load_extensions(); + /** @var \SplFileInfo $file */ + $ext_name = preg_replace('#(.+ext[\\/\\\])#', '', dirname($file->getRealPath())); - if (!$this->extension_manager->is_enabled($name)) + if ($this->extension_manager->is_available($ext_name)) { - // Create log - $this->log->add('admin', ANONYMOUS, '', 'LOG_EXT_ENABLE', time(), array($name)); + $this->extension_manager->enable($ext_name); + $this->extension_manager->load_extensions(); + + if (!$this->extension_manager->is_enabled($ext_name)) + { + // Create log + $this->log->add('admin', ANONYMOUS, '', 'LOG_EXT_ENABLE', time(), array($ext_name)); + } + } + else + { + $this->iohandler->add_log_message('CLI_EXTENSION_ENABLE_FAILURE', array($ext_name)); } - } - else - { - $this->iohandler->add_log_message('CLI_EXTENSION_ENABLE_FAILURE', array('phpbb/viglink')); } } @@ -114,6 +130,6 @@ class install_viglink extends \phpbb\install\task_base */ public function get_task_lang_name() { - return 'TASK_INSTALL_VIGLINK'; + return 'TASK_INSTALL_EXTENSIONS'; } }