diff options
author | Nathan Guse <nathaniel.guse@gmail.com> | 2014-02-05 09:57:36 -0600 |
---|---|---|
committer | Nathan Guse <nathaniel.guse@gmail.com> | 2014-02-05 09:57:36 -0600 |
commit | 38eb6b0e135293d51cc100937a6072b32e214c34 (patch) | |
tree | 0fe9bc23ee9d72c64647ae2debd145f7443d5767 | |
parent | 2c878ead311b8b71cabb4070ce848d5b84470ce8 (diff) | |
download | forums-38eb6b0e135293d51cc100937a6072b32e214c34.tar forums-38eb6b0e135293d51cc100937a6072b32e214c34.tar.gz forums-38eb6b0e135293d51cc100937a6072b32e214c34.tar.bz2 forums-38eb6b0e135293d51cc100937a6072b32e214c34.tar.xz forums-38eb6b0e135293d51cc100937a6072b32e214c34.zip |
[ticket/11880] Move get_schema_steps function to a migrator helper class
PHPBB3-11880
-rw-r--r-- | phpBB/config/migrator.yml | 4 | ||||
-rw-r--r-- | phpBB/phpbb/db/migrator.php | 74 | ||||
-rw-r--r-- | tests/dbal/migrator_test.php | 3 | ||||
-rw-r--r-- | tests/extension/manager_test.php | 3 | ||||
-rw-r--r-- | tests/extension/metadata_manager_test.php | 3 | ||||
-rw-r--r-- | tests/migrator/get_schema_steps_test.php | 9 | ||||
-rw-r--r-- | tests/test_framework/phpbb_functional_test_case.php | 3 |
7 files changed, 27 insertions, 72 deletions
diff --git a/phpBB/config/migrator.yml b/phpBB/config/migrator.yml index a94609418f..202421c09f 100644 --- a/phpBB/config/migrator.yml +++ b/phpBB/config/migrator.yml @@ -10,6 +10,10 @@ services: - %core.php_ext% - %core.table_prefix% - @migrator.tool_collection + - @migrator.helper + + migrator.helper: + class: phpbb\db\migration\helper migrator.tool_collection: class: phpbb\di\service_collection diff --git a/phpBB/phpbb/db/migrator.php b/phpBB/phpbb/db/migrator.php index 7dc113204e..4fb3f1a241 100644 --- a/phpBB/phpbb/db/migrator.php +++ b/phpBB/phpbb/db/migrator.php @@ -25,6 +25,9 @@ class migrator /** @var \phpbb\db\tools */ protected $db_tools; + /** @var \phpbb\db\migration\helper */ + protected $helper; + /** @var string */ protected $table_prefix; @@ -65,11 +68,12 @@ class migrator /** * Constructor of the database migrator */ - public function __construct(\phpbb\config\config $config, \phpbb\db\driver\driver $db, \phpbb\db\tools $db_tools, $migrations_table, $phpbb_root_path, $php_ext, $table_prefix, $tools) + public function __construct(\phpbb\config\config $config, \phpbb\db\driver\driver $db, \phpbb\db\tools $db_tools, $migrations_table, $phpbb_root_path, $php_ext, $table_prefix, $tools, \phpbb\db\migration\helper $helper) { $this->config = $config; $this->db = $db; $this->db_tools = $db_tools; + $this->helper = $helper; $this->migrations_table = $migrations_table; @@ -232,7 +236,7 @@ class migrator if (!$state['migration_schema_done']) { $this->last_run_migration['task'] = 'process_schema_step'; - $steps = self::get_schema_steps($migration->update_schema()); + $steps = $this->helper->get_schema_steps($migration->update_schema()); $result = $this->process_data_step($steps, $state['migration_data_state']); $state['migration_data_state'] = ($result === true) ? '' : $result; @@ -336,7 +340,7 @@ class migrator } else if ($state['migration_schema_done']) { - $steps = self::get_schema_steps($migration->revert_schema()); + $steps = $this->helper->get_schema_steps($migration->revert_schema()); $result = $this->process_data_step($steps, $state['migration_data_state']); $state['migration_data_state'] = ($result === true) ? '' : $result; @@ -750,68 +754,4 @@ class migrator return $this->migrations; } - - /** - * Get the schema steps from an array of schema changes - * - * This splits up $schema_changes into individual changes so that the - * changes can be chunked - * - * @param array $schema_changes from migration - * @return array - */ - static public function get_schema_steps($schema_changes) - { - $steps = array(); - - // Nested level of data (only supports 1/2 currently) - $nested_level = array( - 'drop_tables' => 1, - 'add_tables' => 1, - 'change_columns' => 2, - 'add_columns' => 2, - 'drop_keys' => 2, - 'drop_columns' => 2, - 'add_primary_keys' => 2, // perform_schema_changes only uses one level, but second is in the function - 'add_unique_index' => 2, - 'add_index' => 2, - ); - - foreach ($nested_level as $change_type => $data_depth) - { - if (!empty($schema_changes[$change_type])) - { - foreach ($schema_changes[$change_type] as $key => $value) - { - if ($data_depth === 1) - { - $steps[] = array( - 'dbtools.perform_schema_changes', array(array( - $change_type => array( - $value, - ), - )), - ); - } - else if ($data_depth === 2) - { - foreach ($value as $key2 => $value2) - { - $steps[] = array( - 'dbtools.perform_schema_changes', array(array( - $change_type => array( - $key => array( - $key2 => $value2, - ), - ), - )), - ); - } - } - } - } - } - - return $steps; - } } diff --git a/tests/dbal/migrator_test.php b/tests/dbal/migrator_test.php index 9a6f33523c..c075f19825 100644 --- a/tests/dbal/migrator_test.php +++ b/tests/dbal/migrator_test.php @@ -50,7 +50,8 @@ class phpbb_dbal_migrator_test extends phpbb_database_test_case dirname(__FILE__) . '/../../phpBB/', 'php', 'phpbb_', - $tools + $tools, + new \phpbb\db\migration\helper() ); $container = new phpbb_mock_container_builder(); diff --git a/tests/extension/manager_test.php b/tests/extension/manager_test.php index cc32a6af4e..789dc20d14 100644 --- a/tests/extension/manager_test.php +++ b/tests/extension/manager_test.php @@ -106,7 +106,8 @@ class phpbb_extension_manager_test extends phpbb_database_test_case $phpbb_root_path, $php_ext, $table_prefix, - array() + array(), + new \phpbb\db\migration\helper() ); $container = new phpbb_mock_container_builder(); $container->set('migrator', $migrator); diff --git a/tests/extension/metadata_manager_test.php b/tests/extension/metadata_manager_test.php index 592421f9e7..a3c4cc89e9 100644 --- a/tests/extension/metadata_manager_test.php +++ b/tests/extension/metadata_manager_test.php @@ -62,7 +62,8 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case $this->phpbb_root_path, 'php', $this->table_prefix, - array() + array(), + new \phpbb\db\migration\helper() ); $container = new phpbb_mock_container_builder(); $container->set('migrator', $migrator); diff --git a/tests/migrator/get_schema_steps_test.php b/tests/migrator/get_schema_steps_test.php index c37d55ea40..f354d3617f 100644 --- a/tests/migrator/get_schema_steps_test.php +++ b/tests/migrator/get_schema_steps_test.php @@ -9,6 +9,13 @@ class get_schema_steps_test extends phpbb_test_case { + public function setUp() + { + parent::setUp(); + + $this->helper = new \phpbb\db\migration\helper(); + } + public function schema_provider() { return array( @@ -158,6 +165,6 @@ class get_schema_steps_test extends phpbb_test_case */ public function test_get_schema_steps($schema_changes, $expected) { - $this->assertEquals($expected, \phpbb\db\migrator::get_schema_steps($schema_changes)); + $this->assertEquals($expected, $this->helper->get_schema_steps($schema_changes)); } } diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index 71d03746a9..55f9cdb947 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -194,7 +194,8 @@ class phpbb_functional_test_case extends phpbb_test_case $phpbb_root_path, $php_ext, self::$config['table_prefix'], - array() + array(), + new \phpbb\db\migration\helper() ); $container = new phpbb_mock_container_builder(); $container->set('migrator', $migrator); |