Merge pull request #1810 from nickvergessen/ticket/11031

Ticket/11031 Bring phpBB2 converter up to speed with 3.1 changes
This commit is contained in:
Nils Adermann 2013-11-02 07:20:15 -07:00
commit 158c998216
4 changed files with 172 additions and 11 deletions

View file

@ -1719,7 +1719,7 @@ function add_default_groups()
'GUESTS' => array('', 0, 0), 'GUESTS' => array('', 0, 0),
'REGISTERED' => array('', 0, 0), 'REGISTERED' => array('', 0, 0),
'REGISTERED_COPPA' => array('', 0, 0), 'REGISTERED_COPPA' => array('', 0, 0),
'GLOBAL_MODERATORS' => array('00AA00', 1, 0), 'GLOBAL_MODERATORS' => array('00AA00', 2, 0),
'ADMINISTRATORS' => array('AA0000', 1, 1), 'ADMINISTRATORS' => array('AA0000', 1, 1),
'BOTS' => array('9E8DA7', 0, 0), 'BOTS' => array('9E8DA7', 0, 0),
'NEWLY_REGISTERED' => array('', 0, 0), 'NEWLY_REGISTERED' => array('', 0, 0),
@ -1748,7 +1748,7 @@ function add_default_groups()
'group_type' => GROUP_SPECIAL, 'group_type' => GROUP_SPECIAL,
'group_colour' => (string) $data[0], 'group_colour' => (string) $data[0],
'group_legend' => (int) $data[1], 'group_legend' => (int) $data[1],
'group_founder_manage' => (int) $data[2] 'group_founder_manage' => (int) $data[2],
); );
} }
@ -1758,6 +1758,38 @@ function add_default_groups()
} }
} }
function add_groups_to_teampage()
{
global $db;
$teampage_groups = array(
'ADMINISTRATORS' => 1,
'GLOBAL_MODERATORS' => 2,
);
$sql = 'SELECT *
FROM ' . GROUPS_TABLE . '
WHERE ' . $db->sql_in_set('group_name', array_keys($teampage_groups));
$result = $db->sql_query($sql);
$teampage_ary = array();
while ($row = $db->sql_fetchrow($result))
{
$teampage_ary[] = array(
'group_id' => (int) $row['group_id'],
'teampage_name' => '',
'teampage_position' => (int) $teampage_groups[$row['group_name']],
'teampage_parent' => 0,
);
}
$db->sql_freeresult($result);
if (sizeof($teampage_ary))
{
$db->sql_multi_insert(TEAMPAGE_TABLE, $teampage_ary);
}
}
/** /**
* Sync post count. We might need to do this in batches. * Sync post count. We might need to do this in batches.

View file

@ -136,7 +136,7 @@ $config_schema = array(
'avatar_max_width' => 'avatar_max_width', 'avatar_max_width' => 'avatar_max_width',
'avatar_max_height' => 'avatar_max_height', 'avatar_max_height' => 'avatar_max_height',
'default_dateformat' => 'phpbb_set_encoding(default_dateformat)', 'default_dateformat' => 'phpbb_set_encoding(default_dateformat)',
'board_timezone' => 'board_timezone', 'board_timezone' => 'phpbb_convert_timezone(board_timezone)',
'allow_privmsg' => 'not(privmsg_disable)', 'allow_privmsg' => 'not(privmsg_disable)',
'gzip_compress' => 'gzip_compress', 'gzip_compress' => 'gzip_compress',
'coppa_enable' => '!is_empty(coppa_mail)', 'coppa_enable' => '!is_empty(coppa_mail)',
@ -341,6 +341,9 @@ if (!$get_info)
update_folder_pm_count(); update_folder_pm_count();
', ' ', '
update_unread_count(); update_unread_count();
', (defined('MOD_ATTACHMENT')) ? '
phpbb_attachment_extension_group_name();
' : '
', ' ', '
phpbb_convert_authentication(\'start\'); phpbb_convert_authentication(\'start\');
', ' ', '
@ -399,7 +402,7 @@ if (!$get_info)
array('is_orphan', 0, ''), array('is_orphan', 0, ''),
array('poster_id', 'attachments.user_id_1 AS poster_id', 'phpbb_user_id'), array('poster_id', 'attachments.user_id_1 AS poster_id', 'phpbb_user_id'),
array('physical_filename', 'attachments_desc.physical_filename', 'import_attachment'), array('physical_filename', 'attachments_desc.physical_filename', 'import_attachment'),
array('real_filename', 'attachments_desc.real_filename', ''), array('real_filename', 'attachments_desc.real_filename', 'phpbb_set_encoding'),
array('download_count', 'attachments_desc.download_count', ''), array('download_count', 'attachments_desc.download_count', ''),
array('attach_comment', 'attachments_desc.comment', array('function1' => 'phpbb_set_encoding', 'function2' => 'utf8_htmlspecialchars')), array('attach_comment', 'attachments_desc.comment', array('function1' => 'phpbb_set_encoding', 'function2' => 'utf8_htmlspecialchars')),
array('extension', 'attachments_desc.extension', ''), array('extension', 'attachments_desc.extension', ''),
@ -497,7 +500,7 @@ if (!$get_info)
array('topic_title', 'topics.topic_title', 'phpbb_set_encoding'), array('topic_title', 'topics.topic_title', 'phpbb_set_encoding'),
array('topic_time', 'topics.topic_time', ''), array('topic_time', 'topics.topic_time', ''),
array('topic_views', 'topics.topic_views', ''), array('topic_views', 'topics.topic_views', ''),
array('topic_posts_approved', 'topics.topic_replies + 1', ''), array('topic_posts_approved', 'topics.topic_replies', 'phpbb_topic_replies_to_posts'),
array('topic_posts_unapproved', 0, ''), array('topic_posts_unapproved', 0, ''),
array('topic_posts_softdeleted',0, ''), array('topic_posts_softdeleted',0, ''),
array('topic_last_post_id', 'topics.topic_last_post_id', ''), array('topic_last_post_id', 'topics.topic_last_post_id', ''),
@ -506,6 +509,8 @@ if (!$get_info)
array('topic_type', 'topics.topic_type', 'phpbb_convert_topic_type'), array('topic_type', 'topics.topic_type', 'phpbb_convert_topic_type'),
array('topic_first_post_id', 'topics.topic_first_post_id', ''), array('topic_first_post_id', 'topics.topic_first_post_id', ''),
array('topic_last_view_time', 'posts.post_time', 'intval'), array('topic_last_view_time', 'posts.post_time', 'intval'),
array('topic_visibility', ITEM_APPROVED, ''),
array('poll_title', 'vote_desc.vote_text', array('function1' => 'null_to_str', 'function2' => 'phpbb_set_encoding', 'function3' => 'htmlspecialchars_decode', 'function4' => 'utf8_htmlspecialchars')), array('poll_title', 'vote_desc.vote_text', array('function1' => 'null_to_str', 'function2' => 'phpbb_set_encoding', 'function3' => 'htmlspecialchars_decode', 'function4' => 'utf8_htmlspecialchars')),
array('poll_start', 'vote_desc.vote_start', 'null_to_zero'), array('poll_start', 'vote_desc.vote_start', 'null_to_zero'),
array('poll_length', 'vote_desc.vote_length', 'null_to_zero'), array('poll_length', 'vote_desc.vote_length', 'null_to_zero'),
@ -531,7 +536,7 @@ if (!$get_info)
array('topic_title', 'topics.topic_title', 'phpbb_set_encoding'), array('topic_title', 'topics.topic_title', 'phpbb_set_encoding'),
array('topic_time', 'topics.topic_time', ''), array('topic_time', 'topics.topic_time', ''),
array('topic_views', 'topics.topic_views', ''), array('topic_views', 'topics.topic_views', ''),
array('topic_posts_approved', 'topics.topic_replies + 1', ''), array('topic_posts_approved', 'topics.topic_replies', 'phpbb_topic_replies_to_posts'),
array('topic_posts_unapproved', 0, ''), array('topic_posts_unapproved', 0, ''),
array('topic_posts_softdeleted',0, ''), array('topic_posts_softdeleted',0, ''),
array('topic_last_post_id', 'topics.topic_last_post_id', ''), array('topic_last_post_id', 'topics.topic_last_post_id', ''),
@ -539,6 +544,7 @@ if (!$get_info)
array('topic_moved_id', 'topics.topic_moved_id', ''), array('topic_moved_id', 'topics.topic_moved_id', ''),
array('topic_type', 'topics.topic_type', 'phpbb_convert_topic_type'), array('topic_type', 'topics.topic_type', 'phpbb_convert_topic_type'),
array('topic_first_post_id', 'topics.topic_first_post_id', ''), array('topic_first_post_id', 'topics.topic_first_post_id', ''),
array('topic_visibility', ITEM_APPROVED, ''),
array('poll_title', 'vote_desc.vote_text', array('function1' => 'null_to_str', 'function2' => 'phpbb_set_encoding', 'function3' => 'htmlspecialchars_decode', 'function4' => 'utf8_htmlspecialchars')), array('poll_title', 'vote_desc.vote_text', array('function1' => 'null_to_str', 'function2' => 'phpbb_set_encoding', 'function3' => 'htmlspecialchars_decode', 'function4' => 'utf8_htmlspecialchars')),
array('poll_start', 'vote_desc.vote_start', 'null_to_zero'), array('poll_start', 'vote_desc.vote_start', 'null_to_zero'),
@ -646,6 +652,7 @@ if (!$get_info)
array('post_edit_count', 'posts.post_edit_count', ''), array('post_edit_count', 'posts.post_edit_count', ''),
array('post_edit_reason', '', ''), array('post_edit_reason', '', ''),
array('post_edit_user', '', 'phpbb_post_edit_user'), array('post_edit_user', '', 'phpbb_post_edit_user'),
array('post_visibility', ITEM_APPROVED, ''),
array('bbcode_uid', 'posts.post_time', 'make_uid'), array('bbcode_uid', 'posts.post_time', 'make_uid'),
array('post_text', 'posts_text.post_text', 'phpbb_prepare_message'), array('post_text', 'posts_text.post_text', 'phpbb_prepare_message'),
@ -821,7 +828,10 @@ if (!$get_info)
array( array(
'target' => GROUPS_TABLE, 'target' => GROUPS_TABLE,
'autoincrement' => 'group_id', 'autoincrement' => 'group_id',
'query_first' => array('target', $convert->truncate_statement . GROUPS_TABLE), 'query_first' => array(
array('target', $convert->truncate_statement . GROUPS_TABLE),
array('target', $convert->truncate_statement . TEAMPAGE_TABLE),
),
array('group_id', 'groups.group_id', ''), array('group_id', 'groups.group_id', ''),
array('group_type', 'groups.group_type', 'phpbb_convert_group_type'), array('group_type', 'groups.group_type', 'phpbb_convert_group_type'),
@ -838,6 +848,7 @@ if (!$get_info)
'query_first' => array('target', $convert->truncate_statement . USER_GROUP_TABLE), 'query_first' => array('target', $convert->truncate_statement . USER_GROUP_TABLE),
'execute_first' => ' 'execute_first' => '
add_default_groups(); add_default_groups();
add_groups_to_teampage();
', ',
array('group_id', 'groups.group_id', ''), array('group_id', 'groups.group_id', ''),
@ -865,7 +876,8 @@ if (!$get_info)
'autoincrement' => 'user_id', 'autoincrement' => 'user_id',
'query_first' => array( 'query_first' => array(
array('target', 'DELETE FROM ' . USERS_TABLE . ' WHERE user_id <> ' . ANONYMOUS), array('target', 'DELETE FROM ' . USERS_TABLE . ' WHERE user_id <> ' . ANONYMOUS),
array('target', $convert->truncate_statement . BOTS_TABLE) array('target', $convert->truncate_statement . BOTS_TABLE),
array('target', $convert->truncate_statement . USER_NOTIFICATIONS_TABLE),
), ),
'execute_last' => ' 'execute_last' => '
@ -889,7 +901,7 @@ if (!$get_info)
array('user_lastmark', 'users.user_lastvisit', 'intval'), array('user_lastmark', 'users.user_lastvisit', 'intval'),
array('user_lang', $config['default_lang'], ''), array('user_lang', $config['default_lang'], ''),
array('', 'users.user_lang', ''), array('', 'users.user_lang', ''),
array('user_timezone', 'users.user_timezone', 'floatval'), array('user_timezone', 'users.user_timezone', 'phpbb_convert_timezone'),
array('user_dateformat', 'users.user_dateformat', array('function1' => 'phpbb_set_encoding', 'function2' => 'fill_dateformat')), array('user_dateformat', 'users.user_dateformat', array('function1' => 'phpbb_set_encoding', 'function2' => 'fill_dateformat')),
array('user_inactive_reason', '', 'phpbb_inactive_reason'), array('user_inactive_reason', '', 'phpbb_inactive_reason'),
array('user_inactive_time', '', 'phpbb_inactive_time'), array('user_inactive_time', '', 'phpbb_inactive_time'),
@ -938,6 +950,8 @@ if (!$get_info)
array('user_sig_bbcode_bitfield', '', 'get_bbcode_bitfield'), array('user_sig_bbcode_bitfield', '', 'get_bbcode_bitfield'),
array('', 'users.user_regdate AS post_time', ''), array('', 'users.user_regdate AS post_time', ''),
array('', 'users.user_notify_pm', 'phpbb_add_notification_options'),
'where' => 'users.user_id <> -1', 'where' => 'users.user_id <> -1',
), ),
), ),

View file

@ -540,6 +540,15 @@ function phpbb_user_id($user_id)
return (int) $user_id; return (int) $user_id;
} }
/**
* Return correct user id value
* Everyone's id will be one higher to allow the guest/anonymous user to have a positive id as well
*/
function phpbb_topic_replies_to_posts($num_replies)
{
return (int) $num_replies + 1;
}
/* Copy additional table fields from old forum to new forum if user wants this (for Mod compatibility for example) /* Copy additional table fields from old forum to new forum if user wants this (for Mod compatibility for example)
function phpbb_copy_table_fields() function phpbb_copy_table_fields()
{ {
@ -1405,6 +1414,55 @@ function phpbb_attachment_category($cat_id)
return ATTACHMENT_CATEGORY_NONE; return ATTACHMENT_CATEGORY_NONE;
} }
/**
* Convert the attachment extension names
* This is only used if the Attachment MOD was installed
*/
function phpbb_attachment_extension_group_name()
{
global $db, $phpbb_root_path, $phpEx;
// Update file extension group names to use language strings.
$sql = 'SELECT lang_dir
FROM ' . LANG_TABLE;
$result = $db->sql_query($sql);
$extension_groups_updated = array();
while ($lang_dir = $db->sql_fetchfield('lang_dir'))
{
$lang_dir = basename($lang_dir);
$lang_file = $phpbb_root_path . 'language/' . $lang_dir . '/acp/attachments.' . $phpEx;
if (!file_exists($lang_file))
{
continue;
}
$lang = array();
include($lang_file);
foreach ($lang as $lang_key => $lang_val)
{
if (isset($extension_groups_updated[$lang_key]) || strpos($lang_key, 'EXT_GROUP_') !== 0)
{
continue;
}
$sql_ary = array(
'group_name' => substr($lang_key, 10), // Strip off 'EXT_GROUP_'
);
$sql = 'UPDATE ' . EXTENSION_GROUPS_TABLE . '
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . "
WHERE group_name = '" . $db->sql_escape($lang_val) . "'";
$db->sql_query($sql);
$extension_groups_updated[$lang_key] = true;
}
}
$db->sql_freeresult($result);
}
/** /**
* Obtain list of forums in which different attachment categories can be used * Obtain list of forums in which different attachment categories can be used
*/ */
@ -1868,3 +1926,50 @@ function phpbb_check_username_collisions()
$drop_sql = 'DROP TABLE ' . USERCONV_TABLE; $drop_sql = 'DROP TABLE ' . USERCONV_TABLE;
$db->sql_query($drop_sql); $db->sql_query($drop_sql);
} }
function phpbb_convert_timezone($timezone)
{
global $config, $db, $phpbb_root_path, $phpEx, $table_prefix;
$timezone_migration = new \phpbb\db\migration\data\v310\timezone($config, $db, new \phpbb\db\tools($db), $phpbb_root_path, $phpEx, $table_prefix);
return $timezone_migration->convert_phpbb30_timezone($timezone, 0);
}
function phpbb_add_notification_options($user_notify_pm)
{
global $convert_row, $db;
$user_id = phpbb_user_id($convert_row['user_id']);
if ($user_id == ANONYMOUS)
{
return;
}
$rows = array();
$rows[] = array(
'item_type' => 'post',
'item_id' => 0,
'user_id' => (int) $user_id,
'notify' => 1,
'method' => 'email',
);
$rows[] = array(
'item_type' => 'topic',
'item_id' => 0,
'user_id' => (int) $user_id,
'notify' => 1,
'method' => 'email',
);
if ($user_notify_pm)
{
$rows[] = array(
'item_type' => 'pm',
'item_id' => 0,
'user_id' => (int) $user_id,
'notify' => 1,
'method' => 'email',
);
}
$sql = $db->sql_multi_insert(USER_NOTIFICATIONS_TABLE, $rows);
}

View file

@ -90,13 +90,21 @@ class install_convert extends module
function main($mode, $sub) function main($mode, $sub)
{ {
global $lang, $template, $phpbb_root_path, $phpEx, $cache, $config, $language, $table_prefix; global $lang, $template, $phpbb_root_path, $phpEx, $cache, $config, $language, $table_prefix;
global $convert; global $convert, $request, $phpbb_container;
$this->tpl_name = 'install_convert'; $this->tpl_name = 'install_convert';
$this->mode = $mode; $this->mode = $mode;
$convert = new convert($this->p_master); $convert = new convert($this->p_master);
// Enable super globals to prevent issues with the new \phpbb\request\request object
$request->enable_super_globals();
// Create a normal container now
$phpbb_container = phpbb_create_default_container($phpbb_root_path, $phpEx);
// Create cache
$cache = $phpbb_container->get('cache');
switch ($sub) switch ($sub)
{ {
case 'intro': case 'intro':
@ -418,6 +426,7 @@ class install_convert extends module
{ {
$error[] = sprintf($lang['TABLE_PREFIX_SAME'], $src_table_prefix); $error[] = sprintf($lang['TABLE_PREFIX_SAME'], $src_table_prefix);
} }
$src_dbms = phpbb_convert_30_dbms_to_31($src_dbms);
// Check table prefix // Check table prefix
if (!sizeof($error)) if (!sizeof($error))
@ -1537,7 +1546,7 @@ class install_convert extends module
function finish_conversion() function finish_conversion()
{ {
global $db, $phpbb_root_path, $phpEx, $convert, $config, $language, $user, $template; global $db, $phpbb_root_path, $phpEx, $convert, $config, $language, $user, $template;
global $cache, $auth; global $cache, $auth, $phpbb_container, $phpbb_log;
$db->sql_query('DELETE FROM ' . CONFIG_TABLE . " $db->sql_query('DELETE FROM ' . CONFIG_TABLE . "
WHERE config_name = 'convert_progress' WHERE config_name = 'convert_progress'
@ -1550,6 +1559,7 @@ class install_convert extends module
phpbb_cache_moderators($db, $cache, $auth); phpbb_cache_moderators($db, $cache, $auth);
// And finally, add a note to the log // And finally, add a note to the log
$phpbb_log = $phpbb_container->get('log');
add_log('admin', 'LOG_INSTALL_CONVERTED', $convert->convertor_data['forum_name'], $config['version']); add_log('admin', 'LOG_INSTALL_CONVERTED', $convert->convertor_data['forum_name'], $config['version']);
$url = $this->p_master->module_url . "?mode={$this->mode}&amp;sub=final&amp;language=$language"; $url = $this->p_master->module_url . "?mode={$this->mode}&amp;sub=final&amp;language=$language";