mirror of
https://github.com/phpbb/phpbb.git
synced 2025-03-21 16:10:38 +01:00
[ticket/16284] Adjust create schema and add tables to tests
PHPBB3-16284
This commit is contained in:
parent
af7dcb9ba2
commit
2b65ce123c
@ -7,6 +7,7 @@ services:
|
||||
- '@filesystem'
|
||||
- '%core.root_path%'
|
||||
- '%core.php_ext%'
|
||||
- '%tables%'
|
||||
tags:
|
||||
- { name: install_database_install, order: 10 }
|
||||
|
||||
|
@ -52,7 +52,15 @@ $db = new \phpbb\db\driver\sqlite3();
|
||||
$factory = new \phpbb\db\tools\factory();
|
||||
$db_tools = $factory->get($db, true);
|
||||
|
||||
$schema_generator = new \phpbb\db\migration\schema_generator($classes, new \phpbb\config\config(array()), $db, $db_tools, $phpbb_root_path, $phpEx, $table_prefix);
|
||||
$tables_data = \Symfony\Component\Yaml\Yaml::parseFile($phpbb_root_path . '/config/default/container/tables.yml');
|
||||
$tables = [];
|
||||
|
||||
foreach ($tables_data['parameters'] as $parameter => $table)
|
||||
{
|
||||
$tables[str_replace('tables.', '', $parameter)] = str_replace('%core.table_prefix%', $table_prefix, $table);
|
||||
}
|
||||
|
||||
$schema_generator = new \phpbb\db\migration\schema_generator($classes, new \phpbb\config\config(array()), $db, $db_tools, $phpbb_root_path, $phpEx, $table_prefix, $tables);
|
||||
$schema_data = $schema_generator->get_schema();
|
||||
|
||||
$fp = fopen($schema_path . 'schema.json', 'wb');
|
||||
|
@ -42,13 +42,24 @@ class schema_generator
|
||||
/** @var array */
|
||||
protected $tables;
|
||||
|
||||
/** @var array */
|
||||
protected $table_names;
|
||||
|
||||
/** @var array */
|
||||
protected $dependencies = array();
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct(array $class_names, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\db\tools\tools_interface $db_tools, $phpbb_root_path, $php_ext, $table_prefix)
|
||||
* Constructor
|
||||
* @param array $class_names
|
||||
* @param \phpbb\config\config $config
|
||||
* @param \phpbb\db\driver\driver_interface $db
|
||||
* @param \phpbb\db\tools\tools_interface $db_tools
|
||||
* @param string $phpbb_root_path
|
||||
* @param string $php_ext
|
||||
* @param string $table_prefix
|
||||
* @param array $tables
|
||||
*/
|
||||
public function __construct(array $class_names, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\db\tools\tools_interface $db_tools, $phpbb_root_path, $php_ext, $table_prefix, $tables)
|
||||
{
|
||||
$this->config = $config;
|
||||
$this->db = $db;
|
||||
@ -57,6 +68,7 @@ class schema_generator
|
||||
$this->phpbb_root_path = $phpbb_root_path;
|
||||
$this->php_ext = $php_ext;
|
||||
$this->table_prefix = $table_prefix;
|
||||
$this->table_names = $tables;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -90,7 +102,7 @@ class schema_generator
|
||||
|
||||
if (empty($open_dependencies))
|
||||
{
|
||||
$migration = new $migration_class($this->config, $this->db, $this->db_tools, $this->phpbb_root_path, $this->php_ext, $this->table_prefix);
|
||||
$migration = new $migration_class($this->config, $this->db, $this->db_tools, $this->phpbb_root_path, $this->php_ext, $this->table_prefix, $this->table_names);
|
||||
$tree[] = $migration_class;
|
||||
$migration_key = array_search($migration_class, $migrations);
|
||||
|
||||
|
@ -13,7 +13,14 @@
|
||||
|
||||
namespace phpbb\install\module\install_database\task;
|
||||
|
||||
use phpbb\db\driver\driver_interface;
|
||||
use phpbb\db\migration\schema_generator;
|
||||
use phpbb\db\tools\tools_interface;
|
||||
use phpbb\filesystem\filesystem_interface;
|
||||
use phpbb\install\exception\resource_limit_reached_exception;
|
||||
use phpbb\install\helper\config;
|
||||
use phpbb\install\helper\database;
|
||||
use phpbb\install\helper\iohandler\iohandler_interface;
|
||||
|
||||
/**
|
||||
* Create database schema
|
||||
@ -21,32 +28,32 @@ use phpbb\install\exception\resource_limit_reached_exception;
|
||||
class create_schema extends \phpbb\install\task_base
|
||||
{
|
||||
/**
|
||||
* @var \phpbb\install\helper\config
|
||||
* @var config
|
||||
*/
|
||||
protected $config;
|
||||
|
||||
/**
|
||||
* @var \phpbb\db\driver\driver_interface
|
||||
* @var driver_interface
|
||||
*/
|
||||
protected $db;
|
||||
|
||||
/**
|
||||
* @var \phpbb\db\tools\tools_interface
|
||||
* @var tools_interface
|
||||
*/
|
||||
protected $db_tools;
|
||||
|
||||
/**
|
||||
* @var \phpbb\install\helper\database
|
||||
* @var database
|
||||
*/
|
||||
protected $database_helper;
|
||||
|
||||
/**
|
||||
* @var \phpbb\filesystem\filesystem_interface
|
||||
* @var filesystem_interface
|
||||
*/
|
||||
protected $filesystem;
|
||||
|
||||
/**
|
||||
* @var \phpbb\install\helper\iohandler\iohandler_interface
|
||||
* @var iohandler_interface
|
||||
*/
|
||||
protected $iohandler;
|
||||
|
||||
@ -60,22 +67,29 @@ class create_schema extends \phpbb\install\task_base
|
||||
*/
|
||||
protected $php_ext;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $tables;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param \phpbb\install\helper\config $config Installer's config provider
|
||||
* @param \phpbb\install\helper\database $db_helper Installer's database helper
|
||||
* @param \phpbb\filesystem\filesystem_interface $filesystem Filesystem service
|
||||
* @param \phpbb\install\helper\iohandler\iohandler_interface $iohandler Installer's input-output handler
|
||||
* @param string $phpbb_root_path Path phpBB's root
|
||||
* @param string $php_ext Extension of PHP files
|
||||
* @param config $config Installer's config provider
|
||||
* @param database $db_helper Installer's database helper
|
||||
* @param filesystem_interface $filesystem Filesystem service
|
||||
* @param iohandler_interface $iohandler Installer's input-output handler
|
||||
* @param string $phpbb_root_path Path phpBB's root
|
||||
* @param string $php_ext Extension of PHP files
|
||||
* @param array $tables Tables array
|
||||
*/
|
||||
public function __construct(\phpbb\install\helper\config $config,
|
||||
\phpbb\install\helper\database $db_helper,
|
||||
\phpbb\filesystem\filesystem_interface $filesystem,
|
||||
\phpbb\install\helper\iohandler\iohandler_interface $iohandler,
|
||||
public function __construct(config $config,
|
||||
database $db_helper,
|
||||
filesystem_interface $filesystem,
|
||||
iohandler_interface $iohandler,
|
||||
$phpbb_root_path,
|
||||
$php_ext)
|
||||
$php_ext,
|
||||
$tables)
|
||||
{
|
||||
$dbms = $db_helper->get_available_dbms($config->get('dbms'));
|
||||
$dbms = $dbms[$config->get('dbms')]['DRIVER'];
|
||||
@ -99,6 +113,7 @@ class create_schema extends \phpbb\install\task_base
|
||||
$this->iohandler = $iohandler;
|
||||
$this->phpbb_root_path = $phpbb_root_path;
|
||||
$this->php_ext = $php_ext;
|
||||
$this->tables = $tables;
|
||||
|
||||
parent::__construct(true);
|
||||
}
|
||||
@ -180,14 +195,15 @@ class create_schema extends \phpbb\install\task_base
|
||||
$migrator_classes = $finder->core_path('phpbb/db/migration/data/')->get_classes();
|
||||
$factory = new \phpbb\db\tools\factory();
|
||||
$db_tools = $factory->get($this->db, true);
|
||||
$schema_generator = new \phpbb\db\migration\schema_generator(
|
||||
$schema_generator = new schema_generator(
|
||||
$migrator_classes,
|
||||
new \phpbb\config\config(array()),
|
||||
$this->db,
|
||||
$db_tools,
|
||||
$this->phpbb_root_path,
|
||||
$this->php_ext,
|
||||
$table_prefix
|
||||
$table_prefix,
|
||||
$this->tables
|
||||
);
|
||||
$db_table_schema = $schema_generator->get_schema();
|
||||
}
|
||||
|
@ -121,6 +121,13 @@ class create_schema_file extends \phpbb\install\task_base
|
||||
$migrator_classes = $finder->core_path('phpbb/db/migration/data/')->get_classes();
|
||||
$factory = new \phpbb\db\tools\factory();
|
||||
$db_tools = $factory->get($this->db, true);
|
||||
$tables_data = \Symfony\Component\Yaml\Yaml::parseFile($this->phpbb_root_path . '/config/default/container/tables.yml');
|
||||
$tables = [];
|
||||
foreach ($tables_data['parameters'] as $parameter => $table)
|
||||
{
|
||||
$tables[str_replace('tables.', '', $parameter)] = str_replace('%core.table_prefix%', $table_prefix, $table);
|
||||
}
|
||||
|
||||
$schema_generator = new \phpbb\db\migration\schema_generator(
|
||||
$migrator_classes,
|
||||
new \phpbb\config\config(array()),
|
||||
@ -128,7 +135,8 @@ class create_schema_file extends \phpbb\install\task_base
|
||||
$db_tools,
|
||||
$this->phpbb_root_path,
|
||||
$this->php_ext,
|
||||
$table_prefix
|
||||
$table_prefix,
|
||||
$tables
|
||||
);
|
||||
$db_table_schema = $schema_generator->get_schema();
|
||||
$db_table_schema = json_encode($db_table_schema, JSON_PRETTY_PRINT);
|
||||
|
@ -69,6 +69,7 @@ class phpbb_dbal_migrator_test extends phpbb_database_test_case
|
||||
dirname(__FILE__) . '/../../phpBB/',
|
||||
'php',
|
||||
'phpbb_',
|
||||
self::get_core_tables(),
|
||||
$tools,
|
||||
new \phpbb\db\migration\helper()
|
||||
);
|
||||
|
@ -167,6 +167,7 @@ class phpbb_extension_manager_test extends phpbb_database_test_case
|
||||
$phpbb_root_path,
|
||||
$php_ext,
|
||||
$table_prefix,
|
||||
self::get_core_tables(),
|
||||
array(),
|
||||
new \phpbb\db\migration\helper()
|
||||
);
|
||||
|
@ -87,6 +87,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case
|
||||
$this->phpbb_root_path,
|
||||
'php',
|
||||
$this->table_prefix,
|
||||
self::get_core_tables(),
|
||||
array(),
|
||||
new \phpbb\db\migration\helper()
|
||||
);
|
||||
|
@ -64,7 +64,8 @@ class phpbb_migrator_convert_timezones_test extends phpbb_database_test_case
|
||||
$factory->get($this->db),
|
||||
$phpbb_root_path,
|
||||
$phpEx,
|
||||
'phpbb_'
|
||||
'phpbb_',
|
||||
self::get_core_tables()
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -43,6 +43,7 @@ class get_callable_from_step_test extends phpbb_database_test_case
|
||||
$phpbb_root_path,
|
||||
$php_ext,
|
||||
$table_prefix,
|
||||
self::get_core_tables(),
|
||||
array($module_tools),
|
||||
new \phpbb\db\migration\helper()
|
||||
);
|
||||
|
@ -41,7 +41,7 @@ class schema_generator_test extends phpbb_test_case
|
||||
|
||||
protected function get_schema_generator(array $class_names)
|
||||
{
|
||||
$this->generator = new \phpbb\db\migration\schema_generator($class_names, $this->config, $this->db, $this->db_tools, $this->phpbb_root_path, $this->php_ext, $this->table_prefix);
|
||||
$this->generator = new \phpbb\db\migration\schema_generator($class_names, $this->config, $this->db, $this->db_tools, $this->phpbb_root_path, $this->php_ext, $this->table_prefix, phpbb_database_test_case::get_core_tables());
|
||||
|
||||
return $this->generator;
|
||||
}
|
||||
|
@ -36,7 +36,8 @@ class phpbb_notification_convert_test extends phpbb_database_test_case
|
||||
$factory->get($this->db),
|
||||
$phpbb_root_path,
|
||||
$phpEx,
|
||||
'phpbb_'
|
||||
'phpbb_',
|
||||
self::get_core_tables()
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -75,14 +75,13 @@ abstract class phpbb_database_test_case extends TestCase
|
||||
|
||||
if (!file_exists(self::$schema_file))
|
||||
{
|
||||
|
||||
global $table_prefix;
|
||||
|
||||
$db = new \phpbb\db\driver\sqlite3();
|
||||
$factory = new \phpbb\db\tools\factory();
|
||||
$db_tools = $factory->get($db, true);
|
||||
|
||||
$schema_generator = new \phpbb\db\migration\schema_generator($classes, new \phpbb\config\config(array()), $db, $db_tools, $phpbb_root_path, $phpEx, $table_prefix);
|
||||
$schema_generator = new \phpbb\db\migration\schema_generator($classes, new \phpbb\config\config(array()), $db, $db_tools, $phpbb_root_path, $phpEx, $table_prefix, self::get_core_tables());
|
||||
file_put_contents(self::$schema_file, json_encode($schema_generator->get_schema()));
|
||||
}
|
||||
|
||||
@ -319,4 +318,23 @@ abstract class phpbb_database_test_case extends TestCase
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
}
|
||||
|
||||
static public function get_core_tables() : array
|
||||
{
|
||||
global $phpbb_root_path, $table_prefix;
|
||||
|
||||
static $core_tables = [];
|
||||
|
||||
if (empty($tables))
|
||||
{
|
||||
$tables_yml_data = \Symfony\Component\Yaml\Yaml::parseFile($phpbb_root_path . '/config/default/container/tables.yml');
|
||||
|
||||
foreach ($tables_yml_data['parameters'] as $parameter => $table)
|
||||
{
|
||||
$core_tables[str_replace('tables.', '', $parameter)] = str_replace('%core.table_prefix%', $table_prefix, $table);
|
||||
}
|
||||
}
|
||||
|
||||
return $core_tables;
|
||||
}
|
||||
}
|
||||
|
@ -372,8 +372,9 @@ class phpbb_database_test_connection_manager
|
||||
$db = new \phpbb\db\driver\sqlite3();
|
||||
$factory = new \phpbb\db\tools\factory();
|
||||
$db_tools = $factory->get($db, true);
|
||||
$tables = phpbb_database_test_case::get_core_tables();
|
||||
|
||||
$schema_generator = new \phpbb\db\migration\schema_generator($classes, new \phpbb\config\config(array()), $db, $db_tools, $phpbb_root_path, $phpEx, $table_prefix);
|
||||
$schema_generator = new \phpbb\db\migration\schema_generator($classes, new \phpbb\config\config(array()), $db, $db_tools, $phpbb_root_path, $phpEx, $table_prefix, $tables);
|
||||
$db_table_schema = $schema_generator->get_schema();
|
||||
}
|
||||
|
||||
|
@ -249,6 +249,7 @@ class phpbb_functional_test_case extends phpbb_test_case
|
||||
$phpbb_root_path,
|
||||
$phpEx,
|
||||
self::$config['table_prefix'],
|
||||
phpbb_database_test_case::get_core_tables(),
|
||||
array(),
|
||||
new \phpbb\db\migration\helper()
|
||||
);
|
||||
|
@ -486,6 +486,7 @@ class phpbb_ui_test_case extends phpbb_test_case
|
||||
$phpbb_root_path,
|
||||
$phpEx,
|
||||
self::$config['table_prefix'],
|
||||
phpbb_database_test_case::get_core_tables(),
|
||||
array(),
|
||||
new \phpbb\db\migration\helper()
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user