[ticket/11601] Split post_setup_synchronisation logic from xml parsing

PHPBB3-11601
This commit is contained in:
Joas Schilling 2013-06-11 13:24:55 +02:00
parent a7e3a1b376
commit 5e8054f045

View file

@ -480,12 +480,33 @@ class phpbb_database_test_connection_manager
* @return null * @return null
*/ */
public function post_setup_synchronisation($xml_data_set) 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__); $this->ensure_connected(__METHOD__);
$queries = array(); $queries = array();
// Get escaped versions of the table names used in the fixture // Get escaped versions of the table names to synchronise
$table_names = array_map(array($this->pdo, 'PDO::quote'), $xml_data_set->getTableNames()); $table_names = array_map(array($this->pdo, 'PDO::quote'), array_keys($table_column_map));
switch ($this->config['dbms']) switch ($this->config['dbms'])
{ {
@ -542,7 +563,7 @@ class phpbb_database_test_connection_manager
while ($row = $result->fetch(PDO::FETCH_ASSOC)) while ($row = $result->fetch(PDO::FETCH_ASSOC))
{ {
// Get the columns used in the fixture for this table // 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 // Skip sequences that weren't specified in the fixture
if (!in_array($row['column_name'], $column_names)) if (!in_array($row['column_name'], $column_names))