diff options
| -rw-r--r-- | phpBB/includes/functions_convert.php | 36 | ||||
| -rw-r--r-- | phpBB/install/convertors/convert_phpbb20.php | 28 | ||||
| -rw-r--r-- | phpBB/install/convertors/functions_phpbb20.php | 105 | ||||
| -rw-r--r-- | phpBB/install/install_convert.php | 14 | 
4 files changed, 172 insertions, 11 deletions
diff --git a/phpBB/includes/functions_convert.php b/phpBB/includes/functions_convert.php index 50acf9323c..3eeecd038d 100644 --- a/phpBB/includes/functions_convert.php +++ b/phpBB/includes/functions_convert.php @@ -1719,7 +1719,7 @@ function add_default_groups()  		'GUESTS'			=> array('', 0, 0),  		'REGISTERED'		=> 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),  		'BOTS'				=> array('9E8DA7', 0, 0),  		'NEWLY_REGISTERED'		=> array('', 0, 0), @@ -1748,7 +1748,7 @@ function add_default_groups()  			'group_type'			=> GROUP_SPECIAL,  			'group_colour'			=> (string) $data[0],  			'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. diff --git a/phpBB/install/convertors/convert_phpbb20.php b/phpBB/install/convertors/convert_phpbb20.php index 03ed15c0ec..de4e04a8e5 100644 --- a/phpBB/install/convertors/convert_phpbb20.php +++ b/phpBB/install/convertors/convert_phpbb20.php @@ -136,7 +136,7 @@ $config_schema = array(  		'avatar_max_width'		=> 'avatar_max_width',  		'avatar_max_height'		=> 'avatar_max_height',  		'default_dateformat'	=> 'phpbb_set_encoding(default_dateformat)', -		'board_timezone'		=> 'board_timezone', +		'board_timezone'		=> 'phpbb_convert_timezone(board_timezone)',  		'allow_privmsg'			=> 'not(privmsg_disable)',  		'gzip_compress'			=> 'gzip_compress',  		'coppa_enable'			=> '!is_empty(coppa_mail)', @@ -341,6 +341,9 @@ if (!$get_info)  			update_folder_pm_count();  		', '  			update_unread_count(); +		', (defined('MOD_ATTACHMENT')) ? ' +			phpbb_attachment_extension_group_name(); +		' : '  		', '  			phpbb_convert_authentication(\'start\');  		', ' @@ -399,7 +402,7 @@ if (!$get_info)  				array('is_orphan',				0,										''),  				array('poster_id',				'attachments.user_id_1 AS poster_id',	'phpbb_user_id'),  				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('attach_comment',			'attachments_desc.comment',				array('function1' => 'phpbb_set_encoding', 'function2' => 'utf8_htmlspecialchars')),  				array('extension',				'attachments_desc.extension',			''), @@ -497,7 +500,7 @@ if (!$get_info)  				array('topic_title',			'topics.topic_title',				'phpbb_set_encoding'),  				array('topic_time',				'topics.topic_time',				''),  				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_softdeleted',0,									''),  				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_first_post_id',	'topics.topic_first_post_id',		''),  				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_start',				'vote_desc.vote_start',				'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_time',				'topics.topic_time',				''),  				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_softdeleted',0,									''),  				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_type',				'topics.topic_type',				'phpbb_convert_topic_type'),  				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_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_reason',		'',									''),  				array('post_edit_user',			'',									'phpbb_post_edit_user'), +				array('post_visibility',		ITEM_APPROVED,						''),  				array('bbcode_uid',				'posts.post_time',					'make_uid'),  				array('post_text',				'posts_text.post_text',				'phpbb_prepare_message'), @@ -821,7 +828,10 @@ if (!$get_info)  			array(  				'target'		=> GROUPS_TABLE,  				'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_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),  				'execute_first'	=> '  					add_default_groups(); +					add_groups_to_teampage();  				',  				array('group_id',		'groups.group_id',					''), @@ -865,7 +876,8 @@ if (!$get_info)  				'autoincrement'	=> 'user_id',  				'query_first'	=> array(  					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'	=> ' @@ -889,7 +901,7 @@ if (!$get_info)  				array('user_lastmark',			'users.user_lastvisit',				'intval'),  				array('user_lang',				$config['default_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_inactive_reason',	'',									'phpbb_inactive_reason'),  				array('user_inactive_time',		'',									'phpbb_inactive_time'), @@ -938,6 +950,8 @@ if (!$get_info)  				array('user_sig_bbcode_bitfield',	'',												'get_bbcode_bitfield'),  				array('',							'users.user_regdate AS post_time',				''), +				array('',						'users.user_notify_pm',				'phpbb_add_notification_options'), +  				'where'			=> 'users.user_id <> -1',  			),  		), diff --git a/phpBB/install/convertors/functions_phpbb20.php b/phpBB/install/convertors/functions_phpbb20.php index a698f0ef13..29e5f7ab09 100644 --- a/phpBB/install/convertors/functions_phpbb20.php +++ b/phpBB/install/convertors/functions_phpbb20.php @@ -540,6 +540,15 @@ function phpbb_user_id($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)  function phpbb_copy_table_fields()  { @@ -1406,6 +1415,55 @@ function phpbb_attachment_category($cat_id)  }  /** +* 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  */  function phpbb_attachment_forum_perms($forum_permissions) @@ -1868,3 +1926,50 @@ function phpbb_check_username_collisions()  	$drop_sql = 'DROP TABLE ' . USERCONV_TABLE;  	$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); +} diff --git a/phpBB/install/install_convert.php b/phpBB/install/install_convert.php index 4d3e1d3d4a..1c7e2dca76 100644 --- a/phpBB/install/install_convert.php +++ b/phpBB/install/install_convert.php @@ -90,13 +90,21 @@ class install_convert extends module  	function main($mode, $sub)  	{  		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->mode = $mode;  		$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)  		{  			case 'intro': @@ -418,6 +426,7 @@ class install_convert extends module  			{  				$error[] = sprintf($lang['TABLE_PREFIX_SAME'], $src_table_prefix);  			} +			$src_dbms  = phpbb_convert_30_dbms_to_31($src_dbms);  			// Check table prefix  			if (!sizeof($error)) @@ -1537,7 +1546,7 @@ class install_convert extends module  	function finish_conversion()  	{  		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 . "  			WHERE config_name = 'convert_progress' @@ -1550,6 +1559,7 @@ class install_convert extends module  		phpbb_cache_moderators($db, $cache, $auth);  		// 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']);  		$url = $this->p_master->module_url . "?mode={$this->mode}&sub=final&language=$language";  | 
