mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
Merge branch 'develop-olympus' into develop
* develop-olympus: [ticket/11601] Add protected method for database sync and call it [ticket/11601] Split post_setup_synchronisation logic from xml parsing
This commit is contained in:
commit
b74b84dbec
2 changed files with 39 additions and 3 deletions
|
@ -62,6 +62,21 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs synchronisations for a given table/column set on the database
|
||||
*
|
||||
* @param array $table_column_map Information about the tables/columns to synchronise
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
protected function database_synchronisation($table_column_map)
|
||||
{
|
||||
$config = $this->get_database_config();
|
||||
$manager = $this->create_connection_manager($config);
|
||||
$manager->connect();
|
||||
$manager->database_synchronisation($table_column_map);
|
||||
}
|
||||
|
||||
public function createXMLDataSet($path)
|
||||
{
|
||||
$db_config = $this->get_database_config();
|
||||
|
|
|
@ -479,12 +479,33 @@ class phpbb_database_test_connection_manager
|
|||
* @return null
|
||||
*/
|
||||
public function post_setup_synchronisation($xml_data_set)
|
||||
{
|
||||
$table_names = $xml_data_set->getTableNames();
|
||||
|
||||
$tables = array();
|
||||
foreach ($table_names as $table)
|
||||
{
|
||||
$tables[$table] = $xml_data_set->getTableMetaData($table)->getColumns();
|
||||
}
|
||||
|
||||
$this->database_synchronisation($tables);
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs synchronisations on the database after a fixture has been loaded
|
||||
*
|
||||
* @param array $table_column_map Array of tables/columns to synchronise
|
||||
* array(table1 => array(column1, column2))
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
public function database_synchronisation($table_column_map)
|
||||
{
|
||||
$this->ensure_connected(__METHOD__);
|
||||
$queries = array();
|
||||
|
||||
// Get escaped versions of the table names used in the fixture
|
||||
$table_names = array_map(array($this->pdo, 'PDO::quote'), $xml_data_set->getTableNames());
|
||||
// Get escaped versions of the table names to synchronise
|
||||
$table_names = array_map(array($this->pdo, 'PDO::quote'), array_keys($table_column_map));
|
||||
|
||||
switch ($this->config['dbms'])
|
||||
{
|
||||
|
@ -541,7 +562,7 @@ class phpbb_database_test_connection_manager
|
|||
while ($row = $result->fetch(PDO::FETCH_ASSOC))
|
||||
{
|
||||
// Get the columns used in the fixture for this table
|
||||
$column_names = $xml_data_set->getTableMetaData($row['table_name'])->getColumns();
|
||||
$column_names = $table_column_map[$row['table_name']];
|
||||
|
||||
// Skip sequences that weren't specified in the fixture
|
||||
if (!in_array($row['column_name'], $column_names))
|
||||
|
|
Loading…
Add table
Reference in a new issue