mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 22:28:51 +00:00
[ticket/14492] Apply fixes to update extensions task
The regex was also simplified. PHPBB3-14492
This commit is contained in:
parent
ade5183ba1
commit
4451db9f22
2 changed files with 38 additions and 4 deletions
|
@ -109,7 +109,7 @@ class install_extensions extends \phpbb\install\task_base
|
||||||
foreach ($this->finder as $file)
|
foreach ($this->finder as $file)
|
||||||
{
|
{
|
||||||
/** @var \SplFileInfo $file */
|
/** @var \SplFileInfo $file */
|
||||||
$ext_name = preg_replace('#(.+[\\/\\\]ext[\\/\\\])([^\\/\\\]+)[\\/\\\]([^\\/\\\]+)#', '$2/$3', dirname($file->getRealPath()));
|
$ext_name = preg_replace('#(.+[\\/\\\]ext[\\/\\\])(\w+)[\\/\\\](\w+)#', '$2/$3', dirname($file->getRealPath()));
|
||||||
|
|
||||||
if ($this->extension_manager->is_available($ext_name))
|
if ($this->extension_manager->is_available($ext_name))
|
||||||
{
|
{
|
||||||
|
|
|
@ -59,6 +59,12 @@ class enable_extensions extends task_base
|
||||||
/** @var Finder */
|
/** @var Finder */
|
||||||
protected $finder;
|
protected $finder;
|
||||||
|
|
||||||
|
/** @var string Extension table */
|
||||||
|
protected $extension_table;
|
||||||
|
|
||||||
|
/** @var \phpbb\db\driver\driver_interface */
|
||||||
|
protected $db;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
|
@ -72,11 +78,13 @@ class enable_extensions extends task_base
|
||||||
{
|
{
|
||||||
$this->install_config = $install_config;
|
$this->install_config = $install_config;
|
||||||
$this->iohandler = $iohandler;
|
$this->iohandler = $iohandler;
|
||||||
|
$this->extension_table = $container->get_parameter('tables.ext');
|
||||||
|
|
||||||
$this->log = $container->get('log');
|
$this->log = $container->get('log');
|
||||||
$this->user = $container->get('user');
|
$this->user = $container->get('user');
|
||||||
$this->extension_manager = $container->get('ext.manager');
|
$this->extension_manager = $container->get('ext.manager');
|
||||||
$this->config = $container->get('config');
|
$this->config = $container->get('config');
|
||||||
|
$this->db = $container->get('dbal.conn');
|
||||||
$this->finder = new Finder();
|
$this->finder = new Finder();
|
||||||
$this->finder->in($phpbb_root_path . 'ext/')
|
$this->finder->in($phpbb_root_path . 'ext/')
|
||||||
->ignoreUnreadableDirs()
|
->ignoreUnreadableDirs()
|
||||||
|
@ -111,7 +119,7 @@ class enable_extensions extends task_base
|
||||||
foreach ($this->finder as $file)
|
foreach ($this->finder as $file)
|
||||||
{
|
{
|
||||||
/** @var \SplFileInfo $file */
|
/** @var \SplFileInfo $file */
|
||||||
$ext_name = preg_replace('#(.+ext[\\/\\\])#', '', dirname($file->getRealPath()));
|
$ext_name = preg_replace('#(.+[\\/\\\]ext[\\/\\\])(\w+)[\\/\\\](\w+)#', '$2/$3', dirname($file->getRealPath()));
|
||||||
|
|
||||||
// Skip extensions that were not added or updated during update
|
// 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'])))
|
||||||
|
@ -128,9 +136,9 @@ class enable_extensions extends task_base
|
||||||
if ($this->extension_manager->is_available($ext_name))
|
if ($this->extension_manager->is_available($ext_name))
|
||||||
{
|
{
|
||||||
$this->extension_manager->enable($ext_name);
|
$this->extension_manager->enable($ext_name);
|
||||||
$this->extension_manager->load_extensions();
|
$extensions = $this->get_extensions();
|
||||||
|
|
||||||
if (!$this->extension_manager->is_enabled($ext_name))
|
if (isset($extensions[$ext_name]) && $extensions[$ext_name]['ext_active'])
|
||||||
{
|
{
|
||||||
// Create log
|
// Create log
|
||||||
$this->log->add('admin', ANONYMOUS, '', 'LOG_EXT_ENABLE', time(), array($ext_name));
|
$this->log->add('admin', ANONYMOUS, '', 'LOG_EXT_ENABLE', time(), array($ext_name));
|
||||||
|
@ -159,4 +167,30 @@ class enable_extensions extends task_base
|
||||||
{
|
{
|
||||||
return 'TASK_UPDATE_EXTENSIONS';
|
return 'TASK_UPDATE_EXTENSIONS';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get extensions from database
|
||||||
|
*
|
||||||
|
* @return array List of extensions
|
||||||
|
*/
|
||||||
|
private function get_extensions()
|
||||||
|
{
|
||||||
|
$sql = 'SELECT *
|
||||||
|
FROM ' . $this->extension_table;
|
||||||
|
|
||||||
|
$result = $this->db->sql_query($sql);
|
||||||
|
$extensions_row = $this->db->sql_fetchrowset($result);
|
||||||
|
$this->db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$extensions = array();
|
||||||
|
|
||||||
|
foreach ($extensions_row as $extension)
|
||||||
|
{
|
||||||
|
$extensions[$extension['ext_name']] = $extension;
|
||||||
|
}
|
||||||
|
|
||||||
|
ksort($extensions);
|
||||||
|
|
||||||
|
return $extensions;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue