1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-06-11 00:40:56 +02:00

adjust schema to support defining types of columns. This is required for dbms being very very strict.

git-svn-id: file:///svn/phpbb/trunk@9292 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Meik Sievertsen
2009-01-22 12:48:13 +00:00
parent 04fdca03b3
commit f245579adf
3 changed files with 33 additions and 5 deletions

View File

@ -424,6 +424,25 @@ class phpbb_db_tools
*/ */
public function sql_insert_data($schema_data, &$data) public function sql_insert_data($schema_data, &$data)
{ {
// Go through the columns and define our type and column name for each column
$keys = $types = array();
foreach ($schema_data['columns'] as $column)
{
if (strpos($column, ':') === false)
{
$types[] = false;
$keys[] = $column;
continue;
}
list($type, $column) = explode(':', $column, 2);
$types[] = $type;
$keys[] = $column;
}
$size = sizeof($keys);
// Go through the data array... // Go through the data array...
foreach ($schema_data['data'] as $key => $row) foreach ($schema_data['data'] as $key => $row)
{ {
@ -432,12 +451,19 @@ class phpbb_db_tools
{ {
// Special case... // Special case...
$row[$_key] = $this->_sql_get_special_row($value, $data); $row[$_key] = $this->_sql_get_special_row($value, $data);
if ($types[$_key] === false)
{
settype($row[$_key], gettype($row[$_key]));
}
else
{
settype($row[$_key], $types[$_key]);
}
} }
// Build SQL array for INSERT // Build SQL array for INSERT
$sql_ary = array_combine(array_values($schema_data['columns']), $row); $sql = 'INSERT INTO ' . $schema_data['table'] . ' ' . $this->db->sql_build_array('INSERT', array_combine($keys, $row));
$sql = 'INSERT INTO ' . $schema_data['table'] . ' ' . $this->db->sql_build_array('INSERT', $sql_ary);
$this->db->sql_query($sql); $this->db->sql_query($sql);
if (!empty($schema_data['store_auto_increment'])) if (!empty($schema_data['store_auto_increment']))

View File

@ -130,6 +130,8 @@ class install_install extends module
include PHPBB_ROOT_PATH . 'common.' . PHP_EXT; include PHPBB_ROOT_PATH . 'common.' . PHP_EXT;
phpbb::$acm->purge();
$this->build_search_index($mode, $sub); $this->build_search_index($mode, $sub);
$this->add_modules($mode, $sub); $this->add_modules($mode, $sub);
$this->add_language($mode, $sub); $this->add_language($mode, $sub);

View File

@ -47,7 +47,7 @@ $schema_data[] = array(
// phpbb_config // phpbb_config
$schema_data[] = array( $schema_data[] = array(
'table' => 'phpbb_config', 'table' => 'phpbb_config',
'columns' => array('config_name', 'config_value'), 'columns' => array('string:config_name', 'string:config_value'),
'data' => array( 'data' => array(
array('active_sessions', '0'), array('active_sessions', '0'),
array('allow_attachments', '1'), array('allow_attachments', '1'),
@ -311,7 +311,7 @@ $schema_data[] = array(
// Dynamic config values // Dynamic config values
$schema_data[] = array( $schema_data[] = array(
'table' => 'phpbb_config', 'table' => 'phpbb_config',
'columns' => array('config_name', 'config_value', 'is_dynamic'), 'columns' => array('string:config_name', 'string:config_value', 'is_dynamic'),
'data' => array( 'data' => array(
array('cache_last_gc', '0', 1), array('cache_last_gc', '0', 1),
array('cron_lock', '0', 1), array('cron_lock', '0', 1),