1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-31 22:10:45 +02:00

[ticket/14492] Allow specifying extensions to update & install

PHPBB3-14492
This commit is contained in:
Marc Alexander
2016-02-24 15:05:01 +01:00
parent eb1ade6768
commit 65d6e338a9
4 changed files with 34 additions and 1 deletions

View File

@@ -13,6 +13,8 @@
namespace phpbb\install\module\install_finish\task;
use Symfony\Component\Console\Input\ArgvInput;
/**
* Installs extensions that exist in ext folder upon install
*/
@@ -100,12 +102,19 @@ class install_extensions extends \phpbb\install\task_base
$this->user->session_begin();
$this->user->setup(array('common', 'acp/common', 'cli'));
$install_extensions = $this->iohandler->get_input('install-extensions', array());
// Find available extensions
foreach ($this->finder as $file)
{
/** @var \SplFileInfo $file */
$ext_name = preg_replace('#(.+[\\/\\\]ext[\\/\\\])(\w+)[\\/\\\](\w+)#', '$2/$3', dirname($file->getRealPath()));
if (!empty($install_extensions) && !in_array($ext_name, $install_extensions))
{
continue;
}
if ($this->extension_manager->is_available($ext_name))
{
$this->extension_manager->enable($ext_name);

View File

@@ -18,6 +18,7 @@ use phpbb\install\helper\config;
use phpbb\install\helper\iohandler\iohandler_interface;
use phpbb\install\helper\update_helper;
use phpbb\install\task_base;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Finder\Finder;
/**
@@ -111,6 +112,9 @@ class enable_extensions extends task_base
$this->user->session_begin();
$this->user->setup(array('common', 'acp/common', 'cli'));
$input = new ArgvInput();
$update_extensions = explode(',', $input->getArgument('update-extensions'));
$update_info = $this->install_config->get('update_info_unprocessed', array());
if (!empty($update_info))
@@ -122,7 +126,8 @@ class enable_extensions extends task_base
$ext_name = preg_replace('#(.+[\\/\\\]ext[\\/\\\])(\w+)[\\/\\\](\w+)#', '$2/$3', dirname($file->getRealPath()));
// Skip extensions that were not added or updated during update
if (!count(preg_grep('#ext/' . $ext_name . '#', $update_info['files'])))
if (!count(preg_grep('#ext/' . $ext_name . '#', $update_info['files'])) &&
!in_array($ext_name, $update_extensions) && $ext_name !== 'phpbb/viglink')
{
continue;
}