mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/11601] Split post_setup_synchronisation logic from xml parsing
PHPBB3-11601
This commit is contained in:
parent
a7e3a1b376
commit
5e8054f045
1 changed files with 24 additions and 3 deletions
|
@ -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))
|
||||||
|
|
Loading…
Add table
Reference in a new issue