- some bugfixes

- bugfixes for the convertor (typecasting for example was totally broken)


git-svn-id: file:///svn/phpbb/trunk@6865 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Meik Sievertsen 2007-01-09 14:10:44 +00:00
parent 164fb66f44
commit 2b35b9d60d
15 changed files with 82 additions and 56 deletions

View file

@ -1044,9 +1044,9 @@ function get_schema_struct()
'enable_icons' => array('BOOL', 1), 'enable_icons' => array('BOOL', 1),
'enable_prune' => array('BOOL', 0), 'enable_prune' => array('BOOL', 0),
'prune_next' => array('TIMESTAMP', 0), 'prune_next' => array('TIMESTAMP', 0),
'prune_days' => array('TINT:4', 0), 'prune_days' => array('UINT', 0),
'prune_viewed' => array('TINT:4', 0), 'prune_viewed' => array('UINT', 0),
'prune_freq' => array('TINT:4', 0), 'prune_freq' => array('UINT', 0),
), ),
'PRIMARY_KEY' => 'forum_id', 'PRIMARY_KEY' => 'forum_id',
'KEYS' => array( 'KEYS' => array(

View file

@ -518,12 +518,15 @@ class auth_admin extends auth
'S_GROUP_MODE' => ($user_mode == 'group') ? true : false) 'S_GROUP_MODE' => ($user_mode == 'group') ? true : false)
); );
@reset($content_array);
while (list($forum_id, $forum_array) = each($content_array)) while (list($forum_id, $forum_array) = each($content_array))
{ {
// Build role dropdown options // Build role dropdown options
$current_role_id = (isset($cur_roles[$ug_id][$forum_id])) ? $cur_roles[$ug_id][$forum_id] : 0; $current_role_id = (isset($cur_roles[$ug_id][$forum_id])) ? $cur_roles[$ug_id][$forum_id] : 0;
$s_role_options = ''; $s_role_options = '';
@reset($roles);
while (list($role_id, $role_row) = each($roles)) while (list($role_id, $role_row) = each($roles))
{ {
$role_description = (!empty($user->lang[$role_row['role_description']])) ? $user->lang[$role_row['role_description']] : nl2br($role_row['role_description']); $role_description = (!empty($user->lang[$role_row['role_description']])) ? $user->lang[$role_row['role_description']] : nl2br($role_row['role_description']);
@ -1056,6 +1059,7 @@ class auth_admin extends auth
{ {
global $template, $user, $phpbb_admin_path, $phpEx; global $template, $user, $phpbb_admin_path, $phpEx;
@reset($category_array);
while (list($cat, $cat_array) = each($category_array)) while (list($cat, $cat_array) = each($category_array))
{ {
$template->assign_block_vars($tpl_cat, array( $template->assign_block_vars($tpl_cat, array(
@ -1066,6 +1070,7 @@ class auth_admin extends auth
'CAT_NAME' => $user->lang['permission_cat'][$cat]) 'CAT_NAME' => $user->lang['permission_cat'][$cat])
); );
@reset($cat_array['permissions']);
while (list($permission, $allowed) = each($cat_array['permissions'])) while (list($permission, $allowed) = each($cat_array['permissions']))
{ {
if ($s_view) if ($s_view)
@ -1125,6 +1130,7 @@ class auth_admin extends auth
$permissions = $permission_row[$forum_id]; $permissions = $permission_row[$forum_id];
ksort($permissions); ksort($permissions);
@reset($permissions);
while (list($permission, $auth_setting) = each($permissions)) while (list($permission, $auth_setting) = each($permissions))
{ {
if (!isset($user->lang['acl_' . $permission])) if (!isset($user->lang['acl_' . $permission]))

View file

@ -238,7 +238,7 @@ class bbcode
case 6: case 6:
$this->bbcode_cache[$bbcode_id] = array( $this->bbcode_cache[$bbcode_id] = array(
'preg' => array( 'preg' => array(
'!\[color=(#[0-9a-fA-F]{6}|[a-z\-]+):$uid\](.*?)\[/color:$uid\]!s' => $this->bbcode_tpl('color', $bbcode_id), '!\[color=(#[0-9a-f]{6}|[a-z\-]+):$uid\](.*?)\[/color:$uid\]!is' => $this->bbcode_tpl('color', $bbcode_id),
) )
); );
break; break;

View file

@ -271,6 +271,7 @@ class diff_engine
} }
} }
// no reset() here
while (list($junk, $y) = each($matches)) while (list($junk, $y) = each($matches))
{ {
if ($y > $this->seq[$k - 1]) if ($y > $this->seq[$k - 1])

View file

@ -37,10 +37,13 @@ function still_on_time()
// If zero, then set to something higher to not let the user catch the ten seconds barrier. // If zero, then set to something higher to not let the user catch the ten seconds barrier.
if ($max_execution_time === 0) if ($max_execution_time === 0)
{ {
$max_execution_time = 300; $max_execution_time = 250;
} }
$max_execution_time = min(max(10, $max_execution_time), 300); $max_execution_time = min(max(10, ($max_execution_time - 15)), 250);
// For debugging purposes
// $max_execution_time = 30;
global $starttime; global $starttime;
$start_time = (empty($starttime)) ? $current_time : $starttime; $start_time = (empty($starttime)) ? $current_time : $starttime;
@ -1417,8 +1420,12 @@ function mass_auth($ug_type, $forum_id, $ug_id, $acl_list, $setting = ACL_NO)
$row = $db->sql_fetchrow($result); $row = $db->sql_fetchrow($result);
$db->sql_freeresult($result); $db->sql_freeresult($result);
$sql = "INSERT INTO $table ($id_field, forum_id, auth_role_id) VALUES ($ug_id, $forum_id, " . $row['role_id'] . ')'; // If we have no role id there is something wrong here
$db->sql_query($sql); if ($row)
{
$sql = "INSERT INTO $table ($id_field, forum_id, auth_role_id) VALUES ($ug_id, $forum_id, " . $row['role_id'] . ')';
$db->sql_query($sql);
}
return; return;
} }

View file

@ -114,7 +114,7 @@ class bbcode_firstpass extends bbcode
'url' => array('bbcode_id' => 3, 'regexp' => array('#\[url(=(.*))?\](.*)\[/url\]#iUe' => "\$this->validate_url('\$2', '\$3')")), 'url' => array('bbcode_id' => 3, 'regexp' => array('#\[url(=(.*))?\](.*)\[/url\]#iUe' => "\$this->validate_url('\$2', '\$3')")),
'img' => array('bbcode_id' => 4, 'regexp' => array('#\[img\](https?://)([a-z0-9\-\.,\?!%\*_:;~\\&$@/=\+]+)\[/img\]#ie' => "\$this->bbcode_img('\$1\$2')")), 'img' => array('bbcode_id' => 4, 'regexp' => array('#\[img\](https?://)([a-z0-9\-\.,\?!%\*_:;~\\&$@/=\+]+)\[/img\]#ie' => "\$this->bbcode_img('\$1\$2')")),
'size' => array('bbcode_id' => 5, 'regexp' => array('#\[size=([\-\+]?[1-2]?[0-9])\](.*?)\[/size\]#ise' => "\$this->bbcode_size('\$1', '\$2')")), 'size' => array('bbcode_id' => 5, 'regexp' => array('#\[size=([\-\+]?[1-2]?[0-9])\](.*?)\[/size\]#ise' => "\$this->bbcode_size('\$1', '\$2')")),
'color' => array('bbcode_id' => 6, 'regexp' => array('!\[color=(#[0-9A-Fa-f]{6}|[a-z\-]+)\](.*?)\[/color\]!ise' => "\$this->bbcode_color('\$1', '\$2')")), 'color' => array('bbcode_id' => 6, 'regexp' => array('!\[color=(#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!ise' => "\$this->bbcode_color('\$1', '\$2')")),
'u' => array('bbcode_id' => 7, 'regexp' => array('#\[u\](.*?)\[/u\]#ise' => "\$this->bbcode_underline('\$1')")), 'u' => array('bbcode_id' => 7, 'regexp' => array('#\[u\](.*?)\[/u\]#ise' => "\$this->bbcode_underline('\$1')")),
'list' => array('bbcode_id' => 9, 'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#ise' => "\$this->bbcode_parse_list('\$0')")), 'list' => array('bbcode_id' => 9, 'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#ise' => "\$this->bbcode_parse_list('\$0')")),
'email' => array('bbcode_id' => 10, 'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#ise' => "\$this->validate_email('\$1', '\$2')")), 'email' => array('bbcode_id' => 10, 'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#ise' => "\$this->validate_email('\$1', '\$2')")),

View file

@ -390,6 +390,7 @@ if (!$get_info)
array('ban_ip', 'banlist.ban_ip', 'decode_ban_ip'), array('ban_ip', 'banlist.ban_ip', 'decode_ban_ip'),
array('ban_userid', 'banlist.ban_userid', 'phpbb_user_id'), array('ban_userid', 'banlist.ban_userid', 'phpbb_user_id'),
array('ban_email', 'banlist.ban_email', ''),
'where' => "banlist.ban_ip NOT LIKE '%.%'", 'where' => "banlist.ban_ip NOT LIKE '%.%'",
), ),
@ -397,10 +398,11 @@ if (!$get_info)
array( array(
'target' => BANLIST_TABLE, 'target' => BANLIST_TABLE,
array('ban_email', 'banlist.ban_email', ''), array('ban_ip', 'banlist.ban_ip', ''),
array('ban_userid', 'banlist.ban_userid', 'phpbb_user_id'), array('ban_userid', '0', ''),
array('ban_email', '', ''),
'where' => "banlist.ban_ip = ''", 'where' => "banlist.ban_ip LIKE '%.%'",
), ),
array( array(

View file

@ -749,7 +749,7 @@ function phpbb_convert_authentication($mode)
// We only check for ACL_YES equivalence entry // We only check for ACL_YES equivalence entry
if (isset($access[$old_auth_key]) && $access[$old_auth_key] == 1) if (isset($access[$old_auth_key]) && $access[$old_auth_key] == 1)
{ {
mass_auth('group', $new_forum_id, $access['group_id'], $new_acl, ACL_YES); mass_auth('group', $new_forum_id, (int) $access['group_id'], $new_acl, ACL_YES);
} }
} }
} }
@ -761,7 +761,7 @@ function phpbb_convert_authentication($mode)
// We only check for ACL_YES equivalence entry // We only check for ACL_YES equivalence entry
if (isset($access[$old_auth_key]) && $access[$old_auth_key] == 1) if (isset($access[$old_auth_key]) && $access[$old_auth_key] == 1)
{ {
mass_auth('user', $new_forum_id, phpbb_user_id($access['user_id']), $new_acl, ACL_YES); mass_auth('user', $new_forum_id, (int) phpbb_user_id($access['user_id']), $new_acl, ACL_YES);
} }
} }
} }
@ -776,7 +776,7 @@ function phpbb_convert_authentication($mode)
// We only check for ACL_YES equivalence entry // We only check for ACL_YES equivalence entry
if (isset($access[$old_auth_key]) && $access[$old_auth_key] == 1) if (isset($access[$old_auth_key]) && $access[$old_auth_key] == 1)
{ {
mass_auth('group', $new_forum_id, $access['group_id'], $new_acl, ACL_YES); mass_auth('group', $new_forum_id, (int) $access['group_id'], $new_acl, ACL_YES);
} }
} }
} }
@ -788,7 +788,7 @@ function phpbb_convert_authentication($mode)
// We only check for ACL_YES equivalence entry // We only check for ACL_YES equivalence entry
if (isset($access[$old_auth_key]) && $access[$old_auth_key] == 1) if (isset($access[$old_auth_key]) && $access[$old_auth_key] == 1)
{ {
mass_auth('user', $new_forum_id, phpbb_user_id($access['user_id']), $new_acl, ACL_YES); mass_auth('user', $new_forum_id, (int) phpbb_user_id($access['user_id']), $new_acl, ACL_YES);
} }
} }
} }
@ -820,7 +820,7 @@ function phpbb_convert_authentication($mode)
while ($row = $db->sql_fetchrow($result)) while ($row = $db->sql_fetchrow($result))
{ {
mass_auth('user_role', 0, phpbb_user_id($row['user_id']), 'USER_NOAVATAR'); mass_auth('user_role', 0, (int) phpbb_user_id($row['user_id']), 'USER_NOAVATAR');
} }
$db->sql_freeresult($result); $db->sql_freeresult($result);
@ -832,7 +832,7 @@ function phpbb_convert_authentication($mode)
while ($row = $db->sql_fetchrow($result)) while ($row = $db->sql_fetchrow($result))
{ {
mass_auth('user_role', 0, phpbb_user_id($row['user_id']), 'USER_NOPM'); mass_auth('user_role', 0, (int) phpbb_user_id($row['user_id']), 'USER_NOPM');
} }
$db->sql_freeresult($result); $db->sql_freeresult($result);
} }
@ -848,8 +848,8 @@ function phpbb_convert_authentication($mode)
{ {
if (isset($access['auth_mod']) && $access['auth_mod'] == 1) if (isset($access['auth_mod']) && $access['auth_mod'] == 1)
{ {
mass_auth('user_role', $forum_id, phpbb_user_id($access['user_id']), 'MOD_STANDARD'); mass_auth('user_role', $forum_id, (int) phpbb_user_id($access['user_id']), 'MOD_STANDARD');
mass_auth('user_role', $forum_id, phpbb_user_id($access['user_id']), 'FORUM_STANDARD'); mass_auth('user_role', $forum_id, (int) phpbb_user_id($access['user_id']), 'FORUM_STANDARD');
} }
} }
} }
@ -862,8 +862,8 @@ function phpbb_convert_authentication($mode)
{ {
if (isset($access['auth_mod']) && $access['auth_mod'] == 1) if (isset($access['auth_mod']) && $access['auth_mod'] == 1)
{ {
mass_auth('group_role', $forum_id, $access['group_id'], 'MOD_STANDARD'); mass_auth('group_role', $forum_id, (int) $access['group_id'], 'MOD_STANDARD');
mass_auth('group_role', $forum_id, $access['group_id'], 'FORUM_STANDARD'); mass_auth('group_role', $forum_id, (int) $access['group_id'], 'FORUM_STANDARD');
} }
} }
} }

View file

@ -324,6 +324,11 @@ $database_update_info = array(
USERS_TABLE => array( USERS_TABLE => array(
'user_options' => array('UINT:11', 895), 'user_options' => array('UINT:11', 895),
), ),
FORUMS_TABLE => array(
'prune_days' => array('UINT', 0),
'prune_viewed' => array('UINT', 0),
'prune_freq' => array('UINT', 0),
),
), ),
// Remove the following keys // Remove the following keys
'drop_keys' => array( 'drop_keys' => array(

View file

@ -479,6 +479,24 @@ class install_convert extends module
// @todo Need to confirm that max post length in source is <= max post length in destination or there may be interesting formatting issues // @todo Need to confirm that max post length in source is <= max post length in destination or there may be interesting formatting issues
$config['max_post_chars'] = -1; $config['max_post_chars'] = -1;
$convert->mysql_convert = false;
switch ($db->sql_layer)
{
// Thanks MySQL, for silently converting...
case 'mysql':
case 'mysql4':
if (version_compare($db->mysql_version, '4.1.3', '>='))
{
$convert->mysql_convert = true;
}
break;
case 'mysqli':
$convert->mysql_convert = true;
break;
}
// Set up a user as well. We _should_ have enough of a database here at this point to do this // Set up a user as well. We _should_ have enough of a database here at this point to do this
// and it helps for any core code we call // and it helps for any core code we call
$user->session_begin(); $user->session_begin();
@ -889,24 +907,6 @@ class install_convert extends module
$counting = -1; $counting = -1;
$batch_time = 0; $batch_time = 0;
$convert->mysql_convert = false;
switch ($db->sql_layer)
{
// Thanks MySQL, for silently converting...
case 'mysql':
case 'mysql4':
if (version_compare($db->mysql_version, '4.1.3', '>='))
{
$convert->mysql_convert = true;
}
break;
case 'mysqli':
$convert->mysql_convert = true;
break;
}
while (($counting === -1 || $counting >= $convert->batch_size) && still_on_time()) while (($counting === -1 || $counting >= $convert->batch_size) && still_on_time())
{ {
$old_current_table = $current_table; $old_current_table = $current_table;
@ -1600,7 +1600,12 @@ class install_convert extends module
{ {
if (strpos($type, 'typecast') === 0) if (strpos($type, 'typecast') === 0)
{ {
$value = settype($value, $execution); if (!is_array($value))
{
$value = array($value);
}
$value = $value[0];
settype($value, $execution);
} }
else if (strpos($type, 'function') === 0) else if (strpos($type, 'function') === 0)
{ {

View file

@ -254,9 +254,9 @@ CREATE TABLE phpbb_forums (
enable_icons tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, enable_icons tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
enable_prune tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, enable_prune tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
prune_next int(11) UNSIGNED DEFAULT '0' NOT NULL, prune_next int(11) UNSIGNED DEFAULT '0' NOT NULL,
prune_days tinyint(4) DEFAULT '0' NOT NULL, prune_days mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
prune_viewed tinyint(4) DEFAULT '0' NOT NULL, prune_viewed mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
prune_freq tinyint(4) DEFAULT '0' NOT NULL, prune_freq mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
PRIMARY KEY (forum_id), PRIMARY KEY (forum_id),
KEY left_right_id (left_id, right_id), KEY left_right_id (left_id, right_id),
KEY forum_lastpost_id (forum_last_post_id) KEY forum_lastpost_id (forum_last_post_id)

View file

@ -254,9 +254,9 @@ CREATE TABLE phpbb_forums (
enable_icons tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, enable_icons tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
enable_prune tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, enable_prune tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
prune_next int(11) UNSIGNED DEFAULT '0' NOT NULL, prune_next int(11) UNSIGNED DEFAULT '0' NOT NULL,
prune_days tinyint(4) DEFAULT '0' NOT NULL, prune_days mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
prune_viewed tinyint(4) DEFAULT '0' NOT NULL, prune_viewed mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
prune_freq tinyint(4) DEFAULT '0' NOT NULL, prune_freq mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
PRIMARY KEY (forum_id), PRIMARY KEY (forum_id),
KEY left_right_id (left_id, right_id), KEY left_right_id (left_id, right_id),
KEY forum_lastpost_id (forum_last_post_id) KEY forum_lastpost_id (forum_last_post_id)

View file

@ -509,9 +509,9 @@ CREATE TABLE phpbb_forums (
enable_icons number(1) DEFAULT '1' NOT NULL, enable_icons number(1) DEFAULT '1' NOT NULL,
enable_prune number(1) DEFAULT '0' NOT NULL, enable_prune number(1) DEFAULT '0' NOT NULL,
prune_next number(11) DEFAULT '0' NOT NULL, prune_next number(11) DEFAULT '0' NOT NULL,
prune_days number(4) DEFAULT '0' NOT NULL, prune_days number(8) DEFAULT '0' NOT NULL,
prune_viewed number(4) DEFAULT '0' NOT NULL, prune_viewed number(8) DEFAULT '0' NOT NULL,
prune_freq number(4) DEFAULT '0' NOT NULL, prune_freq number(8) DEFAULT '0' NOT NULL,
CONSTRAINT pk_phpbb_forums PRIMARY KEY (forum_id) CONSTRAINT pk_phpbb_forums PRIMARY KEY (forum_id)
) )
/ /

View file

@ -386,9 +386,9 @@ CREATE TABLE phpbb_forums (
enable_icons INT2 DEFAULT '1' NOT NULL CHECK (enable_icons >= 0), enable_icons INT2 DEFAULT '1' NOT NULL CHECK (enable_icons >= 0),
enable_prune INT2 DEFAULT '0' NOT NULL CHECK (enable_prune >= 0), enable_prune INT2 DEFAULT '0' NOT NULL CHECK (enable_prune >= 0),
prune_next INT4 DEFAULT '0' NOT NULL CHECK (prune_next >= 0), prune_next INT4 DEFAULT '0' NOT NULL CHECK (prune_next >= 0),
prune_days INT2 DEFAULT '0' NOT NULL, prune_days INT4 DEFAULT '0' NOT NULL CHECK (prune_days >= 0),
prune_viewed INT2 DEFAULT '0' NOT NULL, prune_viewed INT4 DEFAULT '0' NOT NULL CHECK (prune_viewed >= 0),
prune_freq INT2 DEFAULT '0' NOT NULL, prune_freq INT4 DEFAULT '0' NOT NULL CHECK (prune_freq >= 0),
PRIMARY KEY (forum_id) PRIMARY KEY (forum_id)
); );

View file

@ -247,9 +247,9 @@ CREATE TABLE phpbb_forums (
enable_icons INTEGER UNSIGNED NOT NULL DEFAULT '1', enable_icons INTEGER UNSIGNED NOT NULL DEFAULT '1',
enable_prune INTEGER UNSIGNED NOT NULL DEFAULT '0', enable_prune INTEGER UNSIGNED NOT NULL DEFAULT '0',
prune_next INTEGER UNSIGNED NOT NULL DEFAULT '0', prune_next INTEGER UNSIGNED NOT NULL DEFAULT '0',
prune_days tinyint(4) NOT NULL DEFAULT '0', prune_days INTEGER UNSIGNED NOT NULL DEFAULT '0',
prune_viewed tinyint(4) NOT NULL DEFAULT '0', prune_viewed INTEGER UNSIGNED NOT NULL DEFAULT '0',
prune_freq tinyint(4) NOT NULL DEFAULT '0' prune_freq INTEGER UNSIGNED NOT NULL DEFAULT '0'
); );
CREATE INDEX phpbb_forums_left_right_id ON phpbb_forums (left_id, right_id); CREATE INDEX phpbb_forums_left_right_id ON phpbb_forums (left_id, right_id);