diff options
Diffstat (limited to 'phpBB/includes')
140 files changed, 1897 insertions, 3791 deletions
| diff --git a/phpBB/includes/acp/acp_attachments.php b/phpBB/includes/acp/acp_attachments.php index 67fba1094d..78488b4048 100644 --- a/phpBB/includes/acp/acp_attachments.php +++ b/phpBB/includes/acp/acp_attachments.php @@ -43,7 +43,7 @@ class acp_attachments  	function main($id, $mode)  	{  		global $db, $user, $auth, $template, $cache, $phpbb_container; -		global $config, $phpbb_admin_path, $phpbb_root_path, $phpEx; +		global $config, $phpbb_admin_path, $phpbb_root_path, $phpEx, $phpbb_log, $request;  		$this->id = $id;  		$this->db = $db; @@ -56,7 +56,7 @@ class acp_attachments  		$error = $notify = array();  		$submit = (isset($_POST['submit'])) ? true : false; -		$action = request_var('action', ''); +		$action = $request->variable('action', '');  		$form_key = 'acp_attach';  		add_form_key($form_key); @@ -160,7 +160,7 @@ class acp_attachments  				);  				$this->new_config = $config; -				$cfg_array = (isset($_REQUEST['config'])) ? request_var('config', array('' => '')) : $this->new_config; +				$cfg_array = (isset($_REQUEST['config'])) ? $request->variable('config', array('' => '')) : $this->new_config;  				$error = array();  				// We validate the complete config if whished @@ -184,13 +184,13 @@ class acp_attachments  					if (in_array($config_name, array('attachment_quota', 'max_filesize', 'max_filesize_pm')))  					{ -						$size_var = request_var($config_name, ''); +						$size_var = $request->variable($config_name, '');  						$this->new_config[$config_name] = $config_value = ($size_var == 'kb') ? round($config_value * 1024) : (($size_var == 'mb') ? round($config_value * 1048576) : $config_value);  					}  					if ($submit)  					{ -						set_config($config_name, $config_value); +						$config->set($config_name, $config_value);  					}  				} @@ -198,7 +198,7 @@ class acp_attachments  				if ($submit)  				{ -					add_log('admin', 'LOG_CONFIG_ATTACH'); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_CONFIG_ATTACH');  					// Check Settings  					$this->test_upload($error, $this->new_config['upload_path'], false); @@ -334,8 +334,8 @@ class acp_attachments  					if ($submit)  					{  						// Change Extensions ? -						$extension_change_list	= request_var('extension_change_list', array(0)); -						$group_select_list		= request_var('group_select', array(0)); +						$extension_change_list	= $request->variable('extension_change_list', array(0)); +						$group_select_list		= $request->variable('group_select', array(0));  						// Generate correct Change List  						$extensions = array(); @@ -359,13 +359,13 @@ class acp_attachments  									WHERE extension_id = ' . $row['extension_id'];  								$db->sql_query($sql); -								add_log('admin', 'LOG_ATTACH_EXT_UPDATE', $row['extension']); +								$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ATTACH_EXT_UPDATE', false, array($row['extension']));  							}  						}  						$db->sql_freeresult($result);  						// Delete Extension? -						$extension_id_list = request_var('extension_id_list', array(0)); +						$extension_id_list = $request->variable('extension_id_list', array(0));  						if (sizeof($extension_id_list))  						{ @@ -386,13 +386,13 @@ class acp_attachments  								WHERE ' . $db->sql_in_set('extension_id', $extension_id_list);  							$db->sql_query($sql); -							add_log('admin', 'LOG_ATTACH_EXT_DEL', $extension_list); +							$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ATTACH_EXT_DEL', false, array($extension_list));  						}  					}  					// Add Extension? -					$add_extension			= strtolower(request_var('add_extension', '')); -					$add_extension_group	= request_var('add_group_select', 0); +					$add_extension			= strtolower($request->variable('add_extension', '')); +					$add_extension_group	= $request->variable('add_group_select', 0);  					$add					= (isset($_POST['add_extension_check'])) ? true : false;  					if ($add_extension && $add) @@ -418,7 +418,8 @@ class acp_attachments  								);  								$db->sql_query('INSERT INTO ' . EXTENSIONS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); -								add_log('admin', 'LOG_ATTACH_EXT_ADD', $add_extension); + +								$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ATTACH_EXT_ADD', false, array($add_extension));  							}  						}  					} @@ -475,8 +476,8 @@ class acp_attachments  				if ($submit)  				{ -					$action = request_var('action', ''); -					$group_id = request_var('g', 0); +					$action = $request->variable('action', ''); +					$group_id = $request->variable('g', 0);  					if ($action != 'add' && $action != 'edit')  					{ @@ -507,7 +508,7 @@ class acp_attachments  						$ext_row = array();  					} -					$group_name = utf8_normalize_nfc(request_var('group_name', '', true)); +					$group_name = $request->variable('group_name', '', true);  					$new_group_name = ($action == 'add') ? $group_name : (($ext_row['group_name'] != $group_name) ? $group_name : '');  					if (!$group_name) @@ -537,12 +538,12 @@ class acp_attachments  					if (!sizeof($error))  					{  						// Ok, build the update/insert array -						$upload_icon	= request_var('upload_icon', 'no_image'); -						$size_select	= request_var('size_select', 'b'); -						$forum_select	= request_var('forum_select', false); -						$allowed_forums	= request_var('allowed_forums', array(0)); +						$upload_icon	= $request->variable('upload_icon', 'no_image'); +						$size_select	= $request->variable('size_select', 'b'); +						$forum_select	= $request->variable('forum_select', false); +						$allowed_forums	= $request->variable('allowed_forums', array(0));  						$allow_in_pm	= (isset($_POST['allow_in_pm'])) ? true : false; -						$max_filesize	= request_var('max_filesize', 0); +						$max_filesize	= $request->variable('max_filesize', 0);  						$max_filesize	= ($size_select == 'kb') ? round($max_filesize * 1024) : (($size_select == 'mb') ? round($max_filesize * 1048576) : $max_filesize);  						$allow_group	= (isset($_POST['allow_group'])) ? true : false; @@ -558,7 +559,7 @@ class acp_attachments  						$group_ary = array(  							'group_name'	=> $group_name, -							'cat_id'		=> request_var('special_category', ATTACHMENT_CATEGORY_NONE), +							'cat_id'		=> $request->variable('special_category', ATTACHMENT_CATEGORY_NONE),  							'allow_group'	=> ($allow_group) ? 1 : 0,  							'upload_icon'	=> ($upload_icon == 'no_image') ? '' : $upload_icon,  							'max_filesize'	=> $max_filesize, @@ -583,10 +584,10 @@ class acp_attachments  						}  						$group_name = (isset($user->lang['EXT_GROUP_' . $group_name])) ? $user->lang['EXT_GROUP_' . $group_name] : $group_name; -						add_log('admin', 'LOG_ATTACH_EXTGROUP_' . strtoupper($action), $group_name); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ATTACH_EXTGROUP_' . strtoupper($action), false, array($group_name));  					} -					$extension_list = request_var('extensions', array(0)); +					$extension_list = $request->variable('extensions', array(0));  					if ($action == 'edit' && sizeof($extension_list))  					{ @@ -621,7 +622,7 @@ class acp_attachments  					ATTACHMENT_CATEGORY_QUICKTIME	=> $user->lang['CAT_QUICKTIME_FILES'],  				); -				$group_id = request_var('g', 0); +				$group_id = $request->variable('g', 0);  				$action = (isset($_POST['add'])) ? 'add' : $action;  				switch ($action) @@ -648,7 +649,7 @@ class acp_attachments  								WHERE group_id = $group_id";  							$db->sql_query($sql); -							add_log('admin', 'LOG_ATTACH_EXTGROUP_DEL', $group_name); +							$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ATTACH_EXTGROUP_DEL', false, array($group_name));  							$cache->destroy('_extensions'); @@ -689,7 +690,7 @@ class acp_attachments  						if ($action == 'add')  						{  							$ext_group_row = array( -								'group_name'	=> utf8_normalize_nfc(request_var('group_name', '', true)), +								'group_name'	=> $request->variable('group_name', '', true),  								'cat_id'		=> 0,  								'allow_group'	=> 1,  								'allow_in_pm'	=> 1, @@ -905,9 +906,9 @@ class acp_attachments  				if ($submit)  				{ -					$delete_files = (isset($_POST['delete'])) ? array_keys(request_var('delete', array('' => 0))) : array(); -					$add_files = (isset($_POST['add'])) ? array_keys(request_var('add', array('' => 0))) : array(); -					$post_ids = request_var('post_id', array('' => 0)); +					$delete_files = (isset($_POST['delete'])) ? array_keys($request->variable('delete', array('' => 0))) : array(); +					$add_files = (isset($_POST['add'])) ? array_keys($request->variable('add', array('' => 0))) : array(); +					$post_ids = $request->variable('post_id', array('' => 0));  					if (sizeof($delete_files))  					{ @@ -938,7 +939,7 @@ class acp_attachments  							WHERE ' . $db->sql_in_set('attach_id', array_keys($delete_files));  						$db->sql_query($sql); -						add_log('admin', 'LOG_ATTACH_ORPHAN_DEL', implode(', ', $delete_files)); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ATTACH_ORPHAN_DEL', false, array(implode(', ', $delete_files)));  						$notify[] = sprintf($user->lang['LOG_ATTACH_ORPHAN_DEL'], implode($user->lang['COMMA_SEPARATOR'], $delete_files));  					} @@ -1029,14 +1030,14 @@ class acp_attachments  							$space_taken += $row['filesize'];  							$files_added++; -							add_log('admin', 'LOG_ATTACH_FILEUPLOAD', $post_row['post_id'], $row['real_filename']); +							$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ATTACH_FILEUPLOAD', false, array($post_row['post_id'], $row['real_filename']));  						}  						$db->sql_freeresult($result);  						if ($files_added)  						{ -							set_config_count('upload_dir_size', $space_taken, true); -							set_config_count('num_files', $files_added, true); +							$config->increment('upload_dir_size', $space_taken, false); +							$config->increment('num_files', $files_added, false);  						}  					}  				} @@ -1073,7 +1074,7 @@ class acp_attachments  				if ($submit)  				{ -					$delete_files = (isset($_POST['delete'])) ? array_keys(request_var('delete', array('' => 0))) : array(); +					$delete_files = (isset($_POST['delete'])) ? array_keys($request->variable('delete', array('' => 0))) : array();  					if (sizeof($delete_files))  					{ @@ -1095,7 +1096,8 @@ class acp_attachments  							{  								$error[] = $user->lang['FILES_GONE'];  							} -							add_log('admin', 'LOG_ATTACHMENTS_DELETED', implode(', ', $deleted_filenames)); + +							$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ATTACHMENTS_DELETED', false, array(implode(', ', $deleted_filenames)));  							$notify[] = sprintf($user->lang['LOG_ATTACHMENTS_DELETED'], implode($user->lang['COMMA_SEPARATOR'], $deleted_filenames));  						}  						else @@ -1121,12 +1123,12 @@ class acp_attachments  					'S_MANAGE'		=> true,  				)); -				$start		= request_var('start', 0); +				$start		= $request->variable('start', 0);  				// Sort keys -				$sort_days	= request_var('st', 0); -				$sort_key	= request_var('sk', 't'); -				$sort_dir	= request_var('sd', 'd'); +				$sort_days	= $request->variable('st', 0); +				$sort_key	= $request->variable('sk', 't'); +				$sort_dir	= $request->variable('sd', 'd');  				// Sorting  				$limit_days = array(0 => $user->lang['ALL_ENTRIES'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']); @@ -1147,6 +1149,7 @@ class acp_attachments  				$total_size = $stats['upload_dir_size'];  				// Make sure $start is set to the last page if it exceeds the amount +				/* @var $pagination \phpbb\pagination */  				$pagination = $phpbb_container->get('pagination');  				$start = $pagination->validate_start($start, $attachments_per_page, $num_files); @@ -1346,6 +1349,8 @@ class acp_attachments  		else  		{  			$this->set_attachment_stats($this->get_attachment_stats()); + +			/* @var $log \phpbb\log\log_interface */  			$log = $this->phpbb_container->get('log');  			$log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_RESYNC_FILES_STATS');  		} @@ -1524,13 +1529,12 @@ class acp_attachments  	*/  	function perform_site_list()  	{ -		global $db, $user; -		global $request; +		global $db, $user, $request, $phpbb_log;  		if (isset($_REQUEST['securesubmit']))  		{  			// Grab the list of entries -			$ips = request_var('ips', ''); +			$ips = $request->variable('ips', '');  			$ip_list = array_unique(explode("\n", $ips));  			$ip_list_log = implode(', ', $ip_list); @@ -1676,14 +1680,14 @@ class acp_attachments  			{  				// Update log  				$log_entry = ($ip_exclude) ? 'LOG_DOWNLOAD_EXCLUDE_IP' : 'LOG_DOWNLOAD_IP'; -				add_log('admin', $log_entry, $ip_list_log); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, $log_entry, false, array($ip_list_log));  			}  			trigger_error($user->lang['SECURE_DOWNLOAD_UPDATE_SUCCESS'] . adm_back_link($this->u_action));  		}  		else if (isset($_POST['unsecuresubmit']))  		{ -			$unip_sql = request_var('unip', array(0)); +			$unip_sql = $request->variable('unip', array(0));  			if (sizeof($unip_sql))  			{ @@ -1705,7 +1709,7 @@ class acp_attachments  					WHERE ' . $db->sql_in_set('site_id', $unip_sql);  				$db->sql_query($sql); -				add_log('admin', 'LOG_DOWNLOAD_REMOVE_IP', $l_unip_list); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_DOWNLOAD_REMOVE_IP', false, array($l_unip_list));  			}  			trigger_error($user->lang['SECURE_DOWNLOAD_UPDATE_SUCCESS'] . adm_back_link($this->u_action)); diff --git a/phpBB/includes/acp/acp_bbcodes.php b/phpBB/includes/acp/acp_bbcodes.php index e245eea069..a5cd48c444 100644 --- a/phpBB/includes/acp/acp_bbcodes.php +++ b/phpBB/includes/acp/acp_bbcodes.php @@ -26,13 +26,13 @@ class acp_bbcodes  	function main($id, $mode)  	{  		global $db, $user, $auth, $template, $cache, $request, $phpbb_dispatcher; -		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx; +		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_log;  		$user->add_lang('acp/posting');  		// Set up general vars -		$action	= request_var('action', ''); -		$bbcode_id = request_var('bbcode', 0); +		$action	= $request->variable('action', ''); +		$bbcode_id = $request->variable('bbcode', 0);  		$this->tpl_name = 'acp_bbcodes';  		$this->page_title = 'ACP_BBCODES'; @@ -83,11 +83,11 @@ class acp_bbcodes  			// No break here  			case 'create': -				$display_on_posting = request_var('display_on_posting', 0); +				$display_on_posting = $request->variable('display_on_posting', 0); -				$bbcode_match = request_var('bbcode_match', ''); -				$bbcode_tpl = htmlspecialchars_decode(utf8_normalize_nfc(request_var('bbcode_tpl', '', true))); -				$bbcode_helpline = utf8_normalize_nfc(request_var('bbcode_helpline', '', true)); +				$bbcode_match = $request->variable('bbcode_match', ''); +				$bbcode_tpl = htmlspecialchars_decode($request->variable('bbcode_tpl', '', true)); +				$bbcode_helpline = $request->variable('bbcode_helpline', '', true);  			break;  		} @@ -285,7 +285,7 @@ class acp_bbcodes  						$log_action = 'LOG_BBCODE_EDIT';  					} -					add_log('admin', $log_action, $data['bbcode_tag']); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, $log_action, false, array($data['bbcode_tag']));  					trigger_error($user->lang[$lang] . adm_back_link($this->u_action));  				} @@ -319,7 +319,7 @@ class acp_bbcodes  					{  						$db->sql_query('DELETE FROM ' . BBCODES_TABLE . " WHERE bbcode_id = $bbcode_id");  						$cache->destroy('sql', BBCODES_TABLE); -						add_log('admin', 'LOG_BBCODE_DELETE', $row['bbcode_tag']); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_BBCODE_DELETE', false, array($row['bbcode_tag']));  						if ($request->is_ajax())  						{ diff --git a/phpBB/includes/acp/acp_board.php b/phpBB/includes/acp/acp_board.php index 63e2647f02..965f1a6f70 100644 --- a/phpBB/includes/acp/acp_board.php +++ b/phpBB/includes/acp/acp_board.php @@ -30,13 +30,13 @@ class acp_board  	function main($id, $mode)  	{ -		global $db, $user, $auth, $template; +		global $db, $user, $auth, $template, $request;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx; -		global $cache, $phpbb_container, $phpbb_dispatcher; +		global $cache, $phpbb_container, $phpbb_dispatcher, $phpbb_log;  		$user->add_lang('acp/board'); -		$action	= request_var('action', ''); +		$action	= $request->variable('action', '');  		$submit = (isset($_POST['submit']) || isset($_POST['allow_quick_reply_enable'])) ? true : false;  		$form_key = 'acp_board'; @@ -115,6 +115,7 @@ class acp_board  			break;  			case 'avatar': +				/* @var $phpbb_avatar_manager \phpbb\avatar\manager */  				$phpbb_avatar_manager = $phpbb_container->get('avatar.manager');  				$avatar_drivers = $phpbb_avatar_manager->get_all_drivers(); @@ -483,7 +484,7 @@ class acp_board  		}  		$this->new_config = $config; -		$cfg_array = (isset($_REQUEST['config'])) ? utf8_normalize_nfc(request_var('config', array('' => ''), true)) : $this->new_config; +		$cfg_array = (isset($_REQUEST['config'])) ? $request->variable('config', array('' => ''), true) : $this->new_config;  		$error = array();  		// We validate the complete config if wished @@ -531,7 +532,7 @@ class acp_board  			if ($submit)  			{ -				set_config($config_name, $config_value); +				$config->set($config_name, $config_value);  				if ($config_name == 'allow_quick_reply' && isset($_POST['allow_quick_reply_enable']))  				{ @@ -553,6 +554,7 @@ class acp_board  		if ($mode == 'auth')  		{  			// Retrieve a list of auth plugins and check their config values +			/* @var $auth_providers \phpbb\auth\provider_collection */  			$auth_providers = $phpbb_container->get('auth.provider_collection');  			$updated_auth_settings = false; @@ -566,7 +568,7 @@ class acp_board  					{  						if (!isset($config[$field]))  						{ -							set_config($field, ''); +							$config->set($field, '');  						}  						if (!isset($cfg_array[$field]) || strpos($field, 'legend') !== false) @@ -581,7 +583,7 @@ class acp_board  						if ($submit)  						{  							$updated_auth_settings = true; -							set_config($field, $config_value); +							$config->set($field, $config_value);  						}  					}  				} @@ -598,11 +600,11 @@ class acp_board  					{  						foreach ($old_auth_config as $config_name => $config_value)  						{ -							set_config($config_name, $config_value); +							$config->set($config_name, $config_value);  						}  						trigger_error($error . adm_back_link($this->u_action), E_USER_WARNING);  					} -					set_config('auth_method', basename($cfg_array['auth_method'])); +					$config->set('auth_method', basename($cfg_array['auth_method']));  				}  				else  				{ @@ -613,7 +615,7 @@ class acp_board  		if ($submit)  		{ -			add_log('admin', 'LOG_CONFIG_' . strtoupper($mode)); +			$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_CONFIG_' . strtoupper($mode));  			$message = $user->lang('CONFIG_UPDATED');  			$message_type = E_USER_NOTICE; @@ -720,8 +722,9 @@ class acp_board  	{  		global $phpbb_root_path, $phpEx, $phpbb_container; -		$auth_plugins = array(); +		/* @var $auth_providers \phpbb\auth\provider_collection */  		$auth_providers = $phpbb_container->get('auth.provider_collection'); +		$auth_plugins = array();  		foreach ($auth_providers as $key => $value)  		{ @@ -1046,10 +1049,10 @@ class acp_board  	function store_feed_forums($option, $key)  	{ -		global $db, $cache; +		global $db, $cache, $request;  		// Get key -		$values = request_var($key, array(0 => 0)); +		$values = $request->variable($key, array(0 => 0));  		// Empty option bit for all forums  		$sql = 'UPDATE ' . FORUMS_TABLE . ' diff --git a/phpBB/includes/acp/acp_bots.php b/phpBB/includes/acp/acp_bots.php index 1ea320e674..e0220ad0c3 100644 --- a/phpBB/includes/acp/acp_bots.php +++ b/phpBB/includes/acp/acp_bots.php @@ -25,13 +25,13 @@ class acp_bots  	function main($id, $mode)  	{ -		global $config, $db, $user, $auth, $template, $cache, $request; +		global $config, $db, $user, $auth, $template, $cache, $request, $phpbb_log;  		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix; -		$action = request_var('action', ''); +		$action = $request->variable('action', '');  		$submit = (isset($_POST['submit'])) ? true : false; -		$mark	= request_var('mark', array(0)); -		$bot_id	= request_var('id', 0); +		$mark	= $request->variable('mark', array(0)); +		$bot_id	= $request->variable('id', 0);  		if (isset($_POST['add']))  		{ @@ -124,7 +124,7 @@ class acp_bots  						$cache->destroy('_bots'); -						add_log('admin', 'LOG_BOT_DELETE', implode(', ', $bot_name_ary)); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_BOT_DELETE', false, array(implode(', ', $bot_name_ary)));  						trigger_error($user->lang['BOT_DELETED'] . adm_back_link($this->u_action));  					}  					else @@ -144,12 +144,12 @@ class acp_bots  				include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);  				$bot_row = array( -					'bot_name'		=> utf8_normalize_nfc(request_var('bot_name', '', true)), -					'bot_agent'		=> request_var('bot_agent', ''), -					'bot_ip'		=> request_var('bot_ip', ''), -					'bot_active'	=> request_var('bot_active', true), -					'bot_lang'		=> request_var('bot_lang', $config['default_lang']), -					'bot_style'		=> request_var('bot_style' , $config['default_style']), +					'bot_name'		=> $request->variable('bot_name', '', true), +					'bot_agent'		=> $request->variable('bot_agent', ''), +					'bot_ip'		=> $request->variable('bot_ip', ''), +					'bot_active'	=> $request->variable('bot_active', true), +					'bot_lang'		=> $request->variable('bot_lang', $config['default_lang']), +					'bot_style'		=> $request->variable('bot_style' , $config['default_style']),  				);  				if ($submit) @@ -292,7 +292,7 @@ class acp_bots  						$cache->destroy('_bots'); -						add_log('admin', 'LOG_BOT_' . $log, $bot_row['bot_name']); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_BOT_' . $log, false, array($bot_row['bot_name']));  						trigger_error($user->lang['BOT_' . $log] . adm_back_link($this->u_action));  					} diff --git a/phpBB/includes/acp/acp_captcha.php b/phpBB/includes/acp/acp_captcha.php index fa8d8fb6a9..1f6fbc2cae 100644 --- a/phpBB/includes/acp/acp_captcha.php +++ b/phpBB/includes/acp/acp_captcha.php @@ -25,17 +25,18 @@ class acp_captcha  	function main($id, $mode)  	{ -		global $db, $user, $auth, $template; +		global $db, $user, $auth, $template, $phpbb_log, $request;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_container;  		$user->add_lang('acp/board'); +		/* @var $factory \phpbb\captcha\factory */  		$factory = $phpbb_container->get('captcha.factory');  		$captchas = $factory->get_captcha_types(); -		$selected = request_var('select_captcha', $config['captcha_plugin']); +		$selected = $request->variable('select_captcha', $config['captcha_plugin']);  		$selected = (isset($captchas['available'][$selected]) || isset($captchas['unavailable'][$selected])) ? $selected : $config['captcha_plugin']; -		$configure = request_var('configure', false); +		$configure = $request->variable('configure', false);  		// Oh, they are just here for the view  		if (isset($_GET['captcha_demo'])) @@ -64,13 +65,13 @@ class acp_captcha  			$form_key = 'acp_captcha';  			add_form_key($form_key); -			$submit = request_var('main_submit', false); +			$submit = $request->variable('main_submit', false);  			if ($submit && check_form_key($form_key))  			{  				foreach ($config_vars as $config_var => $options)  				{ -					set_config($config_var, request_var($config_var, $options['default'])); +					$config->set($config_var, $request->variable($config_var, $options['default']));  				}  				if ($selected !== $config['captcha_plugin']) @@ -81,11 +82,11 @@ class acp_captcha  						$old_captcha = $factory->get_instance($config['captcha_plugin']);  						$old_captcha->uninstall(); -						set_config('captcha_plugin', $selected); +						$config->set('captcha_plugin', $selected);  						$new_captcha = $factory->get_instance($config['captcha_plugin']);  						$new_captcha->install(); -						add_log('admin', 'LOG_CONFIG_VISUAL'); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_CONFIG_VISUAL');  					}  					else  					{ @@ -117,7 +118,7 @@ class acp_captcha  				foreach ($config_vars as $config_var => $options)  				{ -					$template->assign_var($options['tpl'], (isset($_POST[$config_var])) ? request_var($config_var, $options['default']) : $config[$config_var]) ; +					$template->assign_var($options['tpl'], (isset($_POST[$config_var])) ? $request->variable($config_var, $options['default']) : $config[$config_var]) ;  				}  				$template->assign_vars(array( diff --git a/phpBB/includes/acp/acp_contact.php b/phpBB/includes/acp/acp_contact.php index 4e46df21e0..945add66a4 100644 --- a/phpBB/includes/acp/acp_contact.php +++ b/phpBB/includes/acp/acp_contact.php @@ -48,6 +48,7 @@ class acp_contact  			include($phpbb_root_path . 'includes/message_parser.' . $phpEx);  		} +		/* @var $config_text \phpbb\config\db_text */  		$config_text = $phpbb_container->get('config_text');  		$contact_admin_data			= $config_text->get_array(array( @@ -104,6 +105,9 @@ class acp_contact  		$contact_admin_edit = generate_text_for_edit($contact_admin_info, $contact_admin_info_uid, $contact_admin_info_flags); +		/** @var \phpbb\controller\helper $controller_helper */ +		$controller_helper = $phpbb_container->get('controller.helper'); +  		$template->assign_vars(array(  			'ERRORS'			=> $error,  			'CONTACT_ENABLED'	=> $config['contact_admin_form_enable'], @@ -115,7 +119,7 @@ class acp_contact  			'S_SMILIES_DISABLE_CHECKED'		=> !$contact_admin_edit['allow_smilies'],  			'S_MAGIC_URL_DISABLE_CHECKED'	=> !$contact_admin_edit['allow_urls'], -			'BBCODE_STATUS'			=> $user->lang('BBCODE_IS_ON', '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>'), +			'BBCODE_STATUS'			=> $user->lang('BBCODE_IS_ON', '<a href="' . $controller_helper->route('phpbb_help_controller', array('mode' => 'bbcode')) . '">', '</a>'),  			'SMILIES_STATUS'		=> $user->lang['SMILIES_ARE_ON'],  			'IMG_STATUS'			=> $user->lang['IMAGES_ARE_ON'],  			'FLASH_STATUS'			=> $user->lang['FLASH_IS_ON'], diff --git a/phpBB/includes/acp/acp_database.php b/phpBB/includes/acp/acp_database.php index 0c52f82459..25cddaa5d4 100644 --- a/phpBB/includes/acp/acp_database.php +++ b/phpBB/includes/acp/acp_database.php @@ -26,17 +26,17 @@ class acp_database  	function main($id, $mode)  	{ -		global $cache, $db, $user, $auth, $template, $table_prefix; -		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx; +		global $cache, $db, $user, $template, $table_prefix, $request; +		global $phpbb_root_path, $phpbb_container, $phpbb_log; -		$this->db_tools = new \phpbb\db\tools($db); +		$this->db_tools = $phpbb_container->get('dbal.tools');  		$user->add_lang('acp/database');  		$this->tpl_name = 'acp_database';  		$this->page_title = 'ACP_DATABASE'; -		$action	= request_var('action', ''); +		$action	= $request->variable('action', '');  		$submit = (isset($_POST['submit'])) ? true : false;  		$template->assign_vars(array( @@ -52,10 +52,10 @@ class acp_database  				switch ($action)  				{  					case 'download': -						$type	= request_var('type', ''); -						$table	= array_intersect($this->db_tools->sql_list_tables(), request_var('table', array(''))); -						$format	= request_var('method', ''); -						$where	= request_var('where', ''); +						$type	= $request->variable('type', ''); +						$table	= array_intersect($this->db_tools->sql_list_tables(), $request->variable('table', array(''))); +						$format	= $request->variable('method', ''); +						$where	= $request->variable('where', '');  						if (!sizeof($table))  						{ @@ -165,7 +165,7 @@ class acp_database  						$extractor->write_end(); -						add_log('admin', 'LOG_DB_BACKUP'); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_DB_BACKUP');  						if ($download == true)  						{ @@ -221,9 +221,9 @@ class acp_database  				switch ($action)  				{  					case 'submit': -						$delete = request_var('delete', ''); -						$file = request_var('file', ''); -						$download = request_var('download', ''); +						$delete = $request->variable('delete', ''); +						$file = $request->variable('file', ''); +						$download = $request->variable('download', '');  						if (!preg_match('#^backup_\d{10,}_[a-z\d]{16}\.(sql(?:\.(?:gz|bz2))?)$#', $file, $matches))  						{ @@ -242,7 +242,7 @@ class acp_database  							if (confirm_box(true))  							{  								unlink($file_name); -								add_log('admin', 'LOG_DB_DELETE'); +								$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_DB_DELETE');  								trigger_error($user->lang['BACKUP_DELETE'] . adm_back_link($this->u_action));  							}  							else @@ -395,7 +395,7 @@ class acp_database  							// Purge the cache due to updated data  							$cache->purge(); -							add_log('admin', 'LOG_DB_RESTORE'); +							$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_DB_RESTORE');  							trigger_error($user->lang['RESTORE_SUCCESS'] . adm_back_link($this->u_action));  							break;  						} @@ -1868,7 +1868,8 @@ class oracle_extractor extends base_extractor  {  	function write_table($table_name)  	{ -		global $db; +		global $db, $request; +  		$sql_data = '-- Table: ' . $table_name . "\n";  		$sql_data .= "DROP TABLE $table_name\n/\n";  		$sql_data .= "\nCREATE TABLE $table_name (\n"; @@ -1961,7 +1962,7 @@ class oracle_extractor extends base_extractor  				AND C.SEQUENCE_NAME = A.REFERENCED_NAME";  		$result = $db->sql_query($sql); -		$type = request_var('type', ''); +		$type = $request->variable('type', '');  		while ($row = $db->sql_fetchrow($result))  		{ diff --git a/phpBB/includes/acp/acp_disallow.php b/phpBB/includes/acp/acp_disallow.php index 4c8f3cc65b..2c27616748 100644 --- a/phpBB/includes/acp/acp_disallow.php +++ b/phpBB/includes/acp/acp_disallow.php @@ -25,7 +25,7 @@ class acp_disallow  	function main($id, $mode)  	{ -		global $db, $user, $auth, $template, $cache; +		global $db, $user, $auth, $template, $cache, $phpbb_log, $request;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;  		include($phpbb_root_path . 'includes/functions_user.' . $phpEx); @@ -49,7 +49,7 @@ class acp_disallow  		if ($disallow)  		{ -			$disallowed_user = str_replace('*', '%', utf8_normalize_nfc(request_var('disallowed_user', '', true))); +			$disallowed_user = str_replace('*', '%', $request->variable('disallowed_user', '', true));  			if (!$disallowed_user)  			{ @@ -74,13 +74,13 @@ class acp_disallow  			$cache->destroy('_disallowed_usernames');  			$message = $user->lang['DISALLOW_SUCCESSFUL']; -			add_log('admin', 'LOG_DISALLOW_ADD', str_replace('%', '*', $disallowed_user)); +			$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_DISALLOW_ADD', false, array(str_replace('%', '*', $disallowed_user)));  			trigger_error($message . adm_back_link($this->u_action));  		}  		else if ($allow)  		{ -			$disallowed_id = request_var('disallowed_id', 0); +			$disallowed_id = $request->variable('disallowed_id', 0);  			if (!$disallowed_id)  			{ @@ -93,7 +93,7 @@ class acp_disallow  			$cache->destroy('_disallowed_usernames'); -			add_log('admin', 'LOG_DISALLOW_DELETE'); +			$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_DISALLOW_DELETE');  			trigger_error($user->lang['DISALLOWED_DELETED'] . adm_back_link($this->u_action));  		} diff --git a/phpBB/includes/acp/acp_email.php b/phpBB/includes/acp/acp_email.php index fda9d50779..ebc4a86de3 100644 --- a/phpBB/includes/acp/acp_email.php +++ b/phpBB/includes/acp/acp_email.php @@ -25,7 +25,7 @@ class acp_email  	function main($id, $mode)  	{ -		global $config, $db, $user, $auth, $template, $cache; +		global $config, $db, $user, $auth, $template, $cache, $phpbb_log, $request;  		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix, $phpbb_dispatcher;  		$user->add_lang('acp/email'); @@ -39,11 +39,11 @@ class acp_email  		$submit = (isset($_POST['submit'])) ? true : false;  		$error = array(); -		$usernames	= request_var('usernames', '', true); +		$usernames	= $request->variable('usernames', '', true);  		$usernames	= (!empty($usernames)) ? explode("\n", $usernames) : array(); -		$group_id	= request_var('g', 0); -		$subject	= utf8_normalize_nfc(request_var('subject', '', true)); -		$message	= utf8_normalize_nfc(request_var('message', '', true)); +		$group_id	= $request->variable('g', 0); +		$subject	= $request->variable('subject', '', true); +		$message	= $request->variable('message', '', true);  		// Do the job ...  		if ($submit) @@ -51,7 +51,7 @@ class acp_email  			// Error checking needs to go here ... if no subject and/or no message then skip  			// over the send and return to the form  			$use_queue		= (isset($_POST['send_immediately'])) ? false : true; -			$priority		= request_var('mail_priority_flag', MAIL_NORMAL_PRIORITY); +			$priority		= $request->variable('mail_priority_flag', MAIL_NORMAL_PRIORITY);  			if (!check_form_key($form_key))  			{ @@ -263,7 +263,7 @@ class acp_email  				{  					if (!empty($usernames))  					{ -						add_log('admin', 'LOG_MASS_EMAIL', implode(', ', utf8_normalize_nfc($usernames))); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_MASS_EMAIL', false, array(implode(', ', utf8_normalize_nfc($usernames))));  					}  					else  					{ @@ -277,7 +277,7 @@ class acp_email  							$group_name = $user->lang['ALL_USERS'];  						} -						add_log('admin', 'LOG_MASS_EMAIL', $group_name); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_MASS_EMAIL', false, array($group_name));  					}  				} diff --git a/phpBB/includes/acp/acp_forums.php b/phpBB/includes/acp/acp_forums.php index adf5de44f5..0ba1c0c9fd 100644 --- a/phpBB/includes/acp/acp_forums.php +++ b/phpBB/includes/acp/acp_forums.php @@ -27,7 +27,7 @@ class acp_forums  	function main($id, $mode)  	{  		global $db, $user, $auth, $template, $cache, $request, $phpbb_dispatcher; -		global $config, $phpbb_admin_path, $phpbb_root_path, $phpEx; +		global $config, $phpbb_admin_path, $phpbb_root_path, $phpEx, $phpbb_log;  		$user->add_lang('acp/forums');  		$this->tpl_name = 'acp_forums'; @@ -36,11 +36,11 @@ class acp_forums  		$form_key = 'acp_forums';  		add_form_key($form_key); -		$action		= request_var('action', ''); +		$action		= $request->variable('action', '');  		$update		= (isset($_POST['update'])) ? true : false; -		$forum_id	= request_var('f', 0); +		$forum_id	= $request->variable('f', 0); -		$this->parent_id	= request_var('parent_id', 0); +		$this->parent_id	= $request->variable('parent_id', 0);  		$forum_data = $errors = array();  		if ($update && !check_form_key($form_key))  		{ @@ -52,8 +52,8 @@ class acp_forums  		switch ($action)  		{  			case 'progress_bar': -				$start = request_var('start', 0); -				$total = request_var('total', 0); +				$start = $request->variable('start', 0); +				$total = $request->variable('total', 0);  				$this->display_progress_bar($start, $total);  			break; @@ -83,10 +83,10 @@ class acp_forums  			switch ($action)  			{  				case 'delete': -					$action_subforums	= request_var('action_subforums', ''); -					$subforums_to_id	= request_var('subforums_to_id', 0); -					$action_posts		= request_var('action_posts', ''); -					$posts_to_id		= request_var('posts_to_id', 0); +					$action_subforums	= $request->variable('action_subforums', ''); +					$subforums_to_id	= $request->variable('subforums_to_id', 0); +					$action_posts		= $request->variable('action_posts', ''); +					$posts_to_id		= $request->variable('posts_to_id', 0);  					$errors = $this->delete_forum($forum_id, $action_posts, $action_subforums, $posts_to_id, $subforums_to_id); @@ -112,45 +112,45 @@ class acp_forums  				case 'add':  					$forum_data += array( -						'parent_id'				=> request_var('forum_parent_id', $this->parent_id), -						'forum_type'			=> request_var('forum_type', FORUM_POST), -						'type_action'			=> request_var('type_action', ''), -						'forum_status'			=> request_var('forum_status', ITEM_UNLOCKED), +						'parent_id'				=> $request->variable('forum_parent_id', $this->parent_id), +						'forum_type'			=> $request->variable('forum_type', FORUM_POST), +						'type_action'			=> $request->variable('type_action', ''), +						'forum_status'			=> $request->variable('forum_status', ITEM_UNLOCKED),  						'forum_parents'			=> '', -						'forum_name'			=> utf8_normalize_nfc(request_var('forum_name', '', true)), -						'forum_link'			=> request_var('forum_link', ''), -						'forum_link_track'		=> request_var('forum_link_track', false), -						'forum_desc'			=> utf8_normalize_nfc(request_var('forum_desc', '', true)), +						'forum_name'			=> $request->variable('forum_name', '', true), +						'forum_link'			=> $request->variable('forum_link', ''), +						'forum_link_track'		=> $request->variable('forum_link_track', false), +						'forum_desc'			=> $request->variable('forum_desc', '', true),  						'forum_desc_uid'		=> '',  						'forum_desc_options'	=> 7,  						'forum_desc_bitfield'	=> '', -						'forum_rules'			=> utf8_normalize_nfc(request_var('forum_rules', '', true)), +						'forum_rules'			=> $request->variable('forum_rules', '', true),  						'forum_rules_uid'		=> '',  						'forum_rules_options'	=> 7,  						'forum_rules_bitfield'	=> '', -						'forum_rules_link'		=> request_var('forum_rules_link', ''), -						'forum_image'			=> request_var('forum_image', ''), -						'forum_style'			=> request_var('forum_style', 0), -						'display_subforum_list'	=> request_var('display_subforum_list', false), -						'display_on_index'		=> request_var('display_on_index', false), -						'forum_topics_per_page'	=> request_var('topics_per_page', 0), -						'enable_indexing'		=> request_var('enable_indexing', true), -						'enable_icons'			=> request_var('enable_icons', false), -						'enable_prune'			=> request_var('enable_prune', false), -						'enable_post_review'	=> request_var('enable_post_review', true), -						'enable_quick_reply'	=> request_var('enable_quick_reply', false), -						'enable_shadow_prune'		=> request_var('enable_shadow_prune', false), -						'prune_days'			=> request_var('prune_days', 7), -						'prune_viewed'			=> request_var('prune_viewed', 7), -						'prune_freq'			=> request_var('prune_freq', 1), -						'prune_old_polls'		=> request_var('prune_old_polls', false), -						'prune_announce'		=> request_var('prune_announce', false), -						'prune_sticky'			=> request_var('prune_sticky', false), -						'prune_shadow_days'		=> request_var('prune_shadow_days', 7), -						'prune_shadow_freq'		=> request_var('prune_shadow_freq', 1), -						'forum_password'		=> request_var('forum_password', '', true), -						'forum_password_confirm'=> request_var('forum_password_confirm', '', true), -						'forum_password_unset'	=> request_var('forum_password_unset', false), +						'forum_rules_link'		=> $request->variable('forum_rules_link', ''), +						'forum_image'			=> $request->variable('forum_image', ''), +						'forum_style'			=> $request->variable('forum_style', 0), +						'display_subforum_list'	=> $request->variable('display_subforum_list', false), +						'display_on_index'		=> $request->variable('display_on_index', false), +						'forum_topics_per_page'	=> $request->variable('topics_per_page', 0), +						'enable_indexing'		=> $request->variable('enable_indexing', true), +						'enable_icons'			=> $request->variable('enable_icons', false), +						'enable_prune'			=> $request->variable('enable_prune', false), +						'enable_post_review'	=> $request->variable('enable_post_review', true), +						'enable_quick_reply'	=> $request->variable('enable_quick_reply', false), +						'enable_shadow_prune'	=> $request->variable('enable_shadow_prune', false), +						'prune_days'			=> $request->variable('prune_days', 7), +						'prune_viewed'			=> $request->variable('prune_viewed', 7), +						'prune_freq'			=> $request->variable('prune_freq', 1), +						'prune_old_polls'		=> $request->variable('prune_old_polls', false), +						'prune_announce'		=> $request->variable('prune_announce', false), +						'prune_sticky'			=> $request->variable('prune_sticky', false), +						'prune_shadow_days'		=> $request->variable('prune_shadow_days', 7), +						'prune_shadow_freq'		=> $request->variable('prune_shadow_freq', 1), +						'forum_password'		=> $request->variable('forum_password', '', true), +						'forum_password_confirm'=> $request->variable('forum_password_confirm', '', true), +						'forum_password_unset'	=> $request->variable('forum_password_unset', false),  					);  					/** @@ -173,7 +173,7 @@ class acp_forums  					// Use link_display_on_index setting if forum type is link  					if ($forum_data['forum_type'] == FORUM_LINK)  					{ -						$forum_data['display_on_index'] = request_var('link_display_on_index', false); +						$forum_data['display_on_index'] = $request->variable('link_display_on_index', false);  					}  					// Linked forums and categories are not able to be locked... @@ -182,25 +182,25 @@ class acp_forums  						$forum_data['forum_status'] = ITEM_UNLOCKED;  					} -					$forum_data['show_active'] = ($forum_data['forum_type'] == FORUM_POST) ? request_var('display_recent', true) : request_var('display_active', false); +					$forum_data['show_active'] = ($forum_data['forum_type'] == FORUM_POST) ? $request->variable('display_recent', true) : $request->variable('display_active', false);  					// Get data for forum rules if specified...  					if ($forum_data['forum_rules'])  					{ -						generate_text_for_storage($forum_data['forum_rules'], $forum_data['forum_rules_uid'], $forum_data['forum_rules_bitfield'], $forum_data['forum_rules_options'], request_var('rules_parse_bbcode', false), request_var('rules_parse_urls', false), request_var('rules_parse_smilies', false)); +						generate_text_for_storage($forum_data['forum_rules'], $forum_data['forum_rules_uid'], $forum_data['forum_rules_bitfield'], $forum_data['forum_rules_options'], $request->variable('rules_parse_bbcode', false), $request->variable('rules_parse_urls', false), $request->variable('rules_parse_smilies', false));  					}  					// Get data for forum description if specified  					if ($forum_data['forum_desc'])  					{ -						generate_text_for_storage($forum_data['forum_desc'], $forum_data['forum_desc_uid'], $forum_data['forum_desc_bitfield'], $forum_data['forum_desc_options'], request_var('desc_parse_bbcode', false), request_var('desc_parse_urls', false), request_var('desc_parse_smilies', false)); +						generate_text_for_storage($forum_data['forum_desc'], $forum_data['forum_desc_uid'], $forum_data['forum_desc_bitfield'], $forum_data['forum_desc_options'], $request->variable('desc_parse_bbcode', false), $request->variable('desc_parse_urls', false), $request->variable('desc_parse_smilies', false));  					}  					$errors = $this->update_forum_data($forum_data);  					if (!sizeof($errors))  					{ -						$forum_perm_from = request_var('forum_perm_from', 0); +						$forum_perm_from = $request->variable('forum_perm_from', 0);  						$cache->destroy('sql', FORUMS_TABLE);  						$copied_permissions = false; @@ -266,7 +266,7 @@ class acp_forums  				if ($move_forum_name !== false)  				{ -					add_log('admin', 'LOG_FORUM_' . strtoupper($action), $row['forum_name'], $move_forum_name); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_' . strtoupper($action), false, array($row['forum_name'], $move_forum_name));  					$cache->destroy('sql', FORUMS_TABLE);  				} @@ -311,7 +311,7 @@ class acp_forums  					$row2['min_topic_id'] = (int) $row2['min_topic_id'];  					$row2['max_topic_id'] = (int) $row2['max_topic_id']; -					$start = request_var('start', $row2['min_topic_id']); +					$start = $request->variable('start', $row2['min_topic_id']);  					$batch_size = 2000;  					$end = $start + $batch_size; @@ -327,7 +327,7 @@ class acp_forums  							WHERE forum_id = ' . $forum_id . '  								AND topic_id BETWEEN ' . $start . ' AND ' . $end;  						$result = $db->sql_query($sql); -						$topics_done = request_var('topics_done', 0) + (int) $db->sql_fetchfield('num_topics'); +						$topics_done = $request->variable('topics_done', 0) + (int) $db->sql_fetchfield('num_topics');  						$db->sql_freeresult($result);  						$start += $batch_size; @@ -377,7 +377,8 @@ class acp_forums  				sync('forum', 'forum_id', $forum_id, false, true); -				add_log('admin', 'LOG_FORUM_SYNC', $row['forum_name']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_SYNC', false, array($row['forum_name'])); +  				$cache->destroy('sql', FORUMS_TABLE);  				$template->assign_var('L_FORUM_RESYNCED', sprintf($user->lang['FORUM_RESYNCED'], $row['forum_name'])); @@ -390,13 +391,13 @@ class acp_forums  				if ($update)  				{  					$forum_data['forum_flags'] = 0; -					$forum_data['forum_flags'] += (request_var('forum_link_track', false)) ? FORUM_FLAG_LINK_TRACK : 0; -					$forum_data['forum_flags'] += (request_var('prune_old_polls', false)) ? FORUM_FLAG_PRUNE_POLL : 0; -					$forum_data['forum_flags'] += (request_var('prune_announce', false)) ? FORUM_FLAG_PRUNE_ANNOUNCE : 0; -					$forum_data['forum_flags'] += (request_var('prune_sticky', false)) ? FORUM_FLAG_PRUNE_STICKY : 0; +					$forum_data['forum_flags'] += ($request->variable('forum_link_track', false)) ? FORUM_FLAG_LINK_TRACK : 0; +					$forum_data['forum_flags'] += ($request->variable('prune_old_polls', false)) ? FORUM_FLAG_PRUNE_POLL : 0; +					$forum_data['forum_flags'] += ($request->variable('prune_announce', false)) ? FORUM_FLAG_PRUNE_ANNOUNCE : 0; +					$forum_data['forum_flags'] += ($request->variable('prune_sticky', false)) ? FORUM_FLAG_PRUNE_STICKY : 0;  					$forum_data['forum_flags'] += ($forum_data['show_active']) ? FORUM_FLAG_ACTIVE_TOPICS : 0; -					$forum_data['forum_flags'] += (request_var('enable_post_review', true)) ? FORUM_FLAG_POST_REVIEW : 0; -					$forum_data['forum_flags'] += (request_var('enable_quick_reply', false)) ? FORUM_FLAG_QUICK_REPLY : 0; +					$forum_data['forum_flags'] += ($request->variable('enable_post_review', true)) ? FORUM_FLAG_POST_REVIEW : 0; +					$forum_data['forum_flags'] += ($request->variable('enable_quick_reply', false)) ? FORUM_FLAG_QUICK_REPLY : 0;  				}  				// Initialise $row, so we always have it in the event @@ -444,7 +445,7 @@ class acp_forums  							'parent_id'				=> $this->parent_id,  							'forum_type'			=> FORUM_POST,  							'forum_status'			=> ITEM_UNLOCKED, -							'forum_name'			=> utf8_normalize_nfc(request_var('forum_name', '', true)), +							'forum_name'			=> $request->variable('forum_name', '', true),  							'forum_link'			=> '',  							'forum_link_track'		=> false,  							'forum_desc'			=> '', @@ -511,12 +512,12 @@ class acp_forums  				{  					if (!isset($forum_data['forum_rules_uid']))  					{ -						// Before we are able to display the preview and plane text, we need to parse our request_var()'d value... +						// Before we are able to display the preview and plane text, we need to parse our $request->variable()'d value...  						$forum_data['forum_rules_uid'] = '';  						$forum_data['forum_rules_bitfield'] = '';  						$forum_data['forum_rules_options'] = 0; -						generate_text_for_storage($forum_data['forum_rules'], $forum_data['forum_rules_uid'], $forum_data['forum_rules_bitfield'], $forum_data['forum_rules_options'], request_var('rules_allow_bbcode', false), request_var('rules_allow_urls', false), request_var('rules_allow_smilies', false)); +						generate_text_for_storage($forum_data['forum_rules'], $forum_data['forum_rules_uid'], $forum_data['forum_rules_bitfield'], $forum_data['forum_rules_options'], $request->variable('rules_allow_bbcode', false), $request->variable('rules_allow_urls', false), $request->variable('rules_allow_smilies', false));  					}  					// Generate preview content @@ -531,12 +532,12 @@ class acp_forums  				{  					if (!isset($forum_data['forum_desc_uid']))  					{ -						// Before we are able to display the preview and plane text, we need to parse our request_var()'d value... +						// Before we are able to display the preview and plane text, we need to parse our $request->variable()'d value...  						$forum_data['forum_desc_uid'] = '';  						$forum_data['forum_desc_bitfield'] = '';  						$forum_data['forum_desc_options'] = 0; -						generate_text_for_storage($forum_data['forum_desc'], $forum_data['forum_desc_uid'], $forum_data['forum_desc_bitfield'], $forum_data['forum_desc_options'], request_var('desc_allow_bbcode', false), request_var('desc_allow_urls', false), request_var('desc_allow_smilies', false)); +						generate_text_for_storage($forum_data['forum_desc'], $forum_data['forum_desc_uid'], $forum_data['forum_desc_bitfield'], $forum_data['forum_desc_options'], $request->variable('desc_allow_bbcode', false), $request->variable('desc_allow_urls', false), $request->variable('desc_allow_smilies', false));  					}  					// decode... @@ -779,7 +780,7 @@ class acp_forums  			break;  			case 'copy_perm': -				$forum_perm_from = request_var('forum_perm_from', 0); +				$forum_perm_from = $request->variable('forum_perm_from', 0);  				// Copy permissions?  				if (!empty($forum_perm_from) && $forum_perm_from != $forum_id) @@ -945,7 +946,7 @@ class acp_forums  	*/  	function update_forum_data(&$forum_data)  	{ -		global $db, $user, $cache, $phpbb_root_path, $phpbb_container, $phpbb_dispatcher; +		global $db, $user, $cache, $phpbb_root_path, $phpbb_container, $phpbb_dispatcher, $phpbb_log, $request;  		$errors = array(); @@ -1050,6 +1051,7 @@ class acp_forums  		else  		{  			// Instantiate passwords manager +			/* @var $passwords_manager \phpbb\passwords\manager */  			$passwords_manager = $phpbb_container->get('passwords.manager');  			$forum_data_sql['forum_password'] = $passwords_manager->hash($forum_data_sql['forum_password']); @@ -1126,7 +1128,7 @@ class acp_forums  			$forum_data['forum_id'] = $db->sql_nextid(); -			add_log('admin', 'LOG_FORUM_ADD', $forum_data['forum_name']); +			$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_ADD', false, array($forum_data['forum_name']));  		}  		else  		{ @@ -1144,7 +1146,7 @@ class acp_forums  				// we're turning a postable forum into a non-postable forum  				if ($forum_data_sql['type_action'] == 'move')  				{ -					$to_forum_id = request_var('to_forum_id', 0); +					$to_forum_id = $request->variable('to_forum_id', 0);  					if ($to_forum_id)  					{ @@ -1174,8 +1176,8 @@ class acp_forums  				if ($row['right_id'] - $row['left_id'] > 1)  				{  					// We are turning a category into a link - but need to decide what to do with the subforums. -					$action_subforums = request_var('action_subforums', ''); -					$subforums_to_id = request_var('subforums_to_id', 0); +					$action_subforums = $request->variable('action_subforums', ''); +					$subforums_to_id = $request->variable('subforums_to_id', 0);  					if ($action_subforums == 'delete')  					{ @@ -1343,7 +1345,7 @@ class acp_forums  			// Add it back  			$forum_data['forum_id'] = $forum_id; -			add_log('admin', 'LOG_FORUM_EDIT', $forum_data['forum_name']); +			$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_EDIT', false, array($forum_data['forum_name']));  		}  		/** @@ -1545,7 +1547,7 @@ class acp_forums  	*/  	function delete_forum($forum_id, $action_posts = 'delete', $action_subforums = 'delete', $posts_to_id = 0, $subforums_to_id = 0)  	{ -		global $db, $user, $cache; +		global $db, $user, $cache, $phpbb_log;  		$forum_data = $this->get_forum_info($forum_id); @@ -1742,39 +1744,39 @@ class acp_forums  		switch ($log_action)  		{  			case 'MOVE_POSTS_MOVE_FORUMS': -				add_log('admin', 'LOG_FORUM_DEL_MOVE_POSTS_MOVE_FORUMS', $posts_to_name, $subforums_to_name, $forum_data['forum_name']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_DEL_MOVE_POSTS_MOVE_FORUMS', false, array($posts_to_name, $subforums_to_name, $forum_data['forum_name']));  			break;  			case 'MOVE_POSTS_FORUMS': -				add_log('admin', 'LOG_FORUM_DEL_MOVE_POSTS_FORUMS', $posts_to_name, $forum_data['forum_name']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_DEL_MOVE_POSTS_FORUMS', false, array($posts_to_name, $forum_data['forum_name']));  			break;  			case 'POSTS_MOVE_FORUMS': -				add_log('admin', 'LOG_FORUM_DEL_POSTS_MOVE_FORUMS', $subforums_to_name, $forum_data['forum_name']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_DEL_POSTS_MOVE_FORUMS', false, array($subforums_to_name, $forum_data['forum_name']));  			break;  			case '_MOVE_FORUMS': -				add_log('admin', 'LOG_FORUM_DEL_MOVE_FORUMS', $subforums_to_name, $forum_data['forum_name']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_DEL_MOVE_FORUMS', false, array($subforums_to_name, $forum_data['forum_name']));  			break;  			case 'MOVE_POSTS_': -				add_log('admin', 'LOG_FORUM_DEL_MOVE_POSTS', $posts_to_name, $forum_data['forum_name']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_DEL_MOVE_POSTS', false, array($posts_to_name, $forum_data['forum_name']));  			break;  			case 'POSTS_FORUMS': -				add_log('admin', 'LOG_FORUM_DEL_POSTS_FORUMS', $forum_data['forum_name']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_DEL_POSTS_FORUMS', false, array($forum_data['forum_name']));  			break;  			case '_FORUMS': -				add_log('admin', 'LOG_FORUM_DEL_FORUMS', $forum_data['forum_name']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_DEL_FORUMS', false, array($forum_data['forum_name']));  			break;  			case 'POSTS_': -				add_log('admin', 'LOG_FORUM_DEL_POSTS', $forum_data['forum_name']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_DEL_POSTS', false, array($forum_data['forum_name']));  			break;  			default: -				add_log('admin', 'LOG_FORUM_DEL_FORUM', $forum_data['forum_name']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_DEL_FORUM', false, array($forum_data['forum_name']));  			break;  		} @@ -1960,7 +1962,7 @@ class acp_forums  		$row = $db->sql_fetchrow($result);  		$db->sql_freeresult($result); -		set_config('num_posts', (int) $row['stat'], true); +		$config->set('num_posts', (int) $row['stat'], false);  		$sql = 'SELECT COUNT(topic_id) AS stat  			FROM ' . TOPICS_TABLE . ' @@ -1969,7 +1971,7 @@ class acp_forums  		$row = $db->sql_fetchrow($result);  		$db->sql_freeresult($result); -		set_config('num_topics', (int) $row['stat'], true); +		$config->set('num_topics', (int) $row['stat'], false);  		$sql = 'SELECT COUNT(attach_id) as stat  			FROM ' . ATTACHMENTS_TABLE; @@ -1977,7 +1979,7 @@ class acp_forums  		$row = $db->sql_fetchrow($result);  		$db->sql_freeresult($result); -		set_config('num_files', (int) $row['stat'], true); +		$config->set('num_files', (int) $row['stat'], false);  		$sql = 'SELECT SUM(filesize) as stat  			FROM ' . ATTACHMENTS_TABLE; @@ -1985,7 +1987,7 @@ class acp_forums  		$row = $db->sql_fetchrow($result);  		$db->sql_freeresult($result); -		set_config('upload_dir_size', (float) $row['stat'], true); +		$config->set('upload_dir_size', (float) $row['stat'], false);  		return array();  	} diff --git a/phpBB/includes/acp/acp_groups.php b/phpBB/includes/acp/acp_groups.php index edfada1bf1..57fa52fba3 100644 --- a/phpBB/includes/acp/acp_groups.php +++ b/phpBB/includes/acp/acp_groups.php @@ -45,13 +45,13 @@ class acp_groups  		include($phpbb_root_path . 'includes/functions_user.' . $phpEx);  		// Check and set some common vars -		$action		= (isset($_POST['add'])) ? 'add' : ((isset($_POST['addusers'])) ? 'addusers' : request_var('action', '')); -		$group_id	= request_var('g', 0); -		$mark_ary	= request_var('mark', array(0)); -		$name_ary	= request_var('usernames', '', true); -		$leader		= request_var('leader', 0); -		$default	= request_var('default', 0); -		$start		= request_var('start', 0); +		$action		= (isset($_POST['add'])) ? 'add' : ((isset($_POST['addusers'])) ? 'addusers' : $request->variable('action', '')); +		$group_id	= $request->variable('g', 0); +		$mark_ary	= $request->variable('mark', array(0)); +		$name_ary	= $request->variable('usernames', '', true); +		$leader		= $request->variable('leader', 0); +		$default	= $request->variable('default', 0); +		$start		= $request->variable('start', 0);  		$update		= (isset($_POST['update'])) ? true : false;  		// Clear some vars @@ -320,6 +320,7 @@ class acp_groups  				if ($config['allow_avatar'])  				{ +					/* @var $phpbb_avatar_manager \phpbb\avatar\manager */  					$phpbb_avatar_manager = $phpbb_container->get('avatar.manager');  					$avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers(); @@ -361,24 +362,24 @@ class acp_groups  						trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);  					} -					$group_name	= utf8_normalize_nfc(request_var('group_name', '', true)); -					$group_desc = utf8_normalize_nfc(request_var('group_desc', '', true)); -					$group_type	= request_var('group_type', GROUP_FREE); +					$group_name	= $request->variable('group_name', '', true); +					$group_desc = $request->variable('group_desc', '', true); +					$group_type	= $request->variable('group_type', GROUP_FREE); -					$allow_desc_bbcode	= request_var('desc_parse_bbcode', false); -					$allow_desc_urls	= request_var('desc_parse_urls', false); -					$allow_desc_smilies	= request_var('desc_parse_smilies', false); +					$allow_desc_bbcode	= $request->variable('desc_parse_bbcode', false); +					$allow_desc_urls	= $request->variable('desc_parse_urls', false); +					$allow_desc_smilies	= $request->variable('desc_parse_smilies', false);  					$submit_ary = array( -						'colour'			=> request_var('group_colour', ''), -						'rank'				=> request_var('group_rank', 0), +						'colour'			=> $request->variable('group_colour', ''), +						'rank'				=> $request->variable('group_rank', 0),  						'receive_pm'		=> isset($_REQUEST['group_receive_pm']) ? 1 : 0,  						'legend'			=> isset($_REQUEST['group_legend']) ? 1 : 0,  						'teampage'			=> isset($_REQUEST['group_teampage']) ? 1 : 0, -						'message_limit'		=> request_var('group_message_limit', 0), -						'max_recipients'	=> request_var('group_max_recipients', 0), +						'message_limit'		=> $request->variable('group_message_limit', 0), +						'max_recipients'	=> $request->variable('group_max_recipients', 0),  						'founder_manage'	=> 0, -						'skip_auth'			=> request_var('group_skip_auth', 0), +						'skip_auth'			=> $request->variable('group_skip_auth', 0),  					);  					if ($user->data['user_type'] == USER_FOUNDER) @@ -547,7 +548,7 @@ class acp_groups  						if (!($error = group_create($group_id, $group_type, $group_name, $group_desc, $group_attributes, $allow_desc_bbcode, $allow_desc_urls, $allow_desc_smilies)))  						{ -							$group_perm_from = request_var('group_perm_from', 0); +							$group_perm_from = $request->variable('group_perm_from', 0);  							// Copy permissions?  							// If the user has the a_authgroups permission and at least one additional permission ability set the permissions are fully transferred. @@ -617,7 +618,7 @@ class acp_groups  				}  				else if (!$group_id)  				{ -					$group_name = utf8_normalize_nfc(request_var('group_name', '', true)); +					$group_name = $request->variable('group_name', '', true);  					$group_desc_data = array(  						'text'			=> '',  						'allow_bbcode'	=> true, @@ -695,12 +696,12 @@ class acp_groups  					$error = array_merge($error, $phpbb_avatar_manager->localize_errors($user, $avatar_error));  				} -				$back_link = request_var('back_link', ''); +				$back_link = $request->variable('back_link', '');  				switch ($back_link)  				{  					case 'acp_users_groups': -						$u_back = append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&mode=groups&u=' . request_var('u', 0)); +						$u_back = append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&mode=groups&u=' . $request->variable('u', 0));  					break;  					default: @@ -801,8 +802,9 @@ class acp_groups  					trigger_error($user->lang['NO_GROUP'] . adm_back_link($this->u_action), E_USER_WARNING);  				} -				$this->page_title = 'GROUP_MEMBERS'; +				/* @var $pagination \phpbb\pagination */  				$pagination = $phpbb_container->get('pagination'); +				$this->page_title = 'GROUP_MEMBERS';  				// Grab the leaders - always, on every page...  				$sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_regdate, u.user_colour, u.user_posts, u.group_id, ug.group_leader, ug.user_pending @@ -989,7 +991,7 @@ class acp_groups  		}  		else if ($field && in_array($field, array('legend', 'teampage')))  		{ - +			/* @var $group_position \phpbb\groupposition\groupposition_interface */  			$group_position = $phpbb_container->get('groupposition.' . $field);  		} diff --git a/phpBB/includes/acp/acp_icons.php b/phpBB/includes/acp/acp_icons.php index 9265415dd1..fdf366097a 100644 --- a/phpBB/includes/acp/acp_icons.php +++ b/phpBB/includes/acp/acp_icons.php @@ -35,11 +35,11 @@ class acp_icons  		$user->add_lang('acp/posting');  		// Set up general vars -		$action = request_var('action', ''); +		$action = $request->variable('action', '');  		$action = (isset($_POST['add'])) ? 'add' : $action;  		$action = (isset($_POST['edit'])) ? 'edit' : $action;  		$action = (isset($_POST['import'])) ? 'import' : $action; -		$icon_id = request_var('id', 0); +		$icon_id = $request->variable('id', 0);  		$mode = ($mode == 'smilies') ? 'smilies' : 'icons'; @@ -326,24 +326,24 @@ class acp_icons  			case 'modify':  				// Get items to create/modify -				$images = (isset($_POST['image'])) ? array_keys(request_var('image', array('' => 0))) : array(); +				$images = (isset($_POST['image'])) ? array_keys($request->variable('image', array('' => 0))) : array();  				// Now really get the items -				$image_id		= (isset($_POST['id'])) ? request_var('id', array('' => 0)) : array(); -				$image_order	= (isset($_POST['order'])) ? request_var('order', array('' => 0)) : array(); -				$image_width	= (isset($_POST['width'])) ? request_var('width', array('' => 0)) : array(); -				$image_height	= (isset($_POST['height'])) ? request_var('height', array('' => 0)) : array(); -				$image_add		= (isset($_POST['add_img'])) ? request_var('add_img', array('' => 0)) : array(); -				$image_emotion	= utf8_normalize_nfc(request_var('emotion', array('' => ''), true)); -				$image_code		= utf8_normalize_nfc(request_var('code', array('' => ''), true)); -				$image_display_on_posting = (isset($_POST['display_on_posting'])) ? request_var('display_on_posting', array('' => 0)) : array(); +				$image_id		= (isset($_POST['id'])) ? $request->variable('id', array('' => 0)) : array(); +				$image_order	= (isset($_POST['order'])) ? $request->variable('order', array('' => 0)) : array(); +				$image_width	= (isset($_POST['width'])) ? $request->variable('width', array('' => 0)) : array(); +				$image_height	= (isset($_POST['height'])) ? $request->variable('height', array('' => 0)) : array(); +				$image_add		= (isset($_POST['add_img'])) ? $request->variable('add_img', array('' => 0)) : array(); +				$image_emotion	= $request->variable('emotion', array('' => ''), true); +				$image_code		= $request->variable('code', array('' => ''), true); +				$image_display_on_posting = (isset($_POST['display_on_posting'])) ? $request->variable('display_on_posting', array('' => 0)) : array();  				// Ok, add the relevant bits if we are adding new codes to existing emoticons...  				if ($request->variable('add_additional_code', false, false, \phpbb\request\request_interface::POST))  				{ -					$add_image			= request_var('add_image', ''); -					$add_code			= utf8_normalize_nfc(request_var('add_code', '', true)); -					$add_emotion		= utf8_normalize_nfc(request_var('add_emotion', '', true)); +					$add_image			= $request->variable('add_image', ''); +					$add_code			= $request->variable('add_code', '', true); +					$add_emotion		= $request->variable('add_emotion', '', true);  					if ($add_image && $add_emotion && $add_code)  					{ @@ -352,15 +352,15 @@ class acp_icons  						$image_code[$add_image] = $add_code;  						$image_emotion[$add_image] = $add_emotion; -						$image_width[$add_image] = request_var('add_width', 0); -						$image_height[$add_image] = request_var('add_height', 0); +						$image_width[$add_image] = $request->variable('add_width', 0); +						$image_height[$add_image] = $request->variable('add_height', 0);  						if ($request->variable('add_display_on_posting', false, false, \phpbb\request\request_interface::POST))  						{  							$image_display_on_posting[$add_image] = 1;  						} -						$image_order[$add_image] = request_var('add_order', 0); +						$image_order[$add_image] = $request->variable('add_order', 0);  					}  				} @@ -506,8 +506,8 @@ class acp_icons  			case 'import': -				$pak = request_var('pak', ''); -				$current = request_var('current', ''); +				$pak = $request->variable('pak', ''); +				$current = $request->variable('current', '');  				if ($pak != '')  				{ @@ -903,9 +903,10 @@ class acp_icons  			)  		); -		$spacer = false; +		/* @var $pagination \phpbb\pagination */  		$pagination = $phpbb_container->get('pagination'); -		$pagination_start = request_var('start', 0); +		$pagination_start = $request->variable('start', 0); +		$spacer = false;  		$item_count = $this->item_count($table); diff --git a/phpBB/includes/acp/acp_inactive.php b/phpBB/includes/acp/acp_inactive.php index e96c42de05..3a72cf1fe6 100644 --- a/phpBB/includes/acp/acp_inactive.php +++ b/phpBB/includes/acp/acp_inactive.php @@ -31,31 +31,33 @@ class acp_inactive  	function main($id, $mode)  	{ -		global $config, $db, $user, $auth, $template, $phpbb_container; +		global $config, $db, $user, $auth, $template, $phpbb_container, $phpbb_log, $request;  		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix;  		include($phpbb_root_path . 'includes/functions_user.' . $phpEx);  		$user->add_lang('memberlist'); -		$action = request_var('action', ''); -		$mark	= (isset($_REQUEST['mark'])) ? request_var('mark', array(0)) : array(); -		$start	= request_var('start', 0); +		$action = $request->variable('action', ''); +		$mark	= (isset($_REQUEST['mark'])) ? $request->variable('mark', array(0)) : array(); +		$start	= $request->variable('start', 0);  		$submit = isset($_POST['submit']);  		// Sort keys -		$sort_days	= request_var('st', 0); -		$sort_key	= request_var('sk', 'i'); -		$sort_dir	= request_var('sd', 'd'); +		$sort_days	= $request->variable('st', 0); +		$sort_key	= $request->variable('sk', 'i'); +		$sort_dir	= $request->variable('sd', 'd');  		$form_key = 'acp_inactive';  		add_form_key($form_key); + +		/* @var $pagination \phpbb\pagination */  		$pagination = $phpbb_container->get('pagination');  		// We build the sort key and per page settings here, because they may be needed later  		// Number of entries to display -		$per_page = request_var('users_per_page', (int) $config['topics_per_page']); +		$per_page = $request->variable('users_per_page', (int) $config['topics_per_page']);  		// Sorting  		$limit_days = array(0 => $user->lang['ALL_ENTRIES'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']); @@ -135,8 +137,10 @@ class acp_inactive  						{  							foreach ($inactive_users as $row)  							{ -								add_log('admin', 'LOG_USER_ACTIVE', $row['username']); -								add_log('user', $row['user_id'], 'LOG_USER_ACTIVE_USER'); +								$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_ACTIVE', false, array($row['username'])); +								$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_ACTIVE_USER', false, array( +									'reportee_id' => $row['user_id'] +								));  							}  							trigger_error(sprintf($user->lang['LOG_INACTIVE_ACTIVATE'], implode($user->lang['COMMA_SEPARATOR'], $user_affected) . ' ' . adm_back_link($this->u_action))); @@ -159,7 +163,7 @@ class acp_inactive  							user_delete('retain', $mark, true); -							add_log('admin', 'LOG_INACTIVE_' . strtoupper($action), implode(', ', $user_affected)); +							$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_INACTIVE_' . strtoupper($action), false, array(implode(', ', $user_affected)));  							trigger_error(sprintf($user->lang['LOG_INACTIVE_DELETE'], implode($user->lang['COMMA_SEPARATOR'], $user_affected) . ' ' . adm_back_link($this->u_action)));  						} @@ -231,7 +235,7 @@ class acp_inactive  							WHERE ' . $db->sql_in_set('user_id', $user_ids);  						$db->sql_query($sql); -						add_log('admin', 'LOG_INACTIVE_REMIND', implode(', ', $usernames)); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_INACTIVE_REMIND', false, array(implode(', ', $usernames)));  						trigger_error(sprintf($user->lang['LOG_INACTIVE_REMIND'], implode($user->lang['COMMA_SEPARATOR'], $usernames) . ' ' . adm_back_link($this->u_action)));  					} diff --git a/phpBB/includes/acp/acp_jabber.php b/phpBB/includes/acp/acp_jabber.php index 8d2e9d41a3..d860ae27f4 100644 --- a/phpBB/includes/acp/acp_jabber.php +++ b/phpBB/includes/acp/acp_jabber.php @@ -29,14 +29,14 @@ class acp_jabber  	function main($id, $mode)  	{ -		global $db, $user, $auth, $template; +		global $db, $user, $auth, $template, $phpbb_log, $request;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;  		$user->add_lang('acp/board');  		include_once($phpbb_root_path . 'includes/functions_jabber.' . $phpEx); -		$action	= request_var('action', ''); +		$action	= $request->variable('action', '');  		$submit = (isset($_POST['submit'])) ? true : false;  		if ($mode != 'settings') @@ -47,13 +47,13 @@ class acp_jabber  		$this->tpl_name = 'acp_jabber';  		$this->page_title = 'ACP_JABBER_SETTINGS'; -		$jab_enable			= request_var('jab_enable',			(bool) $config['jab_enable']); -		$jab_host			= request_var('jab_host',			(string) $config['jab_host']); -		$jab_port			= request_var('jab_port',			(int) $config['jab_port']); -		$jab_username		= request_var('jab_username',		(string) $config['jab_username']); -		$jab_password		= request_var('jab_password',		(string) $config['jab_password']); -		$jab_package_size	= request_var('jab_package_size',	(int) $config['jab_package_size']); -		$jab_use_ssl		= request_var('jab_use_ssl',		(bool) $config['jab_use_ssl']); +		$jab_enable			= $request->variable('jab_enable',			(bool) $config['jab_enable']); +		$jab_host			= $request->variable('jab_host',			(string) $config['jab_host']); +		$jab_port			= $request->variable('jab_port',			(int) $config['jab_port']); +		$jab_username		= $request->variable('jab_username',		(string) $config['jab_username']); +		$jab_password		= $request->variable('jab_password',		(string) $config['jab_password']); +		$jab_package_size	= $request->variable('jab_package_size',	(int) $config['jab_package_size']); +		$jab_use_ssl		= $request->variable('jab_use_ssl',		(bool) $config['jab_use_ssl']);  		$form_name = 'acp_jabber';  		add_form_key($form_name); @@ -103,15 +103,15 @@ class acp_jabber  				$db->sql_query($sql);  			} -			set_config('jab_enable', $jab_enable); -			set_config('jab_host', $jab_host); -			set_config('jab_port', $jab_port); -			set_config('jab_username', $jab_username); -			set_config('jab_password', $jab_password); -			set_config('jab_package_size', $jab_package_size); -			set_config('jab_use_ssl', $jab_use_ssl); +			$config->set('jab_enable', $jab_enable); +			$config->set('jab_host', $jab_host); +			$config->set('jab_port', $jab_port); +			$config->set('jab_username', $jab_username); +			$config->set('jab_password', $jab_password); +			$config->set('jab_package_size', $jab_package_size); +			$config->set('jab_use_ssl', $jab_use_ssl); -			add_log('admin', 'LOG_' . $log); +			$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_' . $log);  			trigger_error($message . adm_back_link($this->u_action));  		} diff --git a/phpBB/includes/acp/acp_language.php b/phpBB/includes/acp/acp_language.php index 60e338ae7c..3fd118b0dd 100644 --- a/phpBB/includes/acp/acp_language.php +++ b/phpBB/includes/acp/acp_language.php @@ -31,7 +31,7 @@ class acp_language  	function main($id, $mode)  	{ -		global $config, $db, $user, $template; +		global $config, $db, $user, $template, $phpbb_log;  		global $phpbb_root_path, $phpEx, $request;  		include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx); @@ -41,14 +41,14 @@ class acp_language  		$action		= (isset($_POST['remove_store'])) ? 'details' : $action;  		$submit = (empty($action) && !isset($_POST['update']) && !isset($_POST['test_connection'])) ? false : true; -		$action = (empty($action)) ? request_var('action', '') : $action; +		$action = (empty($action)) ? $request->variable('action', '') : $action;  		$form_name = 'acp_lang';  		add_form_key('acp_lang'); -		$lang_id = request_var('id', 0); +		$lang_id = $request->variable('id', 0); -		$selected_lang_file = request_var('language_file', '|common.' . $phpEx); +		$selected_lang_file = $request->variable('language_file', '|common.' . $phpEx);  		list($this->language_directory, $this->language_file) = explode('|', $selected_lang_file); @@ -81,16 +81,16 @@ class acp_language  				$db->sql_freeresult($result);  				$sql_ary	= array( -					'lang_english_name'		=> request_var('lang_english_name', $row['lang_english_name']), -					'lang_local_name'		=> utf8_normalize_nfc(request_var('lang_local_name', $row['lang_local_name'], true)), -					'lang_author'			=> utf8_normalize_nfc(request_var('lang_author', $row['lang_author'], true)), +					'lang_english_name'		=> $request->variable('lang_english_name', $row['lang_english_name']), +					'lang_local_name'		=> $request->variable('lang_local_name', $row['lang_local_name'], true), +					'lang_author'			=> $request->variable('lang_author', $row['lang_author'], true),  				);  				$db->sql_query('UPDATE ' . LANG_TABLE . '  					SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '  					WHERE lang_id = ' . $lang_id); -				add_log('admin', 'LOG_LANGUAGE_PACK_UPDATED', $sql_ary['lang_english_name']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_LANGUAGE_PACK_UPDATED', false, array($sql_ary['lang_english_name']));  				trigger_error($user->lang['LANGUAGE_DETAILS_UPDATED'] . adm_back_link($this->u_action));  			break; @@ -224,7 +224,7 @@ class acp_language  					$sql = 'DELETE FROM ' . PROFILE_FIELDS_LANG_TABLE . ' WHERE lang_id = ' . $lang_id;  					$db->sql_query($sql); -					add_log('admin', 'LOG_LANGUAGE_PACK_DELETED', $row['lang_english_name']); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_LANGUAGE_PACK_DELETED', false, array($row['lang_english_name']));  					trigger_error(sprintf($user->lang['LANGUAGE_PACK_DELETED'], $row['lang_english_name']) . adm_back_link($this->u_action));  				} @@ -241,7 +241,7 @@ class acp_language  			break;  			case 'install': -				$lang_iso = request_var('iso', ''); +				$lang_iso = $request->variable('iso', '');  				$lang_iso = basename($lang_iso);  				if (!$lang_iso || !file_exists("{$phpbb_root_path}language/$lang_iso/iso.txt")) @@ -329,7 +329,7 @@ class acp_language  				}  				$db->sql_freeresult($result); -				add_log('admin', 'LOG_LANGUAGE_PACK_INSTALLED', $lang_pack['name']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_LANGUAGE_PACK_INSTALLED', false, array($lang_pack['name']));  				$message = sprintf($user->lang['LANGUAGE_PACK_INSTALLED'], $lang_pack['name']);  				$message .= ($notify_cpf_update) ? '<br /><br />' . $user->lang['LANGUAGE_PACK_CPF_UPDATE'] : ''; diff --git a/phpBB/includes/acp/acp_logs.php b/phpBB/includes/acp/acp_logs.php index 80dee1d620..56039ff302 100644 --- a/phpBB/includes/acp/acp_logs.php +++ b/phpBB/includes/acp/acp_logs.php @@ -32,21 +32,23 @@ class acp_logs  		$user->add_lang('mcp');  		// Set up general vars -		$action		= request_var('action', ''); -		$forum_id	= request_var('f', 0); -		$topic_id	= request_var('t', 0); -		$start		= request_var('start', 0); +		$action		= $request->variable('action', ''); +		$forum_id	= $request->variable('f', 0); +		$topic_id	= $request->variable('t', 0); +		$start		= $request->variable('start', 0);  		$deletemark = $request->variable('delmarked', false, false, \phpbb\request\request_interface::POST);  		$deleteall	= $request->variable('delall', false, false, \phpbb\request\request_interface::POST); -		$marked		= request_var('mark', array(0)); +		$marked		= $request->variable('mark', array(0));  		// Sort keys -		$sort_days	= request_var('st', 0); -		$sort_key	= request_var('sk', 't'); -		$sort_dir	= request_var('sd', 'd'); +		$sort_days	= $request->variable('st', 0); +		$sort_key	= $request->variable('sk', 't'); +		$sort_dir	= $request->variable('sd', 'd');  		$this->tpl_name = 'acp_logs';  		$this->log_type = constant('LOG_' . strtoupper($mode)); + +		/* @var $pagination \phpbb\pagination */  		$pagination = $phpbb_container->get('pagination');  		// Delete entries if requested and able @@ -68,10 +70,11 @@ class acp_logs  						$conditions['log_time'] = array('>=', time() - ($sort_days * 86400));  					} -					$keywords = utf8_normalize_nfc(request_var('keywords', '', true)); +					$keywords = $request->variable('keywords', '', true);  					$conditions['keywords'] = $keywords;  				} +				/* @var $phpbb_log \phpbb\log\log_interface */  				$phpbb_log = $phpbb_container->get('log');  				$phpbb_log->delete($mode, $conditions);  			} @@ -105,7 +108,7 @@ class acp_logs  		$sql_where = ($sort_days) ? (time() - ($sort_days * 86400)) : 0;  		$sql_sort = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC'); -		$keywords = utf8_normalize_nfc(request_var('keywords', '', true)); +		$keywords = $request->variable('keywords', '', true);  		$keywords_param = !empty($keywords) ? '&keywords=' . urlencode(htmlspecialchars_decode($keywords)) : '';  		$l_title = $user->lang['ACP_' . strtoupper($mode) . '_LOGS']; diff --git a/phpBB/includes/acp/acp_main.php b/phpBB/includes/acp/acp_main.php index 48ca05a118..c49ccdf479 100644 --- a/phpBB/includes/acp/acp_main.php +++ b/phpBB/includes/acp/acp_main.php @@ -25,7 +25,7 @@ class acp_main  	function main($id, $mode)  	{ -		global $config, $db, $cache, $user, $auth, $template, $request; +		global $config, $db, $cache, $user, $auth, $template, $request, $phpbb_log;  		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_container, $phpbb_dispatcher;  		// Show restore permissions notice @@ -53,7 +53,7 @@ class acp_main  			return;  		} -		$action = request_var('action', ''); +		$action = $request->variable('action', '');  		if ($action)  		{ @@ -121,9 +121,9 @@ class acp_main  							trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);  						} -						set_config('record_online_users', 1, true); -						set_config('record_online_date', time(), true); -						add_log('admin', 'LOG_RESET_ONLINE'); +						$config->set('record_online_users', 1, false); +						$config->set('record_online_date', time(), false); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RESET_ONLINE');  						if ($request->is_ajax())  						{ @@ -141,35 +141,35 @@ class acp_main  							FROM ' . POSTS_TABLE . '  							WHERE post_visibility = ' . ITEM_APPROVED;  						$result = $db->sql_query($sql); -						set_config('num_posts', (int) $db->sql_fetchfield('stat'), true); +						$config->set('num_posts', (int) $db->sql_fetchfield('stat'), false);  						$db->sql_freeresult($result);  						$sql = 'SELECT COUNT(topic_id) AS stat  							FROM ' . TOPICS_TABLE . '  							WHERE topic_visibility = ' . ITEM_APPROVED;  						$result = $db->sql_query($sql); -						set_config('num_topics', (int) $db->sql_fetchfield('stat'), true); +						$config->set('num_topics', (int) $db->sql_fetchfield('stat'), false);  						$db->sql_freeresult($result);  						$sql = 'SELECT COUNT(user_id) AS stat  							FROM ' . USERS_TABLE . '  							WHERE user_type IN (' . USER_NORMAL . ',' . USER_FOUNDER . ')';  						$result = $db->sql_query($sql); -						set_config('num_users', (int) $db->sql_fetchfield('stat'), true); +						$config->set('num_users', (int) $db->sql_fetchfield('stat'), false);  						$db->sql_freeresult($result);  						$sql = 'SELECT COUNT(attach_id) as stat  							FROM ' . ATTACHMENTS_TABLE . '  							WHERE is_orphan = 0';  						$result = $db->sql_query($sql); -						set_config('num_files', (int) $db->sql_fetchfield('stat'), true); +						$config->set('num_files', (int) $db->sql_fetchfield('stat'), false);  						$db->sql_freeresult($result);  						$sql = 'SELECT SUM(filesize) as stat  							FROM ' . ATTACHMENTS_TABLE . '  							WHERE is_orphan = 0';  						$result = $db->sql_query($sql); -						set_config('upload_dir_size', (float) $db->sql_fetchfield('stat'), true); +						$config->set('upload_dir_size', (float) $db->sql_fetchfield('stat'), false);  						$db->sql_freeresult($result);  						if (!function_exists('update_last_username')) @@ -178,7 +178,7 @@ class acp_main  						}  						update_last_username(); -						add_log('admin', 'LOG_RESYNC_STATS'); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RESYNC_STATS');  						if ($request->is_ajax())  						{ @@ -215,7 +215,7 @@ class acp_main  						// Still no maximum post id? Then we are finished  						if (!$max_post_id)  						{ -							add_log('admin', 'LOG_RESYNC_POSTCOUNTS'); +							$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RESYNC_POSTCOUNTS');  							break;  						} @@ -245,7 +245,7 @@ class acp_main  							$start += $step;  						} -						add_log('admin', 'LOG_RESYNC_POSTCOUNTS'); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RESYNC_POSTCOUNTS');  						if ($request->is_ajax())  						{ @@ -259,8 +259,8 @@ class acp_main  							trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);  						} -						set_config('board_startdate', time() - 1); -						add_log('admin', 'LOG_RESET_DATE'); +						$config->set('board_startdate', time() - 1); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RESET_DATE');  						if ($request->is_ajax())  						{ @@ -340,7 +340,7 @@ class acp_main  							}  						} -						add_log('admin', 'LOG_RESYNC_POST_MARKING'); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RESYNC_POST_MARKING');  						if ($request->is_ajax())  						{ @@ -356,7 +356,7 @@ class acp_main  						$auth->acl_clear_prefetch();  						phpbb_cache_moderators($db, $cache, $auth); -						add_log('admin', 'LOG_PURGE_CACHE'); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_PURGE_CACHE');  						if ($request->is_ajax())  						{ @@ -407,7 +407,7 @@ class acp_main  						$sql = 'INSERT INTO ' . SESSIONS_TABLE . ' ' . $db->sql_build_array('INSERT', $reinsert_ary);  						$db->sql_query($sql); -						add_log('admin', 'LOG_PURGE_SESSIONS'); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_PURGE_SESSIONS');  						if ($request->is_ajax())  						{ @@ -429,6 +429,7 @@ class acp_main  			));  		} +		/* @var $version_helper \phpbb\version_helper */  		$version_helper = $phpbb_container->get('version_helper');  		try  		{ @@ -663,7 +664,7 @@ class acp_main  		// Fill dbms version if not yet filled  		if (empty($config['dbms_version']))  		{ -			set_config('dbms_version', $db->sql_server_info(true)); +			$config->set('dbms_version', $db->sql_server_info(true));  		}  		$this->tpl_name = 'acp_main'; diff --git a/phpBB/includes/acp/acp_modules.php b/phpBB/includes/acp/acp_modules.php index ea6b388328..4fca366868 100644 --- a/phpBB/includes/acp/acp_modules.php +++ b/phpBB/includes/acp/acp_modules.php @@ -37,7 +37,7 @@ class acp_modules  	function main($id, $mode)  	{ -		global $db, $user, $auth, $template, $module, $request; +		global $db, $user, $auth, $template, $module, $request, $phpbb_log;  		global $config, $phpbb_admin_path, $phpbb_root_path, $phpEx;  		// Set a global define for modules we might include (the author is able to prevent execution of code by checking this constant) @@ -65,9 +65,9 @@ class acp_modules  		$this->page_title = strtoupper($this->module_class); -		$this->parent_id = request_var('parent_id', 0); -		$module_id = request_var('m', 0); -		$action = request_var('action', ''); +		$this->parent_id = $request->variable('parent_id', 0); +		$module_id = $request->variable('m', 0); +		$action = $request->variable('action', '');  		$errors = array();  		switch ($action) @@ -138,7 +138,7 @@ class acp_modules  						AND module_id = $module_id";  				$db->sql_query($sql); -				add_log('admin', 'LOG_MODULE_' . strtoupper($action), $this->lang_name($row['module_langname'])); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_MODULE_' . strtoupper($action), false, array($this->lang_name($row['module_langname'])));  				$this->remove_cache_file();  			break; @@ -167,7 +167,7 @@ class acp_modules  				if ($move_module_name !== false)  				{ -					add_log('admin', 'LOG_MODULE_' . strtoupper($action), $this->lang_name($row['module_langname']), $move_module_name); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_MODULE_' . strtoupper($action), false, array($this->lang_name($row['module_langname']), $move_module_name));  					$this->remove_cache_file();  				} @@ -182,7 +182,7 @@ class acp_modules  			break;  			case 'quickadd': -				$quick_install = request_var('quick_install', ''); +				$quick_install = $request->variable('quick_install', '');  				if (confirm_box(true))  				{ @@ -253,7 +253,7 @@ class acp_modules  						'module_enabled'	=> 0,  						'module_display'	=> 1,  						'parent_id'			=> 0, -						'module_langname'	=> utf8_normalize_nfc(request_var('module_langname', '', true)), +						'module_langname'	=> $request->variable('module_langname', '', true),  						'module_mode'		=> '',  						'module_auth'		=> '',  					); @@ -261,13 +261,13 @@ class acp_modules  				$module_data = array(); -				$module_data['module_basename'] = request_var('module_basename', (string) $module_row['module_basename']); -				$module_data['module_enabled'] = request_var('module_enabled', (int) $module_row['module_enabled']); -				$module_data['module_display'] = request_var('module_display', (int) $module_row['module_display']); -				$module_data['parent_id'] = request_var('module_parent_id', (int) $module_row['parent_id']); +				$module_data['module_basename'] = $request->variable('module_basename', (string) $module_row['module_basename']); +				$module_data['module_enabled'] = $request->variable('module_enabled', (int) $module_row['module_enabled']); +				$module_data['module_display'] = $request->variable('module_display', (int) $module_row['module_display']); +				$module_data['parent_id'] = $request->variable('module_parent_id', (int) $module_row['parent_id']);  				$module_data['module_class'] = $this->module_class; -				$module_data['module_langname'] = utf8_normalize_nfc(request_var('module_langname', (string) $module_row['module_langname'], true)); -				$module_data['module_mode'] = request_var('module_mode', (string) $module_row['module_mode']); +				$module_data['module_langname'] = $request->variable('module_langname', (string) $module_row['module_langname'], true); +				$module_data['module_mode'] = $request->variable('module_mode', (string) $module_row['module_mode']);  				$submit = (isset($_POST['submit'])) ? true : false; @@ -278,7 +278,7 @@ class acp_modules  						trigger_error($user->lang['NO_MODULE_LANGNAME'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);  					} -					$module_type = request_var('module_type', 'category'); +					$module_type = $request->variable('module_type', 'category');  					if ($module_type == 'category')  					{ @@ -771,7 +771,7 @@ class acp_modules  	*/  	function update_module_data(&$module_data, $run_inline = false)  	{ -		global $db, $user; +		global $db, $user, $phpbb_log;  		if (!isset($module_data['module_id']))  		{ @@ -835,7 +835,7 @@ class acp_modules  			if (!$run_inline)  			{ -				add_log('admin', 'LOG_MODULE_ADD', $this->lang_name($module_data['module_langname'])); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_MODULE_ADD', false, array($this->lang_name($module_data['module_langname'])));  			}  		}  		else @@ -869,7 +869,7 @@ class acp_modules  			if (!$run_inline)  			{ -				add_log('admin', 'LOG_MODULE_EDIT', $this->lang_name($module_data['module_langname'])); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_MODULE_EDIT', false, array($this->lang_name($module_data['module_langname'])));  			}  		} @@ -964,7 +964,7 @@ class acp_modules  	*/  	function delete_module($module_id)  	{ -		global $db, $user; +		global $db, $user, $phpbb_log;  		$row = $this->get_module_row($module_id); @@ -998,7 +998,7 @@ class acp_modules  				AND left_id > {$row['right_id']}";  		$db->sql_query($sql); -		add_log('admin', 'LOG_MODULE_REMOVED', $this->lang_name($row['module_langname'])); +		$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_MODULE_REMOVED', false, array($this->lang_name($row['module_langname'])));  		return array(); diff --git a/phpBB/includes/acp/acp_permission_roles.php b/phpBB/includes/acp/acp_permission_roles.php index cd3616208d..21c751b61a 100644 --- a/phpBB/includes/acp/acp_permission_roles.php +++ b/phpBB/includes/acp/acp_permission_roles.php @@ -28,7 +28,7 @@ class acp_permission_roles  	{  		global $db, $user, $auth, $template, $cache, $phpbb_container;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx; -		global $request; +		global $request, $phpbb_log;  		include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);  		include_once($phpbb_root_path . 'includes/acp/auth.' . $phpEx); @@ -41,8 +41,8 @@ class acp_permission_roles  		$this->tpl_name = 'acp_permission_roles';  		$submit = (isset($_POST['submit'])) ? true : false; -		$role_id = request_var('role_id', 0); -		$action = request_var('action', ''); +		$role_id = $request->variable('role_id', 0); +		$action = $request->variable('action', '');  		$action = (isset($_POST['add'])) ? 'add' : $action;  		$form_name = 'acp_permissions'; @@ -109,7 +109,7 @@ class acp_permission_roles  						$this->remove_role($role_id, $permission_type);  						$role_name = (!empty($user->lang[$role_row['role_name']])) ? $user->lang[$role_row['role_name']] : $role_row['role_name']; -						add_log('admin', 'LOG_' . strtoupper($permission_type) . 'ROLE_REMOVED', $role_name); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_' . strtoupper($permission_type) . 'ROLE_REMOVED', false, array($role_name));  						trigger_error($user->lang['ROLE_DELETED'] . adm_back_link($this->u_action));  					}  					else @@ -148,9 +148,9 @@ class acp_permission_roles  						trigger_error($user->lang['FORM_INVALID']. adm_back_link($this->u_action), E_USER_WARNING);  					} -					$role_name = utf8_normalize_nfc(request_var('role_name', '', true)); -					$role_description = utf8_normalize_nfc(request_var('role_description', '', true)); -					$auth_settings = request_var('setting', array('' => 0)); +					$role_name = $request->variable('role_name', '', true); +					$role_description = $request->variable('role_description', '', true); +					$auth_settings = $request->variable('setting', array('' => 0));  					if (!$role_name)  					{ @@ -212,7 +212,7 @@ class acp_permission_roles  					$this->auth_admin->acl_set_role($role_id, $auth_settings);  					$role_name = (!empty($user->lang[$role_name])) ? $user->lang[$role_name] : $role_name; -					add_log('admin', 'LOG_' . strtoupper($permission_type) . 'ROLE_' . strtoupper($action), $role_name); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_' . strtoupper($permission_type) . 'ROLE_' . strtoupper($action), false, array($role_name));  					trigger_error($user->lang['ROLE_' . strtoupper($action) . '_SUCCESS'] . adm_back_link($this->u_action)); @@ -225,11 +225,11 @@ class acp_permission_roles  		{  			case 'add': -				$options_from = request_var('options_from', 0); +				$options_from = $request->variable('options_from', 0);  				$role_row = array( -					'role_name'			=> utf8_normalize_nfc(request_var('role_name', '', true)), -					'role_description'	=> utf8_normalize_nfc(request_var('role_description', '', true)), +					'role_name'			=> $request->variable('role_name', '', true), +					'role_description'	=> $request->variable('role_description', '', true),  					'role_type'			=> $permission_type,  				); @@ -299,6 +299,7 @@ class acp_permission_roles  					trigger_error($user->lang['NO_ROLE_SELECTED'] . adm_back_link($this->u_action), E_USER_WARNING);  				} +				/* @var $phpbb_permissions \phpbb\permissions */  				$phpbb_permissions = $phpbb_container->get('acl.permissions');  				$template->assign_vars(array( @@ -413,7 +414,7 @@ class acp_permission_roles  		$db->sql_freeresult($result);  		// Display assigned items? -		$display_item = request_var('display_item', 0); +		$display_item = $request->variable('display_item', 0);  		// Select existing roles  		$sql = 'SELECT * @@ -471,6 +472,7 @@ class acp_permission_roles  	{  		global $template, $user, $phpbb_container; +		/* @var $phpbb_permissions \phpbb\permissions */  		$phpbb_permissions = $phpbb_container->get('acl.permissions');  		$content_array = $categories = array(); diff --git a/phpBB/includes/acp/acp_permissions.php b/phpBB/includes/acp/acp_permissions.php index cb408e304f..b36eae0f93 100644 --- a/phpBB/includes/acp/acp_permissions.php +++ b/phpBB/includes/acp/acp_permissions.php @@ -23,11 +23,15 @@ class acp_permissions  {  	var $u_action;  	var $permission_dropdown; + +	/** +	 * @var $phpbb_permissions \phpbb\permissions +	 */  	protected $permissions;  	function main($id, $mode)  	{ -		global $db, $user, $auth, $template, $cache, $phpbb_container; +		global $db, $user, $auth, $template, $cache, $phpbb_container, $request;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;  		include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx); @@ -45,9 +49,9 @@ class acp_permissions  		// Trace has other vars  		if ($mode == 'trace')  		{ -			$user_id = request_var('u', 0); -			$forum_id = request_var('f', 0); -			$permission = request_var('auth', ''); +			$user_id = $request->variable('u', 0); +			$forum_id = $request->variable('f', 0); +			$permission = $request->variable('auth', '');  			$this->tpl_name = 'permission_trace'; @@ -76,20 +80,20 @@ class acp_permissions  		}  		// Set some vars -		$action = request_var('action', array('' => 0)); +		$action = $request->variable('action', array('' => 0));  		$action = key($action);  		$action = (isset($_POST['psubmit'])) ? 'apply_permissions' : $action; -		$all_forums = request_var('all_forums', 0); -		$subforum_id = request_var('subforum_id', 0); -		$forum_id = request_var('forum_id', array(0)); +		$all_forums = $request->variable('all_forums', 0); +		$subforum_id = $request->variable('subforum_id', 0); +		$forum_id = $request->variable('forum_id', array(0)); -		$username = request_var('username', array(''), true); -		$usernames = request_var('usernames', '', true); -		$user_id = request_var('user_id', array(0)); +		$username = $request->variable('username', array(''), true); +		$usernames = $request->variable('usernames', '', true); +		$user_id = $request->variable('user_id', array(0)); -		$group_id = request_var('group_id', array(0)); -		$select_all_groups = request_var('select_all_groups', 0); +		$group_id = $request->variable('group_id', array(0)); +		$select_all_groups = $request->variable('select_all_groups', 0);  		$form_name = 'acp_permissions';  		add_form_key($form_name); @@ -228,7 +232,7 @@ class acp_permissions  		);  		// Get permission type -		$permission_type = request_var('type', $this->permission_dropdown[0]); +		$permission_type = $request->variable('type', $this->permission_dropdown[0]);  		if (!in_array($permission_type, $this->permission_dropdown))  		{ @@ -670,7 +674,7 @@ class acp_permissions  		global $db, $cache, $user, $auth;  		global $request; -		$psubmit = request_var('psubmit', array(0 => array(0 => 0))); +		$psubmit = $request->variable('psubmit', array(0 => array(0 => 0)));  		// User or group to be set?  		$ug_type = (sizeof($user_id)) ? 'user' : 'group'; @@ -700,7 +704,7 @@ class acp_permissions  		$assigned_role = (isset($roles[$ug_id][$forum_id])) ? (int) $roles[$ug_id][$forum_id] : 0;  		// Do the admin want to set these permissions to other items too? -		$inherit = request_var('inherit', array(0 => array(0))); +		$inherit = $request->variable('inherit', array(0 => array(0)));  		$ug_id = array($ug_id);  		$forum_id = array($forum_id); @@ -905,7 +909,7 @@ class acp_permissions  	*/  	function log_action($mode, $action, $permission_type, $ug_type, $ug_id, $forum_id)  	{ -		global $db, $user; +		global $db, $user, $phpbb_log;  		if (!is_array($ug_id))  		{ @@ -933,7 +937,7 @@ class acp_permissions  		if ($forum_id[0] == 0)  		{ -			add_log('admin', 'LOG_ACL_' . strtoupper($action) . '_' . strtoupper($mode) . '_' . strtoupper($permission_type), $l_ug_list); +			$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ACL_' . strtoupper($action) . '_' . strtoupper($mode) . '_' . strtoupper($permission_type), false, array($l_ug_list));  		}  		else  		{ @@ -950,7 +954,7 @@ class acp_permissions  			}  			$db->sql_freeresult($result); -			add_log('admin', 'LOG_ACL_' . strtoupper($action) . '_' . strtoupper($mode) . '_' . strtoupper($permission_type), $l_forum_list, $l_ug_list); +			$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ACL_' . strtoupper($action) . '_' . strtoupper($mode) . '_' . strtoupper($permission_type), false, array($l_forum_list, $l_ug_list));  		}  	} @@ -959,7 +963,7 @@ class acp_permissions  	*/  	function permission_trace($user_id, $forum_id, $permission)  	{ -		global $db, $template, $user, $auth; +		global $db, $template, $user, $auth, $request;  		if ($user_id != $user->data['user_id'])  		{ @@ -987,7 +991,7 @@ class acp_permissions  			$db->sql_freeresult($result);  		} -		$back = request_var('back', 0); +		$back = $request->variable('back', 0);  		$template->assign_vars(array(  			'PERMISSION'			=> $this->permissions->get_permission_lang($permission), @@ -1178,7 +1182,7 @@ class acp_permissions  	*/  	function copy_forum_permissions()  	{ -		global $db, $auth, $cache, $template, $user; +		global $db, $auth, $cache, $template, $user, $request;  		$user->add_lang('acp/forums'); @@ -1186,8 +1190,8 @@ class acp_permissions  		if ($submit)  		{ -			$src = request_var('src_forum_id', 0); -			$dest = request_var('dest_forum_ids', array(0)); +			$src = $request->variable('src_forum_id', 0); +			$dest = $request->variable('dest_forum_ids', array(0));  			if (confirm_box(true))  			{ diff --git a/phpBB/includes/acp/acp_profile.php b/phpBB/includes/acp/acp_profile.php index 97c1f62077..146e116cfd 100644 --- a/phpBB/includes/acp/acp_profile.php +++ b/phpBB/includes/acp/acp_profile.php @@ -25,13 +25,17 @@ class acp_profile  	var $edit_lang_id;  	var $lang_defs; + +	/** +	 * @var \phpbb\di\service_collection +	 */  	protected $type_collection;  	function main($id, $mode)  	{  		global $config, $db, $user, $auth, $template, $cache;  		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix; -		global $request, $phpbb_container; +		global $request, $phpbb_container, $phpbb_log;  		include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);  		include($phpbb_root_path . 'includes/functions_user.' . $phpEx); @@ -41,7 +45,7 @@ class acp_profile  		$this->page_title = 'ACP_CUSTOM_PROFILE_FIELDS';  		$field_id = $request->variable('field_id', 0); -		$action = (isset($_POST['create'])) ? 'create' : request_var('action', ''); +		$action = (isset($_POST['create'])) ? 'create' : $request->variable('action', '');  		$error = array();  		$s_hidden_fields = ''; @@ -51,6 +55,7 @@ class acp_profile  			trigger_error($user->lang['NO_FIELD_ID'] . adm_back_link($this->u_action), E_USER_WARNING);  		} +		/* @var $cp \phpbb\profilefields\manager */  		$cp = $phpbb_container->get('profilefields.manager');  		$this->type_collection = $phpbb_container->get('profilefields.type_collection'); @@ -112,6 +117,7 @@ class acp_profile  					$db->sql_query('DELETE FROM ' . PROFILE_FIELDS_LANG_TABLE . " WHERE field_id = $field_id");  					$db->sql_query('DELETE FROM ' . PROFILE_LANG_TABLE . " WHERE field_id = $field_id"); +					/* @var $db_tools \phpbb\db\tools\tools_interface */  					$db_tools = $phpbb_container->get('dbal.tools');  					$db_tools->sql_column_remove(PROFILE_FIELDS_DATA_TABLE, 'pf_' . $field_ident); @@ -137,7 +143,7 @@ class acp_profile  					$db->sql_transaction('commit'); -					add_log('admin', 'LOG_PROFILE_FIELD_REMOVED', $field_ident); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_PROFILE_FIELD_REMOVED', false, array($field_ident));  					trigger_error($user->lang['REMOVED_PROFILE_FIELD'] . adm_back_link($this->u_action));  				}  				else @@ -178,7 +184,7 @@ class acp_profile  				$field_ident = (string) $db->sql_fetchfield('field_ident');  				$db->sql_freeresult($result); -				add_log('admin', 'LOG_PROFILE_FIELD_ACTIVATE', $field_ident); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_PROFILE_FIELD_ACTIVATE', false, array($field_ident));  				if ($request->is_ajax())  				{ @@ -214,7 +220,7 @@ class acp_profile  					));  				} -				add_log('admin', 'LOG_PROFILE_FIELD_DEACTIVATE', $field_ident); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_PROFILE_FIELD_DEACTIVATE', false, array($field_ident));  				trigger_error($user->lang['PROFILE_FIELD_DEACTIVATED'] . adm_back_link($this->u_action)); @@ -255,7 +261,7 @@ class acp_profile  			case 'create':  			case 'edit': -				$step = request_var('step', 1); +				$step = $request->variable('step', 1);  				$submit = (isset($_REQUEST['next']) || isset($_REQUEST['prev'])) ? true : false;  				$save = (isset($_REQUEST['save'])) ? true : false; @@ -319,7 +325,7 @@ class acp_profile  					// We are adding a new field, define basic params  					$lang_options = $field_row = array(); -					$field_type = request_var('field_type', ''); +					$field_type = $request->variable('field_type', '');  					if (!isset($this->type_collection[$field_type]))  					{ @@ -328,7 +334,7 @@ class acp_profile  					$profile_field = $this->type_collection[$field_type];  					$field_row = array_merge($profile_field->get_default_option_values(), array( -						'field_ident'		=> str_replace(' ', '_', utf8_clean_string(request_var('field_ident', '', true))), +						'field_ident'		=> str_replace(' ', '_', utf8_clean_string($request->variable('field_ident', '', true))),  						'field_required'	=> 0,  						'field_show_novalue'=> 0,  						'field_hide'		=> 0, @@ -341,7 +347,7 @@ class acp_profile  						'field_is_contact'	=> 0,  						'field_contact_desc'=> '',  						'field_contact_url'	=> '', -						'lang_name'			=> utf8_normalize_nfc(request_var('field_ident', '', true)), +						'lang_name'			=> $request->variable('field_ident', '', true),  						'lang_explain'		=> '',  						'lang_default_value'=> '')  					); @@ -371,7 +377,7 @@ class acp_profile  				$options = $profile_field->prepare_options_form($exclude, $visibility_ary); -				$cp->vars['field_ident']		= ($action == 'create' && $step == 1) ? utf8_clean_string(request_var('field_ident', $field_row['field_ident'], true)) : request_var('field_ident', $field_row['field_ident']); +				$cp->vars['field_ident']		= ($action == 'create' && $step == 1) ? utf8_clean_string($request->variable('field_ident', $field_row['field_ident'], true)) : $request->variable('field_ident', $field_row['field_ident']);  				$cp->vars['lang_name']			= $request->variable('lang_name', $field_row['lang_name'], true);  				$cp->vars['lang_explain']		= $request->variable('lang_explain', $field_row['lang_explain'], true);  				$cp->vars['lang_default_value']	= $request->variable('lang_default_value', $field_row['lang_default_value'], true); @@ -410,7 +416,7 @@ class acp_profile  				// step 2  				foreach ($exclude[2] as $key)  				{ -					$var = utf8_normalize_nfc(request_var($key, $field_row[$key], true)); +					$var = $request->variable($key, $field_row[$key], true);  					$field_data = $cp->vars;  					$var = $profile_field->get_excluded_options($key, $action, $var, $field_data, 2); @@ -456,7 +462,7 @@ class acp_profile  				foreach ($exclude[3] as $key)  				{ -					$cp->vars[$key] = utf8_normalize_nfc(request_var($key, array(0 => ''), true)); +					$cp->vars[$key] = $request->variable($key, array(0 => ''), true);  					if (!$cp->vars[$key] && $action == 'edit')  					{ @@ -713,7 +719,7 @@ class acp_profile  	*/  	function build_language_options(&$cp, $field_type, $action = 'create')  	{ -		global $user, $config, $db, $phpbb_container; +		global $user, $config, $db, $phpbb_container, $request;  		$default_lang_id = (!empty($this->edit_lang_id)) ? $this->edit_lang_id : $this->lang_defs['iso'][$config['default_lang']]; @@ -754,7 +760,7 @@ class acp_profile  			$lang_options[$lang_id]['lang_iso'] = $lang_iso;  			foreach ($options as $field => $field_type)  			{ -				$value = ($action == 'create') ? utf8_normalize_nfc(request_var('l_' . $field, array(0 => ''), true)) : $cp->vars['l_' . $field]; +				$value = ($action == 'create') ? $request->variable('l_' . $field, array(0 => ''), true) : $cp->vars['l_' . $field];  				if ($field == 'lang_options')  				{  					$var = (!isset($cp->vars['l_lang_options'][$lang_id]) || !is_array($cp->vars['l_lang_options'][$lang_id])) ? $cp->vars['lang_options'] : $cp->vars['l_lang_options'][$lang_id]; @@ -810,9 +816,9 @@ class acp_profile  	*/  	function save_profile_field(&$cp, $field_type, $action = 'create')  	{ -		global $db, $config, $user, $phpbb_container; +		global $db, $config, $user, $phpbb_container, $phpbb_log, $request; -		$field_id = request_var('field_id', 0); +		$field_id = $request->variable('field_id', 0);  		// Collect all information, if something is going wrong, abort the operation  		$profile_sql = $profile_lang = $empty_lang = $profile_lang_fields = array(); @@ -880,7 +886,7 @@ class acp_profile  		if ($action == 'create')  		{  			$field_ident = 'pf_' . $field_ident; - +			/* @var $db_tools \phpbb\db\tools\tools_interface */  			$db_tools = $phpbb_container->get('dbal.tools');  			$db_tools->sql_column_add(PROFILE_FIELDS_DATA_TABLE, $field_ident, array($profile_field->get_database_column_type(), null));  		} @@ -1079,12 +1085,12 @@ class acp_profile  		if ($action == 'edit')  		{ -			add_log('admin', 'LOG_PROFILE_FIELD_EDIT', $cp->vars['field_ident'] . ':' . $cp->vars['lang_name']); +			$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_PROFILE_FIELD_EDIT', false, array($cp->vars['field_ident'] . ':' . $cp->vars['lang_name']));  			trigger_error($user->lang['CHANGED_PROFILE_FIELD'] . adm_back_link($this->u_action));  		}  		else  		{ -			add_log('admin', 'LOG_PROFILE_FIELD_CREATE', substr($field_ident, 3) . ':' . $cp->vars['lang_name']); +			$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_PROFILE_FIELD_CREATE', false, array(substr($field_ident, 3) . ':' . $cp->vars['lang_name']));  			trigger_error($user->lang['ADDED_PROFILE_FIELD'] . adm_back_link($this->u_action));  		}  	} diff --git a/phpBB/includes/acp/acp_prune.php b/phpBB/includes/acp/acp_prune.php index 6eb213fd7a..63a103aa0c 100644 --- a/phpBB/includes/acp/acp_prune.php +++ b/phpBB/includes/acp/acp_prune.php @@ -51,11 +51,11 @@ class acp_prune  	*/  	function prune_forums($id, $mode)  	{ -		global $db, $user, $auth, $template, $cache; +		global $db, $user, $auth, $template, $cache, $phpbb_log, $request;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx; -		$all_forums = request_var('all_forums', 0); -		$forum_id = request_var('f', array(0)); +		$all_forums = $request->variable('all_forums', 0); +		$forum_id = $request->variable('f', array(0));  		$submit = (isset($_POST['submit'])) ? true : false;  		if ($all_forums) @@ -77,14 +77,14 @@ class acp_prune  		{  			if (confirm_box(true))  			{ -				$prune_posted = request_var('prune_days', 0); -				$prune_viewed = request_var('prune_vieweddays', 0); +				$prune_posted = $request->variable('prune_days', 0); +				$prune_viewed = $request->variable('prune_vieweddays', 0);  				$prune_all = (!$prune_posted && !$prune_viewed) ? true : false;  				$prune_flags = 0; -				$prune_flags += (request_var('prune_old_polls', 0)) ? 2 : 0; -				$prune_flags += (request_var('prune_announce', 0)) ? 4 : 0; -				$prune_flags += (request_var('prune_sticky', 0)) ? 8 : 0; +				$prune_flags += ($request->variable('prune_old_polls', 0)) ? 2 : 0; +				$prune_flags += ($request->variable('prune_announce', 0)) ? 4 : 0; +				$prune_flags += ($request->variable('prune_sticky', 0)) ? 8 : 0;  				// Convert days to seconds for timestamp functions...  				$prunedate_posted = time() - ($prune_posted * 86400); @@ -153,7 +153,8 @@ class acp_prune  					// Sync all pruned forums at once  					sync('forum', 'forum_id', $prune_ids, true, true); -					add_log('admin', 'LOG_PRUNE', $log_data); + +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_PRUNE', false, array($log_data));  				}  				$db->sql_freeresult($result); @@ -168,11 +169,11 @@ class acp_prune  					'all_forums'	=> $all_forums,  					'f'				=> $forum_id, -					'prune_days'		=> request_var('prune_days', 0), -					'prune_vieweddays'	=> request_var('prune_vieweddays', 0), -					'prune_old_polls'	=> request_var('prune_old_polls', 0), -					'prune_announce'	=> request_var('prune_announce', 0), -					'prune_sticky'		=> request_var('prune_sticky', 0), +					'prune_days'		=> $request->variable('prune_days', 0), +					'prune_vieweddays'	=> $request->variable('prune_vieweddays', 0), +					'prune_old_polls'	=> $request->variable('prune_old_polls', 0), +					'prune_announce'	=> $request->variable('prune_announce', 0), +					'prune_sticky'		=> $request->variable('prune_sticky', 0),  				)));  			}  		} @@ -228,7 +229,7 @@ class acp_prune  	*/  	function prune_users($id, $mode)  	{ -		global $db, $user, $auth, $template, $cache; +		global $db, $user, $auth, $template, $cache, $phpbb_log, $request;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;  		$user->add_lang('memberlist'); @@ -237,8 +238,8 @@ class acp_prune  		if ($prune)  		{ -			$action = request_var('action', 'deactivate'); -			$deleteposts = request_var('deleteposts', 0); +			$action = $request->variable('action', 'deactivate'); +			$deleteposts = $request->variable('deleteposts', 0);  			if (confirm_box(true))  			{ @@ -268,7 +269,7 @@ class acp_prune  						}  					} -					add_log('admin', $l_log, implode(', ', $usernames)); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, $l_log, false, array(implode(', ', $usernames)));  					$msg = $user->lang['USER_' . strtoupper($action) . '_SUCCESS'];  				}  				else @@ -310,8 +311,8 @@ class acp_prune  					'mode'			=> $mode,  					'prune'			=> 1, -					'deleteposts'	=> request_var('deleteposts', 0), -					'action'		=> request_var('action', ''), +					'deleteposts'	=> $request->variable('deleteposts', 0), +					'action'		=> $request->variable('action', ''),  				)), 'confirm_body_prune.html');  			}  		} @@ -368,9 +369,9 @@ class acp_prune  	{  		global $user, $db, $request; -		$users_by_name = request_var('users', '', true); -		$users_by_id = request_var('user_ids', array(0)); -		$group_id = request_var('group_id', 0); +		$users_by_name = $request->variable('users', '', true); +		$users_by_id = $request->variable('user_ids', array(0)); +		$group_id = $request->variable('group_id', 0);  		$posts_on_queue = (trim($request->variable('posts_on_queue', '')) === '') ? false : $request->variable('posts_on_queue', 0);  		if ($users_by_name) @@ -387,15 +388,15 @@ class acp_prune  		}  		else  		{ -			$username = request_var('username', '', true); -			$email = request_var('email', ''); - -			$active_select = request_var('active_select', 'lt'); -			$count_select = request_var('count_select', 'eq'); -			$queue_select = request_var('queue_select', 'gt'); -			$joined_before = request_var('joined_before', ''); -			$joined_after = request_var('joined_after', ''); -			$active = request_var('active', ''); +			$username = $request->variable('username', '', true); +			$email = $request->variable('email', ''); + +			$active_select = $request->variable('active_select', 'lt'); +			$count_select = $request->variable('count_select', 'eq'); +			$queue_select = $request->variable('queue_select', 'gt'); +			$joined_before = $request->variable('joined_before', ''); +			$joined_after = $request->variable('joined_after', ''); +			$active = $request->variable('active', '');  			$count = ($request->variable('count', '') === '') ? false : $request->variable('count', 0); diff --git a/phpBB/includes/acp/acp_ranks.php b/phpBB/includes/acp/acp_ranks.php index 5885de57ec..2921d6500b 100644 --- a/phpBB/includes/acp/acp_ranks.php +++ b/phpBB/includes/acp/acp_ranks.php @@ -26,15 +26,15 @@ class acp_ranks  	function main($id, $mode)  	{  		global $db, $user, $auth, $template, $cache, $request, $phpbb_dispatcher; -		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx; +		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_log;  		$user->add_lang('acp/posting');  		// Set up general vars -		$action = request_var('action', ''); +		$action = $request->variable('action', '');  		$action = (isset($_POST['add'])) ? 'add' : $action;  		$action = (isset($_POST['save'])) ? 'save' : $action; -		$rank_id = request_var('id', 0); +		$rank_id = $request->variable('id', 0);  		$this->tpl_name = 'acp_ranks';  		$this->page_title = 'ACP_MANAGE_RANKS'; @@ -50,10 +50,10 @@ class acp_ranks  				{  					trigger_error($user->lang['FORM_INVALID']. adm_back_link($this->u_action), E_USER_WARNING);  				} -				$rank_title = utf8_normalize_nfc(request_var('title', '', true)); -				$special_rank = request_var('special_rank', 0); -				$min_posts = ($special_rank) ? 0 : max(0, request_var('min_posts', 0)); -				$rank_image = request_var('rank_image', ''); +				$rank_title = $request->variable('title', '', true); +				$special_rank = $request->variable('special_rank', 0); +				$min_posts = ($special_rank) ? 0 : max(0, $request->variable('min_posts', 0)); +				$rank_image = $request->variable('rank_image', '');  				// The rank image has to be a jpg, gif or png  				if ($rank_image != '' && !preg_match('#(\.gif|\.png|\.jpg|\.jpeg)$#i', $rank_image)) @@ -89,14 +89,14 @@ class acp_ranks  					$sql = 'UPDATE ' . RANKS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " WHERE rank_id = $rank_id";  					$message = $user->lang['RANK_UPDATED']; -					add_log('admin', 'LOG_RANK_UPDATED', $rank_title); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RANK_UPDATED', false, array($rank_title));  				}  				else  				{  					$sql = 'INSERT INTO ' . RANKS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);  					$message = $user->lang['RANK_ADDED']; -					add_log('admin', 'LOG_RANK_ADDED', $rank_title); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RANK_ADDED', false, array($rank_title));  				}  				$db->sql_query($sql); @@ -133,7 +133,7 @@ class acp_ranks  					$cache->destroy('_ranks'); -					add_log('admin', 'LOG_RANK_REMOVED', $rank_title); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RANK_REMOVED', false, array($rank_title));  					if ($request->is_ajax())  					{ diff --git a/phpBB/includes/acp/acp_reasons.php b/phpBB/includes/acp/acp_reasons.php index 3d7ccf422c..56f0296423 100644 --- a/phpBB/includes/acp/acp_reasons.php +++ b/phpBB/includes/acp/acp_reasons.php @@ -27,14 +27,14 @@ class acp_reasons  	{  		global $db, $user, $auth, $template, $cache;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx; -		global $request; +		global $request, $phpbb_log;  		$user->add_lang(array('mcp', 'acp/posting'));  		// Set up general vars -		$action = request_var('action', ''); +		$action = $request->variable('action', '');  		$submit = (isset($_POST['submit'])) ? true : false; -		$reason_id = request_var('id', 0); +		$reason_id = $request->variable('id', 0);  		$this->tpl_name = 'acp_reasons';  		$this->page_title = 'ACP_REASONS'; @@ -50,8 +50,8 @@ class acp_reasons  			case 'edit':  				$reason_row = array( -					'reason_title'			=> utf8_normalize_nfc(request_var('reason_title', '', true)), -					'reason_description'	=> utf8_normalize_nfc(request_var('reason_description', '', true)), +					'reason_title'			=> $request->variable('reason_title', '', true), +					'reason_description'	=> $request->variable('reason_description', '', true),  				);  				if ($submit) @@ -139,7 +139,7 @@ class acp_reasons  							$log = 'UPDATED';  						} -						add_log('admin', 'LOG_REASON_' . $log, $reason_row['reason_title']); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_REASON_' . $log, false, array($reason_row['reason_title']));  						trigger_error($user->lang['REASON_' . $log] . adm_back_link($this->u_action));  					}  				} @@ -264,7 +264,7 @@ class acp_reasons  					$db->sql_query('DELETE FROM ' . REPORTS_REASONS_TABLE . ' WHERE reason_id = ' . $reason_id); -					add_log('admin', 'LOG_REASON_REMOVED', $reason_row['reason_title']); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_REASON_REMOVED', false, array($reason_row['reason_title']));  					trigger_error($user->lang['REASON_REMOVED'] . adm_back_link($this->u_action));  				}  				else diff --git a/phpBB/includes/acp/acp_search.php b/phpBB/includes/acp/acp_search.php index 9ff999567a..e0991158fe 100644 --- a/phpBB/includes/acp/acp_search.php +++ b/phpBB/includes/acp/acp_search.php @@ -50,7 +50,7 @@ class acp_search  	function settings($id, $mode)  	{ -		global $db, $user, $auth, $template, $cache; +		global $db, $user, $auth, $template, $cache, $phpbb_log, $request;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;  		$submit = (isset($_POST['submit'])) ? true : false; @@ -104,8 +104,8 @@ class acp_search  		unset($search);  		unset($error); -		$cfg_array = (isset($_REQUEST['config'])) ? request_var('config', array('' => ''), true) : array(); -		$updated = request_var('updated', false); +		$cfg_array = (isset($_REQUEST['config'])) ? $request->variable('config', array('' => ''), true) : array(); +		$updated = $request->variable('updated', false);  		foreach ($settings as $config_name => $var_type)  		{ @@ -133,7 +133,7 @@ class acp_search  			// only change config if anything was actually changed  			if ($submit && ($config[$config_name] != $config_value))  			{ -				set_config($config_name, $config_value); +				$config->set($config_name, $config_value);  				$updated = true;  			}  		} @@ -143,7 +143,7 @@ class acp_search  			$extra_message = '';  			if ($updated)  			{ -				add_log('admin', 'LOG_CONFIG_SEARCH'); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_CONFIG_SEARCH');  			}  			if (isset($cfg_array['search_type']) && in_array($cfg_array['search_type'], $search_types, true) && ($cfg_array['search_type'] != $config['search_type'])) @@ -157,11 +157,11 @@ class acp_search  					{  						if (!method_exists($search, 'init') || !($error = $search->init()))  						{ -							set_config('search_type', $cfg_array['search_type']); +							$config->set('search_type', $cfg_array['search_type']);  							if (!$updated)  							{ -								add_log('admin', 'LOG_CONFIG_SEARCH'); +								$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_CONFIG_SEARCH');  							}  							$extra_message = '<br />' . $user->lang['SWITCHED_SEARCH_BACKEND'] . '<br /><a href="' . append_sid("{$phpbb_admin_path}index.$phpEx", 'i=search&mode=index') . '">» ' . $user->lang['GO_TO_SEARCH_INDEX'] . '</a>';  						} @@ -232,10 +232,10 @@ class acp_search  	function index($id, $mode)  	{ -		global $db, $user, $auth, $template, $cache; +		global $db, $user, $auth, $template, $cache, $phpbb_log, $request;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx; -		$action = request_var('action', ''); +		$action = $request->variable('action', '');  		$this->state = explode(',', $config['search_indexing_state']);  		if (isset($_POST['cancel'])) @@ -250,7 +250,7 @@ class acp_search  			switch ($action)  			{  				case 'progress_bar': -					$type = request_var('type', ''); +					$type = $request->variable('type', '');  					$this->display_progress_bar($type);  				break; @@ -269,7 +269,7 @@ class acp_search  			if (empty($this->state[0]))  			{ -				$this->state[0] = request_var('search_type', ''); +				$this->state[0] = $request->variable('search_type', '');  			}  			$this->search = null; @@ -303,8 +303,7 @@ class acp_search  					}  					else  					{ -						$starttime = explode(' ', microtime()); -						$starttime = $starttime[1] + $starttime[0]; +						$starttime = microtime(true);  						$row_count = 0;  						while (still_on_time() && $post_counter <= $this->max_post_id)  						{ @@ -336,8 +335,7 @@ class acp_search  						if ($post_counter <= $this->max_post_id)  						{ -							$mtime = explode(' ', microtime()); -							$totaltime = $mtime[0] + $mtime[1] - $starttime; +							$totaltime = microtime(true) - $starttime;  							$rows_per_second = $row_count / $totaltime;  							meta_refresh(1, append_sid($this->u_action . '&action=delete&skip_rows=' . $post_counter));  							trigger_error($user->lang('SEARCH_INDEX_DELETE_REDIRECT', (int) $row_count, $post_counter, $rows_per_second)); @@ -349,7 +347,7 @@ class acp_search  					$this->state = array('');  					$this->save_state(); -					add_log('admin', 'LOG_SEARCH_INDEX_REMOVED', $name); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_SEARCH_INDEX_REMOVED', false, array($name));  					trigger_error($user->lang['SEARCH_INDEX_REMOVED'] . adm_back_link($this->u_action) . $this->close_popup_js());  				break; @@ -376,8 +374,7 @@ class acp_search  						}  						$db->sql_freeresult($result); -						$starttime = explode(' ', microtime()); -						$starttime = $starttime[1] + $starttime[0]; +						$starttime = microtime(true);  						$row_count = 0;  						while (still_on_time() && $post_counter <= $this->max_post_id)  						{ @@ -426,8 +423,7 @@ class acp_search  						if ($post_counter <= $this->max_post_id)  						{ -							$mtime = explode(' ', microtime()); -							$totaltime = $mtime[0] + $mtime[1] - $starttime; +							$totaltime = microtime(true) - $starttime;  							$rows_per_second = $row_count / $totaltime;  							meta_refresh(1, append_sid($this->u_action . '&action=create&skip_rows=' . $post_counter));  							trigger_error($user->lang('SEARCH_INDEX_CREATE_REDIRECT', (int) $row_count, $post_counter) . $user->lang('SEARCH_INDEX_CREATE_REDIRECT_RATE', $rows_per_second)); @@ -439,7 +435,7 @@ class acp_search  					$this->state = array('');  					$this->save_state(); -					add_log('admin', 'LOG_SEARCH_INDEX_CREATED', $name); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_SEARCH_INDEX_CREATED', false, array($name));  					trigger_error($user->lang['SEARCH_INDEX_CREATED'] . adm_back_link($this->u_action) . $this->close_popup_js());  				break;  			} @@ -581,6 +577,8 @@ class acp_search  	function save_state($state = false)  	{ +		global $config; +  		if ($state)  		{  			$this->state = $state; @@ -588,7 +586,7 @@ class acp_search  		ksort($this->state); -		set_config('search_indexing_state', implode(',', $this->state), true); +		$config->set('search_indexing_state', implode(',', $this->state), true);  	}  	/** diff --git a/phpBB/includes/acp/acp_send_statistics.php b/phpBB/includes/acp/acp_send_statistics.php index d178be2fb0..4c5786dbe9 100644 --- a/phpBB/includes/acp/acp_send_statistics.php +++ b/phpBB/includes/acp/acp_send_statistics.php @@ -38,7 +38,7 @@ class acp_send_statistics  		if (!isset($config['questionnaire_unique_id']))  		{  			$install_id = unique_id(); -			set_config('questionnaire_unique_id', $install_id); +			$config->set('questionnaire_unique_id', $install_id);  		}  		else  		{ diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php index 6bd27a8bca..45f224f8b1 100644 --- a/phpBB/includes/acp/acp_styles.php +++ b/phpBB/includes/acp/acp_styles.php @@ -32,6 +32,9 @@ class acp_styles  	protected $styles_list_cols = 0;  	protected $reserved_style_names = array('adm', 'admin', 'all'); +	/** @var \phpbb\config\config */ +	protected $config; +  	/** @var \phpbb\db\driver\driver_interface */  	protected $db; @@ -260,6 +263,8 @@ class acp_styles  	*/  	protected function action_uninstall_confirmed($ids, $delete_files)  	{ +		global $user, $phpbb_log; +  		$default = $this->default_style;  		$uninstalled = array();  		$messages = array(); @@ -319,7 +324,7 @@ class acp_styles  		// Log action  		if (count($uninstalled))  		{ -			add_log('admin', 'LOG_STYLE_DELETE', implode(', ', $uninstalled)); +			$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_STYLE_DELETE', false, array(implode(', ', $uninstalled)));  		}  		// Clear cache @@ -391,6 +396,8 @@ class acp_styles  	*/  	protected function action_details()  	{ +		global $user, $phpbb_log; +  		$id = $this->request->variable('id', 0);  		if (!$id)  		{ @@ -522,7 +529,8 @@ class acp_styles  						$this->cache->purge();  					}  				} -				add_log('admin', 'LOG_STYLE_EDIT_DETAILS', $style['style_name']); + +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_STYLE_EDIT_DETAILS', false, array($style['style_name']));  			}  			// Update default style @@ -533,7 +541,7 @@ class acp_styles  				{  					trigger_error($this->user->lang['STYLE_DEFAULT_CHANGE_INACTIVE'] . adm_back_link($update_action), E_USER_WARNING);  				} -				set_config('default_style', $id); +				$this->config->set('default_style', $id);  				$this->cache->purge();  			} @@ -1119,6 +1127,8 @@ class acp_styles  	*/  	protected function install_style($style)  	{ +		global $user, $phpbb_log; +  		// Generate row  		$sql_ary = array();  		foreach ($style as $key => $value) @@ -1140,7 +1150,7 @@ class acp_styles  		$this->db->sql_transaction('commit'); -		add_log('admin', 'LOG_STYLE_ADD', $sql_ary['style_name']); +		$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_STYLE_ADD', false, array($sql_ary['style_name']));  		return $id;  	} diff --git a/phpBB/includes/acp/acp_update.php b/phpBB/includes/acp/acp_update.php index 0167a06dbb..83604b8261 100644 --- a/phpBB/includes/acp/acp_update.php +++ b/phpBB/includes/acp/acp_update.php @@ -33,6 +33,7 @@ class acp_update  		$this->tpl_name = 'acp_update';  		$this->page_title = 'ACP_VERSION_CHECK'; +		/* @var $version_helper \phpbb\version_helper */  		$version_helper = $phpbb_container->get('version_helper');  		try  		{ diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index 8c17fb6311..fec32146c1 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -34,15 +34,15 @@ class acp_users  		global $config, $db, $user, $auth, $template, $cache;  		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix, $file_uploads;  		global $phpbb_dispatcher, $request; -		global $phpbb_container; +		global $phpbb_container, $phpbb_log;  		$user->add_lang(array('posting', 'ucp', 'acp/users'));  		$this->tpl_name = 'acp_users';  		$error		= array(); -		$username	= utf8_normalize_nfc(request_var('username', '', true)); -		$user_id	= request_var('u', 0); -		$action		= request_var('action', ''); +		$username	= $request->variable('username', '', true); +		$user_id	= $request->variable('u', 0); +		$action		= $request->variable('action', '');  		$submit		= (isset($_POST['update']) && !isset($_POST['cancel'])) ? true : false; @@ -57,7 +57,7 @@ class acp_users  			$this->page_title = 'WHOIS';  			$this->tpl_name = 'simple_body'; -			$user_ip = phpbb_ip_normalise(request_var('user_ip', '')); +			$user_ip = phpbb_ip_normalise($request->variable('user_ip', ''));  			$domain = gethostbyaddr($user_ip);  			$ipwhois = user_ipwhois($user_ip); @@ -169,9 +169,9 @@ class acp_users  				$user->add_lang('acp/ban'); -				$delete			= request_var('delete', 0); -				$delete_type	= request_var('delete_type', ''); -				$ip				= request_var('ip', 'ip'); +				$delete			= $request->variable('delete', 0); +				$delete_type	= $request->variable('delete_type', ''); +				$ip				= $request->variable('ip', 'ip');  				/**  				 * Run code at beginning of ACP users overview @@ -220,7 +220,7 @@ class acp_users  							{  								user_delete($delete_type, $user_id, $user_row['username']); -								add_log('admin', 'LOG_USER_DELETED', $user_row['username']); +								$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_DELETED', false, array($user_row['username']));  								trigger_error($user->lang['USER_DELETED'] . adm_back_link($this->u_action));  							}  							else @@ -304,8 +304,8 @@ class acp_users  								break;  							} -							$ban_reason = utf8_normalize_nfc(request_var('ban_reason', $user->lang[$reason], true)); -							$ban_give_reason = utf8_normalize_nfc(request_var('ban_give_reason', '', true)); +							$ban_reason = $request->variable('ban_reason', $user->lang[$reason], true); +							$ban_give_reason = $request->variable('ban_give_reason', '', true);  							// Log not used at the moment, we simply utilize the ban function.  							$result = user_ban(substr($action, 3), $ban, 0, 0, 0, $ban_reason, $ban_give_reason); @@ -381,8 +381,10 @@ class acp_users  								$messenger->send(NOTIFY_EMAIL); -								add_log('admin', 'LOG_USER_REACTIVATE', $user_row['username']); -								add_log('user', $user_id, 'LOG_USER_REACTIVATE_USER'); +								$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_REACTIVATE', false, array($user_row['username'])); +								$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_REACTIVATE_USER', false, array( +									'reportee_id' => $user_id +								));  								trigger_error($user->lang['FORCE_REACTIVATION_SUCCESS'] . adm_back_link($this->u_action . '&u=' . $user_id));  							} @@ -418,6 +420,7 @@ class acp_users  							{  								if ($config['require_activation'] == USER_ACTIVATION_ADMIN)  								{ +									/* @var $phpbb_notifications \phpbb\notification\manager */  									$phpbb_notifications = $phpbb_container->get('notification_manager');  									$phpbb_notifications->delete_notifications('notification.type.admin_activate_user', $user_row['user_id']); @@ -442,8 +445,10 @@ class acp_users  							$message = ($user_row['user_type'] == USER_INACTIVE) ? 'USER_ADMIN_ACTIVATED' : 'USER_ADMIN_DEACTIVED';  							$log = ($user_row['user_type'] == USER_INACTIVE) ? 'LOG_USER_ACTIVE' : 'LOG_USER_INACTIVE'; -							add_log('admin', $log, $user_row['username']); -							add_log('user', $user_id, $log . '_USER'); +							$phpbb_log->add('admin', $user->data['user_id'], $user->ip, $log, false, array($user_row['username'])); +							$phpbb_log->add('user', $user->data['user_id'], $user->ip, $log . '_USER', false, array( +								'reportee_id' => $user_id +							));  							trigger_error($user->lang[$message] . adm_back_link($this->u_action . '&u=' . $user_id)); @@ -466,8 +471,10 @@ class acp_users  								WHERE user_id = $user_id";  							$db->sql_query($sql); -							add_log('admin', 'LOG_USER_DEL_SIG', $user_row['username']); -							add_log('user', $user_id, 'LOG_USER_DEL_SIG_USER'); +							$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_DEL_SIG', false, array($user_row['username'])); +							$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_DEL_SIG_USER', false, array( +								'reportee_id' => $user_id +							));  							trigger_error($user->lang['USER_ADMIN_SIG_REMOVED'] . adm_back_link($this->u_action . '&u=' . $user_id)); @@ -481,11 +488,14 @@ class acp_users  							}  							// Delete old avatar if present +							/* @var $phpbb_avatar_manager \phpbb\avatar\manager */  							$phpbb_avatar_manager = $phpbb_container->get('avatar.manager');  							$phpbb_avatar_manager->handle_avatar_delete($db, $user, $phpbb_avatar_manager->clean_row($user_row, 'user'), USERS_TABLE, 'user_'); -							add_log('admin', 'LOG_USER_DEL_AVATAR', $user_row['username']); -							add_log('user', $user_id, 'LOG_USER_DEL_AVATAR_USER'); +							$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_DEL_AVATAR', false, array($user_row['username'])); +							$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_DEL_AVATAR_USER', false, array( +								'reportee_id' => $user_id +							));  							trigger_error($user->lang['USER_ADMIN_AVATAR_REMOVED'] . adm_back_link($this->u_action . '&u=' . $user_id));  						break; @@ -497,7 +507,7 @@ class acp_users  								// Delete posts, attachments, etc.  								delete_posts('poster_id', $user_id); -								add_log('admin', 'LOG_USER_DEL_POSTS', $user_row['username']); +								$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_DEL_POSTS', false, array($user_row['username']));  								trigger_error($user->lang['USER_POSTS_DELETED'] . adm_back_link($this->u_action . '&u=' . $user_id));  							}  							else @@ -519,7 +529,7 @@ class acp_users  							{  								delete_attachments('user', $user_id); -								add_log('admin', 'LOG_USER_DEL_ATTACH', $user_row['username']); +								$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_DEL_ATTACH', false, array($user_row['username']));  								trigger_error($user->lang['USER_ATTACHMENTS_REMOVED'] . adm_back_link($this->u_action . '&u=' . $user_id));  							}  							else @@ -565,7 +575,7 @@ class acp_users  									delete_pm($user_id, $msg_ids, PRIVMSGS_OUTBOX); -									add_log('admin', 'LOG_USER_DEL_OUTBOX', $user_row['username']); +									$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_DEL_OUTBOX', false, array($user_row['username']));  									$lang = 'EMPTIED';  								} @@ -594,7 +604,7 @@ class acp_users  							$user->add_lang('acp/forums'); -							$new_forum_id = request_var('new_f', 0); +							$new_forum_id = $request->variable('new_f', 0);  							if (!$new_forum_id)  							{ @@ -736,8 +746,11 @@ class acp_users  								sync('forum', 'forum_id', $forum_id_ary, false, true);  							} -							add_log('admin', 'LOG_USER_MOVE_POSTS', $user_row['username'], $forum_info['forum_name']); -							add_log('user', $user_id, 'LOG_USER_MOVE_POSTS_USER', $forum_info['forum_name']); +							$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_MOVE_POSTS', false, array($user_row['username'], $forum_info['forum_name'])); +							$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_MOVE_POSTS_USER', false, array( +								'reportee_id' => $user_id, +								$forum_info['forum_name'] +							));  							trigger_error($user->lang['USER_POSTS_MOVED'] . adm_back_link($this->u_action . '&u=' . $user_id)); @@ -749,7 +762,7 @@ class acp_users  							{  								remove_newly_registered($user_id, $user_row); -								add_log('admin', 'LOG_USER_REMOVED_NR', $user_row['username']); +								$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_REMOVED_NR', false, array($user_row['username']));  								trigger_error($user->lang['USER_LIFTED_NR'] . adm_back_link($this->u_action . '&u=' . $user_id));  							}  							else @@ -781,9 +794,9 @@ class acp_users  					// Handle registration info updates  					$data = array( -						'username'			=> utf8_normalize_nfc(request_var('user', $user_row['username'], true)), -						'user_founder'		=> request_var('user_founder', ($user_row['user_type'] == USER_FOUNDER) ? 1 : 0), -						'email'				=> strtolower(request_var('user_email', $user_row['user_email'])), +						'username'			=> $request->variable('user', $user_row['username'], true), +						'user_founder'		=> $request->variable('user_founder', ($user_row['user_type'] == USER_FOUNDER) ? 1 : 0), +						'email'				=> strtolower($request->variable('user_email', $user_row['user_email'])),  						'new_password'		=> $request->variable('new_password', '', true),  						'password_confirm'	=> $request->variable('password_confirm', '', true),  					); @@ -831,6 +844,7 @@ class acp_users  					}  					// Instantiate passwords manager +					/* @var $passwords_manager \phpbb\passwords\manager */  					$passwords_manager = $phpbb_container->get('passwords.manager');  					// Which updates do we need to do? @@ -903,7 +917,11 @@ class acp_users  							$sql_ary['username'] = $update_username;  							$sql_ary['username_clean'] = utf8_clean_string($update_username); -							add_log('user', $user_id, 'LOG_USER_UPDATE_NAME', $user_row['username'], $update_username); +							$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_UPDATE_NAME', false, array( +								'reportee_id' => $user_id, +								$user_row['username'], +								$update_username +							));  						}  						if ($update_email !== false) @@ -913,7 +931,12 @@ class acp_users  								'user_email_hash'	=> phpbb_email_hash($update_email),  							); -							add_log('user', $user_id, 'LOG_USER_UPDATE_EMAIL', $user_row['username'], $user_row['user_email'], $update_email); +							$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_UPDATE_EMAIL', false, array( +								'reportee_id' => $user_id, +								$user_row['username'], +								$user_row['user_email'], +								$update_email +							));  						}  						if ($update_password) @@ -924,7 +947,11 @@ class acp_users  							);  							$user->reset_login_keys($user_id); -							add_log('user', $user_id, 'LOG_USER_NEW_PASSWORD', $user_row['username']); + +							$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_NEW_PASSWORD', false, array( +								'reportee_id' => $user_id, +								$user_row['username'] +							));  						}  						if (sizeof($sql_ary)) @@ -943,7 +970,7 @@ class acp_users  						// Let the users permissions being updated  						$auth->acl_clear_prefetch($user_id); -						add_log('admin', 'LOG_USER_USER_UPDATE', $data['username']); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_USER_UPDATE', false, array($data['username']));  						trigger_error($user->lang['USER_OVERVIEW_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));  					} @@ -1100,17 +1127,19 @@ class acp_users  				$user->add_lang('mcp');  				// Set up general vars -				$start		= request_var('start', 0); +				$start		= $request->variable('start', 0);  				$deletemark = (isset($_POST['delmarked'])) ? true : false;  				$deleteall	= (isset($_POST['delall'])) ? true : false; -				$marked		= request_var('mark', array(0)); -				$message	= utf8_normalize_nfc(request_var('message', '', true)); +				$marked		= $request->variable('mark', array(0)); +				$message	= $request->variable('message', '', true); + +				/* @var $pagination \phpbb\pagination */  				$pagination = $phpbb_container->get('pagination');  				// Sort keys -				$sort_days	= request_var('st', 0); -				$sort_key	= request_var('sk', 't'); -				$sort_dir	= request_var('sd', 'd'); +				$sort_days	= $request->variable('st', 0); +				$sort_key	= $request->variable('sk', 't'); +				$sort_dir	= $request->variable('sd', 'd');  				// Delete entries if requested and able  				if (($deletemark || $deleteall) && $auth->acl_get('a_clearlogs')) @@ -1140,7 +1169,7 @@ class acp_users  							$where_sql";  						$db->sql_query($sql); -						add_log('admin', 'LOG_CLEAR_USER', $user_row['username']); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_CLEAR_USER', false, array($user_row['username']));  					}  				} @@ -1151,9 +1180,16 @@ class acp_users  						trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&u=' . $user_id), E_USER_WARNING);  					} -					add_log('admin', 'LOG_USER_FEEDBACK', $user_row['username']); -					add_log('mod', 0, 0, 'LOG_USER_FEEDBACK', $user_row['username']); -					add_log('user', $user_id, 'LOG_USER_GENERAL', $message); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_FEEDBACK', false, array($user_row['username'])); +					$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_USER_FEEDBACK', false, array( +						'forum_id' => 0, +						'topic_id' => 0, +						$user_row['username'] +					)); +					$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_GENERAL', false, array( +						'reportee_id' => $user_id, +						$message +					));  					trigger_error($user->lang['USER_FEEDBACK_ADDED'] . adm_back_link($this->u_action . '&u=' . $user_id));  				} @@ -1204,17 +1240,17 @@ class acp_users  				$user->add_lang('mcp');  				// Set up general vars -				$start		= request_var('start', 0); +				$start		= $request->variable('start', 0);  				$deletemark	= (isset($_POST['delmarked'])) ? true : false;  				$deleteall	= (isset($_POST['delall'])) ? true : false;  				$confirm	= (isset($_POST['confirm'])) ? true : false; -				$marked		= request_var('mark', array(0)); -				$message	= utf8_normalize_nfc(request_var('message', '', true)); +				$marked		= $request->variable('mark', array(0)); +				$message	= $request->variable('message', '', true);  				// Sort keys -				$sort_days	= request_var('st', 0); -				$sort_key	= request_var('sk', 't'); -				$sort_dir	= request_var('sd', 'd'); +				$sort_days	= $request->variable('st', 0); +				$sort_key	= $request->variable('sk', 't'); +				$sort_dir	= $request->variable('sd', 'd');  				// Delete entries if requested and able  				if ($deletemark || $deleteall || $confirm) @@ -1222,8 +1258,8 @@ class acp_users  					if (confirm_box(true))  					{  						$where_sql = ''; -						$deletemark = request_var('delmarked', 0); -						$deleteall = request_var('delall', 0); +						$deletemark = $request->variable('delmarked', 0); +						$deleteall = $request->variable('delall', 0);  						if ($deletemark && $marked)  						{  							$where_sql = ' AND ' . $db->sql_in_set('warning_id', array_values($marked)); @@ -1254,11 +1290,11 @@ class acp_users  							if ($log_warnings)  							{ -								add_log('admin', 'LOG_WARNINGS_DELETED', $user_row['username'], $num_warnings); +								$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_WARNINGS_DELETED', false, array($user_row['username'], $num_warnings));  							}  							else  							{ -								add_log('admin', 'LOG_WARNINGS_DELETED_ALL', $user_row['username']); +								$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_WARNINGS_DELETED_ALL', false, array($user_row['username']));  							}  						}  					} @@ -1347,6 +1383,7 @@ class acp_users  				include($phpbb_root_path . 'includes/functions_user.' . $phpEx); +				/* @var $cp \phpbb\profilefields\manager */  				$cp = $phpbb_container->get('profilefields.manager');  				$cp_data = $cp_error = array(); @@ -1361,7 +1398,7 @@ class acp_users  				$user_row['iso_lang_id'] = $row['lang_id'];  				$data = array( -					'jabber'		=> utf8_normalize_nfc(request_var('jabber', $user_row['user_jabber'], true)), +					'jabber'		=> $request->variable('jabber', $user_row['user_jabber'], true),  					'bday_day'		=> 0,  					'bday_month'	=> 0,  					'bday_year'		=> 0, @@ -1372,9 +1409,9 @@ class acp_users  					list($data['bday_day'], $data['bday_month'], $data['bday_year']) = explode('-', $user_row['user_birthday']);  				} -				$data['bday_day']		= request_var('bday_day', $data['bday_day']); -				$data['bday_month']		= request_var('bday_month', $data['bday_month']); -				$data['bday_year']		= request_var('bday_year', $data['bday_year']); +				$data['bday_day']		= $request->variable('bday_day', $data['bday_day']); +				$data['bday_month']		= $request->variable('bday_month', $data['bday_month']); +				$data['bday_year']		= $request->variable('bday_year', $data['bday_year']);  				$data['user_birthday']	= sprintf('%2d-%2d-%4d', $data['bday_day'], $data['bday_month'], $data['bday_year']);  				/** @@ -1507,36 +1544,36 @@ class acp_users  				include($phpbb_root_path . 'includes/functions_user.' . $phpEx);  				$data = array( -					'dateformat'		=> utf8_normalize_nfc(request_var('dateformat', $user_row['user_dateformat'], true)), -					'lang'				=> basename(request_var('lang', $user_row['user_lang'])), -					'tz'				=> request_var('tz', $user_row['user_timezone']), -					'style'				=> request_var('style', $user_row['user_style']), -					'viewemail'			=> request_var('viewemail', $user_row['user_allow_viewemail']), -					'massemail'			=> request_var('massemail', $user_row['user_allow_massemail']), -					'hideonline'		=> request_var('hideonline', !$user_row['user_allow_viewonline']), -					'notifymethod'		=> request_var('notifymethod', $user_row['user_notify_type']), -					'notifypm'			=> request_var('notifypm', $user_row['user_notify_pm']), -					'allowpm'			=> request_var('allowpm', $user_row['user_allow_pm']), - -					'topic_sk'			=> request_var('topic_sk', ($user_row['user_topic_sortby_type']) ? $user_row['user_topic_sortby_type'] : 't'), -					'topic_sd'			=> request_var('topic_sd', ($user_row['user_topic_sortby_dir']) ? $user_row['user_topic_sortby_dir'] : 'd'), -					'topic_st'			=> request_var('topic_st', ($user_row['user_topic_show_days']) ? $user_row['user_topic_show_days'] : 0), - -					'post_sk'			=> request_var('post_sk', ($user_row['user_post_sortby_type']) ? $user_row['user_post_sortby_type'] : 't'), -					'post_sd'			=> request_var('post_sd', ($user_row['user_post_sortby_dir']) ? $user_row['user_post_sortby_dir'] : 'a'), -					'post_st'			=> request_var('post_st', ($user_row['user_post_show_days']) ? $user_row['user_post_show_days'] : 0), - -					'view_images'		=> request_var('view_images', $this->optionget($user_row, 'viewimg')), -					'view_flash'		=> request_var('view_flash', $this->optionget($user_row, 'viewflash')), -					'view_smilies'		=> request_var('view_smilies', $this->optionget($user_row, 'viewsmilies')), -					'view_sigs'			=> request_var('view_sigs', $this->optionget($user_row, 'viewsigs')), -					'view_avatars'		=> request_var('view_avatars', $this->optionget($user_row, 'viewavatars')), -					'view_wordcensor'	=> request_var('view_wordcensor', $this->optionget($user_row, 'viewcensors')), - -					'bbcode'	=> request_var('bbcode', $this->optionget($user_row, 'bbcode')), -					'smilies'	=> request_var('smilies', $this->optionget($user_row, 'smilies')), -					'sig'		=> request_var('sig', $this->optionget($user_row, 'attachsig')), -					'notify'	=> request_var('notify', $user_row['user_notify']), +					'dateformat'		=> $request->variable('dateformat', $user_row['user_dateformat'], true), +					'lang'				=> basename($request->variable('lang', $user_row['user_lang'])), +					'tz'				=> $request->variable('tz', $user_row['user_timezone']), +					'style'				=> $request->variable('style', $user_row['user_style']), +					'viewemail'			=> $request->variable('viewemail', $user_row['user_allow_viewemail']), +					'massemail'			=> $request->variable('massemail', $user_row['user_allow_massemail']), +					'hideonline'		=> $request->variable('hideonline', !$user_row['user_allow_viewonline']), +					'notifymethod'		=> $request->variable('notifymethod', $user_row['user_notify_type']), +					'notifypm'			=> $request->variable('notifypm', $user_row['user_notify_pm']), +					'allowpm'			=> $request->variable('allowpm', $user_row['user_allow_pm']), + +					'topic_sk'			=> $request->variable('topic_sk', ($user_row['user_topic_sortby_type']) ? $user_row['user_topic_sortby_type'] : 't'), +					'topic_sd'			=> $request->variable('topic_sd', ($user_row['user_topic_sortby_dir']) ? $user_row['user_topic_sortby_dir'] : 'd'), +					'topic_st'			=> $request->variable('topic_st', ($user_row['user_topic_show_days']) ? $user_row['user_topic_show_days'] : 0), + +					'post_sk'			=> $request->variable('post_sk', ($user_row['user_post_sortby_type']) ? $user_row['user_post_sortby_type'] : 't'), +					'post_sd'			=> $request->variable('post_sd', ($user_row['user_post_sortby_dir']) ? $user_row['user_post_sortby_dir'] : 'a'), +					'post_st'			=> $request->variable('post_st', ($user_row['user_post_show_days']) ? $user_row['user_post_show_days'] : 0), + +					'view_images'		=> $request->variable('view_images', $this->optionget($user_row, 'viewimg')), +					'view_flash'		=> $request->variable('view_flash', $this->optionget($user_row, 'viewflash')), +					'view_smilies'		=> $request->variable('view_smilies', $this->optionget($user_row, 'viewsmilies')), +					'view_sigs'			=> $request->variable('view_sigs', $this->optionget($user_row, 'viewsigs')), +					'view_avatars'		=> $request->variable('view_avatars', $this->optionget($user_row, 'viewavatars')), +					'view_wordcensor'	=> $request->variable('view_wordcensor', $this->optionget($user_row, 'viewcensors')), + +					'bbcode'	=> $request->variable('bbcode', $this->optionget($user_row, 'bbcode')), +					'smilies'	=> $request->variable('smilies', $this->optionget($user_row, 'smilies')), +					'sig'		=> $request->variable('sig', $this->optionget($user_row, 'attachsig')), +					'notify'	=> $request->variable('notify', $user_row['user_notify']),  				);  				/** @@ -1780,6 +1817,7 @@ class acp_users  				if ($config['allow_avatar'])  				{ +					/* @var $phpbb_avatar_manager \phpbb\avatar\manager */  					$phpbb_avatar_manager = $phpbb_container->get('avatar.manager');  					$avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers(); @@ -1896,7 +1934,7 @@ class acp_users  						trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&u=' . $user_id), E_USER_WARNING);  					} -					$rank_id = request_var('user_rank', 0); +					$rank_id = $request->variable('user_rank', 0);  					$sql = 'UPDATE ' . USERS_TABLE . "  						SET user_rank = $rank_id @@ -1930,50 +1968,54 @@ class acp_users  			case 'sig': -				include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);  				include_once($phpbb_root_path . 'includes/functions_display.' . $phpEx); -				$enable_bbcode	= ($config['allow_sig_bbcode']) ? (bool) $this->optionget($user_row, 'sig_bbcode') : false; -				$enable_smilies	= ($config['allow_sig_smilies']) ? (bool) $this->optionget($user_row, 'sig_smilies') : false; -				$enable_urls	= ($config['allow_sig_links']) ? (bool) $this->optionget($user_row, 'sig_links') : false; -				$signature		= utf8_normalize_nfc(request_var('signature', (string) $user_row['user_sig'], true)); +				$enable_bbcode	= ($config['allow_sig_bbcode']) ? $this->optionget($user_row, 'sig_bbcode') : false; +				$enable_smilies	= ($config['allow_sig_smilies']) ? $this->optionget($user_row, 'sig_smilies') : false; +				$enable_urls	= ($config['allow_sig_links']) ? $this->optionget($user_row, 'sig_links') : false; -				$preview		= (isset($_POST['preview'])) ? true : false; +				$decoded_message	= generate_text_for_edit($user_row['user_sig'], $user_row['user_sig_bbcode_uid'], $user_row['user_sig_bbcode_bitfield']); +				$signature			= $request->variable('signature', $decoded_message['text'], true); +				$signature_preview	= ''; -				if ($submit || $preview) +				if ($submit || $request->is_set_post('preview'))  				{ -					include_once($phpbb_root_path . 'includes/message_parser.' . $phpEx); - -					$enable_bbcode	= ($config['allow_sig_bbcode']) ? ((request_var('disable_bbcode', false)) ? false : true) : false; -					$enable_smilies	= ($config['allow_sig_smilies']) ? ((request_var('disable_smilies', false)) ? false : true) : false; -					$enable_urls	= ($config['allow_sig_links']) ? ((request_var('disable_magic_url', false)) ? false : true) : false; - -					$message_parser = new parse_message($signature); - -					// Allowing Quote BBCode -					$message_parser->parse($enable_bbcode, $enable_urls, $enable_smilies, $config['allow_sig_img'], $config['allow_sig_flash'], true, $config['allow_sig_links'], true, 'sig'); - -					if (sizeof($message_parser->warn_msg)) -					{ -						$error[] = implode('<br />', $message_parser->warn_msg); -					} +					$enable_bbcode	= ($config['allow_sig_bbcode']) ? !$request->variable('disable_bbcode', false) : false; +					$enable_smilies	= ($config['allow_sig_smilies']) ? !$request->variable('disable_smilies', false) : false; +					$enable_urls	= ($config['allow_sig_links']) ? !$request->variable('disable_magic_url', false) : false;  					if (!check_form_key($form_name))  					{ -						$error = 'FORM_INVALID'; +						$error[] = 'FORM_INVALID';  					} +				} + +				$bbcode_uid = $bbcode_bitfield = $bbcode_flags = ''; +				$warn_msg = generate_text_for_storage($signature, $bbcode_uid, $bbcode_bitfield, $bbcode_flags, $enable_bbcode, $enable_urls, $enable_smilies); + +				if (sizeof($warn_msg)) +				{ +					$error += $warn_msg; +				} -					if (!sizeof($error) && $submit) +				if (!$submit) +				{ +					// Parse it for displaying +					$signature_preview = generate_text_for_display($signature, $bbcode_uid, $bbcode_bitfield, $bbcode_flags); +				} +				else +				{ +					if (!sizeof($error))  					{  						$this->optionset($user_row, 'sig_bbcode', $enable_bbcode);  						$this->optionset($user_row, 'sig_smilies', $enable_smilies);  						$this->optionset($user_row, 'sig_links', $enable_urls);  						$sql_ary = array( -							'user_sig'					=> (string) $message_parser->message, +							'user_sig'					=> $signature,  							'user_options'				=> $user_row['user_options'], -							'user_sig_bbcode_uid'		=> (string) $message_parser->bbcode_uid, -							'user_sig_bbcode_bitfield'	=> (string) $message_parser->bbcode_bitfield +							'user_sig_bbcode_uid'		=> $bbcode_uid, +							'user_sig_bbcode_bitfield'	=> $bbcode_bitfield,  						);  						$sql = 'UPDATE ' . USERS_TABLE . ' @@ -1983,33 +2025,27 @@ class acp_users  						trigger_error($user->lang['USER_SIG_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));  					} - -					// Replace "error" strings with their real, localised form -					$error = array_map(array($user, 'lang'), $error);  				} -				$signature_preview = ''; +				// Replace "error" strings with their real, localised form +				$error = array_map(array($user, 'lang'), $error); -				if ($preview) -				{ -					// Now parse it for displaying -					$signature_preview = $message_parser->format_display($enable_bbcode, $enable_urls, $enable_smilies, false); -					unset($message_parser); -				} +				$decoded_message = generate_text_for_edit($signature, $bbcode_uid, $bbcode_bitfield); -				decode_message($signature, $user_row['user_sig_bbcode_uid']); +				/** @var \phpbb\controller\helper $controller_helper */ +				$controller_helper = $phpbb_container->get('controller.helper');  				$template->assign_vars(array(  					'S_SIGNATURE'		=> true, -					'SIGNATURE'			=> $signature, +					'SIGNATURE'			=> $decoded_message['text'],  					'SIGNATURE_PREVIEW'	=> $signature_preview,  					'S_BBCODE_CHECKED'		=> (!$enable_bbcode) ? ' checked="checked"' : '',  					'S_SMILIES_CHECKED'		=> (!$enable_smilies) ? ' checked="checked"' : '',  					'S_MAGIC_URL_CHECKED'	=> (!$enable_urls) ? ' checked="checked"' : '', -					'BBCODE_STATUS'			=> ($config['allow_sig_bbcode']) ? sprintf($user->lang['BBCODE_IS_ON'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>') : sprintf($user->lang['BBCODE_IS_OFF'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>'), +					'BBCODE_STATUS'			=> $user->lang(($config['allow_sig_bbcode'] ? 'BBCODE_IS_ON' : 'BBCODE_IS_OFF'), '<a href="' . $controller_helper->route('phpbb_help_controller', array('mode' => 'bbcode')) . '">', '</a>'),  					'SMILIES_STATUS'		=> ($config['allow_sig_smilies']) ? $user->lang['SMILIES_ARE_ON'] : $user->lang['SMILIES_ARE_OFF'],  					'IMG_STATUS'			=> ($config['allow_sig_img']) ? $user->lang['IMAGES_ARE_ON'] : $user->lang['IMAGES_ARE_OFF'],  					'FLASH_STATUS'			=> ($config['allow_sig_flash']) ? $user->lang['FLASH_IS_ON'] : $user->lang['FLASH_IS_OFF'], @@ -2030,15 +2066,16 @@ class acp_users  			break;  			case 'attach': +				/* @var $pagination \phpbb\pagination */ +				$pagination = $phpbb_container->get('pagination'); -				$start		= request_var('start', 0); +				$start		= $request->variable('start', 0);  				$deletemark = (isset($_POST['delmarked'])) ? true : false; -				$marked		= request_var('mark', array(0)); -				$pagination = $phpbb_container->get('pagination'); +				$marked		= $request->variable('mark', array(0));  				// Sort keys -				$sort_key	= request_var('sk', 'a'); -				$sort_dir	= request_var('sd', 'd'); +				$sort_key	= $request->variable('sk', 'a'); +				$sort_dir	= $request->variable('sd', 'd');  				if ($deletemark && sizeof($marked))  				{ @@ -2077,7 +2114,7 @@ class acp_users  						$message = (sizeof($log_attachments) == 1) ? $user->lang['ATTACHMENT_DELETED'] : $user->lang['ATTACHMENTS_DELETED']; -						add_log('admin', 'LOG_ATTACHMENTS_DELETED', implode($user->lang['COMMA_SEPARATOR'], $log_attachments)); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ATTACHMENTS_DELETED', false, array(implode($user->lang['COMMA_SEPARATOR'], $log_attachments)));  						trigger_error($message . adm_back_link($this->u_action . '&u=' . $user_id));  					}  					else @@ -2186,7 +2223,7 @@ class acp_users  				include($phpbb_root_path . 'includes/functions_user.' . $phpEx);  				$user->add_lang(array('groups', 'acp/groups')); -				$group_id = request_var('g', 0); +				$group_id = $request->variable('g', 0);  				if ($group_id)  				{ @@ -2406,7 +2443,7 @@ class acp_users  				$user->add_lang('acp/permissions');  				add_permission_language(); -				$forum_id = request_var('f', 0); +				$forum_id = $request->variable('f', 0);  				// Global Permissions  				if (!$forum_id) diff --git a/phpBB/includes/acp/acp_words.php b/phpBB/includes/acp/acp_words.php index 272d38bcc8..d28aa8e60b 100644 --- a/phpBB/includes/acp/acp_words.php +++ b/phpBB/includes/acp/acp_words.php @@ -28,13 +28,13 @@ class acp_words  	function main($id, $mode)  	{ -		global $db, $user, $auth, $template, $cache; +		global $db, $user, $auth, $template, $cache, $phpbb_log, $request;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;  		$user->add_lang('acp/posting');  		// Set up general vars -		$action = request_var('action', ''); +		$action = $request->variable('action', '');  		$action = (isset($_POST['add'])) ? 'add' : ((isset($_POST['save'])) ? 'save' : $action);  		$s_hidden_fields = ''; @@ -50,7 +50,7 @@ class acp_words  		{  			case 'edit': -				$word_id = request_var('id', 0); +				$word_id = $request->variable('id', 0);  				if (!$word_id)  				{ @@ -88,9 +88,9 @@ class acp_words  					trigger_error($user->lang['FORM_INVALID']. adm_back_link($this->u_action), E_USER_WARNING);  				} -				$word_id		= request_var('id', 0); -				$word			= utf8_normalize_nfc(request_var('word', '', true)); -				$replacement	= utf8_normalize_nfc(request_var('replacement', '', true)); +				$word_id		= $request->variable('id', 0); +				$word			= $request->variable('word', '', true); +				$replacement	= $request->variable('replacement', '', true);  				if ($word === '' || $replacement === '')  				{ @@ -117,7 +117,8 @@ class acp_words  				$cache->destroy('_word_censors');  				$log_action = ($word_id) ? 'LOG_WORD_EDIT' : 'LOG_WORD_ADD'; -				add_log('admin', $log_action, $word); + +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, $log_action, false, array($word));  				$message = ($word_id) ? $user->lang['WORD_UPDATED'] : $user->lang['WORD_ADDED'];  				trigger_error($message . adm_back_link($this->u_action)); @@ -126,7 +127,7 @@ class acp_words  			case 'delete': -				$word_id = request_var('id', 0); +				$word_id = $request->variable('id', 0);  				if (!$word_id)  				{ @@ -148,7 +149,7 @@ class acp_words  					$cache->destroy('_word_censors'); -					add_log('admin', 'LOG_WORD_DELETE', $deleted_word); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_WORD_DELETE', false, array($deleted_word));  					trigger_error($user->lang['WORD_REMOVED'] . adm_back_link($this->u_action));  				} diff --git a/phpBB/includes/acp/auth.php b/phpBB/includes/acp/auth.php index 905e981cdc..644b1ac7a5 100644 --- a/phpBB/includes/acp/auth.php +++ b/phpBB/includes/acp/auth.php @@ -267,6 +267,8 @@ class auth_admin extends \phpbb\auth\auth  	function display_mask($mode, $permission_type, &$hold_ary, $user_mode = 'user', $local = false, $group_display = true)  	{  		global $template, $user, $db, $phpbb_root_path, $phpEx, $phpbb_container; + +		/* @var $phpbb_permissions \phpbb\permissions */  		$phpbb_permissions = $phpbb_container->get('acl.permissions');  		// Define names for template loops, might be able to be set @@ -1108,6 +1110,7 @@ class auth_admin extends \phpbb\auth\auth  	{  		global $template, $user, $phpbb_admin_path, $phpEx, $phpbb_container; +		/* @var $phpbb_permissions \phpbb\permissions */  		$phpbb_permissions = $phpbb_container->get('acl.permissions');  		@reset($category_array); @@ -1186,6 +1189,7 @@ class auth_admin extends \phpbb\auth\auth  	{  		global $user, $phpbb_container; +		/* @var $phpbb_permissions \phpbb\permissions */  		$phpbb_permissions = $phpbb_container->get('acl.permissions');  		foreach ($key_sort_array as $forum_id) diff --git a/phpBB/includes/acp/info/acp_attachments.php b/phpBB/includes/acp/info/acp_attachments.php index ff6e342f77..057f08201e 100644 --- a/phpBB/includes/acp/info/acp_attachments.php +++ b/phpBB/includes/acp/info/acp_attachments.php @@ -18,7 +18,6 @@ class acp_attachments_info  		return array(  			'filename'	=> 'acp_attachments',  			'title'		=> 'ACP_ATTACHMENTS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'attach'		=> array('title' => 'ACP_ATTACHMENT_SETTINGS', 'auth' => 'acl_a_attach', 'cat' => array('ACP_BOARD_CONFIGURATION', 'ACP_ATTACHMENTS')),  				'extensions'	=> array('title' => 'ACP_MANAGE_EXTENSIONS', 'auth' => 'acl_a_attach', 'cat' => array('ACP_ATTACHMENTS')), diff --git a/phpBB/includes/acp/info/acp_ban.php b/phpBB/includes/acp/info/acp_ban.php index 4959f4da41..c88f4c2ebb 100644 --- a/phpBB/includes/acp/info/acp_ban.php +++ b/phpBB/includes/acp/info/acp_ban.php @@ -18,7 +18,6 @@ class acp_ban_info  		return array(  			'filename'	=> 'acp_ban',  			'title'		=> 'ACP_BAN', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'email'		=> array('title' => 'ACP_BAN_EMAILS', 'auth' => 'acl_a_ban', 'cat' => array('ACP_USER_SECURITY')),  				'ip'		=> array('title' => 'ACP_BAN_IPS', 'auth' => 'acl_a_ban', 'cat' => array('ACP_USER_SECURITY')), diff --git a/phpBB/includes/acp/info/acp_bbcodes.php b/phpBB/includes/acp/info/acp_bbcodes.php index 2bca319cc3..dfcd43a8ac 100644 --- a/phpBB/includes/acp/info/acp_bbcodes.php +++ b/phpBB/includes/acp/info/acp_bbcodes.php @@ -18,7 +18,6 @@ class acp_bbcodes_info  		return array(  			'filename'	=> 'acp_bbcodes',  			'title'		=> 'ACP_BBCODES', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'bbcodes'		=> array('title' => 'ACP_BBCODES', 'auth' => 'acl_a_bbcode', 'cat' => array('ACP_MESSAGES')),  			), diff --git a/phpBB/includes/acp/info/acp_board.php b/phpBB/includes/acp/info/acp_board.php index 6838b4f8ba..1a3ee7b6be 100644 --- a/phpBB/includes/acp/info/acp_board.php +++ b/phpBB/includes/acp/info/acp_board.php @@ -18,7 +18,6 @@ class acp_board_info  		return array(  			'filename'	=> 'acp_board',  			'title'		=> 'ACP_BOARD_MANAGEMENT', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'settings'		=> array('title' => 'ACP_BOARD_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),  				'features'		=> array('title' => 'ACP_BOARD_FEATURES', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')), diff --git a/phpBB/includes/acp/info/acp_bots.php b/phpBB/includes/acp/info/acp_bots.php index 9aa24927af..26782d8c0b 100644 --- a/phpBB/includes/acp/info/acp_bots.php +++ b/phpBB/includes/acp/info/acp_bots.php @@ -18,7 +18,6 @@ class acp_bots_info  		return array(  			'filename'	=> 'acp_bots',  			'title'		=> 'ACP_BOTS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'bots'		=> array('title' => 'ACP_BOTS', 'auth' => 'acl_a_bots', 'cat' => array('ACP_GENERAL_TASKS')),  			), diff --git a/phpBB/includes/acp/info/acp_captcha.php b/phpBB/includes/acp/info/acp_captcha.php index 99dc5ce0e5..3f7bf0351d 100644 --- a/phpBB/includes/acp/info/acp_captcha.php +++ b/phpBB/includes/acp/info/acp_captcha.php @@ -18,7 +18,6 @@ class acp_captcha_info  		return array(  			'filename'	=> 'acp_captcha',  			'title'		=> 'ACP_CAPTCHA', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'visual'		=> array('title' => 'ACP_VC_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),  				'img'			=> array('title' => 'ACP_VC_CAPTCHA_DISPLAY', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION'), 'display' => false) diff --git a/phpBB/includes/acp/info/acp_database.php b/phpBB/includes/acp/info/acp_database.php index 5cf9da24fb..815db53b67 100644 --- a/phpBB/includes/acp/info/acp_database.php +++ b/phpBB/includes/acp/info/acp_database.php @@ -18,7 +18,6 @@ class acp_database_info  		return array(  			'filename'	=> 'acp_database',  			'title'		=> 'ACP_DATABASE', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'backup'	=> array('title' => 'ACP_BACKUP', 'auth' => 'acl_a_backup', 'cat' => array('ACP_CAT_DATABASE')),  				'restore'	=> array('title' => 'ACP_RESTORE', 'auth' => 'acl_a_backup', 'cat' => array('ACP_CAT_DATABASE')), diff --git a/phpBB/includes/acp/info/acp_disallow.php b/phpBB/includes/acp/info/acp_disallow.php index ebd44b515c..df4765b6bb 100644 --- a/phpBB/includes/acp/info/acp_disallow.php +++ b/phpBB/includes/acp/info/acp_disallow.php @@ -18,7 +18,6 @@ class acp_disallow_info  		return array(  			'filename'	=> 'acp_disallow',  			'title'		=> 'ACP_DISALLOW', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'usernames'		=> array('title' => 'ACP_DISALLOW_USERNAMES', 'auth' => 'acl_a_names', 'cat' => array('ACP_USER_SECURITY')),  			), diff --git a/phpBB/includes/acp/info/acp_email.php b/phpBB/includes/acp/info/acp_email.php index 2f77fc617c..e85ef0923a 100644 --- a/phpBB/includes/acp/info/acp_email.php +++ b/phpBB/includes/acp/info/acp_email.php @@ -18,7 +18,6 @@ class acp_email_info  		return array(  			'filename'	=> 'acp_email',  			'title'		=> 'ACP_MASS_EMAIL', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'email'		=> array('title' => 'ACP_MASS_EMAIL', 'auth' => 'acl_a_email && cfg_email_enable', 'cat' => array('ACP_GENERAL_TASKS')),  			), diff --git a/phpBB/includes/acp/info/acp_extensions.php b/phpBB/includes/acp/info/acp_extensions.php index d4cf1b0ed5..9adcd543b9 100644 --- a/phpBB/includes/acp/info/acp_extensions.php +++ b/phpBB/includes/acp/info/acp_extensions.php @@ -18,7 +18,6 @@ class acp_extensions_info  		return array(  			'filename'	=> 'acp_extensions',  			'title'		=> 'ACP_EXTENSION_MANAGEMENT', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'main'		=> array('title' => 'ACP_EXTENSIONS', 'auth' => 'acl_a_extensions', 'cat' => array('ACP_EXTENSION_MANAGEMENT')),  			), diff --git a/phpBB/includes/acp/info/acp_forums.php b/phpBB/includes/acp/info/acp_forums.php index 647090c8c3..8b5ce7edc2 100644 --- a/phpBB/includes/acp/info/acp_forums.php +++ b/phpBB/includes/acp/info/acp_forums.php @@ -18,7 +18,6 @@ class acp_forums_info  		return array(  			'filename'	=> 'acp_forums',  			'title'		=> 'ACP_FORUM_MANAGEMENT', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'manage'	=> array('title' => 'ACP_MANAGE_FORUMS', 'auth' => 'acl_a_forum', 'cat' => array('ACP_MANAGE_FORUMS')),  			), diff --git a/phpBB/includes/acp/info/acp_groups.php b/phpBB/includes/acp/info/acp_groups.php index 6c5ad70d97..e0aafeca0d 100644 --- a/phpBB/includes/acp/info/acp_groups.php +++ b/phpBB/includes/acp/info/acp_groups.php @@ -18,7 +18,6 @@ class acp_groups_info  		return array(  			'filename'	=> 'acp_groups',  			'title'		=> 'ACP_GROUPS_MANAGEMENT', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'manage'		=> array('title' => 'ACP_GROUPS_MANAGE', 'auth' => 'acl_a_group', 'cat' => array('ACP_GROUPS')),  				'position'		=> array('title' => 'ACP_GROUPS_POSITION', 'auth' => 'acl_a_group', 'cat' => array('ACP_GROUPS')), diff --git a/phpBB/includes/acp/info/acp_icons.php b/phpBB/includes/acp/info/acp_icons.php index 001d6cb402..87eadddd8d 100644 --- a/phpBB/includes/acp/info/acp_icons.php +++ b/phpBB/includes/acp/info/acp_icons.php @@ -18,7 +18,6 @@ class acp_icons_info  		return array(  			'filename'	=> 'acp_icons',  			'title'		=> 'ACP_ICONS_SMILIES', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'icons'		=> array('title' => 'ACP_ICONS', 'auth' => 'acl_a_icons', 'cat' => array('ACP_MESSAGES')),  				'smilies'	=> array('title' => 'ACP_SMILIES', 'auth' => 'acl_a_icons', 'cat' => array('ACP_MESSAGES')), diff --git a/phpBB/includes/acp/info/acp_inactive.php b/phpBB/includes/acp/info/acp_inactive.php index 442eb13c30..38cb964735 100644 --- a/phpBB/includes/acp/info/acp_inactive.php +++ b/phpBB/includes/acp/info/acp_inactive.php @@ -18,7 +18,6 @@ class acp_inactive_info  		return array(  			'filename'	=> 'acp_inactive',  			'title'		=> 'ACP_INACTIVE_USERS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'list'		=> array('title' => 'ACP_INACTIVE_USERS', 'auth' => 'acl_a_user', 'cat' => array('ACP_CAT_USERS')),  			), diff --git a/phpBB/includes/acp/info/acp_jabber.php b/phpBB/includes/acp/info/acp_jabber.php index c1dfb2aca7..660299a12d 100644 --- a/phpBB/includes/acp/info/acp_jabber.php +++ b/phpBB/includes/acp/info/acp_jabber.php @@ -18,7 +18,6 @@ class acp_jabber_info  		return array(  			'filename'	=> 'acp_jabber',  			'title'		=> 'ACP_JABBER_SETTINGS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'settings'		=> array('title' => 'ACP_JABBER_SETTINGS', 'auth' => 'acl_a_jabber', 'cat' => array('ACP_CLIENT_COMMUNICATION')),  			), diff --git a/phpBB/includes/acp/info/acp_language.php b/phpBB/includes/acp/info/acp_language.php index b9efbbbd9a..1a5a2b6ba8 100644 --- a/phpBB/includes/acp/info/acp_language.php +++ b/phpBB/includes/acp/info/acp_language.php @@ -18,7 +18,6 @@ class acp_language_info  		return array(  			'filename'	=> 'acp_language',  			'title'		=> 'ACP_LANGUAGE', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'lang_packs'		=> array('title' => 'ACP_LANGUAGE_PACKS', 'auth' => 'acl_a_language', 'cat' => array('ACP_LANGUAGE')),  			), diff --git a/phpBB/includes/acp/info/acp_logs.php b/phpBB/includes/acp/info/acp_logs.php index e9e6034cd4..efa35b2118 100644 --- a/phpBB/includes/acp/info/acp_logs.php +++ b/phpBB/includes/acp/info/acp_logs.php @@ -18,7 +18,6 @@ class acp_logs_info  		return array(  			'filename'	=> 'acp_logs',  			'title'		=> 'ACP_LOGGING', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'admin'		=> array('title' => 'ACP_ADMIN_LOGS', 'auth' => 'acl_a_viewlogs', 'cat' => array('ACP_FORUM_LOGS')),  				'mod'		=> array('title' => 'ACP_MOD_LOGS', 'auth' => 'acl_a_viewlogs', 'cat' => array('ACP_FORUM_LOGS')), diff --git a/phpBB/includes/acp/info/acp_main.php b/phpBB/includes/acp/info/acp_main.php index 51259e3bd9..48d35da585 100644 --- a/phpBB/includes/acp/info/acp_main.php +++ b/phpBB/includes/acp/info/acp_main.php @@ -18,7 +18,6 @@ class acp_main_info  		return array(  			'filename'	=> 'acp_main',  			'title'		=> 'ACP_INDEX', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'main'		=> array('title' => 'ACP_INDEX', 'auth' => '', 'cat' => array('ACP_CAT_GENERAL')),  			), diff --git a/phpBB/includes/acp/info/acp_modules.php b/phpBB/includes/acp/info/acp_modules.php index a47cd4ad83..073e69c6a8 100644 --- a/phpBB/includes/acp/info/acp_modules.php +++ b/phpBB/includes/acp/info/acp_modules.php @@ -18,7 +18,6 @@ class acp_modules_info  		return array(  			'filename'	=> 'acp_modules',  			'title'		=> 'ACP_MODULE_MANAGEMENT', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'acp'		=> array('title' => 'ACP', 'auth' => 'acl_a_modules', 'cat' => array('ACP_MODULE_MANAGEMENT')),  				'ucp'		=> array('title' => 'UCP', 'auth' => 'acl_a_modules', 'cat' => array('ACP_MODULE_MANAGEMENT')), diff --git a/phpBB/includes/acp/info/acp_permission_roles.php b/phpBB/includes/acp/info/acp_permission_roles.php index e8aa13375d..34af693b7b 100644 --- a/phpBB/includes/acp/info/acp_permission_roles.php +++ b/phpBB/includes/acp/info/acp_permission_roles.php @@ -18,7 +18,6 @@ class acp_permission_roles_info  		return array(  			'filename'	=> 'acp_permission_roles',  			'title'		=> 'ACP_PERMISSION_ROLES', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'admin_roles'		=> array('title' => 'ACP_ADMIN_ROLES', 'auth' => 'acl_a_roles && acl_a_aauth', 'cat' => array('ACP_PERMISSION_ROLES')),  				'user_roles'		=> array('title' => 'ACP_USER_ROLES', 'auth' => 'acl_a_roles && acl_a_uauth', 'cat' => array('ACP_PERMISSION_ROLES')), diff --git a/phpBB/includes/acp/info/acp_permissions.php b/phpBB/includes/acp/info/acp_permissions.php index 3ec592a300..3d415f2b72 100644 --- a/phpBB/includes/acp/info/acp_permissions.php +++ b/phpBB/includes/acp/info/acp_permissions.php @@ -18,7 +18,6 @@ class acp_permissions_info  		return array(  			'filename'	=> 'acp_permissions',  			'title'		=> 'ACP_PERMISSIONS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'intro'					=> array('title' => 'ACP_PERMISSIONS', 'auth' => 'acl_a_authusers || acl_a_authgroups || acl_a_viewauth', 'cat' => array('ACP_CAT_PERMISSIONS')),  				'trace'					=> array('title' => 'ACP_PERMISSION_TRACE', 'auth' => 'acl_a_viewauth', 'display' => false, 'cat' => array('ACP_PERMISSION_MASKS')), diff --git a/phpBB/includes/acp/info/acp_php_info.php b/phpBB/includes/acp/info/acp_php_info.php index af978e0daa..c5e60c7e66 100644 --- a/phpBB/includes/acp/info/acp_php_info.php +++ b/phpBB/includes/acp/info/acp_php_info.php @@ -18,7 +18,6 @@ class acp_php_info_info  		return array(  			'filename'	=> 'acp_php_info',  			'title'		=> 'ACP_PHP_INFO', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'info'		=> array('title' => 'ACP_PHP_INFO', 'auth' => 'acl_a_phpinfo', 'cat' => array('ACP_GENERAL_TASKS')),  			), diff --git a/phpBB/includes/acp/info/acp_profile.php b/phpBB/includes/acp/info/acp_profile.php index 307e711eee..ede34204b4 100644 --- a/phpBB/includes/acp/info/acp_profile.php +++ b/phpBB/includes/acp/info/acp_profile.php @@ -18,7 +18,6 @@ class acp_profile_info  		return array(  			'filename'	=> 'acp_profile',  			'title'		=> 'ACP_CUSTOM_PROFILE_FIELDS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'profile'	=> array('title' => 'ACP_CUSTOM_PROFILE_FIELDS', 'auth' => 'acl_a_profile', 'cat' => array('ACP_CAT_USERS')),  			), diff --git a/phpBB/includes/acp/info/acp_prune.php b/phpBB/includes/acp/info/acp_prune.php index 58cb1ba9ab..74e5248aa9 100644 --- a/phpBB/includes/acp/info/acp_prune.php +++ b/phpBB/includes/acp/info/acp_prune.php @@ -18,7 +18,6 @@ class acp_prune_info  		return array(  			'filename'	=> 'acp_prune',  			'title'		=> 'ACP_PRUNING', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'forums'	=> array('title' => 'ACP_PRUNE_FORUMS', 'auth' => 'acl_a_prune', 'cat' => array('ACP_MANAGE_FORUMS')),  				'users'		=> array('title' => 'ACP_PRUNE_USERS', 'auth' => 'acl_a_userdel', 'cat' => array('ACP_CAT_USERS')), diff --git a/phpBB/includes/acp/info/acp_ranks.php b/phpBB/includes/acp/info/acp_ranks.php index 3cc9b4a428..9bf51eba3c 100644 --- a/phpBB/includes/acp/info/acp_ranks.php +++ b/phpBB/includes/acp/info/acp_ranks.php @@ -18,7 +18,6 @@ class acp_ranks_info  		return array(  			'filename'	=> 'acp_ranks',  			'title'		=> 'ACP_RANKS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'ranks'		=> array('title' => 'ACP_MANAGE_RANKS', 'auth' => 'acl_a_ranks', 'cat' => array('ACP_CAT_USERS')),  			), diff --git a/phpBB/includes/acp/info/acp_reasons.php b/phpBB/includes/acp/info/acp_reasons.php index c48fd1aacd..55a0495d0f 100644 --- a/phpBB/includes/acp/info/acp_reasons.php +++ b/phpBB/includes/acp/info/acp_reasons.php @@ -18,7 +18,6 @@ class acp_reasons_info  		return array(  			'filename'	=> 'acp_reasons',  			'title'		=> 'ACP_REASONS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'main'		=> array('title' => 'ACP_MANAGE_REASONS', 'auth' => 'acl_a_reasons', 'cat' => array('ACP_GENERAL_TASKS')),  			), diff --git a/phpBB/includes/acp/info/acp_search.php b/phpBB/includes/acp/info/acp_search.php index 5d681a7174..0635dd9edd 100644 --- a/phpBB/includes/acp/info/acp_search.php +++ b/phpBB/includes/acp/info/acp_search.php @@ -18,7 +18,6 @@ class acp_search_info  		return array(  			'filename'	=> 'acp_search',  			'title'		=> 'ACP_SEARCH', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'settings'	=> array('title' => 'ACP_SEARCH_SETTINGS', 'auth' => 'acl_a_search', 'cat' => array('ACP_SERVER_CONFIGURATION')),  				'index'		=> array('title' => 'ACP_SEARCH_INDEX', 'auth' => 'acl_a_search', 'cat' => array('ACP_CAT_DATABASE')), diff --git a/phpBB/includes/acp/info/acp_send_statistics.php b/phpBB/includes/acp/info/acp_send_statistics.php index a4f2ddc420..a0db1a48c4 100644 --- a/phpBB/includes/acp/info/acp_send_statistics.php +++ b/phpBB/includes/acp/info/acp_send_statistics.php @@ -18,7 +18,6 @@ class acp_send_statistics_info  		return array(  			'filename'	=> 'acp_send_statistics',  			'title'		=> 'ACP_SEND_STATISTICS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'send_statistics'		=> array('title' => 'ACP_SEND_STATISTICS', 'auth' => 'acl_a_server', 'cat' => array('ACP_SERVER_CONFIGURATION')),  			), diff --git a/phpBB/includes/acp/info/acp_styles.php b/phpBB/includes/acp/info/acp_styles.php index c0ab005502..59b0a64899 100644 --- a/phpBB/includes/acp/info/acp_styles.php +++ b/phpBB/includes/acp/info/acp_styles.php @@ -18,7 +18,6 @@ class acp_styles_info  		return array(  			'filename'	=> 'acp_styles',  			'title'		=> 'ACP_CAT_STYLES', -			'version'	=> '2.0.0',  			'modes'		=> array(  				'style'		=> array('title' => 'ACP_STYLES', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_MANAGEMENT')),  				'install'	=> array('title' => 'ACP_STYLES_INSTALL', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_MANAGEMENT')), diff --git a/phpBB/includes/acp/info/acp_update.php b/phpBB/includes/acp/info/acp_update.php index ca00f6d305..7806fb4891 100644 --- a/phpBB/includes/acp/info/acp_update.php +++ b/phpBB/includes/acp/info/acp_update.php @@ -18,7 +18,6 @@ class acp_update_info  		return array(  			'filename'	=> 'acp_update',  			'title'		=> 'ACP_UPDATE', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'version_check'		=> array('title' => 'ACP_VERSION_CHECK', 'auth' => 'acl_a_board', 'cat' => array('ACP_AUTOMATION')),  			), diff --git a/phpBB/includes/acp/info/acp_users.php b/phpBB/includes/acp/info/acp_users.php index ab69523cde..cb59d24293 100644 --- a/phpBB/includes/acp/info/acp_users.php +++ b/phpBB/includes/acp/info/acp_users.php @@ -18,7 +18,6 @@ class acp_users_info  		return array(  			'filename'	=> 'acp_users',  			'title'		=> 'ACP_USER_MANAGEMENT', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'overview'		=> array('title' => 'ACP_MANAGE_USERS', 'auth' => 'acl_a_user', 'cat' => array('ACP_CAT_USERS')),  				'feedback'		=> array('title' => 'ACP_USER_FEEDBACK', 'auth' => 'acl_a_user', 'display' => false, 'cat' => array('ACP_CAT_USERS')), diff --git a/phpBB/includes/acp/info/acp_words.php b/phpBB/includes/acp/info/acp_words.php index 3c8c79f25f..8a6d0d7f20 100644 --- a/phpBB/includes/acp/info/acp_words.php +++ b/phpBB/includes/acp/info/acp_words.php @@ -18,7 +18,6 @@ class acp_words_info  		return array(  			'filename'	=> 'acp_words',  			'title'		=> 'ACP_WORDS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'words'		=> array('title' => 'ACP_WORDS', 'auth' => 'acl_a_words', 'cat' => array('ACP_MESSAGES')),  			), diff --git a/phpBB/includes/bbcode.php b/phpBB/includes/bbcode.php index 5f6dcde448..ee911b5ec5 100644 --- a/phpBB/includes/bbcode.php +++ b/phpBB/includes/bbcode.php @@ -129,13 +129,30 @@ class bbcode  	*/  	function bbcode_cache_init()  	{ -		global $phpbb_root_path, $phpEx, $config, $user, $phpbb_dispatcher, $phpbb_extension_manager, $phpbb_path_helper; +		global $phpbb_root_path, $phpEx, $config, $user, $phpbb_dispatcher, $phpbb_extension_manager, $phpbb_path_helper, $phpbb_container;  		if (empty($this->template_filename))  		{  			$this->template_bitfield = new bitfield($user->style['bbcode_bitfield']); -			$template = new phpbb\template\twig\twig($phpbb_path_helper, $config, $user, new phpbb\template\context(), $phpbb_extension_manager); +			$template = new \phpbb\template\twig\twig( +				$phpbb_container->get('path_helper'), +				$phpbb_container->get('config'), +				$phpbb_container->get('user'), +				new \phpbb\template\context(), +				new \phpbb\template\twig\environment( +					$phpbb_container->get('config'), +					$phpbb_container->get('path_helper'), +					$phpbb_container, +					$phpbb_container->getParameter('core.root_path') . 'cache/', +					$phpbb_container->get('ext.manager'), +					new \phpbb\template\twig\loader() +				), +				$phpbb_container->getParameter('core.root_path') . 'cache/', +				$phpbb_container->get('template.twig.extensions.collection'), +				$phpbb_extension_manager +			); +  			$template->set_style();  			$template->set_filenames(array('bbcode.html' => 'bbcode.html'));  			$this->template_filename = $template->get_source_file_for_handle('bbcode.html'); diff --git a/phpBB/includes/compatibility_globals.php b/phpBB/includes/compatibility_globals.php index 54c9287c96..b0919aefb3 100644 --- a/phpBB/includes/compatibility_globals.php +++ b/phpBB/includes/compatibility_globals.php @@ -19,29 +19,44 @@ if (!defined('IN_PHPBB'))  }  // set up caching +/* @var $cache \phpbb\cache\service */  $cache = $phpbb_container->get('cache');  // Instantiate some basic classes +/* @var $phpbb_dispatcher \phpbb\event\dispatcher */  $phpbb_dispatcher = $phpbb_container->get('dispatcher'); + +/* @var $request \phpbb\request\request_interface */  $request	= $phpbb_container->get('request'); + +/* @var $user \phpbb\user */  $user		= $phpbb_container->get('user'); + +/* @var $auth \phpbb\auth\auth */  $auth		= $phpbb_container->get('auth'); -$db			= $phpbb_container->get('dbal.conn'); -// make sure request_var uses this request instance -request_var('', 0, false, false, $request); // "dependency injection" for a function +/* @var $db \phpbb\db\driver\driver_interface */ +$db			= $phpbb_container->get('dbal.conn');  // Grab global variables, re-cache if necessary +/* @var $config phpbb\config\db */  $config = $phpbb_container->get('config'); -set_config(null, null, null, $config); -set_config_count(null, null, null, $config); +/* @var $phpbb_log \phpbb\log\log_interface */  $phpbb_log = $phpbb_container->get('log'); + +/* @var $symfony_request \phpbb\symfony_request */  $symfony_request = $phpbb_container->get('symfony_request'); + +/* @var $phpbb_filesystem \phpbb\filesystem */  $phpbb_filesystem = $phpbb_container->get('filesystem'); + +/* @var $phpbb_path_helper \phpbb\path_helper */  $phpbb_path_helper = $phpbb_container->get('path_helper');  // load extensions +/* @var $phpbb_extension_manager \phpbb\extension\manager */  $phpbb_extension_manager = $phpbb_container->get('ext.manager'); +/* @var $template \phpbb\template\template */  $template = $phpbb_container->get('template'); diff --git a/phpBB/includes/constants.php b/phpBB/includes/constants.php index 321a87b4b0..126cf44842 100644 --- a/phpBB/includes/constants.php +++ b/phpBB/includes/constants.php @@ -28,7 +28,7 @@ if (!defined('IN_PHPBB'))  */  // phpBB Version -define('PHPBB_VERSION', '3.1.4-dev'); +define('PHPBB_VERSION', '3.2.0-a1-dev');  // QA-related  // define('PHPBB_QA', 1); diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 573df9e55d..949d33c566 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -64,135 +64,6 @@ function set_var(&$result, $var, $type, $multibyte = false)  }  /** -* Wrapper function of \phpbb\request\request::variable which exists for backwards compatability. -* See {@link \phpbb\request\request_interface::variable \phpbb\request\request_interface::variable} for -* documentation of this function's use. -* -* @deprecated -* @param	mixed			$var_name	The form variable's name from which data shall be retrieved. -* 										If the value is an array this may be an array of indizes which will give -* 										direct access to a value at any depth. E.g. if the value of "var" is array(1 => "a") -* 										then specifying array("var", 1) as the name will return "a". -* 										If you pass an instance of {@link \phpbb\request\request_interface phpbb_request_interface} -* 										as this parameter it will overwrite the current request class instance. If you do -* 										not do so, it will create its own instance (but leave superglobals enabled). -* @param	mixed			$default	A default value that is returned if the variable was not set. -* 										This function will always return a value of the same type as the default. -* @param	bool			$multibyte	If $default is a string this paramater has to be true if the variable may contain any UTF-8 characters -*										Default is false, causing all bytes outside the ASCII range (0-127) to be replaced with question marks -* @param	bool			$cookie		This param is mapped to \phpbb\request\request_interface::COOKIE as the last param for -* 										\phpbb\request\request_interface::variable for backwards compatability reasons. -* @param	\phpbb\request\request_interface|null|false	If an instance of \phpbb\request\request_interface is given the instance is stored in -*										a static variable and used for all further calls where this parameters is null. Until -*										the function is called with an instance it automatically creates a new \phpbb\request\request -*										instance on every call. By passing false this per-call instantiation can be restored -*										after having passed in a \phpbb\request\request_interface instance. -* -* @return	mixed	The value of $_REQUEST[$var_name] run through {@link set_var set_var} to ensure that the type is the -* 					the same as that of $default. If the variable is not set $default is returned. -*/ -function request_var($var_name, $default, $multibyte = false, $cookie = false, $request = null) -{ -	// This is all just an ugly hack to add "Dependency Injection" to a function -	// the only real code is the function call which maps this function to a method. -	static $static_request = null; - -	if ($request instanceof \phpbb\request\request_interface) -	{ -		$static_request = $request; - -		if (empty($var_name)) -		{ -			return; -		} -	} -	else if ($request === false) -	{ -		$static_request = null; - -		if (empty($var_name)) -		{ -			return; -		} -	} - -	$tmp_request = $static_request; - -	// no request class set, create a temporary one ourselves to keep backwards compatability -	if ($tmp_request === null) -	{ -		// false param: enable super globals, so the created request class does not -		// make super globals inaccessible everywhere outside this function. -		$tmp_request = new \phpbb\request\request(new \phpbb\request\type_cast_helper(), false); -	} - -	return $tmp_request->variable($var_name, $default, $multibyte, ($cookie) ? \phpbb\request\request_interface::COOKIE : \phpbb\request\request_interface::REQUEST); -} - -/** -* Sets a configuration option's value. -* -* Please note that this function does not update the is_dynamic value for -* an already existing config option. -* -* @param string $config_name   The configuration option's name -* @param string $config_value  New configuration value -* @param bool   $is_dynamic    Whether this variable should be cached (false) or -*                              if it changes too frequently (true) to be -*                              efficiently cached. -* -* @return null -* -* @deprecated -*/ -function set_config($config_name, $config_value, $is_dynamic = false, \phpbb\config\config $set_config = null) -{ -	static $config = null; - -	if ($set_config !== null) -	{ -		$config = $set_config; - -		if (empty($config_name)) -		{ -			return; -		} -	} - -	$config->set($config_name, $config_value, !$is_dynamic); -} - -/** -* Increments an integer config value directly in the database. -* -* @param string $config_name   The configuration option's name -* @param int    $increment     Amount to increment by -* @param bool   $is_dynamic    Whether this variable should be cached (false) or -*                              if it changes too frequently (true) to be -*                              efficiently cached. -* -* @return null -* -* @deprecated -*/ -function set_config_count($config_name, $increment, $is_dynamic = false, \phpbb\config\config $set_config = null) -{ -	static $config = null; - -	if ($set_config !== null) -	{ -		$config = $set_config; - -		if (empty($config_name)) -		{ -			return; -		} -	} - -	$config->increment($config_name, $increment, !$is_dynamic); -} - -/**  * Generates an alphanumeric random string of given length  *  * @return string @@ -235,8 +106,8 @@ function unique_id($extra = 'c')  	if ($dss_seeded !== true && ($config['rand_seed_last_update'] < time() - rand(1,10)))  	{ -		set_config('rand_seed_last_update', time(), true); -		set_config('rand_seed', $config['rand_seed'], true); +		$config->set('rand_seed_last_update', time(), false); +		$config->set('rand_seed', $config['rand_seed'], false);  		$dss_seeded = true;  	} @@ -376,8 +247,7 @@ function still_on_time($extra_time = 15)  {  	static $max_execution_time, $start_time; -	$time = explode(' ', microtime()); -	$current_time = $time[0] + $time[1]; +	$current_time = microtime(true);  	if (empty($max_execution_time))  	{ @@ -802,7 +672,7 @@ function phpbb_own_realpath($path)  	$max = sizeof($bits) - 1; -	// Check if we are able to resolve symlinks, Windows cannot. +	// Check if we are able to resolve symlinks, Windows (prior to Vista and Server 2008) cannot.  	$symlink_resolve = (function_exists('readlink')) ? true : false;  	foreach ($bits as $i => $bit) @@ -1192,7 +1062,7 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $  		if ($forum_id === false || !sizeof($forum_id))  		{  			// Mark all forums read (index page) - +			/* @var $phpbb_notifications \phpbb\notification\manager */  			$phpbb_notifications = $phpbb_container->get('notification_manager');  			// Mark all topic notifications read for this user @@ -1259,6 +1129,7 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $  			$forum_id = array($forum_id);  		} +		/* @var $phpbb_notifications \phpbb\notification\manager */  		$phpbb_notifications = $phpbb_container->get('notification_manager');  		$phpbb_notifications->mark_notifications_read_by_parent(array( @@ -1381,6 +1252,7 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $  			return;  		} +		/* @var $phpbb_notifications \phpbb\notification\manager */  		$phpbb_notifications = $phpbb_container->get('notification_manager');  		// Mark post notifications read for this user in this topic @@ -1680,7 +1552,7 @@ function get_complete_topic_tracking($forum_id, $topic_ids, $global_announce_lis  */  function get_unread_topics($user_id = false, $sql_extra = '', $sql_sort = '', $sql_limit = 1001, $sql_limit_offset = 0)  { -	global $config, $db, $user; +	global $config, $db, $user, $request;  	global $phpbb_dispatcher;  	$user_id = ($user_id === false) ? (int) $user->data['user_id'] : (int) $user_id; @@ -1759,7 +1631,7 @@ function get_unread_topics($user_id = false, $sql_extra = '', $sql_sort = '', $s  		if (empty($tracking_topics))  		{ -			$tracking_topics = request_var($config['cookie_name'] . '_track', '', false, true); +			$tracking_topics = $request->variable($config['cookie_name'] . '_track', '', false, \phpbb\request\request_interface::COOKIE);  			$tracking_topics = ($tracking_topics) ? tracking_unserialize($tracking_topics) : array();  		} @@ -1851,6 +1723,7 @@ function update_forum_tracking_info($forum_id, $forum_last_post_time, $f_mark_ti  	// Handle update of unapproved topics info.  	// Only update for moderators having m_approve permission for the forum. +	/* @var $phpbb_content_visibility \phpbb\content_visibility */  	$phpbb_content_visibility = $phpbb_container->get('content.visibility');  	// Check the forum for any left unread topics. @@ -2701,9 +2574,9 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo  	if ($check && $confirm)  	{ -		$user_id = request_var('confirm_uid', 0); -		$session_id = request_var('sess', ''); -		$confirm_key = request_var('confirm_key', ''); +		$user_id = $request->variable('confirm_uid', 0); +		$session_id = $request->variable('sess', ''); +		$confirm_key = $request->variable('confirm_key', '');  		if ($user_id != $user->data['user_id'] || $session_id != $user->session_id || !$confirm_key || !$user->data['user_last_confirm_key'] || $confirm_key != $user->data['user_last_confirm_key'])  		{ @@ -2745,7 +2618,7 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo  	);  	// If activation key already exist, we better do not re-use the key (something very strange is going on...) -	if (request_var('confirm_key', '')) +	if ($request->variable('confirm_key', ''))  	{  		// This should not occur, therefore we cancel the operation to safe the user  		return false; @@ -2801,7 +2674,7 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo  function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = false, $s_display = true)  {  	global $db, $user, $template, $auth, $phpEx, $phpbb_root_path, $config; -	global $request, $phpbb_container, $phpbb_dispatcher; +	global $request, $phpbb_container, $phpbb_dispatcher, $phpbb_log;  	$err = ''; @@ -2818,7 +2691,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa  		// anonymous/inactive users are never able to go to the ACP even if they have the relevant permissions  		if ($user->data['is_registered'])  		{ -			add_log('admin', 'LOG_ADMIN_AUTH_FAIL'); +			$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ADMIN_AUTH_FAIL');  		}  		trigger_error('NO_AUTH_ADMIN');  	} @@ -2828,13 +2701,13 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa  		// Get credential  		if ($admin)  		{ -			$credential = request_var('credential', ''); +			$credential = $request->variable('credential', '');  			if (strspn($credential, 'abcdef0123456789') !== strlen($credential) || strlen($credential) != 32)  			{  				if ($user->data['is_registered'])  				{ -					add_log('admin', 'LOG_ADMIN_AUTH_FAIL'); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ADMIN_AUTH_FAIL');  				}  				trigger_error('NO_AUTH_ADMIN');  			} @@ -2846,7 +2719,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa  			$password	= $request->untrimmed_variable('password', '', true);  		} -		$username	= request_var('username', '', true); +		$username	= $request->variable('username', '', true);  		$autologin	= $request->is_set_post('autologin');  		$viewonline = (int) !$request->is_set_post('viewonline');  		$admin 		= ($admin) ? 1 : 0; @@ -2856,7 +2729,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa  		if ($admin && utf8_clean_string($username) != utf8_clean_string($user->data['username']))  		{  			// We log the attempt to use a different username... -			add_log('admin', 'LOG_ADMIN_AUTH_FAIL'); +			$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ADMIN_AUTH_FAIL');  			trigger_error('NO_AUTH_ADMIN_USER_DIFFER');  		} @@ -2869,7 +2742,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa  		{  			if ($result['status'] == LOGIN_SUCCESS)  			{ -				add_log('admin', 'LOG_ADMIN_AUTH_SUCCESS'); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ADMIN_AUTH_SUCCESS');  			}  			else  			{ @@ -2877,7 +2750,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa  				// anonymous/inactive users are never able to go to the ACP even if they have the relevant permissions  				if ($user->data['is_registered'])  				{ -					add_log('admin', 'LOG_ADMIN_AUTH_FAIL'); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ADMIN_AUTH_FAIL');  				}  			}  		} @@ -2885,7 +2758,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa  		// The result parameter is always an array, holding the relevant information...  		if ($result['status'] == LOGIN_SUCCESS)  		{ -			$redirect = request_var('redirect', "{$phpbb_root_path}index.$phpEx"); +			$redirect = $request->variable('redirect', "{$phpbb_root_path}index.$phpEx");  			/**  			* This event allows an extension to modify the redirection when a user successfully logs in @@ -2985,6 +2858,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa  		$s_hidden_fields['credential'] = $credential;  	} +	/* @var $provider_collection \phpbb\auth\provider_collection */  	$provider_collection = $phpbb_container->get('auth.provider_collection');  	$auth_provider = $provider_collection->get_provider(); @@ -3088,6 +2962,7 @@ function login_forum_box($forum_data)  		}  		$db->sql_freeresult($result); +		/* @var $passwords_manager \phpbb\passwords\manager */  		$passwords_manager = $phpbb_container->get('passwords.manager');  		if ($passwords_manager->check($password, $forum_data['forum_password'])) @@ -3244,52 +3119,6 @@ function parse_cfg_file($filename, $lines = false)  }  /** -* Add log entry -* -* @param	string	$mode				The mode defines which log_type is used and from which log the entry is retrieved -* @param	int		$forum_id			Mode 'mod' ONLY: forum id of the related item, NOT INCLUDED otherwise -* @param	int		$topic_id			Mode 'mod' ONLY: topic id of the related item, NOT INCLUDED otherwise -* @param	int		$reportee_id		Mode 'user' ONLY: user id of the reportee, NOT INCLUDED otherwise -* @param	string	$log_operation		Name of the operation -* @param	array	$additional_data	More arguments can be added, depending on the log_type -* -* @return	int|bool		Returns the log_id, if the entry was added to the database, false otherwise. -* -* @deprecated	Use $phpbb_log->add() instead -*/ -function add_log() -{ -	global $phpbb_log, $user; - -	$args = func_get_args(); -	$mode = array_shift($args); - -	// This looks kind of dirty, but add_log has some additional data before the log_operation -	$additional_data = array(); -	switch ($mode) -	{ -		case 'admin': -		case 'critical': -		break; -		case 'mod': -			$additional_data['forum_id'] = array_shift($args); -			$additional_data['topic_id'] = array_shift($args); -		break; -		case 'user': -			$additional_data['reportee_id'] = array_shift($args); -		break; -	} - -	$log_operation = array_shift($args); -	$additional_data = array_merge($additional_data, $args); - -	$user_id = (empty($user->data)) ? ANONYMOUS : $user->data['user_id']; -	$user_ip = (empty($user->ip)) ? '' : $user->ip; - -	return $phpbb_log->add($mode, $user_id, $user_ip, $log_operation, time(), $additional_data); -} - -/**  * Return a nicely formatted backtrace.  *  * Turns the array returned by debug_backtrace() into HTML markup. @@ -3690,38 +3519,12 @@ function phpbb_checkdnsrr($host, $type = 'MX')  		return (@gethostbyname($host_fqdn) == $host_fqdn) ? false : true;  	} -	// checkdnsrr() is available on Windows since PHP 5.3, -	// but until 5.3.3 it only works for MX records -	// See: http://bugs.php.net/bug.php?id=51844 - -	// Call checkdnsrr() if -	// we're looking for an MX record or -	// we're not on Windows or -	// we're running a PHP version where #51844 has been fixed - -	// checkdnsrr() supports AAAA since 5.0.0 -	// checkdnsrr() supports TXT since 5.2.4 -	if ( -		($type == 'MX' || DIRECTORY_SEPARATOR != '\\' || version_compare(PHP_VERSION, '5.3.3', '>=')) && -		($type != 'AAAA' || version_compare(PHP_VERSION, '5.0.0', '>=')) && -		($type != 'TXT' || version_compare(PHP_VERSION, '5.2.4', '>=')) && -		function_exists('checkdnsrr') -	) +	if (function_exists('checkdnsrr'))  	{  		return checkdnsrr($host_fqdn, $type);  	} -	// dns_get_record() is available since PHP 5; since PHP 5.3 also on Windows, -	// but on Windows it does not work reliable for AAAA records before PHP 5.3.1 - -	// Call dns_get_record() if -	// we're not looking for an AAAA record or -	// we're not on Windows or -	// we're running a PHP version where AAAA lookups work reliable -	if ( -		($type != 'AAAA' || DIRECTORY_SEPARATOR != '\\' || version_compare(PHP_VERSION, '5.3.1', '>=')) && -		function_exists('dns_get_record') -	) +	if (function_exists('dns_get_record'))  	{  		// dns_get_record() expects an integer as second parameter  		// We have to convert the string $type to the corresponding integer constant. @@ -3854,7 +3657,7 @@ function phpbb_checkdnsrr($host, $type = 'MX')  function msg_handler($errno, $msg_text, $errfile, $errline)  {  	global $cache, $db, $auth, $template, $config, $user, $request; -	global $phpEx, $phpbb_root_path, $msg_title, $msg_long_text; +	global $phpEx, $phpbb_root_path, $msg_title, $msg_long_text, $phpbb_log;  	// Do not display notices if we suppress them via @  	if (error_reporting() == 0 && $errno != E_USER_ERROR && $errno != E_USER_WARNING && $errno != E_USER_NOTICE) @@ -3868,11 +3671,6 @@ function msg_handler($errno, $msg_text, $errfile, $errline)  		$msg_text = $msg_long_text;  	} -	if (!defined('E_DEPRECATED')) -	{ -		define('E_DEPRECATED', 8192); -	} -  	switch ($errno)  	{  		case E_NOTICE: @@ -3895,7 +3693,7 @@ function msg_handler($errno, $msg_text, $errfile, $errline)  				// we are writing an image - the user won't see the debug, so let's place it in the log  				if (defined('IMAGE_OUTPUT') || defined('IN_CRON'))  				{ -					add_log('critical', 'LOG_IMAGE_GENERATION_ERROR', $errfile, $errline, $msg_text); +					$phpbb_log->add('critical', $user->data['user_id'], $user->ip, 'LOG_IMAGE_GENERATION_ERROR', false, array($errfile, $errline, $msg_text));  				}  				// echo '<br /><br />BACKTRACE<br />' . get_backtrace() . '<br />' . "\n";  			} @@ -3957,7 +3755,7 @@ function msg_handler($errno, $msg_text, $errfile, $errline)  			{  				// let's avoid loops  				$db->sql_return_on_error(true); -				add_log('critical', 'LOG_GENERAL_ERROR', $msg_title, $log_text); +				$phpbb_log->add('critical', $user->data['user_id'], $user->ip, 'LOG_GENERAL_ERROR', false, array($msg_title, $log_text));  				$db->sql_return_on_error(false);  			} @@ -4823,6 +4621,7 @@ function phpbb_get_avatar($row, $alt, $ignore_config = false)  		'height' => $row['avatar_height'],  	); +	/* @var $phpbb_avatar_manager \phpbb\avatar\manager */  	$phpbb_avatar_manager = $phpbb_container->get('avatar.manager');  	$driver = $phpbb_avatar_manager->get_driver($row['avatar_type'], $ignore_config);  	$html = ''; @@ -4951,8 +4750,8 @@ function page_header($page_title = '', $display_online_list = false, $item_id =  		if ($total_online_users > $config['record_online_users'])  		{ -			set_config('record_online_users', $total_online_users, true); -			set_config('record_online_date', time(), true); +			$config->set('record_online_users', $total_online_users, false); +			$config->set('record_online_date', time(), false);  		}  		$l_online_record = $user->lang('RECORD_ONLINE_USERS', (int) $config['record_online_users'], $user->format_date($config['record_online_date'], false, true)); @@ -4987,8 +4786,8 @@ function page_header($page_title = '', $display_online_list = false, $item_id =  		}  	} -	$forum_id = request_var('f', 0); -	$topic_id = request_var('t', 0); +	$forum_id = $request->variable('f', 0); +	$topic_id = $request->variable('t', 0);  	$s_feed_news = false; @@ -5008,6 +4807,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id =  	// This path is sent with the base template paths in the assign_vars()  	// call below. We need to correct it in case we are accessing from a  	// controller because the web paths will be incorrect otherwise. +	/* @var $phpbb_path_helper \phpbb\path_helper */  	$phpbb_path_helper = $phpbb_container->get('path_helper');  	$corrected_path = $phpbb_path_helper->get_web_root_path();  	$web_path = (defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? $board_url : $corrected_path; @@ -5046,6 +4846,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id =  	$notifications = false;  	if ($config['load_notifications'] && $user->data['user_id'] != ANONYMOUS && $user->data['user_type'] != USER_IGNORE)  	{ +		/* @var $phpbb_notifications \phpbb\notification\manager */  		$phpbb_notifications = $phpbb_container->get('notification_manager');  		$notifications = $phpbb_notifications->load_notifications(array( @@ -5059,6 +4860,8 @@ function page_header($page_title = '', $display_online_list = false, $item_id =  		}  	} +	/** @var \phpbb\controller\helper $controller_helper */ +	$controller_helper = $phpbb_container->get('controller.helper');  	$notification_mark_hash = generate_link_hash('mark_all_notifications_read');  	// The following assigns all _common_ variables that may be used at any point in a template. @@ -5112,7 +4915,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id =  		'U_PROFILE'				=> append_sid("{$phpbb_root_path}ucp.$phpEx"),  		'U_USER_PROFILE'		=> get_username_string('profile', $user->data['user_id'], $user->data['username'], $user->data['user_colour']),  		'U_MODCP'				=> append_sid("{$phpbb_root_path}mcp.$phpEx", false, true, $user->session_id), -		'U_FAQ'					=> append_sid("{$phpbb_root_path}faq.$phpEx"), +		'U_FAQ'					=> $controller_helper->route('phpbb_help_controller', array('mode' => 'faq')),  		'U_SEARCH_SELF'			=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=egosearch'),  		'U_SEARCH_NEW'			=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=newposts'),  		'U_SEARCH_UNANSWERED'	=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=unanswered'), @@ -5376,6 +5179,8 @@ function page_footer($run_cron = true, $display_template = true, $exit_handler =  	if ($call_cron)  	{  		global $phpbb_container; + +		/* @var $cron \phpbb\cron\manager */  		$cron = $phpbb_container->get('cron.manager');  		$task = $cron->find_one_ready_task(); diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index 79f9db2f3f..fce4bf841b 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -316,7 +316,7 @@ function get_forum_branch($forum_id, $type = 'all', $order = 'descending', $incl  */  function copy_forum_permissions($src_forum_id, $dest_forum_ids, $clear_dest_perms = true, $add_log = true)  { -	global $db; +	global $db, $user, $phpbb_log;  	// Only one forum id specified  	if (!is_array($dest_forum_ids)) @@ -439,7 +439,7 @@ function copy_forum_permissions($src_forum_id, $dest_forum_ids, $clear_dest_perm  	if ($add_log)  	{ -		add_log('admin', 'LOG_FORUM_COPIED_PERMISSIONS', $src_forum_name, implode(', ', $dest_forum_names)); +		$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_FORUM_COPIED_PERMISSIONS', false, array($src_forum_name, implode(', ', $dest_forum_names)));  	}  	$db->sql_transaction('commit'); @@ -738,9 +738,10 @@ function delete_topics($where_type, $where_ids, $auto_sync = true, $post_count_s  	if ($approved_topics)  	{ -		set_config_count('num_topics', $approved_topics * (-1), true); +		$config->increment('num_topics', $approved_topics * (-1), false);  	} +	/* @var $phpbb_notifications \phpbb\notification\manager */  	$phpbb_notifications = $phpbb_container->get('notification_manager');  	$phpbb_notifications->delete_notifications(array( @@ -996,7 +997,7 @@ function delete_posts($where_type, $where_ids, $auto_sync = true, $posted_sync =  	if ($approved_posts && $post_count_sync)  	{ -		set_config_count('num_posts', $approved_posts * (-1), true); +		$config->increment('num_posts', $approved_posts * (-1), false);  	}  	// We actually remove topics now to not be inconsistent (the delete_topics function calls this function too) @@ -1005,6 +1006,7 @@ function delete_posts($where_type, $where_ids, $auto_sync = true, $posted_sync =  		delete_topics('topic_id', $remove_topics, $auto_sync, $post_count_sync, false);  	} +	/* @var $phpbb_notifications \phpbb\notification\manager */  	$phpbb_notifications = $phpbb_container->get('notification_manager');  	$phpbb_notifications->delete_notifications($delete_notifications_types, $post_ids); @@ -1128,8 +1130,8 @@ function delete_attachments($mode, $ids, $resync = true)  	if ($space_removed || $files_removed)  	{ -		set_config_count('upload_dir_size', $space_removed * (-1), true); -		set_config_count('num_files', $files_removed * (-1), true); +		$config->increment('upload_dir_size', $space_removed * (-1), false); +		$config->increment('num_files', $files_removed * (-1), false);  	}  	// If we do not resync, we do not need to adjust any message, post, topic or user entries @@ -2433,7 +2435,7 @@ function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync  */  function auto_prune($forum_id, $prune_mode, $prune_flags, $prune_days, $prune_freq)  { -	global $db; +	global $db, $user, $phpbb_log;  	$sql = 'SELECT forum_name  		FROM ' . FORUMS_TABLE . " @@ -2454,7 +2456,7 @@ function auto_prune($forum_id, $prune_mode, $prune_flags, $prune_days, $prune_fr  			WHERE forum_id = $forum_id";  		$db->sql_query($sql); -		add_log('admin', 'LOG_AUTO_PRUNE', $row['forum_name']); +		$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_AUTO_PRUNE', false, array($row['forum_name']));  	}  	return; @@ -3021,25 +3023,6 @@ function get_database_size()  	return $database_size;  } -/** -* Retrieve contents from remotely stored file -* -* @deprecated	3.1.2	Use file_downloader instead -*/ -function get_remote_file($host, $directory, $filename, &$errstr, &$errno, $port = 80, $timeout = 6) -{ -	global $phpbb_container; - -	// Get file downloader and assign $errstr and $errno -	$file_downloader = $phpbb_container->get('file_downloader'); - -	$file_data = $file_downloader->get($host, $directory, $filename, $port, $timeout); -	$errstr = $file_downloader->get_error_string(); -	$errno = $file_downloader->get_error_number(); - -	return $file_data; -} -  /*  * Tidy Warnings  * Remove all warnings which have now expired from the database @@ -3083,7 +3066,7 @@ function tidy_warnings()  		$db->sql_transaction('commit');  	} -	set_config('warnings_last_gc', time(), true); +	$config->set('warnings_last_gc', time(), false);  }  /** @@ -3091,7 +3074,7 @@ function tidy_warnings()  */  function tidy_database()  { -	global $db; +	global $config, $db;  	// Here we check permission consistency @@ -3116,7 +3099,7 @@ function tidy_database()  		WHERE ' . $db->sql_in_set('forum_id', $forum_ids, true);  	$db->sql_query($sql); -	set_config('database_last_gc', time(), true); +	$config->set('database_last_gc', time(), false);  }  /** diff --git a/phpBB/includes/functions_compatibility.php b/phpBB/includes/functions_compatibility.php index 43952ae57a..4707238951 100644 --- a/phpBB/includes/functions_compatibility.php +++ b/phpBB/includes/functions_compatibility.php @@ -59,6 +59,7 @@ function phpbb_hash($password)  {  	global $phpbb_container; +	/* @var $passwords_manager \phpbb\passwords\manager */  	$passwords_manager = $phpbb_container->get('passwords.manager');  	return $passwords_manager->hash($password);  } @@ -77,6 +78,7 @@ function phpbb_check_hash($password, $hash)  {  	global $phpbb_container; +	/* @var $passwords_manager \phpbb\passwords\manager */  	$passwords_manager = $phpbb_container->get('passwords.manager');  	return $passwords_manager->check($password, $hash);  } @@ -89,7 +91,7 @@ function phpbb_check_hash($password, $hash)  * @param string $path Path to clean  * @return string Cleaned path  * -* @deprecated +* @deprecated 3.1.0 (To be removed: 3.3.0)  */  function phpbb_clean_path($path)  { @@ -97,6 +99,7 @@ function phpbb_clean_path($path)  	if (!$phpbb_path_helper && $phpbb_container)  	{ +		/* @var $phpbb_path_helper \phpbb\path_helper */  		$phpbb_path_helper = $phpbb_container->get('path_helper');  	}  	else if (!$phpbb_path_helper) @@ -132,7 +135,7 @@ function phpbb_clean_path($path)  *  * @return		string		Returns the options for timezone selector only  * -* @deprecated +* @deprecated 3.1.0 (To be removed: 3.3.0)  */  function tz_select($default = '', $truncate = false)  { @@ -146,7 +149,7 @@ function tz_select($default = '', $truncate = false)  * via admin_permissions. Changes of usernames and group names  * must be carried through for the moderators table.  * -* @deprecated 3.1 +* @deprecated 3.1.0 (To be removed: 3.3.0)  * @return null  */  function cache_moderators() @@ -158,7 +161,7 @@ function cache_moderators()  /**  * Removes moderators and administrators from foe lists.  * -* @deprecated 3.1 +* @deprecated 3.1.0 (To be removed: 3.3.0)  * @param array|bool $group_id If an array, remove all members of this group from foe lists, or false to ignore  * @param array|bool $user_id If an array, remove this user from foe lists, or false to ignore  * @return null @@ -195,3 +198,202 @@ function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank  	$rank_img = $rank_data['img'];  	$rank_img_src = $rank_data['img_src'];  } + +/** + * Retrieve contents from remotely stored file + * + * @deprecated	3.1.2	Use file_downloader instead + */ +function get_remote_file($host, $directory, $filename, &$errstr, &$errno, $port = 80, $timeout = 6) +{ +	global $phpbb_container; + +	// Get file downloader and assign $errstr and $errno +	/* @var $file_downloader \phpbb\file_downloader */ +	$file_downloader = $phpbb_container->get('file_downloader'); + +	$file_data = $file_downloader->get($host, $directory, $filename, $port, $timeout); +	$errstr = $file_downloader->get_error_string(); +	$errno = $file_downloader->get_error_number(); + +	return $file_data; +} + +/** + * Add log entry + * + * @param	string	$mode				The mode defines which log_type is used and from which log the entry is retrieved + * @param	int		$forum_id			Mode 'mod' ONLY: forum id of the related item, NOT INCLUDED otherwise + * @param	int		$topic_id			Mode 'mod' ONLY: topic id of the related item, NOT INCLUDED otherwise + * @param	int		$reportee_id		Mode 'user' ONLY: user id of the reportee, NOT INCLUDED otherwise + * @param	string	$log_operation		Name of the operation + * @param	array	$additional_data	More arguments can be added, depending on the log_type + * + * @return	int|bool		Returns the log_id, if the entry was added to the database, false otherwise. + * + * @deprecated	3.1.0 (To be removed: 3.3.0) + */ +function add_log() +{ +	global $phpbb_log, $user; + +	$args = func_get_args(); +	$mode = array_shift($args); + +	// This looks kind of dirty, but add_log has some additional data before the log_operation +	$additional_data = array(); +	switch ($mode) +	{ +		case 'admin': +		case 'critical': +			break; +		case 'mod': +			$additional_data['forum_id'] = array_shift($args); +			$additional_data['topic_id'] = array_shift($args); +			break; +		case 'user': +			$additional_data['reportee_id'] = array_shift($args); +			break; +	} + +	$log_operation = array_shift($args); +	$additional_data = array_merge($additional_data, $args); + +	$user_id = (empty($user->data)) ? ANONYMOUS : $user->data['user_id']; +	$user_ip = (empty($user->ip)) ? '' : $user->ip; + +	return $phpbb_log->add($mode, $user_id, $user_ip, $log_operation, time(), $additional_data); +} + +/** + * Sets a configuration option's value. + * + * Please note that this function does not update the is_dynamic value for + * an already existing config option. + * + * @param string $config_name   The configuration option's name + * @param string $config_value  New configuration value + * @param bool   $is_dynamic    Whether this variable should be cached (false) or + *                              if it changes too frequently (true) to be + *                              efficiently cached. + * + * @return null + * + * @deprecated 3.1.0 (To be removed: 3.3.0) + */ +function set_config($config_name, $config_value, $is_dynamic = false, \phpbb\config\config $set_config = null) +{ +	static $config = null; + +	if ($set_config !== null) +	{ +		$config = $set_config; + +		if (empty($config_name)) +		{ +			return; +		} +	} + +	$config->set($config_name, $config_value, !$is_dynamic); +} + +/** + * Increments an integer config value directly in the database. + * + * @param string $config_name   The configuration option's name + * @param int    $increment     Amount to increment by + * @param bool   $is_dynamic    Whether this variable should be cached (false) or + *                              if it changes too frequently (true) to be + *                              efficiently cached. + * + * @return null + * + * @deprecated 3.1.0 (To be removed: 3.3.0) + */ +function set_config_count($config_name, $increment, $is_dynamic = false, \phpbb\config\config $set_config = null) +{ +	static $config = null; +	if ($set_config !== null) +	{ +		$config = $set_config; +		if (empty($config_name)) +		{ +			return; +		} +	} +	$config->increment($config_name, $increment, !$is_dynamic); +} + +/** + * Wrapper function of \phpbb\request\request::variable which exists for backwards compatability. + * See {@link \phpbb\request\request_interface::variable \phpbb\request\request_interface::variable} for + * documentation of this function's use. + * + * @deprecated 3.1.0 (To be removed: 3.3.0) + * @param	mixed			$var_name	The form variable's name from which data shall be retrieved. + * 										If the value is an array this may be an array of indizes which will give + * 										direct access to a value at any depth. E.g. if the value of "var" is array(1 => "a") + * 										then specifying array("var", 1) as the name will return "a". + * 										If you pass an instance of {@link \phpbb\request\request_interface phpbb_request_interface} + * 										as this parameter it will overwrite the current request class instance. If you do + * 										not do so, it will create its own instance (but leave superglobals enabled). + * @param	mixed			$default	A default value that is returned if the variable was not set. + * 										This function will always return a value of the same type as the default. + * @param	bool			$multibyte	If $default is a string this paramater has to be true if the variable may contain any UTF-8 characters + *										Default is false, causing all bytes outside the ASCII range (0-127) to be replaced with question marks + * @param	bool			$cookie		This param is mapped to \phpbb\request\request_interface::COOKIE as the last param for + * 										\phpbb\request\request_interface::variable for backwards compatability reasons. + * @param	\phpbb\request\request_interface|null|false	If an instance of \phpbb\request\request_interface is given the instance is stored in + *										a static variable and used for all further calls where this parameters is null. Until + *										the function is called with an instance it automatically creates a new \phpbb\request\request + *										instance on every call. By passing false this per-call instantiation can be restored + *										after having passed in a \phpbb\request\request_interface instance. + * + * @return	mixed	The value of $_REQUEST[$var_name] run through {@link set_var set_var} to ensure that the type is the + * 					the same as that of $default. If the variable is not set $default is returned. + */ +function request_var($var_name, $default, $multibyte = false, $cookie = false, $request = null) +{ +	// This is all just an ugly hack to add "Dependency Injection" to a function +	// the only real code is the function call which maps this function to a method. +	static $static_request = null; +	if ($request instanceof \phpbb\request\request_interface) +	{ +		$static_request = $request; +		if (empty($var_name)) +		{ +			return; +		} +	} +	else if ($request === false) +	{ +		$static_request = null; +		if (empty($var_name)) +		{ +			return; +		} +	} +	$tmp_request = $static_request; +	// no request class set, create a temporary one ourselves to keep backwards compatibility +	if ($tmp_request === null) +	{ +		// false param: enable super globals, so the created request class does not +		// make super globals inaccessible everywhere outside this function. +		$tmp_request = new \phpbb\request\request(new \phpbb\request\type_cast_helper(), false); +	} +	return $tmp_request->variable($var_name, $default, $multibyte, ($cookie) ? \phpbb\request\request_interface::COOKIE : \phpbb\request\request_interface::REQUEST); +} + +/** + * Get tables of a database + * + * @deprecated 3.1.0 (To be removed: 3.3.0) + */ +function get_tables(&$db) +{ +	$db_tools_factory = new \phpbb\db\tools\factory(); +	$db_tools = $db_tools_factory->get($db); + +	return $db_tools->sql_list_tables(); +} diff --git a/phpBB/includes/functions_content.php b/phpBB/includes/functions_content.php index 6f861b8607..bdbc8a92fa 100644 --- a/phpBB/includes/functions_content.php +++ b/phpBB/includes/functions_content.php @@ -507,7 +507,7 @@ function generate_text_for_display($text, $uid, $bitfield, $flags, $censor_text  /**  * For parsing custom parsed text to be stored within the database.  * This function additionally returns the uid and bitfield that needs to be stored. -* Expects $text to be the value directly from request_var() and in it's non-parsed form +* Expects $text to be the value directly from $request->variable() and in it's non-parsed form  *  * @param string $text The text to be replaced with the parsed one  * @param string $uid The BBCode uid for this parse diff --git a/phpBB/includes/functions_convert.php b/phpBB/includes/functions_convert.php index 61ab4721c4..ea7816077d 100644 --- a/phpBB/includes/functions_convert.php +++ b/phpBB/includes/functions_convert.php @@ -1312,7 +1312,7 @@ function restore_config($schema)  				$config_value = truncate_string(utf8_htmlspecialchars($config_value), 255, 255, false);  			} -			set_config($config_name, $config_value); +			$config->set($config_name, $config_value);  		}  	}  } @@ -1968,9 +1968,9 @@ function update_dynamic_config()  	if ($row)  	{ -		set_config('newest_user_id', $row['user_id'], true); -		set_config('newest_username', $row['username'], true); -		set_config('newest_user_colour', $row['user_colour'], true); +		$config->set('newest_user_id', $row['user_id'], false); +		$config->set('newest_username', $row['username'], false); +		$config->set('newest_user_colour', $row['user_colour'], false);  	}  //	Also do not reset record online user/date. There will be old data or the fresh data from the schema. @@ -1984,7 +1984,7 @@ function update_dynamic_config()  	$row = $db->sql_fetchrow($result);  	$db->sql_freeresult($result); -	set_config('num_posts', (int) $row['stat'], true); +	$config->set('num_posts', (int) $row['stat'], false);  	$sql = 'SELECT COUNT(topic_id) AS stat  		FROM ' . TOPICS_TABLE . ' @@ -1993,7 +1993,7 @@ function update_dynamic_config()  	$row = $db->sql_fetchrow($result);  	$db->sql_freeresult($result); -	set_config('num_topics', (int) $row['stat'], true); +	$config->set('num_topics', (int) $row['stat'], false);  	$sql = 'SELECT COUNT(user_id) AS stat  		FROM ' . USERS_TABLE . ' @@ -2002,20 +2002,20 @@ function update_dynamic_config()  	$row = $db->sql_fetchrow($result);  	$db->sql_freeresult($result); -	set_config('num_users', (int) $row['stat'], true); +	$config->set('num_users', (int) $row['stat'], false);  	$sql = 'SELECT COUNT(attach_id) as stat  		FROM ' . ATTACHMENTS_TABLE . '  		WHERE is_orphan = 0';  	$result = $db->sql_query($sql); -	set_config('num_files', (int) $db->sql_fetchfield('stat'), true); +	$config->set('num_files', (int) $db->sql_fetchfield('stat'), false);  	$db->sql_freeresult($result);  	$sql = 'SELECT SUM(filesize) as stat  		FROM ' . ATTACHMENTS_TABLE . '  		WHERE is_orphan = 0';  	$result = $db->sql_query($sql); -	set_config('upload_dir_size', (float) $db->sql_fetchfield('stat'), true); +	$config->set('upload_dir_size', (float) $db->sql_fetchfield('stat'), false);  	$db->sql_freeresult($result);  	/** diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php index b62b514293..a6c9c529d6 100644 --- a/phpBB/includes/functions_display.php +++ b/phpBB/includes/functions_display.php @@ -33,7 +33,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod  	$sql_from = '';  	// Mark forums read? -	$mark_read = request_var('mark', ''); +	$mark_read = $request->variable('mark', '');  	if ($mark_read == 'all')  	{ @@ -61,9 +61,9 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod  		$redirect = build_url(array('mark', 'hash', 'mark_time'));  		meta_refresh(3, $redirect); -		if (check_link_hash(request_var('hash', ''), 'global')) +		if (check_link_hash($request->variable('hash', ''), 'global'))  		{ -			markread('all', false, false, request_var('mark_time', 0)); +			markread('all', false, false, $request->variable('mark_time', 0));  			if ($request->is_ajax())  			{ @@ -153,6 +153,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod  	$forum_tracking_info = array();  	$branch_root_id = $root_data['forum_id']; +	/* @var $phpbb_content_visibility \phpbb\content_visibility */  	$phpbb_content_visibility = $phpbb_container->get('content.visibility');  	while ($row = $db->sql_fetchrow($result)) @@ -333,10 +334,10 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod  	if ($mark_read == 'forums')  	{  		$redirect = build_url(array('mark', 'hash', 'mark_time')); -		$token = request_var('hash', ''); +		$token = $request->variable('hash', '');  		if (check_link_hash($token, 'global'))  		{ -			markread('topics', $forum_ids, false, request_var('mark_time', 0)); +			markread('topics', $forum_ids, false, $request->variable('mark_time', 0));  			$message = sprintf($user->lang['RETURN_FORUM'], '<a href="' . $redirect . '">', '</a>');  			meta_refresh(3, $redirect); @@ -1156,6 +1157,7 @@ function display_user_activity(&$userdata)  	$active_f_row = $active_t_row = array();  	if (!empty($forum_ary))  	{ +		/* @var $phpbb_content_visibility \phpbb\content_visibility */  		$phpbb_content_visibility = $phpbb_container->get('content.visibility');  		// Obtain active forum @@ -1287,8 +1289,8 @@ function watch_topic_forum($mode, &$s_watching, $user_id, $forum_id, $topic_id,  		{  			if (isset($_GET['unwatch']))  			{ -				$uid = request_var('uid', 0); -				$token = request_var('hash', ''); +				$uid = $request->variable('uid', 0); +				$token = $request->variable('hash', '');  				if ($token && check_link_hash($token, "{$mode}_$match_id") || confirm_box(true))  				{ @@ -1361,8 +1363,8 @@ function watch_topic_forum($mode, &$s_watching, $user_id, $forum_id, $topic_id,  		{  			if (isset($_GET['watch']))  			{ -				$uid = request_var('uid', 0); -				$token = request_var('hash', ''); +				$uid = $request->variable('uid', 0); +				$token = $request->variable('hash', '');  				if ($token && check_link_hash($token, "{$mode}_$match_id") || confirm_box(true))  				{ diff --git a/phpBB/includes/functions_download.php b/phpBB/includes/functions_download.php index 254e65ae3d..6aabfdf641 100644 --- a/phpBB/includes/functions_download.php +++ b/phpBB/includes/functions_download.php @@ -123,7 +123,7 @@ function wrap_img_in_html($src, $title)  */  function send_file_to_browser($attachment, $upload_dir, $category)  { -	global $user, $db, $config, $phpbb_root_path; +	global $user, $db, $config, $phpbb_root_path, $request;  	$filename = $phpbb_root_path . $upload_dir . '/' . $attachment['physical_filename']; @@ -185,7 +185,7 @@ function send_file_to_browser($attachment, $upload_dir, $category)  		header('X-Content-Type-Options: nosniff');  	} -	if ($category == ATTACHMENT_CATEGORY_FLASH && request_var('view', 0) === 1) +	if ($category == ATTACHMENT_CATEGORY_FLASH && $request->variable('view', 0) === 1)  	{  		// We use content-disposition: inline for flash files and view=1 to let it correctly play with flash player 10 - any other disposition will fail to play inline  		header('Content-Disposition: inline'); diff --git a/phpBB/includes/functions_install.php b/phpBB/includes/functions_install.php index 28cc603bdb..8dacd25230 100644 --- a/phpBB/includes/functions_install.php +++ b/phpBB/includes/functions_install.php @@ -182,18 +182,6 @@ function dbms_select($default = '', $only_20x_options = false)  }  /** -* Get tables of a database -* -* @deprecated -*/ -function get_tables(&$db) -{ -	$db_tools = new \phpbb\db\tools($db); - -	return $db_tools->sql_list_tables(); -} - -/**  * Used to test whether we are able to connect to the database the user has specified  * and identify any problems (eg there are already tables with the names we want to use  * @param	array	$dbms should be of the format of an element of the array returned by {@link get_available_dbms get_available_dbms()} @@ -276,7 +264,9 @@ function connect_check_db($error_connect, &$error, $dbms_details, $table_prefix,  			$temp_prefix = strtolower($table_prefix);  			$table_ary = array($temp_prefix . 'attachments', $temp_prefix . 'config', $temp_prefix . 'sessions', $temp_prefix . 'topics', $temp_prefix . 'users'); -			$tables = get_tables($db); +			$db_tools_factory = new \phpbb\db\tools\factory(); +			$db_tools = $db_tools_factory->get($db); +			$tables = $db_tools->sql_list_tables();  			$tables = array_map('strtolower', $tables);  			$table_intersect = array_intersect($tables, $table_ary); @@ -451,13 +441,17 @@ function phpbb_create_config_file_data($data, $dbms, $debug = false, $debug_cont  	$config_data .= "\n@define('PHPBB_INSTALLED', true);\n";  	$config_data .= "// @define('PHPBB_DISPLAY_LOAD_TIME', true);\n"; -	if ($debug) +	if ($debug_test) +	{ +		$config_data .= "@define('PHPBB_ENVIRONMENT', 'test');\n"; +	} +	else if ($debug)  	{ -		$config_data .= "@define('DEBUG', true);\n"; +		$config_data .= "@define('PHPBB_ENVIRONMENT', 'development');\n";  	}  	else  	{ -		$config_data .= "// @define('DEBUG', true);\n"; +		$config_data .= "@define('PHPBB_ENVIRONMENT', 'production');\n";  	}  	if ($debug_container) @@ -472,6 +466,7 @@ function phpbb_create_config_file_data($data, $dbms, $debug = false, $debug_cont  	if ($debug_test)  	{  		$config_data .= "@define('DEBUG_TEST', true);\n"; +		$config_data .= "@define('DEBUG', true);\n"; // Mandatory for the functional tests, will be removed by PHPBB3-12623  	}  	return $config_data; diff --git a/phpBB/includes/functions_jabber.php b/phpBB/includes/functions_jabber.php index bd2e9e93ac..a38888a861 100644 --- a/phpBB/includes/functions_jabber.php +++ b/phpBB/includes/functions_jabber.php @@ -87,8 +87,7 @@ class jabber  	*/  	static public function can_use_ssl()  	{ -		// Will not work with PHP >= 5.2.1 or < 5.2.3RC2 until timeout problem with ssl hasn't been fixed (http://bugs.php.net/41236) -		return ((version_compare(PHP_VERSION, '5.2.1', '<') || version_compare(PHP_VERSION, '5.2.3RC2', '>=')) && @extension_loaded('openssl')) ? true : false; +		return @extension_loaded('openssl');  	}  	/** diff --git a/phpBB/includes/functions_mcp.php b/phpBB/includes/functions_mcp.php index ed96dcf338..46e85c5674 100644 --- a/phpBB/includes/functions_mcp.php +++ b/phpBB/includes/functions_mcp.php @@ -301,6 +301,7 @@ function phpbb_get_forum_data($forum_id, $acl_list = 'f_list', $read_tracking =  		WHERE " . $db->sql_in_set('f.forum_id', $forum_id);  	$result = $db->sql_query($sql); +	/* @var $phpbb_content_visibility \phpbb\content_visibility */  	$phpbb_content_visibility = $phpbb_container->get('content.visibility');  	while ($row = $db->sql_fetchrow($result)) @@ -368,9 +369,9 @@ function phpbb_get_pm_data($pm_ids)  */  function phpbb_mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, &$sort_order_sql, &$total, $forum_id = 0, $topic_id = 0, $where_sql = 'WHERE')  { -	global $db, $user, $auth, $template, $phpbb_dispatcher; +	global $db, $user, $auth, $template, $request, $phpbb_dispatcher; -	$sort_days = request_var('st', 0); +	$sort_days = $request->variable('st', 0);  	$min_time = ($sort_days) ? time() - ($sort_days * 86400) : 0;  	switch ($mode) @@ -511,8 +512,8 @@ function phpbb_mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by  			break;  	} -	$sort_key = request_var('sk', $default_key); -	$sort_dir = request_var('sd', $default_dir); +	$sort_key = $request->variable('sk', $default_key); +	$sort_dir = $request->variable('sd', $default_dir);  	$sort_dir_text = array('a' => $user->lang['ASCENDING'], 'd' => $user->lang['DESCENDING']);  	switch ($type) diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php index fbac3e6f1d..3aa3f3d03f 100644 --- a/phpBB/includes/functions_messenger.php +++ b/phpBB/includes/functions_messenger.php @@ -33,8 +33,6 @@ class messenger  	/** @var \phpbb\template\template */  	protected $template; -	var $eol = "\n"; -  	/**  	* Constructor  	*/ @@ -44,10 +42,6 @@ class messenger  		$this->use_queue = (!$config['email_package_size']) ? false : $use_queue;  		$this->subject = ''; - -		// Determine EOL character (\n for UNIX, \r\n for Windows and \r for Mac) -		$this->eol = (!defined('PHP_EOL')) ? (($eol = strtolower(substr(PHP_OS, 0, 3))) == 'win') ? "\r\n" : (($eol == 'mac') ? "\r" : "\n") : PHP_EOL; -		$this->eol = (!$this->eol) ? "\n" : $this->eol;  	}  	/** @@ -355,7 +349,7 @@ class messenger  	*/  	function error($type, $msg)  	{ -		global $user, $phpEx, $phpbb_root_path, $config, $request; +		global $user, $phpEx, $phpbb_root_path, $config, $request, $phpbb_log;  		// Session doesn't exist, create it  		if (!isset($user->session_id) || $user->session_id === '') @@ -378,7 +372,7 @@ class messenger  		}  		$message .= '<br /><em>' . htmlspecialchars($calling_page) . '</em><br /><br />' . $msg . '<br />'; -		add_log('critical', 'LOG_ERROR_' . $type, $message); +		$phpbb_log->add('critical', $user->data['user_id'], $user->ip, 'LOG_ERROR_' . $type, false, array($message));  	}  	/** @@ -497,7 +491,7 @@ class messenger  			$this->from = $board_contact;  		} -		$encode_eol = ($config['smtp_delivery']) ? "\r\n" : $this->eol; +		$encode_eol = ($config['smtp_delivery']) ? "\r\n" : PHP_EOL;  		// Build to, cc and bcc strings  		$to = $cc = $bcc = ''; @@ -529,7 +523,7 @@ class messenger  			}  			else  			{ -				$result = phpbb_mail($mail_to, $this->subject, $this->msg, $headers, $this->eol, $err_msg); +				$result = phpbb_mail($mail_to, $this->subject, $this->msg, $headers, PHP_EOL, $err_msg);  			}  			if (!$result) @@ -629,14 +623,30 @@ class messenger  	*/  	protected function setup_template()  	{ -		global $config, $phpbb_path_helper, $user, $phpbb_extension_manager; +		global $config, $phpbb_path_helper, $user, $phpbb_extension_manager, $phpbb_container;  		if ($this->template instanceof \phpbb\template\template)  		{  			return;  		} -		$this->template = new \phpbb\template\twig\twig($phpbb_path_helper, $config, $user, new \phpbb\template\context(), $phpbb_extension_manager); +		$this->template = new \phpbb\template\twig\twig( +			$phpbb_container->get('path_helper'), +			$phpbb_container->get('config'), +			$phpbb_container->get('user'), +			new \phpbb\template\context(), +			new \phpbb\template\twig\environment( +				$phpbb_container->get('config'), +				$phpbb_container->get('path_helper'), +				$phpbb_container, +				$phpbb_container->getParameter('core.root_path') . 'cache/', +				$phpbb_container->get('ext.manager'), +				new \phpbb\template\twig\loader() +			), +			$phpbb_container->getParameter('core.root_path') . 'cache/', +			$phpbb_container->get('template.twig.extensions.collection'), +			$phpbb_extension_manager +		);  	}  	/** @@ -670,10 +680,6 @@ class queue  		$this->data = array();  		$this->cache_file = "{$phpbb_root_path}cache/queue.$phpEx"; - -		// Determine EOL character (\n for UNIX, \r\n for Windows and \r for Mac) -		$this->eol = (!defined('PHP_EOL')) ? (($eol = strtolower(substr(PHP_OS, 0, 3))) == 'win') ? "\r\n" : (($eol == 'mac') ? "\r" : "\n") : PHP_EOL; -		$this->eol = (!$this->eol) ? "\n" : $this->eol;  	}  	/** @@ -711,14 +717,14 @@ class queue  		{  			if (!$have_cache_file)  			{ -				set_config('last_queue_run', time(), true); +				$config->set('last_queue_run', time(), false);  			}  			$lock->release();  			return;  		} -		set_config('last_queue_run', time(), true); +		$config->set('last_queue_run', time(), false);  		include($this->cache_file); @@ -806,7 +812,7 @@ class queue  						}  						else  						{ -							$result = phpbb_mail($to, $subject, $msg, $headers, $this->eol, $err_msg); +							$result = phpbb_mail($to, $subject, $msg, $headers, PHP_EOL, $err_msg);  						}  						if (!$result) diff --git a/phpBB/includes/functions_module.php b/phpBB/includes/functions_module.php index fe9bcdb9d1..d0d09fe9fb 100644 --- a/phpBB/includes/functions_module.php +++ b/phpBB/includes/functions_module.php @@ -480,13 +480,15 @@ class p_master  	*/  	function set_active($id = false, $mode = false)  	{ +		global $request; +  		$icat = false;  		$this->active_module = false; -		if (request_var('icat', '')) +		if ($request->variable('icat', ''))  		{  			$icat = $id; -			$id = request_var('icat', ''); +			$id = $request->variable('icat', '');  		}  		// Restore the backslashes in class names @@ -553,10 +555,10 @@ class p_master  	*/  	function load_active($mode = false, $module_url = false, $execute_module = true)  	{ -		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $user, $template; +		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $user, $template, $request;  		$module_path = $this->include_path . $this->p_class; -		$icat = request_var('icat', ''); +		$icat = $request->variable('icat', '');  		if ($this->active_module === false)  		{ diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index a06d6f4c35..9c6ddffe9f 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -24,12 +24,13 @@ if (!defined('IN_PHPBB'))  */  function generate_smilies($mode, $forum_id)  { -	global $db, $user, $config, $template, $phpbb_dispatcher; +	global $db, $user, $config, $template, $phpbb_dispatcher, $request;  	global $phpEx, $phpbb_root_path, $phpbb_container, $phpbb_path_helper; -	$base_url = append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=smilies&f=' . $forum_id); +	/* @var $pagination \phpbb\pagination */  	$pagination = $phpbb_container->get('pagination'); -	$start = request_var('start', 0); +	$base_url = append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=smilies&f=' . $forum_id); +	$start = $request->variable('start', 0);  	if ($mode == 'window')  	{ @@ -1039,6 +1040,7 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id  	global $user, $auth, $db, $template, $cache;  	global $config, $phpbb_root_path, $phpEx, $phpbb_container, $phpbb_dispatcher; +	/* @var $phpbb_content_visibility \phpbb\content_visibility */  	$phpbb_content_visibility = $phpbb_container->get('content.visibility');  	$sql_sort = ($mode == 'post_review') ? 'ASC' : 'DESC'; @@ -1295,6 +1297,7 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $  		$db->sql_freeresult($result);  	} +	/* @var $phpbb_content_visibility \phpbb\content_visibility */  	$phpbb_content_visibility = $phpbb_container->get('content.visibility');  	// (Soft) delete the post @@ -1508,7 +1511,7 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $  */  function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $update_message = true, $update_search_index = true)  { -	global $db, $auth, $user, $config, $phpEx, $template, $phpbb_root_path, $phpbb_container, $phpbb_dispatcher; +	global $db, $auth, $user, $config, $phpEx, $template, $phpbb_root_path, $phpbb_container, $phpbb_dispatcher, $phpbb_log, $request;  	/**  	* Modify the data for post submitting @@ -1681,7 +1684,13 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  			if ($user->data['user_id'] != $poster_id)  			{  				$log_subject = ($subject) ? $subject : $data['topic_title']; -				add_log('mod', $data['forum_id'], $data['topic_id'], 'LOG_POST_EDITED', $log_subject, (!empty($username)) ? $username : $user->lang['GUEST'], $data['post_edit_reason']); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_POST_EDITED', false, array( +					'forum_id' => $data['forum_id'], +					'topic_id' => $data['topic_id'], +					$log_subject, +					(!empty($username)) ? $username : $user->lang['GUEST'], +					$data['post_edit_reason'] +				));  			}  			if (!isset($sql_data[POSTS_TABLE]['sql'])) @@ -1919,9 +1928,9 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  		{  			if ($post_mode == 'post')  			{ -				set_config_count('num_topics', 1, true); +				$config->increment('num_topics', 1, false);  			} -			set_config_count('num_posts', 1, true); +			$config->increment('num_posts', 1, false);  			$sql_data[FORUMS_TABLE]['stat'][] = 'forum_last_post_id = ' . $data['post_id'];  			$sql_data[FORUMS_TABLE]['stat'][] = "forum_last_post_subject = '" . $db->sql_escape($subject) . "'"; @@ -2094,8 +2103,8 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  		if ($space_taken && $files_added)  		{ -			set_config_count('upload_dir_size', $space_taken, true); -			set_config_count('num_files', $files_added, true); +			$config->increment('upload_dir_size', $space_taken, false); +			$config->increment('num_files', $files_added, false);  		}  	} @@ -2113,6 +2122,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  		$is_starter = ($post_mode == 'edit_first_post' || $post_mode == 'edit_topic' || $data['post_visibility'] != ITEM_APPROVED);  		$is_latest = ($post_mode == 'edit_last_post' || $post_mode == 'edit_topic' || $data['post_visibility'] != ITEM_APPROVED); +		/* @var $phpbb_content_visibility \phpbb\content_visibility */  		$phpbb_content_visibility = $phpbb_container->get('content.visibility');  		$phpbb_content_visibility->set_post_visibility($post_visibility, $data['post_id'], $data['topic_id'], $data['forum_id'], $user->data['user_id'], time(), '', $is_starter, $is_latest);  	} @@ -2188,7 +2198,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  	$db->sql_transaction('commit');  	// Delete draft if post was loaded... -	$draft_id = request_var('draft_loaded', 0); +	$draft_id = $request->variable('draft_loaded', 0);  	if ($draft_id)  	{  		$sql = 'DELETE FROM ' . DRAFTS_TABLE . " @@ -2291,6 +2301,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  		'post_subject'		=> $subject,  	)); +	/* @var $phpbb_notifications \phpbb\notification\manager */  	$phpbb_notifications = $phpbb_container->get('notification_manager');  	if ($post_visibility == ITEM_APPROVED) @@ -2469,7 +2480,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  */  function phpbb_bump_topic($forum_id, $topic_id, $post_data, $bump_time = false)  { -	global $config, $db, $user, $phpEx, $phpbb_root_path; +	global $config, $db, $user, $phpEx, $phpbb_root_path, $phpbb_log;  	if ($bump_time === false)  	{ @@ -2548,7 +2559,11 @@ function phpbb_bump_topic($forum_id, $topic_id, $post_data, $bump_time = false)  		update_forum_tracking_info($forum_id, $forum_last_post_time, $f_mark_time, false);  	} -	add_log('mod', $forum_id, $topic_id, 'LOG_BUMP_TOPIC', $post_data['topic_title']); +	$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_BUMP_TOPIC', false, array( +		'forum_id' => $forum_id, +		'topic_id' => $topic_id, +		$post_data['topic_title'] +	));  	$url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id&p={$post_data['topic_last_post_id']}") . "#p{$post_data['topic_last_post_id']}"; @@ -2586,7 +2601,7 @@ function phpbb_upload_popup($forum_style = 0)  function phpbb_handle_post_delete($forum_id, $topic_id, $post_id, &$post_data, $is_soft = false, $delete_reason = '')  {  	global $user, $auth, $config, $request; -	global $phpbb_root_path, $phpEx; +	global $phpbb_root_path, $phpEx, $phpbb_log;  	$perm_check = ($is_soft) ? 'softdelete' : 'delete'; @@ -2621,14 +2636,26 @@ function phpbb_handle_post_delete($forum_id, $topic_id, $post_id, &$post_data, $  			if ($next_post_id === false)  			{ -				add_log('mod', $forum_id, $topic_id, (($is_soft) ? 'LOG_SOFTDELETE_TOPIC' : 'LOG_DELETE_TOPIC'), $post_data['topic_title'], $post_username, $delete_reason); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, (($is_soft) ? 'LOG_SOFTDELETE_TOPIC' : 'LOG_DELETE_TOPIC'), false, array( +					'forum_id' => $forum_id, +					'topic_id' => $topic_id, +					$post_data['topic_title'], +					$post_username, +					$delete_reason +				));  				$meta_info = append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id");  				$message = $user->lang['POST_DELETED'];  			}  			else  			{ -				add_log('mod', $forum_id, $topic_id, (($is_soft) ? 'LOG_SOFTDELETE_POST' : 'LOG_DELETE_POST'), $post_data['post_subject'], $post_username, $delete_reason); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, (($is_soft) ? 'LOG_SOFTDELETE_POST' : 'LOG_DELETE_POST'), false, array( +					'forum_id' => $forum_id, +					'topic_id' => $topic_id, +					$post_data['post_subject'], +					$post_username, +					$delete_reason +				));  				$meta_info = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id&p=$next_post_id") . "#p$next_post_id";  				$message = $user->lang['POST_DELETED']; diff --git a/phpBB/includes/functions_privmsgs.php b/phpBB/includes/functions_privmsgs.php index 8e1561b842..c8b5280c8c 100644 --- a/phpBB/includes/functions_privmsgs.php +++ b/phpBB/includes/functions_privmsgs.php @@ -881,6 +881,7 @@ function update_unread_status($unread, $msg_id, $user_id, $folder_id)  	global $db, $user, $phpbb_container; +	/* @var $phpbb_notifications \phpbb\notification\manager */  	$phpbb_notifications = $phpbb_container->get('notification_manager');  	$phpbb_notifications->mark_notifications_read('notification.type.pm', $msg_id, $user_id); @@ -937,10 +938,10 @@ function mark_folder_read($user_id, $folder_id)  */  function handle_mark_actions($user_id, $mark_action)  { -	global $db, $user, $phpbb_root_path, $phpEx; +	global $db, $user, $phpbb_root_path, $phpEx, $request; -	$msg_ids		= request_var('marked_msg_id', array(0)); -	$cur_folder_id	= request_var('cur_folder_id', PRIVMSGS_NO_BOX); +	$msg_ids		= $request->variable('marked_msg_id', array(0)); +	$cur_folder_id	= $request->variable('cur_folder_id', PRIVMSGS_NO_BOX);  	$confirm		= (isset($_POST['confirm'])) ? true : false;  	if (!sizeof($msg_ids)) @@ -1130,6 +1131,7 @@ function delete_pm($user_id, $msg_ids, $folder_id)  		$user->data['user_unread_privmsg'] -= $num_unread;  	} +	/* @var $phpbb_notifications \phpbb\notification\manager */  	$phpbb_notifications = $phpbb_container->get('notification_manager');  	$phpbb_notifications->delete_notifications('notification.type.pm', array_keys($delete_rows)); @@ -1243,6 +1245,7 @@ function phpbb_delete_users_pms($user_ids)  	$db->sql_transaction('begin'); +	/* @var $phpbb_notifications \phpbb\notification\manager */  	$phpbb_notifications = $phpbb_container->get('notification_manager');  	if (!empty($undelivered_msg)) @@ -1608,7 +1611,7 @@ function get_folder_status($folder_id, $folder)  */  function submit_pm($mode, $subject, &$data, $put_in_outbox = true)  { -	global $db, $auth, $config, $phpEx, $template, $user, $phpbb_root_path, $phpbb_container, $phpbb_dispatcher; +	global $db, $auth, $config, $phpEx, $template, $user, $phpbb_root_path, $phpbb_container, $phpbb_dispatcher, $request;  	// We do not handle erasing pms here  	if ($mode == 'delete') @@ -1902,13 +1905,13 @@ function submit_pm($mode, $subject, &$data, $put_in_outbox = true)  		if ($space_taken && $files_added)  		{ -			set_config_count('upload_dir_size', $space_taken, true); -			set_config_count('num_files', $files_added, true); +			$config->increment('upload_dir_size', $space_taken, false); +			$config->increment('num_files', $files_added, false);  		}  	}  	// Delete draft if post was loaded... -	$draft_id = request_var('draft_loaded', 0); +	$draft_id = $request->variable('draft_loaded', 0);  	if ($draft_id)  	{  		$sql = 'DELETE FROM ' . DRAFTS_TABLE . " @@ -1925,6 +1928,7 @@ function submit_pm($mode, $subject, &$data, $put_in_outbox = true)  		'recipients'			=> $recipients,  	)); +	/* @var $phpbb_notifications \phpbb\notification\manager */  	$phpbb_notifications = $phpbb_container->get('notification_manager');  	if ($mode == 'edit') diff --git a/phpBB/includes/functions_url_matcher.php b/phpBB/includes/functions_url_matcher.php deleted file mode 100644 index b965046aad..0000000000 --- a/phpBB/includes/functions_url_matcher.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php -/** -* -* This file is part of the phpBB Forum Software package. -* -* @copyright (c) phpBB Limited <https://www.phpbb.com> -* @license GNU General Public License, version 2 (GPL-2.0) -* -* For full copyright and license information, please see -* the docs/CREDITS.txt file. -* -*/ - -use Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper; -use Symfony\Component\Routing\Matcher\UrlMatcher; -use Symfony\Component\Routing\RequestContext; - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ -	exit; -} - -/** -* Create a new UrlMatcher class and dump it into the cache file -* -* @param \phpbb\extension\manager $manager Extension manager -* @param RequestContext $context Symfony RequestContext object -* @param string $root_path Root path -* @param string $php_ext PHP file extension -* @return null -*/ -function phpbb_get_url_matcher(\phpbb\extension\manager $manager, RequestContext $context, $root_path, $php_ext) -{ -	if (defined('DEBUG')) -	{ -		return phpbb_create_url_matcher($manager, $context, $root_path); -	} - -	if (!phpbb_url_matcher_dumped($root_path, $php_ext)) -	{ -		phpbb_create_dumped_url_matcher($manager, $root_path, $php_ext); -	} - -	return phpbb_load_url_matcher($context, $root_path, $php_ext); -} - -/** -* Create a new UrlMatcher class and dump it into the cache file -* -* @param \phpbb\extension\manager $manager Extension manager -* @param string $root_path Root path -* @param string $php_ext PHP file extension -* @return null -*/ -function phpbb_create_dumped_url_matcher(\phpbb\extension\manager $manager, $root_path, $php_ext) -{ -	$provider = new \phpbb\controller\provider(); -	$provider->find_routing_files($manager->get_finder()); -	$routes = $provider->find($root_path)->get_routes(); -	$dumper = new PhpMatcherDumper($routes); -	$cached_url_matcher_dump = $dumper->dump(array( -		'class'			=> 'phpbb_url_matcher', -	)); - -	file_put_contents($root_path . 'cache/url_matcher.' . $php_ext, $cached_url_matcher_dump); -} - -/** -* Create a non-cached UrlMatcher -* -* @param \phpbb\extension\manager $manager Extension manager -* @param RequestContext $context Symfony RequestContext object -* @return UrlMatcher -*/ -function phpbb_create_url_matcher(\phpbb\extension\manager $manager, RequestContext $context, $root_path) -{ -	$provider = new \phpbb\controller\provider(); -	$provider->find_routing_files($manager->get_finder()); -	$routes = $provider->find($root_path)->get_routes(); -	return new UrlMatcher($routes, $context); -} - -/** -* Load the cached phpbb_url_matcher class -* -* @param RequestContext $context Symfony RequestContext object -* @param string $root_path Root path -* @param string $php_ext PHP file extension -* @return phpbb_url_matcher -*/ -function phpbb_load_url_matcher(RequestContext $context, $root_path, $php_ext) -{ -	require($root_path . 'cache/url_matcher.' . $php_ext); -	return new phpbb_url_matcher($context); -} - -/** -* Determine whether we have our dumped URL matcher -* -* The class is automatically dumped to the cache directory -* -* @param string $root_path Root path -* @param string $php_ext PHP file extension -* @return bool True if it exists, false if not -*/ -function phpbb_url_matcher_dumped($root_path, $php_ext) -{ -	return file_exists($root_path . 'cache/url_matcher.' . $php_ext); -} diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 9cd662027e..c7234bb8e8 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -89,7 +89,7 @@ function user_get_id_name(&$user_id_ary, &$username_ary, $user_type = false)  */  function update_last_username()  { -	global $db; +	global $config, $db;  	// Get latest username  	$sql = 'SELECT user_id, username, user_colour @@ -102,9 +102,9 @@ function update_last_username()  	if ($row)  	{ -		set_config('newest_user_id', $row['user_id'], true); -		set_config('newest_username', $row['username'], true); -		set_config('newest_user_colour', $row['user_colour'], true); +		$config->set('newest_user_id', $row['user_id'], false); +		$config->set('newest_username', $row['username'], false); +		$config->set('newest_user_colour', $row['user_colour'], false);  	}  } @@ -138,7 +138,7 @@ function user_update_name($old_name, $new_name)  	if ($config['newest_username'] == $old_name)  	{ -		set_config('newest_username', $new_name, true); +		$config->set('newest_username', $new_name, false);  	}  	/** @@ -281,6 +281,7 @@ function user_add($user_row, $cp_data = false, $notifications_data = null)  	{  		$cp_data['user_id'] = (int) $user_id; +		/* @var $cp \phpbb\profilefields\manager */  		$cp = $phpbb_container->get('profilefields.manager');  		$sql = 'INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . ' ' .  			$db->sql_build_array('INSERT', $cp->build_insert_sql_array($cp_data)); @@ -313,7 +314,7 @@ function user_add($user_row, $cp_data = false, $notifications_data = null)  		{  			global $phpbb_log; -			// Because these actions only fill the log unneccessarily we skip the add_log() entry. +			// Because these actions only fill the log unnecessarily, we disable it  			$phpbb_log->disable('admin');  			// Add user to "newly registered users" group and set to default group if admin specified so. @@ -334,9 +335,9 @@ function user_add($user_row, $cp_data = false, $notifications_data = null)  	// set the newest user and adjust the user count if the user is a normal user and no activation mail is sent  	if ($user_row['user_type'] == USER_NORMAL || $user_row['user_type'] == USER_FOUNDER)  	{ -		set_config('newest_user_id', $user_id, true); -		set_config('newest_username', $user_row['username'], true); -		set_config_count('num_users', 1, true); +		$config->set('newest_user_id', $user_id, false); +		$config->set('newest_username', $user_row['username'], false); +		$config->increment('num_users', 1, false);  		$sql = 'SELECT group_colour  			FROM ' . GROUPS_TABLE . ' @@ -345,7 +346,7 @@ function user_add($user_row, $cp_data = false, $notifications_data = null)  		$row = $db->sql_fetchrow($result);  		$db->sql_freeresult($result); -		set_config('newest_user_colour', $row['group_colour'], true); +		$config->set('newest_user_colour', $row['group_colour'], false);  	}  	// Use default notifications settings if notifications_data is not set @@ -366,6 +367,7 @@ function user_add($user_row, $cp_data = false, $notifications_data = null)  	// Subscribe user to notifications if necessary  	if (!empty($notifications_data))  	{ +		/* @var $phpbb_notifications \phpbb\notification\manager */  		$phpbb_notifications = $phpbb_container->get('notification_manager');  		foreach ($notifications_data as $subscription)  		{ @@ -571,7 +573,7 @@ function user_delete($mode, $user_ids, $retain_username = true)  	if ($num_users_delta != 0)  	{ -		set_config_count('num_users', $num_users_delta, true); +		$config->increment('num_users', $num_users_delta, false);  	}  	// Now do the invariant tasks @@ -804,12 +806,12 @@ function user_active_flip($mode, $user_id_ary, $reason = INACTIVE_MANUAL)  	if ($deactivated)  	{ -		set_config_count('num_users', $deactivated * (-1), true); +		$config->increment('num_users', $deactivated * (-1), false);  	}  	if ($activated)  	{ -		set_config_count('num_users', $activated, true); +		$config->increment('num_users', $activated, false);  	}  	// Update latest username @@ -829,7 +831,7 @@ function user_active_flip($mode, $user_id_ary, $reason = INACTIVE_MANUAL)  */  function user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason = '')  { -	global $db, $user, $auth, $cache; +	global $db, $user, $auth, $cache, $phpbb_log;  	// Delete stale bans  	$sql = 'DELETE FROM ' . BANLIST_TABLE . ' @@ -1220,13 +1222,22 @@ function user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reas  		$log_entry = ($ban_exclude) ? 'LOG_BAN_EXCLUDE_' : 'LOG_BAN_';  		// Add to admin log, moderator log and user notes -		add_log('admin', $log_entry . strtoupper($mode), $ban_reason, $ban_list_log); -		add_log('mod', 0, 0, $log_entry . strtoupper($mode), $ban_reason, $ban_list_log); +		$phpbb_log->add('admin', $user->data['user_id'], $user->ip, $log_entry . strtoupper($mode), false, array($ban_reason, $ban_list_log)); +		$phpbb_log->add('mod', $user->data['user_id'], $user->ip, $log_entry . strtoupper($mode), false, array( +			'forum_id' => 0, +			'topic_id' => 0, +			$ban_reason, +			$ban_list_log +		));  		if ($mode == 'user')  		{  			foreach ($banlist_ary as $user_id)  			{ -				add_log('user', $user_id, $log_entry . strtoupper($mode), $ban_reason, $ban_list_log); +				$phpbb_log->add('user', $user->data['user_id'], $user->ip, $log_entry . strtoupper($mode), false, array( +					'reportee_id' => $user_id, +					$ban_reason, +					$ban_list_log +				));  			}  		} @@ -1246,7 +1257,7 @@ function user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reas  */  function user_unban($mode, $ban)  { -	global $db, $user, $auth, $cache; +	global $db, $user, $auth, $cache, $phpbb_log;  	// Delete stale bans  	$sql = 'DELETE FROM ' . BANLIST_TABLE . ' @@ -1304,13 +1315,20 @@ function user_unban($mode, $ban)  		$db->sql_query($sql);  		// Add to moderator log, admin log and user notes -		add_log('admin', 'LOG_UNBAN_' . strtoupper($mode), $l_unban_list); -		add_log('mod', 0, 0, 'LOG_UNBAN_' . strtoupper($mode), $l_unban_list); +		$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_UNBAN_' . strtoupper($mode), false, array($l_unban_list)); +		$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_UNBAN_' . strtoupper($mode), false, array( +			'forum_id' => 0, +			'topic_id' => 0, +			$l_unban_list +		));  		if ($mode == 'user')  		{  			foreach ($user_ids_ary as $user_id)  			{ -				add_log('user', $user_id, 'LOG_UNBAN_' . strtoupper($mode), $l_unban_list); +				$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_UNBAN_' . strtoupper($mode), false, array( +					'reportee_id' => $user_id, +					$l_unban_list +				));  			}  		}  	} @@ -2250,7 +2268,7 @@ function phpbb_avatar_explanation_string()  */  function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow_desc_bbcode = false, $allow_desc_urls = false, $allow_desc_smilies = false)  { -	global $phpbb_root_path, $config, $db, $user, $file_upload, $phpbb_container; +	global $phpbb_root_path, $config, $db, $user, $file_upload, $phpbb_container, $phpbb_log;  	$error = array(); @@ -2282,8 +2300,12 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow  		$current_legend = \phpbb\groupposition\legend::GROUP_DISABLED;  		$current_teampage = \phpbb\groupposition\teampage::GROUP_DISABLED; +		/* @var $legend \phpbb\groupposition\legend */  		$legend = $phpbb_container->get('groupposition.legend'); + +		/* @var $teampage \phpbb\groupposition\teampage */  		$teampage = $phpbb_container->get('groupposition.teampage'); +  		if ($group_id)  		{  			try @@ -2500,7 +2522,7 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow  		}  		$name = ($type == GROUP_SPECIAL) ? $user->lang['G_' . $name] : $name; -		add_log('admin', $log, $name); +		$phpbb_log->add('admin', $user->data['user_id'], $user->ip, $log, false, array($name));  		group_update_listings($group_id);  	} @@ -2553,7 +2575,7 @@ function avatar_remove_db($avatar_name)  */  function group_delete($group_id, $group_name = false)  { -	global $db, $cache, $auth, $user, $phpbb_root_path, $phpEx, $phpbb_dispatcher, $phpbb_container; +	global $db, $cache, $auth, $user, $phpbb_root_path, $phpEx, $phpbb_dispatcher, $phpbb_container, $phpbb_log;  	if (!$group_name)  	{ @@ -2597,6 +2619,7 @@ function group_delete($group_id, $group_name = false)  	// Delete group from legend and teampage  	try  	{ +		/* @var $legend \phpbb\groupposition\legend */  		$legend = $phpbb_container->get('groupposition.legend');  		$legend->delete_group($group_id);  		unset($legend); @@ -2610,6 +2633,7 @@ function group_delete($group_id, $group_name = false)  	try  	{ +		/* @var $teampage \phpbb\groupposition\teampage */  		$teampage = $phpbb_container->get('groupposition.teampage');  		$teampage->delete_group($group_id);  		unset($teampage); @@ -2650,7 +2674,7 @@ function group_delete($group_id, $group_name = false)  	phpbb_cache_moderators($db, $cache, $auth); -	add_log('admin', 'LOG_GROUP_DELETE', $group_name); +	$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_GROUP_DELETE', false, array($group_name));  	// Return false - no error  	return false; @@ -2663,7 +2687,7 @@ function group_delete($group_id, $group_name = false)  */  function group_user_add($group_id, $user_id_ary = false, $username_ary = false, $group_name = false, $default = false, $leader = 0, $pending = 0, $group_attributes = false)  { -	global $db, $auth, $phpbb_container; +	global $db, $auth, $user, $phpbb_container, $phpbb_log;  	// We need both username and user_id info  	$result = user_get_id_name($user_id_ary, $username_ary); @@ -2747,12 +2771,13 @@ function group_user_add($group_id, $user_id_ary = false, $username_ary = false,  	$log = ($leader) ? 'LOG_MODS_ADDED' : (($pending) ? 'LOG_USERS_PENDING' : 'LOG_USERS_ADDED'); -	add_log('admin', $log, $group_name, implode(', ', $username_ary)); +	$phpbb_log->add('admin', $user->data['user_id'], $user->ip, $log, false, array($group_name, implode(', ', $username_ary)));  	group_update_listings($group_id);  	if ($pending)  	{ +		/* @var $phpbb_notifications \phpbb\notification\manager */  		$phpbb_notifications = $phpbb_container->get('notification_manager');  		foreach ($add_id_ary as $user_id) @@ -2778,7 +2803,7 @@ function group_user_add($group_id, $user_id_ary = false, $username_ary = false,  */  function group_user_del($group_id, $user_id_ary = false, $username_ary = false, $group_name = false)  { -	global $db, $auth, $config, $phpbb_dispatcher, $phpbb_container; +	global $db, $auth, $config, $user, $phpbb_dispatcher, $phpbb_container, $phpbb_log;  	if ($config['coppa_enable'])  	{ @@ -2907,11 +2932,12 @@ function group_user_del($group_id, $user_id_ary = false, $username_ary = false,  	if ($group_name)  	{ -		add_log('admin', $log, $group_name, implode(', ', $username_ary)); +		$phpbb_log->add('admin', $user->data['user_id'], $user->ip, $log, false, array($group_name, implode(', ', $username_ary)));  	}  	group_update_listings($group_id); +	/* @var $phpbb_notifications \phpbb\notification\manager */  	$phpbb_notifications = $phpbb_container->get('notification_manager');  	$phpbb_notifications->delete_notifications('notification.type.group_request', $user_id_ary, $group_id); @@ -3005,7 +3031,7 @@ function remove_default_rank($group_id, $user_ids)  */  function group_user_attributes($action, $group_id, $user_id_ary = false, $username_ary = false, $group_name = false, $group_attributes = false)  { -	global $db, $auth, $phpbb_root_path, $phpEx, $config, $phpbb_container; +	global $db, $auth, $user, $phpbb_root_path, $phpEx, $config, $phpbb_container, $phpbb_log;  	// We need both username and user_id info  	$result = user_get_id_name($user_id_ary, $username_ary); @@ -3076,6 +3102,7 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna  					AND " . $db->sql_in_set('user_id', $user_id_ary);  			$db->sql_query($sql); +			/* @var $phpbb_notifications \phpbb\notification\manager */  			$phpbb_notifications = $phpbb_container->get('notification_manager');  			$phpbb_notifications->add_notifications('notification.type.group_request_approved', array( @@ -3139,7 +3166,7 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna  	// Clear permissions cache of relevant users  	$auth->acl_clear_prefetch($user_id_ary); -	add_log('admin', $log, $group_name, implode(', ', $username_ary)); +	$phpbb_log->add('admin', $user->data['user_id'], $user->ip, $log, false, array($group_name, implode(', ', $username_ary)));  	group_update_listings($group_id); @@ -3199,7 +3226,7 @@ function group_validate_groupname($group_id, $group_name)  */  function group_set_user_default($group_id, $user_id_ary, $group_attributes = false, $update_listing = false)  { -	global $phpbb_container, $db, $phpbb_dispatcher; +	global $config, $phpbb_container, $db, $phpbb_dispatcher;  	if (empty($user_id_ary))  	{ @@ -3269,8 +3296,8 @@ function group_set_user_default($group_id, $user_id_ary, $group_attributes = fal  			if (isset($sql_ary[$avatar_option]))  			{  				$avatar_sql_ary[$avatar_option] = $sql_ary[$avatar_option]; -				}  			} +		}  		$sql = 'UPDATE ' . USERS_TABLE . '  			SET ' . $db->sql_build_array('UPDATE', $avatar_sql_ary) . " @@ -3311,11 +3338,9 @@ function group_set_user_default($group_id, $user_id_ary, $group_attributes = fal  			WHERE " . $db->sql_in_set('topic_last_poster_id', $user_id_ary);  		$db->sql_query($sql); -		global $config; -  		if (in_array($config['newest_user_id'], $user_id_ary))  		{ -			set_config('newest_user_colour', $sql_ary['user_colour'], true); +			$config->set('newest_user_colour', $sql_ary['user_colour'], false);  		}  	} diff --git a/phpBB/includes/mcp/info/mcp_ban.php b/phpBB/includes/mcp/info/mcp_ban.php index 4aedbc8558..b4fd32792a 100644 --- a/phpBB/includes/mcp/info/mcp_ban.php +++ b/phpBB/includes/mcp/info/mcp_ban.php @@ -18,7 +18,6 @@ class mcp_ban_info  		return array(  			'filename'	=> 'mcp_ban',  			'title'		=> 'MCP_BAN', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'user'		=> array('title' => 'MCP_BAN_USERNAMES', 'auth' => 'acl_m_ban', 'cat' => array('MCP_BAN')),  				'ip'		=> array('title' => 'MCP_BAN_IPS', 'auth' => 'acl_m_ban', 'cat' => array('MCP_BAN')), diff --git a/phpBB/includes/mcp/info/mcp_logs.php b/phpBB/includes/mcp/info/mcp_logs.php index c6482c1255..7a0205fce9 100644 --- a/phpBB/includes/mcp/info/mcp_logs.php +++ b/phpBB/includes/mcp/info/mcp_logs.php @@ -18,7 +18,6 @@ class mcp_logs_info  		return array(  			'filename'	=> 'mcp_logs',  			'title'		=> 'MCP_LOGS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'front'			=> array('title' => 'MCP_LOGS_FRONT', 'auth' => 'acl_m_ || aclf_m_', 'cat' => array('MCP_LOGS')),  				'forum_logs'	=> array('title' => 'MCP_LOGS_FORUM_VIEW', 'auth' => 'acl_m_,$id', 'cat' => array('MCP_LOGS')), diff --git a/phpBB/includes/mcp/info/mcp_main.php b/phpBB/includes/mcp/info/mcp_main.php index 81ccdbd1cd..c0f0363255 100644 --- a/phpBB/includes/mcp/info/mcp_main.php +++ b/phpBB/includes/mcp/info/mcp_main.php @@ -18,7 +18,6 @@ class mcp_main_info  		return array(  			'filename'	=> 'mcp_main',  			'title'		=> 'MCP_MAIN', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'front'			=> array('title' => 'MCP_MAIN_FRONT', 'auth' => '', 'cat' => array('MCP_MAIN')),  				'forum_view'	=> array('title' => 'MCP_MAIN_FORUM_VIEW', 'auth' => 'acl_m_,$id', 'cat' => array('MCP_MAIN')), diff --git a/phpBB/includes/mcp/info/mcp_notes.php b/phpBB/includes/mcp/info/mcp_notes.php index 4b8c255fe2..de4a41dd80 100644 --- a/phpBB/includes/mcp/info/mcp_notes.php +++ b/phpBB/includes/mcp/info/mcp_notes.php @@ -18,7 +18,6 @@ class mcp_notes_info  		return array(  			'filename'	=> 'mcp_notes',  			'title'		=> 'MCP_NOTES', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'front'				=> array('title' => 'MCP_NOTES_FRONT', 'auth' => '', 'cat' => array('MCP_NOTES')),  				'user_notes'		=> array('title' => 'MCP_NOTES_USER', 'auth' => '', 'cat' => array('MCP_NOTES')), diff --git a/phpBB/includes/mcp/info/mcp_pm_reports.php b/phpBB/includes/mcp/info/mcp_pm_reports.php index 8670b71084..6f8b8d9937 100644 --- a/phpBB/includes/mcp/info/mcp_pm_reports.php +++ b/phpBB/includes/mcp/info/mcp_pm_reports.php @@ -18,7 +18,6 @@ class mcp_pm_reports_info  		return array(  			'filename'	=> 'mcp_pm_reports',  			'title'		=> 'MCP_PM_REPORTS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'pm_reports'		=> array('title' => 'MCP_PM_REPORTS_OPEN', 'auth' => 'aclf_m_report', 'cat' => array('MCP_REPORTS')),  				'pm_reports_closed'	=> array('title' => 'MCP_PM_REPORTS_CLOSED', 'auth' => 'aclf_m_report', 'cat' => array('MCP_REPORTS')), diff --git a/phpBB/includes/mcp/info/mcp_queue.php b/phpBB/includes/mcp/info/mcp_queue.php index 556c3902b0..d5605aa50e 100644 --- a/phpBB/includes/mcp/info/mcp_queue.php +++ b/phpBB/includes/mcp/info/mcp_queue.php @@ -18,7 +18,6 @@ class mcp_queue_info  		return array(  			'filename'	=> 'mcp_queue',  			'title'		=> 'MCP_QUEUE', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'unapproved_topics'	=> array('title' => 'MCP_QUEUE_UNAPPROVED_TOPICS', 'auth' => 'aclf_m_approve', 'cat' => array('MCP_QUEUE')),  				'unapproved_posts'	=> array('title' => 'MCP_QUEUE_UNAPPROVED_POSTS', 'auth' => 'aclf_m_approve', 'cat' => array('MCP_QUEUE')), diff --git a/phpBB/includes/mcp/info/mcp_reports.php b/phpBB/includes/mcp/info/mcp_reports.php index 31fee19d79..76e62efe9c 100644 --- a/phpBB/includes/mcp/info/mcp_reports.php +++ b/phpBB/includes/mcp/info/mcp_reports.php @@ -18,7 +18,6 @@ class mcp_reports_info  		return array(  			'filename'	=> 'mcp_reports',  			'title'		=> 'MCP_REPORTS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'reports'			=> array('title' => 'MCP_REPORTS_OPEN', 'auth' => 'aclf_m_report', 'cat' => array('MCP_REPORTS')),  				'reports_closed'	=> array('title' => 'MCP_REPORTS_CLOSED', 'auth' => 'aclf_m_report', 'cat' => array('MCP_REPORTS')), diff --git a/phpBB/includes/mcp/info/mcp_warn.php b/phpBB/includes/mcp/info/mcp_warn.php index d85499f280..b4f83e77c6 100644 --- a/phpBB/includes/mcp/info/mcp_warn.php +++ b/phpBB/includes/mcp/info/mcp_warn.php @@ -18,7 +18,6 @@ class mcp_warn_info  		return array(  			'filename'	=> 'mcp_warn',  			'title'		=> 'MCP_WARN', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'front'				=> array('title' => 'MCP_WARN_FRONT', 'auth' => 'aclf_m_warn', 'cat' => array('MCP_WARN')),  				'list'				=> array('title' => 'MCP_WARN_LIST', 'auth' => 'aclf_m_warn', 'cat' => array('MCP_WARN')), diff --git a/phpBB/includes/mcp/mcp_forum.php b/phpBB/includes/mcp/mcp_forum.php index c18ca1aa1d..9a280c0ea5 100644 --- a/phpBB/includes/mcp/mcp_forum.php +++ b/phpBB/includes/mcp/mcp_forum.php @@ -45,11 +45,11 @@ function mcp_forum_view($id, $mode, $action, $forum_info)  	}  	$forum_id			= $forum_info['forum_id']; -	$start				= request_var('start', 0); -	$topic_id_list		= request_var('topic_id_list', array(0)); -	$post_id_list		= request_var('post_id_list', array(0)); -	$source_topic_ids	= array(request_var('t', 0)); -	$to_topic_id		= request_var('to_topic_id', 0); +	$start				= $request->variable('start', 0); +	$topic_id_list		= $request->variable('topic_id_list', array(0)); +	$post_id_list		= $request->variable('post_id_list', array(0)); +	$source_topic_ids	= array($request->variable('t', 0)); +	$to_topic_id		= $request->variable('to_topic_id', 0);  	$url_extra = '';  	$url_extra .= ($forum_id) ? "&f=$forum_id" : ''; @@ -63,7 +63,7 @@ function mcp_forum_view($id, $mode, $action, $forum_info)  	switch ($action)  	{  		case 'resync': -			$topic_ids = request_var('topic_id_list', array(0)); +			$topic_ids = $request->variable('topic_id_list', array(0));  			mcp_resync_topics($topic_ids);  		break; @@ -77,6 +77,7 @@ function mcp_forum_view($id, $mode, $action, $forum_info)  		break;  	} +	/* @var $pagination \phpbb\pagination */  	$pagination = $phpbb_container->get('pagination');  	$selected_ids = ''; @@ -157,6 +158,7 @@ function mcp_forum_view($id, $mode, $action, $forum_info)  		$read_tracking_join = $read_tracking_select = '';  	} +	/* @var $phpbb_content_visibility \phpbb\content_visibility */  	$phpbb_content_visibility = $phpbb_container->get('content.visibility');  	$sql = 'SELECT t.topic_id @@ -337,7 +339,7 @@ function mcp_forum_view($id, $mode, $action, $forum_info)  */  function mcp_resync_topics($topic_ids)  { -	global $auth, $db, $template, $phpEx, $user, $phpbb_root_path; +	global $auth, $db, $template, $phpEx, $user, $phpbb_root_path, $phpbb_log, $request;  	if (!sizeof($topic_ids))  	{ @@ -362,13 +364,17 @@ function mcp_resync_topics($topic_ids)  	// Log this action  	while ($row = $db->sql_fetchrow($result))  	{ -		add_log('mod', $row['forum_id'], $row['topic_id'], 'LOG_TOPIC_RESYNC', $row['topic_title']); +		$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_TOPIC_RESYNC', false, array( +			'forum_id' => $row['forum_id'], +			'topic_id' => $row['topic_id'], +			$row['topic_title'] +		));  	}  	$db->sql_freeresult($result);  	$msg = (sizeof($topic_ids) == 1) ? $user->lang['TOPIC_RESYNC_SUCCESS'] : $user->lang['TOPICS_RESYNC_SUCCESS']; -	$redirect = request_var('redirect', $user->data['session_page']); +	$redirect = $request->variable('redirect', $user->data['session_page']);  	meta_refresh(3, $redirect);  	trigger_error($msg . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $redirect . '">', '</a>')); @@ -381,7 +387,7 @@ function mcp_resync_topics($topic_ids)  */  function merge_topics($forum_id, $topic_ids, $to_topic_id)  { -	global $db, $template, $user, $phpEx, $phpbb_root_path, $auth; +	global $db, $template, $user, $phpEx, $phpbb_root_path, $auth, $phpbb_log, $request;  	if (!sizeof($topic_ids))  	{ @@ -412,8 +418,8 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)  	$topic_data = $topic_data[$to_topic_id]; -	$post_id_list	= request_var('post_id_list', array(0)); -	$start			= request_var('start', 0); +	$post_id_list	= $request->variable('post_id_list', array(0)); +	$start			= $request->variable('start', 0);  	if (!sizeof($post_id_list) && sizeof($topic_ids))  	{ @@ -441,7 +447,7 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)  		return;  	} -	$redirect = request_var('redirect', build_url(array('quickmod'))); +	$redirect = $request->variable('redirect', build_url(array('quickmod')));  	$s_hidden_fields = build_hidden_fields(array(  		'i'				=> 'main', @@ -461,7 +467,12 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)  		$to_forum_id = $topic_data['forum_id'];  		move_posts($post_id_list, $to_topic_id, false); -		add_log('mod', $to_forum_id, $to_topic_id, 'LOG_MERGE', $topic_data['topic_title']); + +		$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_MERGE', false, array( +			'forum_id' => $to_forum_id, +			'topic_id' => $to_topic_id, +			$topic_data['topic_title'] +		));  		// Message and return links  		$success_msg = 'POSTS_MERGED_SUCCESS'; @@ -485,7 +496,7 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)  		// Link to the new topic  		$return_link .= (($return_link) ? '<br /><br />' : '') . sprintf($user->lang['RETURN_NEW_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $to_forum_id . '&t=' . $to_topic_id) . '">', '</a>'); -		$redirect = request_var('redirect', "{$phpbb_root_path}viewtopic.$phpEx?f=$to_forum_id&t=$to_topic_id"); +		$redirect = $request->variable('redirect', "{$phpbb_root_path}viewtopic.$phpEx?f=$to_forum_id&t=$to_topic_id");  		$redirect = reapply_sid($redirect);  		meta_refresh(3, $redirect); diff --git a/phpBB/includes/mcp/mcp_front.php b/phpBB/includes/mcp/mcp_front.php index 500db55456..ea17f55402 100644 --- a/phpBB/includes/mcp/mcp_front.php +++ b/phpBB/includes/mcp/mcp_front.php @@ -26,7 +26,7 @@ function mcp_front_view($id, $mode, $action)  {  	global $phpEx, $phpbb_root_path, $config;  	global $template, $db, $user, $auth, $module; -	global $phpbb_dispatcher; +	global $phpbb_dispatcher, $request;  	// Latest 5 unapproved  	if ($module->loaded('queue')) @@ -35,7 +35,7 @@ function mcp_front_view($id, $mode, $action)  		$post_list = array();  		$forum_names = array(); -		$forum_id = request_var('f', 0); +		$forum_id = $request->variable('f', 0);  		$template->assign_var('S_SHOW_UNAPPROVED', (!empty($forum_list)) ? true : false); diff --git a/phpBB/includes/mcp/mcp_logs.php b/phpBB/includes/mcp/mcp_logs.php index 9c76f0df90..43327707b3 100644 --- a/phpBB/includes/mcp/mcp_logs.php +++ b/phpBB/includes/mcp/mcp_logs.php @@ -35,12 +35,12 @@ class mcp_logs  	function main($id, $mode)  	{ -		global $auth, $db, $user, $template; +		global $auth, $db, $user, $template, $request;  		global $config, $phpbb_root_path, $phpEx, $phpbb_container, $phpbb_log;  		$user->add_lang('acp/common'); -		$action = request_var('action', array('' => '')); +		$action = $request->variable('action', array('' => ''));  		if (is_array($action))  		{ @@ -48,23 +48,24 @@ class mcp_logs  		}  		else  		{ -			$action = request_var('action', ''); +			$action = $request->variable('action', '');  		}  		// Set up general vars -		$start		= request_var('start', 0); +		$start		= $request->variable('start', 0);  		$deletemark = ($action == 'del_marked') ? true : false;  		$deleteall	= ($action == 'del_all') ? true : false; -		$marked		= request_var('mark', array(0)); +		$marked		= $request->variable('mark', array(0));  		// Sort keys -		$sort_days	= request_var('st', 0); -		$sort_key	= request_var('sk', 't'); -		$sort_dir	= request_var('sd', 'd'); +		$sort_days	= $request->variable('st', 0); +		$sort_key	= $request->variable('sk', 't'); +		$sort_dir	= $request->variable('sd', 'd');  		$this->tpl_name = 'mcp_logs';  		$this->page_title = 'MCP_LOGS'; +		/* @var $pagination \phpbb\pagination */  		$pagination = $phpbb_container->get('pagination');  		$forum_list = array_values(array_intersect(get_forum_list('f_read'), get_forum_list('m_'))); @@ -78,7 +79,7 @@ class mcp_logs  			break;  			case 'forum_logs': -				$forum_id = request_var('f', 0); +				$forum_id = $request->variable('f', 0);  				if (!in_array($forum_id, $forum_list))  				{ @@ -89,7 +90,7 @@ class mcp_logs  			break;  			case 'topic_logs': -				$topic_id = request_var('t', 0); +				$topic_id = $request->variable('t', 0);  				$sql = 'SELECT forum_id  					FROM ' . TOPICS_TABLE . ' @@ -123,7 +124,7 @@ class mcp_logs  				}  				else if ($deleteall)  				{ -					$keywords = utf8_normalize_nfc(request_var('keywords', '', true)); +					$keywords = $request->variable('keywords', '', true);  					$conditions = array(  						'forum_id'	=> array('IN' => $forum_list), @@ -157,7 +158,7 @@ class mcp_logs  					'sd'		=> $sort_dir,  					'i'			=> $id,  					'mode'		=> $mode, -					'action'	=> request_var('action', array('' => '')))) +					'action'	=> $request->variable('action', array('' => ''))))  				);  			}  		} @@ -174,7 +175,7 @@ class mcp_logs  		$sql_where = ($sort_days) ? (time() - ($sort_days * 86400)) : 0;  		$sql_sort = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC'); -		$keywords = utf8_normalize_nfc(request_var('keywords', '', true)); +		$keywords = $request->variable('keywords', '', true);  		$keywords_param = !empty($keywords) ? '&keywords=' . urlencode(htmlspecialchars_decode($keywords)) : '';  		// Grab log data diff --git a/phpBB/includes/mcp/mcp_main.php b/phpBB/includes/mcp/mcp_main.php index 1241b8bd0e..e3fbbc0418 100644 --- a/phpBB/includes/mcp/mcp_main.php +++ b/phpBB/includes/mcp/mcp_main.php @@ -45,7 +45,7 @@ class mcp_main  		{  			case 'lock':  			case 'unlock': -				$topic_ids = (!$quickmod) ? request_var('topic_id_list', array(0)) : array(request_var('t', 0)); +				$topic_ids = (!$quickmod) ? $request->variable('topic_id_list', array(0)) : array($request->variable('t', 0));  				if (!sizeof($topic_ids))  				{ @@ -58,7 +58,7 @@ class mcp_main  			case 'lock_post':  			case 'unlock_post': -				$post_ids = (!$quickmod) ? request_var('post_id_list', array(0)) : array(request_var('p', 0)); +				$post_ids = (!$quickmod) ? $request->variable('post_id_list', array(0)) : array($request->variable('p', 0));  				if (!sizeof($post_ids))  				{ @@ -73,7 +73,7 @@ class mcp_main  			case 'make_global':  			case 'make_normal': -				$topic_ids = (!$quickmod) ? request_var('topic_id_list', array(0)) : array(request_var('t', 0)); +				$topic_ids = (!$quickmod) ? $request->variable('topic_id_list', array(0)) : array($request->variable('t', 0));  				if (!sizeof($topic_ids))  				{ @@ -86,7 +86,7 @@ class mcp_main  			case 'move':  				$user->add_lang('viewtopic'); -				$topic_ids = (!$quickmod) ? request_var('topic_id_list', array(0)) : array(request_var('t', 0)); +				$topic_ids = (!$quickmod) ? $request->variable('topic_id_list', array(0)) : array($request->variable('t', 0));  				if (!sizeof($topic_ids))  				{ @@ -99,7 +99,7 @@ class mcp_main  			case 'fork':  				$user->add_lang('viewtopic'); -				$topic_ids = (!$quickmod) ? request_var('topic_id_list', array(0)) : array(request_var('t', 0)); +				$topic_ids = (!$quickmod) ? $request->variable('topic_id_list', array(0)) : array($request->variable('t', 0));  				if (!sizeof($topic_ids))  				{ @@ -189,7 +189,7 @@ class mcp_main  				$user->add_lang('viewforum'); -				$forum_id = request_var('f', 0); +				$forum_id = $request->variable('f', 0);  				$forum_info = phpbb_get_forum_data($forum_id, 'm_', true); @@ -237,7 +237,7 @@ class mcp_main  */  function lock_unlock($action, $ids)  { -	global $auth, $user, $db, $phpEx, $phpbb_root_path, $request; +	global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_log;  	if ($action == 'lock' || $action == 'unlock')  	{ @@ -273,7 +273,7 @@ function lock_unlock($action, $ids)  	}  	unset($orig_ids); -	$redirect = request_var('redirect', build_url(array('action', 'quickmod'))); +	$redirect = $request->variable('redirect', build_url(array('action', 'quickmod')));  	$redirect = reapply_sid($redirect);  	$s_hidden_fields = build_hidden_fields(array( @@ -294,7 +294,11 @@ function lock_unlock($action, $ids)  		foreach ($data as $id => $row)  		{ -			add_log('mod', $row['forum_id'], $row['topic_id'], 'LOG_' . strtoupper($action), $row['topic_title']); +			$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_' . strtoupper($action), false, array( +				'forum_id' => $row['forum_id'], +				'topic_id' => $row['topic_id'], +				$row['topic_title'] +			));  		}  		$success_msg = $l_prefix . ((sizeof($ids) == 1) ? '' : 'S') . '_' . (($action == 'lock' || $action == 'lock_post') ? 'LOCKED' : 'UNLOCKED') . '_SUCCESS'; @@ -321,7 +325,7 @@ function lock_unlock($action, $ids)  */  function change_topic_type($action, $topic_ids)  { -	global $auth, $user, $db, $phpEx, $phpbb_root_path, $request; +	global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_log;  	switch ($action)  	{ @@ -357,7 +361,7 @@ function change_topic_type($action, $topic_ids)  		return;  	} -	$redirect = request_var('redirect', build_url(array('action', 'quickmod'))); +	$redirect = $request->variable('redirect', build_url(array('action', 'quickmod')));  	$redirect = reapply_sid($redirect);  	$s_hidden_fields = array( @@ -396,7 +400,11 @@ function change_topic_type($action, $topic_ids)  			foreach ($data as $topic_id => $row)  			{ -				add_log('mod', $forum_id, $topic_id, 'LOG_TOPIC_TYPE_CHANGED', $row['topic_title']); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_TOPIC_TYPE_CHANGED', false, array( +					'forum_id' => $forum_id, +					'topic_id' => $topic_id, +					$row['topic_title'] +				));  			}  		} @@ -433,8 +441,8 @@ function mcp_move_topic($topic_ids)  		return;  	} -	$to_forum_id = request_var('to_forum_id', 0); -	$redirect = request_var('redirect', build_url(array('action', 'quickmod'))); +	$to_forum_id = $request->variable('to_forum_id', 0); +	$redirect = $request->variable('redirect', build_url(array('action', 'quickmod')));  	$additional_msg = $success_msg = '';  	$s_hidden_fields = build_hidden_fields(array( @@ -654,7 +662,7 @@ function mcp_move_topic($topic_ids)  		confirm_box(false, 'MOVE_TOPIC' . ((sizeof($topic_ids) == 1) ? '' : 'S'), $s_hidden_fields, 'mcp_move.html');  	} -	$redirect = request_var('redirect', "index.$phpEx"); +	$redirect = $request->variable('redirect', "index.$phpEx");  	$redirect = reapply_sid($redirect);  	if (!$success_msg) @@ -679,7 +687,7 @@ function mcp_move_topic($topic_ids)  */  function mcp_restore_topic($topic_ids)  { -	global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container; +	global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container, $phpbb_log;  	if (!phpbb_check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array('m_approve')))  	{ @@ -703,13 +711,19 @@ function mcp_restore_topic($topic_ids)  		$data = phpbb_get_topic_data($topic_ids); +		/* @var $phpbb_content_visibility \phpbb\content_visibility */  		$phpbb_content_visibility = $phpbb_container->get('content.visibility');  		foreach ($data as $topic_id => $row)  		{  			$return = $phpbb_content_visibility->set_topic_visibility(ITEM_APPROVED, $topic_id, $row['forum_id'], $user->data['user_id'], time(), '');  			if (!empty($return))  			{ -				add_log('mod', $row['forum_id'], $topic_id, 'LOG_RESTORE_TOPIC', $row['topic_title'], $row['topic_first_poster_name']); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_RESTORE_TOPIC', false, array( +					'forum_id' => $row['forum_id'], +					'topic_id' => $topic_id, +					$row['topic_title'], +					$row['topic_first_poster_name'] +				));  			}  		}  	} @@ -752,7 +766,7 @@ function mcp_restore_topic($topic_ids)  */  function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = '', $action = 'delete_topic')  { -	global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container; +	global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container, $phpbb_log;  	$check_permission = ($is_soft) ? 'm_softdelete' : 'm_delete';  	if (!phpbb_check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array($check_permission))) @@ -781,23 +795,40 @@ function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = ''  		{  			if ($row['topic_moved_id'])  			{ -				add_log('mod', $row['forum_id'], $topic_id, 'LOG_DELETE_SHADOW_TOPIC', $row['topic_title']); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_DELETE_SHADOW_TOPIC', false, array( +					'forum_id' => $row['forum_id'], +					'topic_id' => $topic_id, +					$row['topic_title'] +				));  			}  			else  			{  				// Only soft delete non-shadow topics  				if ($is_soft)  				{ +					/* @var $phpbb_content_visibility \phpbb\content_visibility */  					$phpbb_content_visibility = $phpbb_container->get('content.visibility');  					$return = $phpbb_content_visibility->set_topic_visibility(ITEM_DELETED, $topic_id, $row['forum_id'], $user->data['user_id'], time(), $soft_delete_reason);  					if (!empty($return))  					{ -						add_log('mod', $row['forum_id'], $topic_id, 'LOG_SOFTDELETE_TOPIC', $row['topic_title'], $row['topic_first_poster_name'], $soft_delete_reason); +						$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_SOFTDELETE_TOPIC', false, array( +							'forum_id' => $row['forum_id'], +							'topic_id' => $topic_id, +							$row['topic_title'], +							$row['topic_first_poster_name'], +							$soft_delete_reason +						));  					}  				}  				else  				{ -					add_log('mod', $row['forum_id'], $topic_id, 'LOG_DELETE_TOPIC', $row['topic_title'], $row['topic_first_poster_name'], $soft_delete_reason); +					$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_DELETE_TOPIC', false, array( +						'forum_id' => $row['forum_id'], +						'topic_id' => $topic_id, +						$row['topic_title'], +						$row['topic_first_poster_name'], +						$soft_delete_reason +					));  				}  			}  		} @@ -891,7 +922,7 @@ function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = ''  */  function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '', $action = 'delete_post')  { -	global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container; +	global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container, $phpbb_log;  	$check_permission = ($is_soft) ? 'm_softdelete' : 'm_delete';  	if (!phpbb_check_ids($post_ids, POSTS_TABLE, 'post_id', array($check_permission))) @@ -948,6 +979,7 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',  			);  		} +		/* @var $phpbb_content_visibility \phpbb\content_visibility */  		$phpbb_content_visibility = $phpbb_container->get('content.visibility');  		foreach ($topic_info as $topic_id => $topic_data)  		{ @@ -962,7 +994,13 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',  		foreach ($approve_log as $row)  		{  			$post_username = ($row['poster_id'] == ANONYMOUS && !empty($row['post_username'])) ? $row['post_username'] : $row['username']; -			add_log('mod', $row['forum_id'], $row['topic_id'], 'LOG_SOFTDELETE_POST', $row['post_subject'], $post_username, $soft_delete_reason); +			$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_SOFTDELETE_POST', false, array( +				'forum_id' => $row['forum_id'], +				'topic_id' => $row['topic_id'], +				$row['post_subject'], +				$post_username, +				$soft_delete_reason +			));  		}  		$topic_id = $request->variable('t', 0); @@ -1005,7 +1043,13 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',  		foreach ($post_data as $id => $row)  		{  			$post_username = ($row['poster_id'] == ANONYMOUS && !empty($row['post_username'])) ? $row['post_username'] : $row['username']; -			add_log('mod', $row['forum_id'], $row['topic_id'], 'LOG_DELETE_POST', $row['post_subject'], $post_username, $soft_delete_reason); +			$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_DELETE_POST', false, array( +				'forum_id' => $row['forum_id'], +				'topic_id' => $row['topic_id'], +				$row['post_subject'], +				$post_username, +				$soft_delete_reason +			));  		}  		// Now delete the posts, topics and forums are automatically resync'ed @@ -1119,16 +1163,16 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',  function mcp_fork_topic($topic_ids)  {  	global $auth, $user, $db, $template, $config; -	global $phpEx, $phpbb_root_path; +	global $phpEx, $phpbb_root_path, $phpbb_log, $request;  	if (!phpbb_check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array('m_')))  	{  		return;  	} -	$to_forum_id = request_var('to_forum_id', 0); -	$forum_id = request_var('f', 0); -	$redirect = request_var('redirect', build_url(array('action', 'quickmod'))); +	$to_forum_id = $request->variable('to_forum_id', 0); +	$forum_id = $request->variable('f', 0); +	$redirect = $request->variable('redirect', build_url(array('action', 'quickmod')));  	$additional_msg = $success_msg = '';  	$counter = array(); @@ -1472,12 +1516,16 @@ function mcp_fork_topic($topic_ids)  		sync('topic', 'topic_id', $new_topic_id_list);  		sync('forum', 'forum_id', $to_forum_id); -		set_config_count('num_topics', sizeof($new_topic_id_list), true); -		set_config_count('num_posts', $total_posts, true); +		$config->increment('num_topics', sizeof($new_topic_id_list), false); +		$config->increment('num_posts', $total_posts, false);  		foreach ($new_topic_id_list as $topic_id => $new_topic_id)  		{ -			add_log('mod', $to_forum_id, $new_topic_id, 'LOG_FORK', $topic_row['forum_name']); +			$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_FORK', false, array( +				'forum_id' => $to_forum_id, +				'topic_id' => $new_topic_id, +				$topic_row['forum_name'] +			));  		}  		$success_msg = (sizeof($topic_ids) == 1) ? 'TOPIC_FORKED_SUCCESS' : 'TOPICS_FORKED_SUCCESS'; @@ -1493,7 +1541,7 @@ function mcp_fork_topic($topic_ids)  		confirm_box(false, 'FORK_TOPIC' . ((sizeof($topic_ids) == 1) ? '' : 'S'), $s_hidden_fields, 'mcp_move.html');  	} -	$redirect = request_var('redirect', "index.$phpEx"); +	$redirect = $request->variable('redirect', "index.$phpEx");  	$redirect = reapply_sid($redirect);  	if (!$success_msg) diff --git a/phpBB/includes/mcp/mcp_notes.php b/phpBB/includes/mcp/mcp_notes.php index 465ee63a98..502d4cb1e7 100644 --- a/phpBB/includes/mcp/mcp_notes.php +++ b/phpBB/includes/mcp/mcp_notes.php @@ -35,10 +35,10 @@ class mcp_notes  	function main($id, $mode)  	{ -		global $auth, $db, $user, $template; +		global $auth, $db, $user, $template, $request;  		global $config, $phpbb_root_path, $phpEx; -		$action = request_var('action', array('' => '')); +		$action = $request->variable('action', array('' => ''));  		if (is_array($action))  		{ @@ -74,15 +74,17 @@ class mcp_notes  	*/  	function mcp_notes_user_view($action)  	{ -		global $phpEx, $phpbb_root_path, $config; +		global $phpEx, $phpbb_root_path, $config, $phpbb_log, $request;  		global $template, $db, $user, $auth, $phpbb_container; -		$user_id = request_var('u', 0); -		$username = request_var('username', '', true); -		$start = request_var('start', 0); -		$st	= request_var('st', 0); -		$sk	= request_var('sk', 'b'); -		$sd	= request_var('sd', 'd'); +		$user_id = $request->variable('u', 0); +		$username = $request->variable('username', '', true); +		$start = $request->variable('start', 0); +		$st	= $request->variable('st', 0); +		$sk	= $request->variable('sk', 'b'); +		$sd	= $request->variable('sd', 'd'); + +		/* @var $pagination \phpbb\pagination */  		$pagination = $phpbb_container->get('pagination');  		add_form_key('mcp_notes'); @@ -114,8 +116,8 @@ class mcp_notes  		$deletemark = ($action == 'del_marked') ? true : false;  		$deleteall	= ($action == 'del_all') ? true : false; -		$marked		= request_var('marknote', array(0)); -		$usernote	= utf8_normalize_nfc(request_var('usernote', '', true)); +		$marked		= $request->variable('marknote', array(0)); +		$usernote	= $request->variable('usernote', '', true);  		// Handle any actions  		if (($deletemark || $deleteall) && $auth->acl_get('a_clearlogs')) @@ -142,7 +144,7 @@ class mcp_notes  							$where_sql";  					$db->sql_query($sql); -					add_log('admin', 'LOG_CLEAR_USER', $userrow['username']); +					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_CLEAR_USER', false, array($userrow['username']));  					$msg = ($deletemark) ? 'MARKED_NOTES_DELETED' : 'ALL_NOTES_DELETED';  				} @@ -160,10 +162,17 @@ class mcp_notes  		{  			if (check_form_key('mcp_notes'))  			{ -				add_log('admin', 'LOG_USER_FEEDBACK', $userrow['username']); -				add_log('mod', 0, 0, 'LOG_USER_FEEDBACK', $userrow['username']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_FEEDBACK', false, array($userrow['username'])); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_USER_FEEDBACK', false, array( +					'forum_id' => 0, +					'topic_id' => 0, +					$userrow['username'] +				)); +				$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_GENERAL', false, array( +					'reportee_id' => $user_id, +					$usernote +				)); -				add_log('user', $user_id, 'LOG_USER_GENERAL', $usernote);  				$msg = $user->lang['USER_FEEDBACK_ADDED'];  			}  			else @@ -192,7 +201,7 @@ class mcp_notes  		$sql_where = ($st) ? (time() - ($st * 86400)) : 0;  		$sql_sort = $sort_by_sql[$sk] . ' ' . (($sd == 'd') ? 'DESC' : 'ASC'); -		$keywords = utf8_normalize_nfc(request_var('keywords', '', true)); +		$keywords = $request->variable('keywords', '', true);  		$keywords_param = !empty($keywords) ? '&keywords=' . urlencode(htmlspecialchars_decode($keywords)) : '';  		$log_data = array(); diff --git a/phpBB/includes/mcp/mcp_pm_reports.php b/phpBB/includes/mcp/mcp_pm_reports.php index d76bedba98..cc8e48dc91 100644 --- a/phpBB/includes/mcp/mcp_pm_reports.php +++ b/phpBB/includes/mcp/mcp_pm_reports.php @@ -35,14 +35,15 @@ class mcp_pm_reports  	function main($id, $mode)  	{ -		global $auth, $db, $user, $template, $cache; +		global $auth, $db, $user, $template, $cache, $request;  		global $config, $phpbb_root_path, $phpEx, $action, $phpbb_container;  		include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);  		include_once($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx); -		$start = request_var('start', 0); +		/* @var $pagination \phpbb\pagination */  		$pagination = $phpbb_container->get('pagination'); +		$start = $request->variable('start', 0);  		$this->page_title = 'MCP_PM_REPORTS'; @@ -52,7 +53,7 @@ class mcp_pm_reports  			case 'delete':  				include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx); -				$report_id_list = request_var('report_id_list', array(0)); +				$report_id_list = $request->variable('report_id_list', array(0));  				if (!sizeof($report_id_list))  				{ @@ -75,7 +76,7 @@ class mcp_pm_reports  				$user->add_lang(array('posting', 'viewforum', 'viewtopic', 'ucp')); -				$report_id = request_var('r', 0); +				$report_id = $request->variable('r', 0);  				$sql = 'SELECT r.pm_id, r.user_id, r.report_id, r.report_closed, report_time, r.report_text, rr.reason_title, rr.reason_description, u.username, u.username_clean, u.user_colour  					FROM ' . REPORTS_TABLE . ' r, ' . REPORTS_REASONS_TABLE . ' rr, ' . USERS_TABLE . ' u @@ -93,6 +94,7 @@ class mcp_pm_reports  					trigger_error('NO_REPORT');  				} +				/* @var $phpbb_notifications \phpbb\notification\manager */  				$phpbb_notifications = $phpbb_container->get('notification_manager');  				$phpbb_notifications->mark_notifications_read_by_parent('notification.type.report_pm', $report_id, $user->data['user_id']); @@ -199,7 +201,7 @@ class mcp_pm_reports  					'POST_SUBJECT'			=> ($pm_info['message_subject']) ? $pm_info['message_subject'] : $user->lang['NO_SUBJECT'],  					'POST_DATE'				=> $user->format_date($pm_info['message_time']),  					'POST_IP'				=> $pm_info['author_ip'], -					'POST_IPADDR'			=> ($auth->acl_getf_global('m_info') && request_var('lookup', '')) ? @gethostbyaddr($pm_info['author_ip']) : '', +					'POST_IPADDR'			=> ($auth->acl_getf_global('m_info') && $request->variable('lookup', '')) ? @gethostbyaddr($pm_info['author_ip']) : '',  					'POST_ID'				=> $pm_info['msg_id'],  					'U_LOOKUP_IP'			=> ($auth->acl_getf_global('m_info')) ? $this->u_action . '&r=' . $report_id . '&pm=' . $pm_id . '&lookup=' . $pm_info['author_ip'] . '#ip' : '', diff --git a/phpBB/includes/mcp/mcp_post.php b/phpBB/includes/mcp/mcp_post.php index 1687409198..b70dfbb514 100644 --- a/phpBB/includes/mcp/mcp_post.php +++ b/phpBB/includes/mcp/mcp_post.php @@ -24,13 +24,13 @@ if (!defined('IN_PHPBB'))  */  function mcp_post_details($id, $mode, $action)  { -	global $phpEx, $phpbb_root_path, $config; +	global $phpEx, $phpbb_root_path, $config, $request;  	global $template, $db, $user, $auth, $cache;  	$user->add_lang('posting'); -	$post_id = request_var('p', 0); -	$start	= request_var('start', 0); +	$post_id = $request->variable('p', 0); +	$start	= $request->variable('start', 0);  	// Get post data  	$post_info = phpbb_get_post_data(array($post_id), false, true); @@ -51,7 +51,7 @@ function mcp_post_details($id, $mode, $action)  			if ($auth->acl_get('m_info', $post_info['forum_id']))  			{ -				$ip = request_var('ip', ''); +				$ip = $request->variable('ip', '');  				include($phpbb_root_path . 'includes/functions_user.' . $phpEx);  				$template->assign_vars(array( @@ -72,12 +72,12 @@ function mcp_post_details($id, $mode, $action)  			if ($action == 'chgposter')  			{ -				$username = request_var('username', '', true); +				$username = $request->variable('username', '', true);  				$sql_where = "username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'";  			}  			else  			{ -				$new_user_id = request_var('u', 0); +				$new_user_id = $request->variable('u', 0);  				$sql_where = 'user_id = ' . $new_user_id;  			} @@ -244,7 +244,7 @@ function mcp_post_details($id, $mode, $action)  		'POST_SUBJECT'			=> $post_info['post_subject'],  		'POST_DATE'				=> $user->format_date($post_info['post_time']),  		'POST_IP'				=> $post_info['poster_ip'], -		'POST_IPADDR'			=> ($auth->acl_get('m_info', $post_info['forum_id']) && request_var('lookup', '')) ? @gethostbyaddr($post_info['poster_ip']) : '', +		'POST_IPADDR'			=> ($auth->acl_get('m_info', $post_info['forum_id']) && $request->variable('lookup', '')) ? @gethostbyaddr($post_info['poster_ip']) : '',  		'POST_ID'				=> $post_info['post_id'],  		'U_LOOKUP_IP'			=> ($auth->acl_get('m_info', $post_info['forum_id'])) ? "$url&i=$id&mode=$mode&lookup={$post_info['poster_ip']}#ip" : '', @@ -314,7 +314,7 @@ function mcp_post_details($id, $mode, $action)  	// Get IP  	if ($auth->acl_get('m_info', $post_info['forum_id']))  	{ -		$rdns_ip_num = request_var('rdns', ''); +		$rdns_ip_num = $request->variable('rdns', '');  		if ($rdns_ip_num != 'all')  		{ @@ -420,7 +420,7 @@ function mcp_post_details($id, $mode, $action)  */  function change_poster(&$post_info, $userdata)  { -	global $auth, $db, $config, $phpbb_root_path, $phpEx, $user; +	global $auth, $db, $config, $phpbb_root_path, $phpEx, $user, $phpbb_log;  	if (empty($userdata) || $userdata['user_id'] == $post_info['user_id'])  	{ @@ -519,5 +519,11 @@ function change_poster(&$post_info, $userdata)  	$post_info = $post_info[$post_id];  	// Now add log entry -	add_log('mod', $post_info['forum_id'], $post_info['topic_id'], 'LOG_MCP_CHANGE_POSTER', $post_info['topic_title'], $from_username, $to_username); +	$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_MCP_CHANGE_POSTER', false, array( +		'forum_id' => $post_info['forum_id'], +		'topic_id' => $post_info['topic_id'], +		$post_info['topic_title'], +		$from_username, +		$to_username +	));  } diff --git a/phpBB/includes/mcp/mcp_queue.php b/phpBB/includes/mcp/mcp_queue.php index 82c3bc9ab0..84db205fec 100644 --- a/phpBB/includes/mcp/mcp_queue.php +++ b/phpBB/includes/mcp/mcp_queue.php @@ -41,8 +41,8 @@ class mcp_queue  		include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx); -		$forum_id = request_var('f', 0); -		$start = request_var('start', 0); +		$forum_id = $request->variable('f', 0); +		$start = $request->variable('start', 0);  		$this->page_title = 'MCP_QUEUE'; @@ -153,9 +153,10 @@ class mcp_queue  				$user->add_lang(array('posting', 'viewtopic')); -				$post_id = request_var('p', 0); -				$topic_id = request_var('t', 0); +				$post_id = $request->variable('p', 0); +				$topic_id = $request->variable('t', 0); +				/* @var $phpbb_notifications \phpbb\notification\manager */  				$phpbb_notifications = $phpbb_container->get('notification_manager');  				if ($topic_id) @@ -318,7 +319,7 @@ class mcp_queue  					'POST_SUBJECT'			=> $post_info['post_subject'],  					'POST_DATE'				=> $user->format_date($post_info['post_time']),  					'POST_IP'				=> $post_info['poster_ip'], -					'POST_IPADDR'			=> ($auth->acl_get('m_info', $post_info['forum_id']) && request_var('lookup', '')) ? @gethostbyaddr($post_info['poster_ip']) : '', +					'POST_IPADDR'			=> ($auth->acl_get('m_info', $post_info['forum_id']) && $request->variable('lookup', '')) ? @gethostbyaddr($post_info['poster_ip']) : '',  					'POST_ID'				=> $post_info['post_id'],  					'S_FIRST_POST'			=> ($post_info['topic_first_post_id'] == $post_id), @@ -340,6 +341,8 @@ class mcp_queue  				$topic_id = $request->variable('t', 0);  				$forum_info = array(); + +				/* @var $pagination \phpbb\pagination */  				$pagination = $phpbb_container->get('pagination');  				if ($topic_id) @@ -617,7 +620,7 @@ class mcp_queue  	static public function approve_posts($action, $post_id_list, $id, $mode)  	{  		global $db, $template, $user, $config, $request, $phpbb_container, $phpbb_dispatcher; -		global $phpEx, $phpbb_root_path; +		global $phpEx, $phpbb_root_path, $phpbb_log;  		if (!phpbb_check_ids($post_id_list, POSTS_TABLE, 'post_id', array('m_approve')))  		{ @@ -679,6 +682,7 @@ class mcp_queue  				);  			} +			/* @var $phpbb_content_visibility \phpbb\content_visibility */  			$phpbb_content_visibility = $phpbb_container->get('content.visibility');  			foreach ($topic_info as $topic_id => $topic_data)  			{ @@ -687,12 +691,17 @@ class mcp_queue  			foreach ($approve_log as $log_data)  			{ -				add_log('mod', $log_data['forum_id'], $log_data['topic_id'], 'LOG_POST_' . strtoupper($action) . 'D', $log_data['post_subject']); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_POST_' . strtoupper($action) . 'D', false, array( +					'forum_id' => $log_data['forum_id'], +					'topic_id' => $log_data['topic_id'], +					$log_data['post_subject'] +				));  			}  			// Only send out the mails, when the posts are being approved  			if ($action == 'approve')  			{ +				/* @var $phpbb_notifications \phpbb\notification\manager */  				$phpbb_notifications = $phpbb_container->get('notification_manager');  				// Handle notifications @@ -863,7 +872,7 @@ class mcp_queue  	*/  	static public function approve_topics($action, $topic_id_list, $id, $mode)  	{ -		global $db, $template, $user, $config; +		global $db, $template, $user, $config, $phpbb_log;  		global $phpEx, $phpbb_root_path, $request, $phpbb_container, $phpbb_dispatcher;  		if (!phpbb_check_ids($topic_id_list, TOPICS_TABLE, 'topic_id', array('m_approve'))) @@ -890,6 +899,7 @@ class mcp_queue  		{  			$notify_poster = ($action == 'approve' && isset($_REQUEST['notify_poster'])) ? true : false; +			/* @var $phpbb_content_visibility \phpbb\content_visibility */  			$phpbb_content_visibility = $phpbb_container->get('content.visibility');  			$first_post_ids = array(); @@ -914,7 +924,11 @@ class mcp_queue  			foreach ($approve_log as $log_data)  			{ -				add_log('mod', $log_data['forum_id'], $log_data['topic_id'], 'LOG_TOPIC_' . strtoupper($action) . 'D', $log_data['topic_title']); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_TOPIC_' . strtoupper($action) . 'D', false, array( +					'forum_id' => $log_data['forum_id'], +					'topic_id' => $log_data['topic_id'], +					$log_data['topic_title'] +				));  			}  			// Only send out the mails, when the posts are being approved @@ -933,6 +947,7 @@ class mcp_queue  				$db->sql_freeresult($result);  				// Handle notifications +				/* @var $phpbb_notifications \phpbb\notification\manager */  				$phpbb_notifications = $phpbb_container->get('notification_manager');  				foreach ($topic_info as $topic_id => $topic_data) @@ -1055,7 +1070,7 @@ class mcp_queue  	static public function disapprove_posts($post_id_list, $id, $mode)  	{  		global $db, $template, $user, $config, $phpbb_container, $phpbb_dispatcher; -		global $phpEx, $phpbb_root_path, $request; +		global $phpEx, $phpbb_root_path, $request, $phpbb_log;  		if (!phpbb_check_ids($post_id_list, POSTS_TABLE, 'post_id', array('m_approve')))  		{ @@ -1204,16 +1219,28 @@ class mcp_queue  					if ($is_disapproving)  					{  						$l_log_message = ($log_data['type'] == 'topic') ? 'LOG_TOPIC_DISAPPROVED' : 'LOG_POST_DISAPPROVED'; -						add_log('mod', $log_data['forum_id'], $log_data['topic_id'], $l_log_message, $log_data['post_subject'], $disapprove_reason, $log_data['post_username']); +						$phpbb_log->add('mod', $user->data['user_id'], $user->ip, $l_log_message, false, array( +							'forum_id' => $log_data['forum_id'], +							'topic_id' => $log_data['topic_id'], +							$log_data['post_subject'], +							$disapprove_reason, +							$log_data['post_username'] +						));  					}  					else  					{  						$l_log_message = ($log_data['type'] == 'topic') ? 'LOG_DELETE_TOPIC' : 'LOG_DELETE_POST'; -						add_log('mod', $log_data['forum_id'], $log_data['topic_id'], $l_log_message, $log_data['post_subject'], $log_data['post_username']); +						$phpbb_log->add('mod', $user->data['user_id'], $user->ip, $l_log_message, false, array( +							'forum_id' => $log_data['forum_id'], +							'topic_id' => $log_data['topic_id'], +							$log_data['post_subject'], +							$log_data['post_username'] +						));  					}  				}  			} +			/* @var $phpbb_notifications \phpbb\notification\manager */  			$phpbb_notifications = $phpbb_container->get('notification_manager');  			$lang_reasons = array(); diff --git a/phpBB/includes/mcp/mcp_reports.php b/phpBB/includes/mcp/mcp_reports.php index 804d48ea97..bcfbd25c0f 100644 --- a/phpBB/includes/mcp/mcp_reports.php +++ b/phpBB/includes/mcp/mcp_reports.php @@ -35,13 +35,13 @@ class mcp_reports  	function main($id, $mode)  	{ -		global $auth, $db, $user, $template, $cache; +		global $auth, $db, $user, $template, $cache, $request;  		global $config, $phpbb_root_path, $phpEx, $action, $phpbb_container, $phpbb_dispatcher;  		include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx); -		$forum_id = request_var('f', 0); -		$start = request_var('start', 0); +		$forum_id = $request->variable('f', 0); +		$start = $request->variable('start', 0);  		$this->page_title = 'MCP_REPORTS'; @@ -51,7 +51,7 @@ class mcp_reports  			case 'delete':  				include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx); -				$report_id_list = request_var('report_id_list', array(0)); +				$report_id_list = $request->variable('report_id_list', array(0));  				if (!sizeof($report_id_list))  				{ @@ -69,10 +69,10 @@ class mcp_reports  				$user->add_lang(array('posting', 'viewforum', 'viewtopic')); -				$post_id = request_var('p', 0); +				$post_id = $request->variable('p', 0);  				// closed reports are accessed by report id -				$report_id = request_var('r', 0); +				$report_id = $request->variable('r', 0);  				$sql = 'SELECT r.post_id, r.user_id, r.report_id, r.report_closed, report_time, r.report_text, r.reported_post_text, r.reported_post_uid, r.reported_post_bitfield, r.reported_post_enable_magic_url, r.reported_post_enable_smilies, r.reported_post_enable_bbcode, rr.reason_title, rr.reason_description, u.username, u.username_clean, u.user_colour  					FROM ' . REPORTS_TABLE . ' r, ' . REPORTS_REASONS_TABLE . ' rr, ' . USERS_TABLE . ' u @@ -90,6 +90,7 @@ class mcp_reports  					trigger_error('NO_REPORT');  				} +				/* @var $phpbb_notifications \phpbb\notification\manager */  				$phpbb_notifications = $phpbb_container->get('notification_manager');  				$phpbb_notifications->mark_notifications_read('notification.type.report_post', $post_id, $user->data['user_id']); @@ -239,7 +240,7 @@ class mcp_reports  					'POST_SUBJECT'			=> ($post_info['post_subject']) ? $post_info['post_subject'] : $user->lang['NO_SUBJECT'],  					'POST_DATE'				=> $user->format_date($post_info['post_time']),  					'POST_IP'				=> $post_info['poster_ip'], -					'POST_IPADDR'			=> ($auth->acl_get('m_info', $post_info['forum_id']) && request_var('lookup', '')) ? @gethostbyaddr($post_info['poster_ip']) : '', +					'POST_IPADDR'			=> ($auth->acl_get('m_info', $post_info['forum_id']) && $request->variable('lookup', '')) ? @gethostbyaddr($post_info['poster_ip']) : '',  					'POST_ID'				=> $post_info['post_id'],  					'U_LOOKUP_IP'			=> ($auth->acl_get('m_info', $post_info['forum_id'])) ? $this->u_action . '&r=' . $report_id . '&p=' . $post_id . '&f=' . $forum_id . '&lookup=' . $post_info['poster_ip'] . '#ip' : '', @@ -251,7 +252,7 @@ class mcp_reports  			case 'reports':  			case 'reports_closed': -				$topic_id = request_var('t', 0); +				$topic_id = $request->variable('t', 0);  				$forum_info = array();  				$forum_list_reports = get_forum_list('m_report', false, true); @@ -323,9 +324,10 @@ class mcp_reports  					$forum_list = array($forum_id);  				} +				/* @var $pagination \phpbb\pagination */ +				$pagination = $phpbb_container->get('pagination');  				$forum_list[] = 0;  				$forum_data = array(); -				$pagination = $phpbb_container->get('pagination');  				$forum_options = '<option value="0"' . (($forum_id == 0) ? ' selected="selected"' : '') . '>' . $user->lang['ALL_FORUMS'] . '</option>';  				foreach ($forum_list_reports as $row) @@ -471,7 +473,7 @@ class mcp_reports  */  function close_report($report_id_list, $mode, $action, $pm = false)  { -	global $db, $template, $user, $config, $auth; +	global $db, $template, $user, $config, $auth, $phpbb_log, $request;  	global $phpEx, $phpbb_root_path, $phpbb_container;  	$pm_where = ($pm) ? ' AND r.post_id = 0 ' : ' AND r.pm_id = 0 '; @@ -508,19 +510,19 @@ function close_report($report_id_list, $mode, $action, $pm = false)  	if ($action == 'delete' && strpos($user->data['session_page'], 'mode=report_details') !== false)  	{ -		$redirect = request_var('redirect', build_url(array('mode', 'r', 'quickmod')) . '&mode=reports'); +		$redirect = $request->variable('redirect', build_url(array('mode', 'r', 'quickmod')) . '&mode=reports');  	}  	else if ($action == 'delete' && strpos($user->data['session_page'], 'mode=pm_report_details') !== false)  	{ -		$redirect = request_var('redirect', build_url(array('mode', 'r', 'quickmod')) . '&mode=pm_reports'); +		$redirect = $request->variable('redirect', build_url(array('mode', 'r', 'quickmod')) . '&mode=pm_reports');  	} -	else if ($action == 'close' && !request_var('r', 0)) +	else if ($action == 'close' && !$request->variable('r', 0))  	{ -		$redirect = request_var('redirect', build_url(array('mode', 'p', 'quickmod')) . '&mode=' . $module); +		$redirect = $request->variable('redirect', build_url(array('mode', 'p', 'quickmod')) . '&mode=' . $module);  	}  	else  	{ -		$redirect = request_var('redirect', build_url(array('quickmod'))); +		$redirect = $request->variable('redirect', build_url(array('quickmod')));  	}  	$success_msg = '';  	$forum_ids = array(); @@ -645,18 +647,27 @@ function close_report($report_id_list, $mode, $action, $pm = false)  		}  		unset($close_report_posts, $close_report_topics); +		/* @var $phpbb_notifications \phpbb\notification\manager */  		$phpbb_notifications = $phpbb_container->get('notification_manager');  		foreach ($reports as $report)  		{  			if ($pm)  			{ -				add_log('mod', 0, 0, 'LOG_PM_REPORT_' .  strtoupper($action) . 'D', $post_info[$report['pm_id']]['message_subject']); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_PM_REPORT_' .  strtoupper($action) . 'D', false, array( +					'forum_id' => 0, +					'topic_id' => 0, +					$post_info[$report['pm_id']]['message_subject'] +				));  				$phpbb_notifications->delete_notifications('notification.type.report_pm', $report['pm_id']);  			}  			else  			{ -				add_log('mod', $post_info[$report['post_id']]['forum_id'], $post_info[$report['post_id']]['topic_id'], 'LOG_REPORT_' .  strtoupper($action) . 'D', $post_info[$report['post_id']]['post_subject']); +				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_REPORT_' .  strtoupper($action) . 'D', false, array( +					'forum_id' => $post_info[$report['post_id']]['forum_id'], +					'topic_id' => $post_info[$report['post_id']]['topic_id'], +					$post_info[$report['post_id']]['post_subject'] +				));  				$phpbb_notifications->delete_notifications('notification.type.report_post', $report['post_id']);  			}  		} @@ -709,7 +720,7 @@ function close_report($report_id_list, $mode, $action, $pm = false)  		confirm_box(false, $user->lang[strtoupper($action) . "_{$pm_prefix}REPORT" . ((sizeof($report_id_list) == 1) ? '' : 'S') . '_CONFIRM'], $s_hidden_fields);  	} -	$redirect = request_var('redirect', "index.$phpEx"); +	$redirect = $request->variable('redirect', "index.$phpEx");  	$redirect = reapply_sid($redirect);  	if (!$success_msg) diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php index 8347830d0f..66bcdad72c 100644 --- a/phpBB/includes/mcp/mcp_topic.php +++ b/phpBB/includes/mcp/mcp_topic.php @@ -24,15 +24,16 @@ if (!defined('IN_PHPBB'))  */  function mcp_topic_view($id, $mode, $action)  { -	global $phpEx, $phpbb_root_path, $config; +	global $phpEx, $phpbb_root_path, $config, $request;  	global $template, $db, $user, $auth, $cache, $phpbb_container, $phpbb_dispatcher;  	$url = append_sid("{$phpbb_root_path}mcp.$phpEx?" . phpbb_extra_url()); -	$user->add_lang('viewtopic'); +	/* @var $pagination \phpbb\pagination */  	$pagination = $phpbb_container->get('pagination'); +	$user->add_lang('viewtopic'); -	$topic_id = request_var('t', 0); +	$topic_id = $request->variable('t', 0);  	$topic_info = phpbb_get_topic_data(array($topic_id), false, true);  	if (!sizeof($topic_info)) @@ -43,16 +44,16 @@ function mcp_topic_view($id, $mode, $action)  	$topic_info = $topic_info[$topic_id];  	// Set up some vars -	$icon_id		= request_var('icon', 0); -	$subject		= utf8_normalize_nfc(request_var('subject', '', true)); -	$start			= request_var('start', 0); -	$sort_days_old	= request_var('st_old', 0); -	$forum_id		= request_var('f', 0); -	$to_topic_id	= request_var('to_topic_id', 0); -	$to_forum_id	= request_var('to_forum_id', 0); +	$icon_id		= $request->variable('icon', 0); +	$subject		= $request->variable('subject', '', true); +	$start			= $request->variable('start', 0); +	$sort_days_old	= $request->variable('st_old', 0); +	$forum_id		= $request->variable('f', 0); +	$to_topic_id	= $request->variable('to_topic_id', 0); +	$to_forum_id	= $request->variable('to_forum_id', 0);  	$sort			= isset($_POST['sort']) ? true : false; -	$submitted_id_list	= request_var('post_ids', array(0)); -	$checked_ids = $post_id_list = request_var('post_id_list', array(0)); +	$submitted_id_list	= $request->variable('post_ids', array(0)); +	$checked_ids = $post_id_list = $request->variable('post_id_list', array(0));  	// Resync Topic?  	if ($action == 'resync') @@ -116,15 +117,16 @@ function mcp_topic_view($id, $mode, $action)  	$sort_by_sql = $sort_order_sql = array();  	phpbb_mcp_sorting('viewtopic', $sort_days, $sort_key, $sort_dir, $sort_by_sql, $sort_order_sql, $total, $topic_info['forum_id'], $topic_id, $where_sql); -	$limit_time_sql = ($sort_days) ? 'AND p.post_time >= ' . (time() - ($sort_days * 86400)) : ''; +	/* @var $phpbb_content_visibility \phpbb\content_visibility */  	$phpbb_content_visibility = $phpbb_container->get('content.visibility'); +	$limit_time_sql = ($sort_days) ? 'AND p.post_time >= ' . (time() - ($sort_days * 86400)) : '';  	if ($total == -1)  	{  		$total = $phpbb_content_visibility->get_count('topic_posts', $topic_info, $topic_info['forum_id']);  	} -	$posts_per_page = max(0, request_var('posts_per_page', intval($config['posts_per_page']))); +	$posts_per_page = max(0, $request->variable('posts_per_page', intval($config['posts_per_page'])));  	if ($posts_per_page == 0)  	{  		$posts_per_page = $total; @@ -382,11 +384,11 @@ function mcp_topic_view($id, $mode, $action)  */  function split_topic($action, $topic_id, $to_forum_id, $subject)  { -	global $db, $template, $user, $phpEx, $phpbb_root_path, $auth, $config; +	global $db, $template, $user, $phpEx, $phpbb_root_path, $auth, $config, $phpbb_log, $request; -	$post_id_list	= request_var('post_id_list', array(0)); -	$forum_id		= request_var('forum_id', 0); -	$start			= request_var('start', 0); +	$post_id_list	= $request->variable('post_id_list', array(0)); +	$forum_id		= $request->variable('forum_id', 0); +	$start			= $request->variable('start', 0);  	if (!sizeof($post_id_list))  	{ @@ -440,7 +442,7 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)  		return;  	} -	$redirect = request_var('redirect', build_url(array('quickmod'))); +	$redirect = $request->variable('redirect', build_url(array('quickmod')));  	$s_hidden_fields = build_hidden_fields(array(  		'i'				=> 'main', @@ -453,7 +455,7 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)  		'redirect'		=> $redirect,  		'subject'		=> $subject,  		'to_forum_id'	=> $to_forum_id, -		'icon'			=> request_var('icon', 0)) +		'icon'			=> $request->variable('icon', 0))  	);  	$success_msg = $return_link = ''; @@ -516,7 +518,7 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)  			trigger_error('NO_POST_SELECTED');  		} -		$icon_id = request_var('icon', 0); +		$icon_id = $request->variable('icon', 0);  		$sql_ary = array(  			'forum_id'			=> $to_forum_id, @@ -534,8 +536,16 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)  		$topic_info = phpbb_get_topic_data(array($topic_id));  		$topic_info = $topic_info[$topic_id]; -		add_log('mod', $to_forum_id, $to_topic_id, 'LOG_SPLIT_DESTINATION', $subject); -		add_log('mod', $forum_id, $topic_id, 'LOG_SPLIT_SOURCE', $topic_info['topic_title']); +		$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_SPLIT_DESTINATION', false, array( +			'forum_id' => $to_forum_id, +			'topic_id' => $to_topic_id, +			$subject +		)); +		$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_SPLIT_SOURCE', false, array( +			'forum_id' => $forum_id, +			'topic_id' => $topic_id, +			$topic_info['topic_title'] +		));  		// Change topic title of first post  		$sql = 'UPDATE ' . POSTS_TABLE . " @@ -589,11 +599,11 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)  		$success_msg = 'TOPIC_SPLIT_SUCCESS';  		// Update forum statistics -		set_config_count('num_topics', 1, true); +		$config->increment('num_topics', 1, false);  		// Link back to both topics  		$return_link = sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&t=' . $post_info['topic_id']) . '">', '</a>') . '<br /><br />' . sprintf($user->lang['RETURN_NEW_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $to_forum_id . '&t=' . $to_topic_id) . '">', '</a>'); -		$redirect = request_var('redirect', "{$phpbb_root_path}viewtopic.$phpEx?f=$to_forum_id&t=$to_topic_id"); +		$redirect = $request->variable('redirect', "{$phpbb_root_path}viewtopic.$phpEx?f=$to_forum_id&t=$to_topic_id");  		$redirect = reapply_sid($redirect);  		meta_refresh(3, $redirect); @@ -610,7 +620,7 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)  */  function merge_posts($topic_id, $to_topic_id)  { -	global $db, $template, $user, $phpEx, $phpbb_root_path, $auth; +	global $db, $template, $user, $phpEx, $phpbb_root_path, $auth, $phpbb_log, $request;  	if (!$to_topic_id)  	{ @@ -636,8 +646,8 @@ function merge_posts($topic_id, $to_topic_id)  	$topic_data = $topic_data[$to_topic_id]; -	$post_id_list	= request_var('post_id_list', array(0)); -	$start			= request_var('start', 0); +	$post_id_list	= $request->variable('post_id_list', array(0)); +	$start			= $request->variable('start', 0);  	if (!sizeof($post_id_list))  	{ @@ -650,7 +660,7 @@ function merge_posts($topic_id, $to_topic_id)  		return;  	} -	$redirect = request_var('redirect', build_url(array('quickmod'))); +	$redirect = $request->variable('redirect', build_url(array('quickmod')));  	$s_hidden_fields = build_hidden_fields(array(  		'i'				=> 'main', @@ -669,7 +679,12 @@ function merge_posts($topic_id, $to_topic_id)  		$to_forum_id = $topic_data['forum_id'];  		move_posts($post_id_list, $to_topic_id, false); -		add_log('mod', $to_forum_id, $to_topic_id, 'LOG_MERGE', $topic_data['topic_title']); + +		$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_MERGE', false, array( +			'forum_id' => $to_forum_id, +			'topic_id' => $to_topic_id, +			$topic_data['topic_title'] +		));  		// Message and return links  		$success_msg = 'POSTS_MERGED_SUCCESS'; @@ -708,7 +723,7 @@ function merge_posts($topic_id, $to_topic_id)  		// Link to the new topic  		$return_link .= (($return_link) ? '<br /><br />' : '') . sprintf($user->lang['RETURN_NEW_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $to_forum_id . '&t=' . $to_topic_id) . '">', '</a>'); -		$redirect = request_var('redirect', "{$phpbb_root_path}viewtopic.$phpEx?f=$to_forum_id&t=$to_topic_id"); +		$redirect = $request->variable('redirect', "{$phpbb_root_path}viewtopic.$phpEx?f=$to_forum_id&t=$to_topic_id");  		$redirect = reapply_sid($redirect);  		meta_refresh(3, $redirect); diff --git a/phpBB/includes/mcp/mcp_warn.php b/phpBB/includes/mcp/mcp_warn.php index d724b8703b..970bdc6174 100644 --- a/phpBB/includes/mcp/mcp_warn.php +++ b/phpBB/includes/mcp/mcp_warn.php @@ -35,10 +35,10 @@ class mcp_warn  	function main($id, $mode)  	{ -		global $auth, $db, $user, $template; +		global $auth, $db, $user, $template, $request;  		global $config, $phpbb_root_path, $phpEx; -		$action = request_var('action', array('' => '')); +		$action = $request->variable('action', array('' => ''));  		if (is_array($action))  		{ @@ -132,15 +132,16 @@ class mcp_warn  	function mcp_warn_list_view($action)  	{  		global $phpEx, $phpbb_root_path, $config, $phpbb_container; -		global $template, $db, $user, $auth; +		global $template, $db, $user, $auth, $request; -		$user->add_lang('memberlist'); +		/* @var $pagination \phpbb\pagination */  		$pagination = $phpbb_container->get('pagination'); +		$user->add_lang('memberlist'); -		$start	= request_var('start', 0); -		$st		= request_var('st', 0); -		$sk		= request_var('sk', 'b'); -		$sd		= request_var('sd', 'd'); +		$start	= $request->variable('start', 0); +		$st		= $request->variable('st', 0); +		$sk		= $request->variable('sk', 'b'); +		$sd		= $request->variable('sd', 'd');  		$limit_days = array(0 => $user->lang['ALL_ENTRIES'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);  		$sort_by_text = array('a' => $user->lang['SORT_USERNAME'], 'b' => $user->lang['SORT_DATE'], 'c' => $user->lang['SORT_WARNINGS']); @@ -189,13 +190,13 @@ class mcp_warn  	*/  	function mcp_warn_post_view($action)  	{ -		global $phpEx, $phpbb_root_path, $config; +		global $phpEx, $phpbb_root_path, $config, $request;  		global $template, $db, $user, $auth, $phpbb_dispatcher; -		$post_id = request_var('p', 0); -		$forum_id = request_var('f', 0); +		$post_id = $request->variable('p', 0); +		$forum_id = $request->variable('f', 0);  		$notify = (isset($_REQUEST['notify_user'])) ? true : false; -		$warning = utf8_normalize_nfc(request_var('warning', '', true)); +		$warning = $request->variable('warning', '', true);  		$sql = 'SELECT u.*, p.*  			FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . " u @@ -369,13 +370,13 @@ class mcp_warn  	*/  	function mcp_warn_user_view($action)  	{ -		global $phpEx, $phpbb_root_path, $config, $module; +		global $phpEx, $phpbb_root_path, $config, $module, $request;  		global $template, $db, $user, $auth, $phpbb_dispatcher; -		$user_id = request_var('u', 0); -		$username = request_var('username', '', true); +		$user_id = $request->variable('u', 0); +		$username = $request->variable('username', '', true);  		$notify = (isset($_REQUEST['notify_user'])) ? true : false; -		$warning = utf8_normalize_nfc(request_var('warning', '', true)); +		$warning = $request->variable('warning', '', true);  		$sql_where = ($user_id) ? "user_id = $user_id" : "username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'"; @@ -522,7 +523,7 @@ class mcp_warn  */  function add_warning($user_row, $warning, $send_pm = true, $post_id = 0)  { -	global $phpEx, $phpbb_root_path, $config; +	global $phpEx, $phpbb_root_path, $config, $phpbb_log;  	global $template, $db, $user, $auth;  	if ($send_pm) @@ -556,8 +557,11 @@ function add_warning($user_row, $warning, $send_pm = true, $post_id = 0)  		submit_pm('post', $user->lang('WARNING_PM_SUBJECT'), $pm_data, false);  	} -	add_log('admin', 'LOG_USER_WARNING', $user_row['username']); -	$log_id = add_log('user', $user_row['user_id'], 'LOG_USER_WARNING_BODY', $warning); +	$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_WARNING', false, array($user_row['username'])); +	$log_id = $phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_WARNING_BODY', false, array( +		'reportee_id' => $user_row['user_id'], +		$warning +	));  	$sql_ary = array(  		'user_id'		=> $user_row['user_id'], @@ -582,5 +586,9 @@ function add_warning($user_row, $warning, $send_pm = true, $post_id = 0)  	$row = $db->sql_fetchrow($result);  	$db->sql_freeresult($result); -	add_log('mod', $row['forum_id'], $row['topic_id'], 'LOG_USER_WARNING', $user_row['username']); +	$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_USER_WARNING', false, array( +		'forum_id' => $row['forum_id'], +		'topic_id' => $row['topic_id'], +		$user_row['username'] +	));  } diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index 04a2726d22..ccb953adbe 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -1475,7 +1475,7 @@ class parse_message extends bbcode_firstpass  		$error = array();  		$num_attachments = sizeof($this->attachment_data); -		$this->filename_data['filecomment'] = utf8_normalize_nfc(request_var('filecomment', '', true)); +		$this->filename_data['filecomment'] = $request->variable('filecomment', '', true);  		$upload = $request->file($form_name);  		$upload_file = (!empty($upload) && $upload['name'] !== 'none' && trim($upload['name'])); @@ -1483,7 +1483,7 @@ class parse_message extends bbcode_firstpass  		$delete_file	= (isset($_POST['delete_file'])) ? true : false;  		// First of all adjust comments if changed -		$actual_comment_list = utf8_normalize_nfc(request_var('comment_list', array(''), true)); +		$actual_comment_list = $request->variable('comment_list', array(''), true);  		foreach ($actual_comment_list as $comment_key => $comment)  		{ @@ -1569,7 +1569,7 @@ class parse_message extends bbcode_firstpass  			{  				include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx); -				$index = array_keys(request_var('delete_file', array(0 => 0))); +				$index = array_keys($request->variable('delete_file', array(0 => 0)));  				$index = (!empty($index)) ? $index[0] : false;  				if ($index !== false && !empty($this->attachment_data[$index])) @@ -1695,7 +1695,7 @@ class parse_message extends bbcode_firstpass  		global $user, $db, $phpbb_root_path, $phpEx, $config;  		global $request; -		$this->filename_data['filecomment'] = utf8_normalize_nfc(request_var('filecomment', '', true)); +		$this->filename_data['filecomment'] = $request->variable('filecomment', '', true);  		$attachment_data = $request->variable('attachment_data', array(0 => array('' => '')), true, \phpbb\request\request_interface::POST);  		$this->attachment_data = array(); diff --git a/phpBB/includes/questionnaire/questionnaire.php b/phpBB/includes/questionnaire/questionnaire.php index 63ea432863..8fe93735ee 100644 --- a/phpBB/includes/questionnaire/questionnaire.php +++ b/phpBB/includes/questionnaire/questionnaire.php @@ -230,7 +230,7 @@ class phpbb_questionnaire_phpbb_data_provider  		if (empty($config['questionnaire_unique_id']))  		{  			$this->unique_id = unique_id(); -			set_config('questionnaire_unique_id', $this->unique_id); +			$config->set('questionnaire_unique_id', $this->unique_id);  		}  		else  		{ diff --git a/phpBB/includes/startup.php b/phpBB/includes/startup.php index 2885c80541..c90fd79366 100644 --- a/phpBB/includes/startup.php +++ b/phpBB/includes/startup.php @@ -19,10 +19,6 @@ if (!defined('IN_PHPBB'))  }  // Report all errors, except notices and deprecation messages -if (!defined('E_DEPRECATED')) -{ -	define('E_DEPRECATED', 8192); -}  $level = E_ALL & ~E_NOTICE & ~E_DEPRECATED;  error_reporting($level); @@ -105,33 +101,21 @@ else  	define('STRIP', (get_magic_quotes_gpc()) ? true : false);  } -// Prevent date/time functions from throwing E_WARNING on PHP 5.3 by setting a default timezone -if (function_exists('date_default_timezone_set') && function_exists('date_default_timezone_get')) -{ -	// For PHP 5.1.0 the date/time functions have been rewritten -	// and setting a timezone is required prior to calling any date/time function. - -	// Since PHP 5.2.0 calls to date/time functions without having a timezone set -	// result in E_STRICT errors being thrown. -	// Note: We already exclude E_STRICT errors -	// (to be exact: they are not included in E_ALL in PHP 5.2) - -	// In PHP 5.3.0 the error level has been raised to E_WARNING which causes problems -	// because we show E_WARNING errors and do not set a default timezone. -	// This is because we have our own timezone handling and work in UTC only anyway. +// In PHP 5.3.0 the error level has been raised to E_WARNING which causes problems +// because we show E_WARNING errors and do not set a default timezone. +// This is because we have our own timezone handling and work in UTC only anyway. -	// So what we basically want to do is set our timezone to UTC, -	// but we don't know what other scripts (such as bridges) are involved, -	// so we check whether a timezone is already set by calling date_default_timezone_get(). +// So what we basically want to do is set our timezone to UTC, +// but we don't know what other scripts (such as bridges) are involved, +// so we check whether a timezone is already set by calling date_default_timezone_get(). -	// Unfortunately, date_default_timezone_get() itself might throw E_WARNING -	// if no timezone has been set, so we have to keep it quiet with @. +// Unfortunately, date_default_timezone_get() itself might throw E_WARNING +// if no timezone has been set, so we have to keep it quiet with @. -	// date_default_timezone_get() tries to guess the correct timezone first -	// and then falls back to UTC when everything fails. -	// We just set the timezone to whatever date_default_timezone_get() returns. -	date_default_timezone_set(@date_default_timezone_get()); -} +// date_default_timezone_get() tries to guess the correct timezone first +// and then falls back to UTC when everything fails. +// We just set the timezone to whatever date_default_timezone_get() returns. +date_default_timezone_set(@date_default_timezone_get());  // Autoloading of dependencies.  // Three options are supported: @@ -168,5 +152,4 @@ else  	require($phpbb_root_path . 'vendor/autoload.php');  } -$starttime = explode(' ', microtime()); -$starttime = $starttime[1] + $starttime[0]; +$starttime = microtime(true); diff --git a/phpBB/includes/ucp/info/ucp_attachments.php b/phpBB/includes/ucp/info/ucp_attachments.php index 2e20106f5c..96e7956db9 100644 --- a/phpBB/includes/ucp/info/ucp_attachments.php +++ b/phpBB/includes/ucp/info/ucp_attachments.php @@ -18,7 +18,6 @@ class ucp_attachments_info  		return array(  			'filename'	=> 'ucp_attachments',  			'title'		=> 'UCP_ATTACHMENTS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'attachments'	=> array('title' => 'UCP_MAIN_ATTACHMENTS', 'auth' => 'acl_u_attach', 'cat' => array('UCP_MAIN')),  			), diff --git a/phpBB/includes/ucp/info/ucp_auth_link.php b/phpBB/includes/ucp/info/ucp_auth_link.php index 9ec4cb7b3a..57c9269c5e 100644 --- a/phpBB/includes/ucp/info/ucp_auth_link.php +++ b/phpBB/includes/ucp/info/ucp_auth_link.php @@ -18,7 +18,6 @@ class ucp_auth_link_info  		return array(  			'filename'	=> 'ucp_auth_link',  			'title'		=> 'UCP_AUTH_LINK', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'auth_link'	=> array('title' => 'UCP_AUTH_LINK_MANAGE', 'auth' => 'authmethod_oauth', 'cat' => array('UCP_PROFILE')),  			), diff --git a/phpBB/includes/ucp/info/ucp_groups.php b/phpBB/includes/ucp/info/ucp_groups.php index 6da2a4fe38..42eb285075 100644 --- a/phpBB/includes/ucp/info/ucp_groups.php +++ b/phpBB/includes/ucp/info/ucp_groups.php @@ -18,7 +18,6 @@ class ucp_groups_info  		return array(  			'filename'	=> 'ucp_groups',  			'title'		=> 'UCP_USERGROUPS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'membership'	=> array('title' => 'UCP_USERGROUPS_MEMBER', 'auth' => '', 'cat' => array('UCP_USERGROUPS')),  				'manage'		=> array('title' => 'UCP_USERGROUPS_MANAGE', 'auth' => '', 'cat' => array('UCP_USERGROUPS')), diff --git a/phpBB/includes/ucp/info/ucp_main.php b/phpBB/includes/ucp/info/ucp_main.php index de8e7d5602..e967b8445f 100644 --- a/phpBB/includes/ucp/info/ucp_main.php +++ b/phpBB/includes/ucp/info/ucp_main.php @@ -18,7 +18,6 @@ class ucp_main_info  		return array(  			'filename'	=> 'ucp_main',  			'title'		=> 'UCP_MAIN', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'front'			=> array('title' => 'UCP_MAIN_FRONT', 'auth' => '', 'cat' => array('UCP_MAIN')),  				'subscribed'	=> array('title' => 'UCP_MAIN_SUBSCRIBED', 'auth' => '', 'cat' => array('UCP_MAIN')), diff --git a/phpBB/includes/ucp/info/ucp_notifications.php b/phpBB/includes/ucp/info/ucp_notifications.php index 0cc011d96e..0f6a7a8d71 100644 --- a/phpBB/includes/ucp/info/ucp_notifications.php +++ b/phpBB/includes/ucp/info/ucp_notifications.php @@ -18,7 +18,6 @@ class ucp_notifications_info  		return array(  			'filename'	=> 'ucp_notifications',  			'title'		=> 'UCP_NOTIFICATION_OPTIONS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'notification_options'		=> array('title' => 'UCP_NOTIFICATION_OPTIONS', 'auth' => '', 'cat' => array('UCP_PREFS')),  				'notification_list'			=> array('title' => 'UCP_NOTIFICATION_LIST', 'auth' => '', 'cat' => array('UCP_MAIN')), diff --git a/phpBB/includes/ucp/info/ucp_pm.php b/phpBB/includes/ucp/info/ucp_pm.php index 6aa1669cb6..26bd670fc5 100644 --- a/phpBB/includes/ucp/info/ucp_pm.php +++ b/phpBB/includes/ucp/info/ucp_pm.php @@ -18,7 +18,6 @@ class ucp_pm_info  		return array(  			'filename'	=> 'ucp_pm',  			'title'		=> 'UCP_PM', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'view'		=> array('title' => 'UCP_PM_VIEW', 'auth' => 'cfg_allow_privmsg', 'display' => false, 'cat' => array('UCP_PM')),  				'compose'	=> array('title' => 'UCP_PM_COMPOSE', 'auth' => 'cfg_allow_privmsg', 'cat' => array('UCP_PM')), diff --git a/phpBB/includes/ucp/info/ucp_prefs.php b/phpBB/includes/ucp/info/ucp_prefs.php index 5c2d29ac73..4793aa2649 100644 --- a/phpBB/includes/ucp/info/ucp_prefs.php +++ b/phpBB/includes/ucp/info/ucp_prefs.php @@ -18,7 +18,6 @@ class ucp_prefs_info  		return array(  			'filename'	=> 'ucp_prefs',  			'title'		=> 'UCP_PREFS', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'personal'	=> array('title' => 'UCP_PREFS_PERSONAL', 'auth' => '', 'cat' => array('UCP_PREFS')),  				'post'		=> array('title' => 'UCP_PREFS_POST', 'auth' => '', 'cat' => array('UCP_PREFS')), diff --git a/phpBB/includes/ucp/info/ucp_profile.php b/phpBB/includes/ucp/info/ucp_profile.php index 919de99a96..fc2792224d 100644 --- a/phpBB/includes/ucp/info/ucp_profile.php +++ b/phpBB/includes/ucp/info/ucp_profile.php @@ -18,7 +18,6 @@ class ucp_profile_info  		return array(  			'filename'	=> 'ucp_profile',  			'title'		=> 'UCP_PROFILE', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'profile_info'	=> array('title' => 'UCP_PROFILE_PROFILE_INFO', 'auth' => 'acl_u_chgprofileinfo', 'cat' => array('UCP_PROFILE')),  				'signature'		=> array('title' => 'UCP_PROFILE_SIGNATURE', 'auth' => 'acl_u_sig', 'cat' => array('UCP_PROFILE')), diff --git a/phpBB/includes/ucp/info/ucp_zebra.php b/phpBB/includes/ucp/info/ucp_zebra.php index 99d4a4f4c0..69274c2866 100644 --- a/phpBB/includes/ucp/info/ucp_zebra.php +++ b/phpBB/includes/ucp/info/ucp_zebra.php @@ -18,7 +18,6 @@ class ucp_zebra_info  		return array(  			'filename'	=> 'ucp_zebra',  			'title'		=> 'UCP_ZEBRA', -			'version'	=> '1.0.0',  			'modes'		=> array(  				'friends'		=> array('title' => 'UCP_ZEBRA_FRIENDS', 'auth' => '', 'cat' => array('UCP_ZEBRA')),  				'foes'			=> array('title' => 'UCP_ZEBRA_FOES', 'auth' => '', 'cat' => array('UCP_ZEBRA')), diff --git a/phpBB/includes/ucp/ucp_activate.php b/phpBB/includes/ucp/ucp_activate.php index 6e357b260a..f535073434 100644 --- a/phpBB/includes/ucp/ucp_activate.php +++ b/phpBB/includes/ucp/ucp_activate.php @@ -29,11 +29,11 @@ class ucp_activate  	function main($id, $mode)  	{ -		global $config, $phpbb_root_path, $phpEx; -		global $db, $user, $auth, $template, $phpbb_container; +		global $config, $phpbb_root_path, $phpEx, $request; +		global $db, $user, $auth, $template, $phpbb_container, $phpbb_log; -		$user_id = request_var('u', 0); -		$key = request_var('k', ''); +		$user_id = $request->variable('u', 0); +		$key = $request->variable('k', '');  		$sql = 'SELECT user_id, username, user_type, user_email, user_newpasswd, user_lang, user_notify_type, user_actkey, user_inactive_reason  			FROM ' . USERS_TABLE . " @@ -86,7 +86,10 @@ class ucp_activate  				WHERE user_id = ' . $user_row['user_id'];  			$db->sql_query($sql); -			add_log('user', $user_row['user_id'], 'LOG_USER_NEW_PASSWORD', $user_row['username']); +			$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_NEW_PASSWORD', false, array( +				'reportee_id' => $user_row['user_id'], +				$user_row['username'] +			));  		}  		if (!$update_password) @@ -101,15 +104,19 @@ class ucp_activate  			$db->sql_query($sql);  			// Create the correct logs -			add_log('user', $user_row['user_id'], 'LOG_USER_ACTIVE_USER'); +			$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_ACTIVE_USER', false, array( +				'reportee_id' => $user_row['user_id'] +			)); +  			if ($auth->acl_get('a_user'))  			{ -				add_log('admin', 'LOG_USER_ACTIVE', $user_row['username']); +				$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_ACTIVE', false, array($user_row['username']));  			}  		}  		if ($config['require_activation'] == USER_ACTIVATION_ADMIN && !$update_password)  		{ +			/* @var $phpbb_notifications \phpbb\notification\manager */  			$phpbb_notifications = $phpbb_container->get('notification_manager');  			$phpbb_notifications->delete_notifications('notification.type.admin_activate_user', $user_row['user_id']); diff --git a/phpBB/includes/ucp/ucp_attachments.php b/phpBB/includes/ucp/ucp_attachments.php index 42724209aa..639f308091 100644 --- a/phpBB/includes/ucp/ucp_attachments.php +++ b/phpBB/includes/ucp/ucp_attachments.php @@ -29,15 +29,15 @@ class ucp_attachments  	function main($id, $mode)  	{ -		global $template, $user, $db, $config, $phpEx, $phpbb_root_path, $phpbb_container; +		global $template, $user, $db, $config, $phpEx, $phpbb_root_path, $phpbb_container, $request; -		$start		= request_var('start', 0); -		$sort_key	= request_var('sk', 'a'); -		$sort_dir	= request_var('sd', 'a'); +		$start		= $request->variable('start', 0); +		$sort_key	= $request->variable('sk', 'a'); +		$sort_dir	= $request->variable('sd', 'a');  		$delete		= (isset($_POST['delete'])) ? true : false;  		$confirm	= (isset($_POST['confirm'])) ? true : false; -		$delete_ids	= array_keys(request_var('attachment', array(0))); +		$delete_ids	= array_keys($request->variable('attachment', array(0)));  		if ($delete && sizeof($delete_ids))  		{ @@ -123,6 +123,7 @@ class ucp_attachments  		$db->sql_freeresult($result);  		// Ensure start is a valid value +		/* @var $pagination \phpbb\pagination */  		$pagination = $phpbb_container->get('pagination');  		$start = $pagination->validate_start($start, $config['topics_per_page'], $num_attachments); diff --git a/phpBB/includes/ucp/ucp_auth_link.php b/phpBB/includes/ucp/ucp_auth_link.php index 748f0fdec2..08aacdef3a 100644 --- a/phpBB/includes/ucp/ucp_auth_link.php +++ b/phpBB/includes/ucp/ucp_auth_link.php @@ -38,6 +38,7 @@ class ucp_auth_link  		$error = array(); +		/* @var $provider_collection \phpbb\auth\provider_collection */  		$provider_collection = $phpbb_container->get('auth.provider_collection');  		$auth_provider = $provider_collection->get_provider(); diff --git a/phpBB/includes/ucp/ucp_confirm.php b/phpBB/includes/ucp/ucp_confirm.php index 7392f8dea8..403f7d37d0 100644 --- a/phpBB/includes/ucp/ucp_confirm.php +++ b/phpBB/includes/ucp/ucp_confirm.php @@ -36,10 +36,10 @@ class ucp_confirm  	function main($id, $mode)  	{ -		global $db, $user, $phpbb_root_path, $config, $phpEx, $phpbb_container; +		global $db, $user, $phpbb_root_path, $config, $phpEx, $phpbb_container, $request;  		$captcha = $phpbb_container->get('captcha.factory')->get_instance($config['captcha_plugin']); -		$captcha->init(request_var('type', 0)); +		$captcha->init($request->variable('type', 0));  		$captcha->execute();  		garbage_collection(); diff --git a/phpBB/includes/ucp/ucp_groups.php b/phpBB/includes/ucp/ucp_groups.php index b9606945b4..3228ffb469 100644 --- a/phpBB/includes/ucp/ucp_groups.php +++ b/phpBB/includes/ucp/ucp_groups.php @@ -30,13 +30,13 @@ class ucp_groups  	{  		global $config, $phpbb_root_path, $phpEx, $phpbb_admin_path;  		global $db, $user, $auth, $cache, $template; -		global $request, $phpbb_container; +		global $request, $phpbb_container, $phpbb_log;  		$user->add_lang('groups');  		$return_page = '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '">', '</a>'); -		$mark_ary	= request_var('mark', array(0)); +		$mark_ary	= $request->variable('mark', array(0));  		$submit		= $request->variable('submit', false, false, \phpbb\request\request_interface::POST);  		$delete		= $request->variable('delete', false, false, \phpbb\request\request_interface::POST);  		$error = $data = array(); @@ -49,8 +49,8 @@ class ucp_groups  				if ($submit || isset($_POST['change_default']))  				{ -					$action = (isset($_POST['change_default'])) ? 'change_default' : request_var('action', ''); -					$group_id = ($action == 'change_default') ? request_var('default', 0) : request_var('selected', 0); +					$action = (isset($_POST['change_default'])) ? 'change_default' : $request->variable('action', ''); +					$group_id = ($action == 'change_default') ? $request->variable('default', 0) : $request->variable('selected', 0);  					if (!$group_id)  					{ @@ -99,7 +99,10 @@ class ucp_groups  							{  								group_user_attributes('default', $group_id, $user->data['user_id']); -								add_log('user', $user->data['user_id'], 'LOG_USER_GROUP_CHANGE', sprintf($user->lang['USER_GROUP_CHANGE'], $group_row[$user->data['group_id']]['group_name'], $group_row[$group_id]['group_name'])); +								$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_GROUP_CHANGE', false, array( +									'reportee_id' => $user->data['user_id'], +									sprintf($user->lang['USER_GROUP_CHANGE'], $group_row[$user->data['group_id']]['group_name'], $group_row[$group_id]['group_name']) +								));  								meta_refresh(3, $this->u_action);  								trigger_error($user->lang['CHANGED_DEFAULT_GROUP'] . $return_page); @@ -146,7 +149,10 @@ class ucp_groups  							{  								group_user_del($group_id, $user->data['user_id']); -								add_log('user', $user->data['user_id'], 'LOG_USER_GROUP_RESIGN', $group_row[$group_id]['group_name']); +								$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_GROUP_RESIGN', false, array( +									'reportee_id' => $user->data['user_id'], +									$group_row[$group_id]['group_name'] +								));  								meta_refresh(3, $this->u_action);  								trigger_error($user->lang[($row['user_pending']) ? 'GROUP_RESIGNED_PENDING' : 'GROUP_RESIGNED_MEMBERSHIP'] . $return_page); @@ -202,7 +208,10 @@ class ucp_groups  									group_user_add($group_id, $user->data['user_id'], false, false, false, 0, 1);  								} -								add_log('user', $user->data['user_id'], 'LOG_USER_GROUP_JOIN' . (($group_row[$group_id]['group_type'] == GROUP_FREE) ? '' : '_PENDING'), $group_row[$group_id]['group_name']); +								$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_GROUP_JOIN' . (($group_row[$group_id]['group_type'] == GROUP_FREE) ? '' : '_PENDING'), false, array( +									'reportee_id' => $user->data['user_id'], +									$group_row[$group_id]['group_name'] +								));  								meta_refresh(3, $this->u_action);  								trigger_error($user->lang[($group_row[$group_id]['group_type'] == GROUP_FREE) ? 'GROUP_JOINED' : 'GROUP_JOINED_PENDING'] . $return_page); @@ -237,7 +246,10 @@ class ucp_groups  							{  								group_user_attributes('demote', $group_id, $user->data['user_id']); -								add_log('user', $user->data['user_id'], 'LOG_USER_GROUP_DEMOTE', $group_row[$group_id]['group_name']); +								$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_GROUP_DEMOTE', false, array( +									'reportee_id' => $user->data['user_id'], +									$group_row[$group_id]['group_name'] +								));  								meta_refresh(3, $this->u_action);  								trigger_error($user->lang['USER_GROUP_DEMOTED'] . $return_page); @@ -379,8 +391,8 @@ class ucp_groups  			case 'manage':  				$this->page_title = 'UCP_USERGROUPS_MANAGE'; -				$action		= (isset($_POST['addusers'])) ? 'addusers' : request_var('action', ''); -				$group_id	= request_var('g', 0); +				$action		= (isset($_POST['addusers'])) ? 'addusers' : $request->variable('action', ''); +				$group_id	= $request->variable('g', 0);  				include($phpbb_root_path . 'includes/functions_display.' . $phpEx); @@ -464,6 +476,7 @@ class ucp_groups  						if ($config['allow_avatar'])  						{ +							/* @var $phpbb_avatar_manager \phpbb\avatar\manager */  							$phpbb_avatar_manager = $phpbb_container->get('avatar.manager');  							$avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers(); @@ -497,20 +510,20 @@ class ucp_groups  						// Did we submit?  						if ($update)  						{ -							$group_name	= utf8_normalize_nfc(request_var('group_name', '', true)); -							$group_desc = utf8_normalize_nfc(request_var('group_desc', '', true)); -							$group_type	= request_var('group_type', GROUP_FREE); +							$group_name	= $request->variable('group_name', '', true); +							$group_desc = $request->variable('group_desc', '', true); +							$group_type	= $request->variable('group_type', GROUP_FREE); -							$allow_desc_bbcode	= request_var('desc_parse_bbcode', false); -							$allow_desc_urls	= request_var('desc_parse_urls', false); -							$allow_desc_smilies	= request_var('desc_parse_smilies', false); +							$allow_desc_bbcode	= $request->variable('desc_parse_bbcode', false); +							$allow_desc_urls	= $request->variable('desc_parse_urls', false); +							$allow_desc_smilies	= $request->variable('desc_parse_smilies', false);  							$submit_ary = array( -								'colour'		=> request_var('group_colour', ''), -								'rank'			=> request_var('group_rank', 0), +								'colour'		=> $request->variable('group_colour', ''), +								'rank'			=> $request->variable('group_rank', 0),  								'receive_pm'	=> isset($_REQUEST['group_receive_pm']) ? 1 : 0, -								'message_limit'	=> request_var('group_message_limit', 0), -								'max_recipients'=> request_var('group_max_recipients', 0), +								'message_limit'	=> $request->variable('group_message_limit', 0), +								'max_recipients'=> $request->variable('group_max_recipients', 0),  								'legend'	=> $group_row['group_legend'],  								'teampage'	=> $group_row['group_teampage'],  							); @@ -608,7 +621,7 @@ class ucp_groups  						}  						else if (!$group_id)  						{ -							$group_name = utf8_normalize_nfc(request_var('group_name', '', true)); +							$group_name = $request->variable('group_name', '', true);  							$group_desc_data = array(  								'text'			=> '',  								'allow_bbcode'	=> true, @@ -737,7 +750,7 @@ class ucp_groups  						}  						$user->add_lang(array('acp/groups', 'acp/common')); -						$start = request_var('start', 0); +						$start = $request->variable('start', 0);  						// Grab the leaders - always, on every page...  						$sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_colour, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending @@ -826,6 +839,7 @@ class ucp_groups  							$s_action_options .= '<option value="' . $option . '">' . $user->lang['GROUP_' . $lang] . '</option>';  						} +						/* @var $pagination \phpbb\pagination */  						$pagination = $phpbb_container->get('pagination');  						$base_url = $this->u_action . "&action=$action&g=$group_id";  						$start = $pagination->validate_start($start, $config['topics_per_page'], $total_members); @@ -1004,7 +1018,7 @@ class ucp_groups  						$user->add_lang(array('acp/groups', 'acp/common')); -						$names = utf8_normalize_nfc(request_var('usernames', '', true)); +						$names = $request->variable('usernames', '', true);  						if (!$group_id)  						{ @@ -1030,7 +1044,7 @@ class ucp_groups  						$name_ary = array_unique(explode("\n", $names));  						$group_name = ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name']; -						$default = request_var('default', 0); +						$default = $request->variable('default', 0);  						if (confirm_box(true))  						{ diff --git a/phpBB/includes/ucp/ucp_login_link.php b/phpBB/includes/ucp/ucp_login_link.php index bfe4804286..902fbaafcf 100644 --- a/phpBB/includes/ucp/ucp_login_link.php +++ b/phpBB/includes/ucp/ucp_login_link.php @@ -57,6 +57,7 @@ class ucp_login_link  		}  		// Use the auth_provider requested even if different from configured +		/* @var $provider_collection \phpbb\auth\provider_collection */  		$provider_collection = $phpbb_container->get('auth.provider_collection');  		$auth_provider = $provider_collection->get_provider($request->variable('auth_provider', '')); diff --git a/phpBB/includes/ucp/ucp_main.php b/phpBB/includes/ucp/ucp_main.php index a1624e78ec..036025e84e 100644 --- a/phpBB/includes/ucp/ucp_main.php +++ b/phpBB/includes/ucp/ucp_main.php @@ -219,8 +219,8 @@ class ucp_main  				{  					if (check_form_key('ucp_front_subscribed'))  					{ -						$forums = array_keys(request_var('f', array(0 => 0))); -						$topics = array_keys(request_var('t', array(0 => 0))); +						$forums = array_keys($request->variable('f', array(0 => 0))); +						$topics = array_keys($request->variable('t', array(0 => 0)));  						$msg = '';  						if (sizeof($forums) || sizeof($topics)) @@ -401,7 +401,7 @@ class ucp_main  				if (isset($_POST['unbookmark']))  				{  					$s_hidden_fields = array('unbookmark' => 1); -					$topics = (isset($_POST['t'])) ? array_keys(request_var('t', array(0 => 0))) : array(); +					$topics = (isset($_POST['t'])) ? array_keys($request->variable('t', array(0 => 0))) : array();  					$url = $this->u_action;  					if (!sizeof($topics)) @@ -457,7 +457,7 @@ class ucp_main  				{  					if (check_form_key('ucp_draft'))  					{ -						$drafts = array_keys(request_var('d', array(0 => 0))); +						$drafts = array_keys($request->variable('d', array(0 => 0)));  						if (sizeof($drafts))  						{ @@ -480,8 +480,8 @@ class ucp_main  				if ($submit && $edit)  				{ -					$draft_subject = utf8_normalize_nfc(request_var('subject', '', true)); -					$draft_message = utf8_normalize_nfc(request_var('message', '', true)); +					$draft_subject = $request->variable('subject', '', true); +					$draft_message = $request->variable('message', '', true);  					if (check_form_key('ucp_draft'))  					{  						if ($draft_message && $draft_subject) @@ -643,11 +643,12 @@ class ucp_main  	*/  	function assign_topiclist($mode = 'subscribed', $forbidden_forum_ary = array())  	{ -		global $user, $db, $template, $config, $cache, $auth, $phpbb_root_path, $phpEx, $phpbb_container; +		global $user, $db, $template, $config, $cache, $auth, $phpbb_root_path, $phpEx, $phpbb_container, $request; -		$table = ($mode == 'subscribed') ? TOPICS_WATCH_TABLE : BOOKMARKS_TABLE; -		$start = request_var('start', 0); +		/* @var $pagination \phpbb\pagination */  		$pagination = $phpbb_container->get('pagination'); +		$table = ($mode == 'subscribed') ? TOPICS_WATCH_TABLE : BOOKMARKS_TABLE; +		$start = $request->variable('start', 0);  		// Grab icons  		$icons = $cache->obtain_icons(); @@ -769,6 +770,7 @@ class ucp_main  			}  		} +		/* @var $phpbb_content_visibility \phpbb\content_visibility */  		$phpbb_content_visibility = $phpbb_container->get('content.visibility');  		foreach ($topic_list as $topic_id) diff --git a/phpBB/includes/ucp/ucp_notifications.php b/phpBB/includes/ucp/ucp_notifications.php index b0aeaba227..b778ffdf12 100644 --- a/phpBB/includes/ucp/ucp_notifications.php +++ b/phpBB/includes/ucp/ucp_notifications.php @@ -34,7 +34,10 @@ class ucp_notifications  		$form_time = $request->variable('form_time', 0);  		$form_time = ($form_time <= 0 || $form_time > time()) ? time() : $form_time; +		/* @var $phpbb_notifications \phpbb\notification\manager */  		$phpbb_notifications = $phpbb_container->get('notification_manager'); + +		/* @var $pagination \phpbb\pagination */  		$pagination = $phpbb_container->get('pagination');  		switch ($mode) diff --git a/phpBB/includes/ucp/ucp_pm.php b/phpBB/includes/ucp/ucp_pm.php index 425a56cf6c..5f24d05c8b 100644 --- a/phpBB/includes/ucp/ucp_pm.php +++ b/phpBB/includes/ucp/ucp_pm.php @@ -62,7 +62,7 @@ class ucp_pm  		$template->assign_var('S_PRIVMSGS', true);  		// Folder directly specified? -		$folder_specified = request_var('folder', ''); +		$folder_specified = $request->variable('folder', '');  		if (!in_array($folder_specified, array('inbox', 'outbox', 'sentbox')))  		{ @@ -75,7 +75,7 @@ class ucp_pm  		if (!$folder_specified)  		{ -			$mode = (!$mode) ? request_var('mode', 'view') : $mode; +			$mode = (!$mode) ? $request->variable('mode', 'view') : $mode;  		}  		else  		{ @@ -88,7 +88,7 @@ class ucp_pm  		{  			// Compose message  			case 'compose': -				$action = request_var('action', 'post'); +				$action = $request->variable('action', 'post');  				$user_folders = get_folder($user->data['user_id']); @@ -151,12 +151,12 @@ class ucp_pm  				}  				else  				{ -					$folder_id = request_var('f', PRIVMSGS_NO_BOX); -					$action = request_var('action', 'view_folder'); +					$folder_id = $request->variable('f', PRIVMSGS_NO_BOX); +					$action = $request->variable('action', 'view_folder');  				} -				$msg_id = request_var('p', 0); -				$view	= request_var('view', ''); +				$msg_id = $request->variable('p', 0); +				$view	= $request->variable('view', '');  				// View message if specified  				if ($msg_id) @@ -178,8 +178,8 @@ class ucp_pm  				// First Handle Mark actions and moving messages  				$submit_mark	= (isset($_POST['submit_mark'])) ? true : false;  				$move_pm		= (isset($_POST['move_pm'])) ? true : false; -				$mark_option	= request_var('mark_option', ''); -				$dest_folder	= request_var('dest_folder', PRIVMSGS_NO_BOX); +				$mark_option	= $request->variable('mark_option', ''); +				$dest_folder	= $request->variable('dest_folder', PRIVMSGS_NO_BOX);  				// Is moving PM triggered through mark options?  				if (!in_array($mark_option, array('mark_important', 'delete_marked')) && $submit_mark) @@ -192,8 +192,8 @@ class ucp_pm  				// Move PM  				if ($move_pm)  				{ -					$move_msg_ids	= (isset($_POST['marked_msg_id'])) ? request_var('marked_msg_id', array(0)) : array(); -					$cur_folder_id	= request_var('cur_folder_id', PRIVMSGS_NO_BOX); +					$move_msg_ids	= (isset($_POST['marked_msg_id'])) ? $request->variable('marked_msg_id', array(0)) : array(); +					$cur_folder_id	= $request->variable('cur_folder_id', PRIVMSGS_NO_BOX);  					if (move_pm($user->data['user_id'], $user->data['message_limit'], $move_msg_ids, $dest_folder, $cur_folder_id))  					{ @@ -201,7 +201,7 @@ class ucp_pm  						if ($action == 'view_message')  						{  							$msg_id		= 0; -							$folder_id	= request_var('cur_folder_id', PRIVMSGS_NO_BOX); +							$folder_id	= $request->variable('cur_folder_id', PRIVMSGS_NO_BOX);  							$action		= 'view_folder';  						}  					} @@ -215,7 +215,7 @@ class ucp_pm  				// If new messages arrived, place them into the appropriate folder  				$num_not_moved = $num_removed = 0; -				$release = request_var('release', 0); +				$release = $request->variable('release', 0);  				if ($user->data['user_new_privmsg'] && ($action == 'view_folder' || $action == 'view_message'))  				{ diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index 51018e3a5d..59952182df 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -44,14 +44,14 @@ function compose_pm($id, $mode, $action, $user_folders = array())  	add_form_key('ucp_pm_compose');  	// Grab only parameters needed here -	$to_user_id		= request_var('u', 0); -	$to_group_id	= request_var('g', 0); -	$msg_id			= request_var('p', 0); -	$draft_id		= request_var('d', 0); -	$lastclick		= request_var('lastclick', 0); +	$to_user_id		= $request->variable('u', 0); +	$to_group_id	= $request->variable('g', 0); +	$msg_id			= $request->variable('p', 0); +	$draft_id		= $request->variable('d', 0); +	$lastclick		= $request->variable('lastclick', 0);  	// Reply to all triggered (quote/reply) -	$reply_to_all	= request_var('reply_to_all', 0); +	$reply_to_all	= $request->variable('reply_to_all', 0);  	$address_list	= $request->variable('address_list', array('' => array(0 => ''))); @@ -484,8 +484,9 @@ function compose_pm($id, $mode, $action, $user_folders = array())  		$icon_id = 0;  	} -	$message_parser = new parse_message(); +	/* @var $plupload \phpbb\plupload\plupload */  	$plupload = $phpbb_container->get('plupload'); +	$message_parser = new parse_message();  	$message_parser->set_plupload($plupload);  	$message_parser->message = ($action == 'reply') ? '' : $message_text; @@ -498,7 +499,7 @@ function compose_pm($id, $mode, $action, $user_folders = array())  	if ($action == 'delete')  	{  		// Folder id has been determined by the SQL Statement -		// $folder_id = request_var('f', PRIVMSGS_NO_BOX); +		// $folder_id = $request->variable('f', PRIVMSGS_NO_BOX);  		// Do we need to confirm ?  		if (confirm_box(true)) @@ -645,9 +646,9 @@ function compose_pm($id, $mode, $action, $user_folders = array())  	// Save Draft  	if ($save && $auth->acl_get('u_savedrafts'))  	{ -		$subject = utf8_normalize_nfc(request_var('subject', '', true)); +		$subject = $request->variable('subject', '', true);  		$subject = (!$subject && $action != 'post') ? $user->lang['NEW_MESSAGE'] : $subject; -		$message = utf8_normalize_nfc(request_var('message', '', true)); +		$message = $request->variable('message', '', true);  		if ($subject && $message)  		{ @@ -741,10 +742,10 @@ function compose_pm($id, $mode, $action, $user_folders = array())  		{  			$error[] = $user->lang['FORM_INVALID'];  		} -		$subject = utf8_normalize_nfc(request_var('subject', '', true)); -		$message_parser->message = utf8_normalize_nfc(request_var('message', '', true)); +		$subject = $request->variable('subject', '', true); +		$message_parser->message = $request->variable('message', '', true); -		$icon_id			= request_var('icon', 0); +		$icon_id			= $request->variable('icon', 0);  		$enable_bbcode 		= (!$bbcode_status || isset($_POST['disable_bbcode'])) ? false : true;  		$enable_smilies		= (!$smilies_status || isset($_POST['disable_smilies'])) ? false : true; @@ -932,7 +933,7 @@ function compose_pm($id, $mode, $action, $user_folders = array())  	{  		if ($action == 'quotepost')  		{ -			$post_id = request_var('p', 0); +			$post_id = $request->variable('p', 0);  			if ($config['allow_post_links'])  			{  				$message_link = "[url=" . generate_board_url() . "/viewtopic.$phpEx?p={$post_id}#p{$post_id}]{$user->lang['SUBJECT']}{$user->lang['COLON']} {$message_subject}[/url]\n\n"; @@ -1145,6 +1146,9 @@ function compose_pm($id, $mode, $action, $user_folders = array())  	$form_enctype = (@ini_get('file_uploads') == '0' || strtolower(@ini_get('file_uploads')) == 'off' || !$config['allow_pm_attach'] || !$auth->acl_get('u_pm_attach')) ? '' : ' enctype="multipart/form-data"'; +	/** @var \phpbb\controller\helper $controller_helper */ +	$controller_helper = $phpbb_container->get('controller.helper'); +  	// Start assigning vars for main posting page ...  	$template->assign_vars(array(  		'L_POST_A'					=> $page_title, @@ -1153,7 +1157,7 @@ function compose_pm($id, $mode, $action, $user_folders = array())  		'SUBJECT'				=> (isset($message_subject)) ? $message_subject : '',  		'MESSAGE'				=> $message_text, -		'BBCODE_STATUS'			=> ($bbcode_status) ? sprintf($user->lang['BBCODE_IS_ON'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>') : sprintf($user->lang['BBCODE_IS_OFF'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>'), +		'BBCODE_STATUS'			=> $user->lang(($bbcode_status ? 'BBCODE_IS_ON' : 'BBCODE_IS_OFF'), '<a href="' . $controller_helper->route('phpbb_help_controller', array('mode' => 'bbcode')) . '">', '</a>'),  		'IMG_STATUS'			=> ($img_status) ? $user->lang['IMAGES_ARE_ON'] : $user->lang['IMAGES_ARE_OFF'],  		'FLASH_STATUS'			=> ($flash_status) ? $user->lang['FLASH_IS_ON'] : $user->lang['FLASH_IS_OFF'],  		'SMILIES_STATUS'		=> ($smilies_status) ? $user->lang['SMILIES_ARE_ON'] : $user->lang['SMILIES_ARE_OFF'], @@ -1249,13 +1253,13 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove  	}  	// Add Selected Groups -	$group_list = request_var('group_list', array(0)); +	$group_list = $request->variable('group_list', array(0));  	// Build usernames to add -	$usernames = request_var('username', '', true); +	$usernames = $request->variable('username', '', true);  	$usernames = (empty($usernames)) ? array() : array($usernames); -	$username_list = request_var('username_list', '', true); +	$username_list = $request->variable('username_list', '', true);  	if ($username_list)  	{  		$usernames = array_merge($usernames, explode("\n", $username_list)); @@ -1272,7 +1276,7 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove  		$submit = false;  		// Preview is only true if there was also a message entered -		if (request_var('message', '')) +		if ($request->variable('message', ''))  		{  			$preview = true;  		} @@ -1404,7 +1408,7 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove  }  /** -* Build the hidden field for the recipients. Needed, as the variable is not read via request_var. +* Build the hidden field for the recipients. Needed, as the variable is not read via $request->variable().  */  function build_address_field($address_list)  { diff --git a/phpBB/includes/ucp/ucp_pm_options.php b/phpBB/includes/ucp/ucp_pm_options.php index d1fc9d2c62..9c21971bf8 100644 --- a/phpBB/includes/ucp/ucp_pm_options.php +++ b/phpBB/includes/ucp/ucp_pm_options.php @@ -24,7 +24,7 @@ if (!defined('IN_PHPBB'))  */  function message_options($id, $mode, $global_privmsgs_rules, $global_rule_conditions)  { -	global $phpbb_root_path, $phpEx, $user, $template, $auth, $config, $db; +	global $phpbb_root_path, $phpEx, $user, $template, $auth, $config, $db, $request;  	$redirect_url = append_sid("{$phpbb_root_path}ucp.$phpEx", "i=pm&mode=options"); @@ -37,7 +37,7 @@ function message_options($id, $mode, $global_privmsgs_rules, $global_rule_condit  			trigger_error('FORM_INVALID');  		} -		$full_action = request_var('full_action', 0); +		$full_action = $request->variable('full_action', 0);  		$set_folder_id = 0;  		switch ($full_action) @@ -47,7 +47,7 @@ function message_options($id, $mode, $global_privmsgs_rules, $global_rule_condit  			break;  			case 2: -				$set_folder_id = request_var('full_move_to', PRIVMSGS_INBOX); +				$set_folder_id = $request->variable('full_move_to', PRIVMSGS_INBOX);  			break;  			case 3: @@ -79,7 +79,7 @@ function message_options($id, $mode, $global_privmsgs_rules, $global_rule_condit  	{  		if (check_form_key('ucp_pm_options'))  		{ -			$folder_name = utf8_normalize_nfc(request_var('foldername', '', true)); +			$folder_name = $request->variable('foldername', '', true);  			$msg = '';  			if ($folder_name) @@ -135,8 +135,8 @@ function message_options($id, $mode, $global_privmsgs_rules, $global_rule_condit  	{  		if (check_form_key('ucp_pm_options'))  		{ -			$new_folder_name = utf8_normalize_nfc(request_var('new_folder_name', '', true)); -			$rename_folder_id= request_var('rename_folder_id', 0); +			$new_folder_name = $request->variable('new_folder_name', '', true); +			$rename_folder_id= $request->variable('rename_folder_id', 0);  			if (!$new_folder_name)  			{ @@ -178,11 +178,11 @@ function message_options($id, $mode, $global_privmsgs_rules, $global_rule_condit  	// Remove Folder  	if (isset($_POST['remove_folder']))  	{ -		$remove_folder_id = request_var('remove_folder_id', 0); +		$remove_folder_id = $request->variable('remove_folder_id', 0);  		// Default to "move all messages to inbox" -		$remove_action = request_var('remove_action', 1); -		$move_to = request_var('move_to', PRIVMSGS_INBOX); +		$remove_action = $request->variable('remove_action', 1); +		$move_to = $request->variable('move_to', PRIVMSGS_INBOX);  		// Move to same folder?  		if ($remove_action == 1 && $remove_folder_id == $move_to) @@ -291,13 +291,13 @@ function message_options($id, $mode, $global_privmsgs_rules, $global_rule_condit  	{  		if (check_form_key('ucp_pm_options'))  		{ -			$check_option	= request_var('check_option', 0); -			$rule_option	= request_var('rule_option', 0); -			$cond_option	= request_var('cond_option', ''); -			$action_option	= explode('|', request_var('action_option', '')); -			$rule_string	= ($cond_option != 'none') ? utf8_normalize_nfc(request_var('rule_string', '', true)) : ''; -			$rule_user_id	= ($cond_option != 'none') ? request_var('rule_user_id', 0) : 0; -			$rule_group_id	= ($cond_option != 'none') ? request_var('rule_group_id', 0) : 0; +			$check_option	= $request->variable('check_option', 0); +			$rule_option	= $request->variable('rule_option', 0); +			$cond_option	= $request->variable('cond_option', ''); +			$action_option	= explode('|', $request->variable('action_option', '')); +			$rule_string	= ($cond_option != 'none') ? $request->variable('rule_string', '', true) : ''; +			$rule_user_id	= ($cond_option != 'none') ? $request->variable('rule_user_id', 0) : 0; +			$rule_group_id	= ($cond_option != 'none') ? $request->variable('rule_group_id', 0) : 0;  			$action = (int) $action_option[0];  			$folder_id = (int) $action_option[1]; @@ -371,7 +371,7 @@ function message_options($id, $mode, $global_privmsgs_rules, $global_rule_condit  	// Remove Rule  	if (isset($_POST['delete_rule']) && !isset($_POST['cancel']))  	{ -		$delete_id = array_keys(request_var('delete_rule', array(0 => 0))); +		$delete_id = array_keys($request->variable('delete_rule', array(0 => 0)));  		$delete_id = (!empty($delete_id[0])) ? $delete_id[0] : 0;  		if (!$delete_id) @@ -514,11 +514,11 @@ function message_options($id, $mode, $global_privmsgs_rules, $global_rule_condit  			-> CHECK_* -> RULE_* [IN $global_privmsgs_rules:CHECK_*] -> [IF $rule_conditions[RULE_*] [|text|bool|user|group|own_group]] -> ACTION_*  	*/ -	$check_option	= request_var('check_option', 0); -	$rule_option	= request_var('rule_option', 0); -	$cond_option	= request_var('cond_option', ''); -	$action_option	= request_var('action_option', ''); -	$back = (isset($_REQUEST['back'])) ? request_var('back', array('' => 0)) : array(); +	$check_option	= $request->variable('check_option', 0); +	$rule_option	= $request->variable('rule_option', 0); +	$cond_option	= $request->variable('cond_option', ''); +	$action_option	= $request->variable('action_option', ''); +	$back = (isset($_REQUEST['back'])) ? $request->variable('back', array('' => 0)) : array();  	if (sizeof($back))  	{ @@ -698,7 +698,7 @@ function define_rule_option($hardcoded, $rule_option, $rule_lang, $check_ary)  */  function define_cond_option($hardcoded, $cond_option, $rule_option, $global_rule_conditions)  { -	global $db, $template, $auth, $user; +	global $db, $template, $auth, $user, $request;  	$template->assign_vars(array(  		'S_COND_DEFINED'	=> true, @@ -722,7 +722,7 @@ function define_cond_option($hardcoded, $cond_option, $rule_option, $global_rule  	switch ($condition)  	{  		case 'text': -			$rule_string = utf8_normalize_nfc(request_var('rule_string', '', true)); +			$rule_string = $request->variable('rule_string', '', true);  			$template->assign_vars(array(  				'S_TEXT_CONDITION'	=> true, @@ -735,8 +735,8 @@ function define_cond_option($hardcoded, $cond_option, $rule_option, $global_rule  		break;  		case 'user': -			$rule_user_id = request_var('rule_user_id', 0); -			$rule_string = utf8_normalize_nfc(request_var('rule_string', '', true)); +			$rule_user_id = $request->variable('rule_user_id', 0); +			$rule_string = $request->variable('rule_string', '', true);  			if ($rule_string && !$rule_user_id)  			{ @@ -778,8 +778,8 @@ function define_cond_option($hardcoded, $cond_option, $rule_option, $global_rule  		break;  		case 'group': -			$rule_group_id = request_var('rule_group_id', 0); -			$rule_string = utf8_normalize_nfc(request_var('rule_string', '', true)); +			$rule_group_id = $request->variable('rule_group_id', 0); +			$rule_string = $request->variable('rule_string', '', true);  			$sql = 'SELECT g.group_id, g.group_name, g.group_type  					FROM ' . GROUPS_TABLE . ' g '; diff --git a/phpBB/includes/ucp/ucp_pm_viewfolder.php b/phpBB/includes/ucp/ucp_pm_viewfolder.php index 19acd9ecb9..e88e40a1cb 100644 --- a/phpBB/includes/ucp/ucp_pm_viewfolder.php +++ b/phpBB/includes/ucp/ucp_pm_viewfolder.php @@ -25,7 +25,7 @@ if (!defined('IN_PHPBB'))  */  function view_folder($id, $mode, $folder_id, $folder)  { -	global $user, $template, $auth, $db, $cache; +	global $user, $template, $auth, $db, $cache, $request;  	global $phpbb_root_path, $config, $phpEx;  	$submit_export = (isset($_POST['submit_export'])) ? true : false; @@ -196,9 +196,9 @@ function view_folder($id, $mode, $folder_id, $folder)  	}  	else  	{ -		$export_type = request_var('export_option', ''); -		$enclosure = request_var('enclosure', ''); -		$delimiter = request_var('delimiter', ''); +		$export_type = $request->variable('export_option', ''); +		$enclosure = $request->variable('enclosure', ''); +		$delimiter = $request->variable('delimiter', '');  		if ($export_type == 'CSV' && ($delimiter === '' || $enclosure === ''))  		{ @@ -397,15 +397,16 @@ function view_folder($id, $mode, $folder_id, $folder)  */  function get_pm_from($folder_id, $folder, $user_id)  { -	global $user, $db, $template, $config, $auth, $phpbb_container, $phpbb_root_path, $phpEx; +	global $user, $db, $template, $config, $auth, $phpbb_container, $phpbb_root_path, $phpEx, $request; -	$start = request_var('start', 0); +	$start = $request->variable('start', 0);  	// Additional vars later, pm ordering is mostly different from post ordering. :/ -	$sort_days	= request_var('st', 0); -	$sort_key	= request_var('sk', 't'); -	$sort_dir	= request_var('sd', 'd'); +	$sort_days	= $request->variable('st', 0); +	$sort_key	= $request->variable('sk', 't'); +	$sort_dir	= $request->variable('sd', 'd'); +	/* @var $pagination \phpbb\pagination */  	$pagination = $phpbb_container->get('pagination');  	// PM ordering options diff --git a/phpBB/includes/ucp/ucp_pm_viewmessage.php b/phpBB/includes/ucp/ucp_pm_viewmessage.php index d81c4ce7fe..52948cea19 100644 --- a/phpBB/includes/ucp/ucp_pm_viewmessage.php +++ b/phpBB/includes/ucp/ucp_pm_viewmessage.php @@ -32,7 +32,7 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)  	$msg_id		= (int) $msg_id;  	$folder_id	= (int) $folder_id;  	$author_id	= (int) $message_row['author_id']; -	$view		= request_var('view', ''); +	$view		= $request->variable('view', '');  	// Not able to view message, it was deleted by the sender  	if ($message_row['pm_deleted']) @@ -56,6 +56,7 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)  	// Load the custom profile fields  	if ($config['load_cpf_pm'])  	{ +		/* @var $cp \phpbb\profilefields\manager */  		$cp = $phpbb_container->get('profilefields.manager');  		$profile_fields = $cp->grab_profile_fields_data($author_id); diff --git a/phpBB/includes/ucp/ucp_prefs.php b/phpBB/includes/ucp/ucp_prefs.php index 1d3fb19f67..cbaa71c33e 100644 --- a/phpBB/includes/ucp/ucp_prefs.php +++ b/phpBB/includes/ucp/ucp_prefs.php @@ -29,7 +29,7 @@ class ucp_prefs  	function main($id, $mode)  	{ -		global $config, $db, $user, $auth, $template, $phpbb_dispatcher, $phpbb_root_path, $phpEx; +		global $config, $db, $user, $auth, $template, $phpbb_dispatcher, $phpbb_root_path, $phpEx, $request;  		$submit = (isset($_POST['submit'])) ? true : false;  		$error = $data = array(); @@ -40,16 +40,16 @@ class ucp_prefs  			case 'personal':  				add_form_key('ucp_prefs_personal');  				$data = array( -					'notifymethod'	=> request_var('notifymethod', $user->data['user_notify_type']), -					'dateformat'	=> request_var('dateformat', $user->data['user_dateformat'], true), -					'lang'			=> basename(request_var('lang', $user->data['user_lang'])), -					'user_style'		=> request_var('user_style', (int) $user->data['user_style']), -					'tz'			=> request_var('tz', $user->data['user_timezone']), - -					'viewemail'		=> request_var('viewemail', (bool) $user->data['user_allow_viewemail']), -					'massemail'		=> request_var('massemail', (bool) $user->data['user_allow_massemail']), -					'hideonline'	=> request_var('hideonline', (bool) !$user->data['user_allow_viewonline']), -					'allowpm'		=> request_var('allowpm', (bool) $user->data['user_allow_pm']), +					'notifymethod'	=> $request->variable('notifymethod', $user->data['user_notify_type']), +					'dateformat'	=> $request->variable('dateformat', $user->data['user_dateformat'], true), +					'lang'			=> basename($request->variable('lang', $user->data['user_lang'])), +					'user_style'		=> $request->variable('user_style', (int) $user->data['user_style']), +					'tz'			=> $request->variable('tz', $user->data['user_timezone']), + +					'viewemail'		=> $request->variable('viewemail', (bool) $user->data['user_allow_viewemail']), +					'massemail'		=> $request->variable('massemail', (bool) $user->data['user_allow_massemail']), +					'hideonline'	=> $request->variable('hideonline', (bool) !$user->data['user_allow_viewonline']), +					'allowpm'		=> $request->variable('allowpm', (bool) $user->data['user_allow_pm']),  				);  				if ($data['notifymethod'] == NOTIFY_IM && (!$config['jab_enable'] || !$user->data['user_jabber'] || !@extension_loaded('xml'))) @@ -221,20 +221,20 @@ class ucp_prefs  				add_form_key('ucp_prefs_view');  				$data = array( -					'topic_sk'		=> request_var('topic_sk', (!empty($user->data['user_topic_sortby_type'])) ? $user->data['user_topic_sortby_type'] : 't'), -					'topic_sd'		=> request_var('topic_sd', (!empty($user->data['user_topic_sortby_dir'])) ? $user->data['user_topic_sortby_dir'] : 'd'), -					'topic_st'		=> request_var('topic_st', (!empty($user->data['user_topic_show_days'])) ? (int) $user->data['user_topic_show_days'] : 0), - -					'post_sk'		=> request_var('post_sk', (!empty($user->data['user_post_sortby_type'])) ? $user->data['user_post_sortby_type'] : 't'), -					'post_sd'		=> request_var('post_sd', (!empty($user->data['user_post_sortby_dir'])) ? $user->data['user_post_sortby_dir'] : 'a'), -					'post_st'		=> request_var('post_st', (!empty($user->data['user_post_show_days'])) ? (int) $user->data['user_post_show_days'] : 0), - -					'images'		=> request_var('images', (bool) $user->optionget('viewimg')), -					'flash'			=> request_var('flash', (bool) $user->optionget('viewflash')), -					'smilies'		=> request_var('smilies', (bool) $user->optionget('viewsmilies')), -					'sigs'			=> request_var('sigs', (bool) $user->optionget('viewsigs')), -					'avatars'		=> request_var('avatars', (bool) $user->optionget('viewavatars')), -					'wordcensor'	=> request_var('wordcensor', (bool) $user->optionget('viewcensors')), +					'topic_sk'		=> $request->variable('topic_sk', (!empty($user->data['user_topic_sortby_type'])) ? $user->data['user_topic_sortby_type'] : 't'), +					'topic_sd'		=> $request->variable('topic_sd', (!empty($user->data['user_topic_sortby_dir'])) ? $user->data['user_topic_sortby_dir'] : 'd'), +					'topic_st'		=> $request->variable('topic_st', (!empty($user->data['user_topic_show_days'])) ? (int) $user->data['user_topic_show_days'] : 0), + +					'post_sk'		=> $request->variable('post_sk', (!empty($user->data['user_post_sortby_type'])) ? $user->data['user_post_sortby_type'] : 't'), +					'post_sd'		=> $request->variable('post_sd', (!empty($user->data['user_post_sortby_dir'])) ? $user->data['user_post_sortby_dir'] : 'a'), +					'post_st'		=> $request->variable('post_st', (!empty($user->data['user_post_show_days'])) ? (int) $user->data['user_post_show_days'] : 0), + +					'images'		=> $request->variable('images', (bool) $user->optionget('viewimg')), +					'flash'			=> $request->variable('flash', (bool) $user->optionget('viewflash')), +					'smilies'		=> $request->variable('smilies', (bool) $user->optionget('viewsmilies')), +					'sigs'			=> $request->variable('sigs', (bool) $user->optionget('viewsigs')), +					'avatars'		=> $request->variable('avatars', (bool) $user->optionget('viewavatars')), +					'wordcensor'	=> $request->variable('wordcensor', (bool) $user->optionget('viewcensors')),  				);  				/** @@ -393,10 +393,10 @@ class ucp_prefs  			case 'post':  				$data = array( -					'bbcode'	=> request_var('bbcode', $user->optionget('bbcode')), -					'smilies'	=> request_var('smilies', $user->optionget('smilies')), -					'sig'		=> request_var('sig', $user->optionget('attachsig')), -					'notify'	=> request_var('notify', (bool) $user->data['user_notify']), +					'bbcode'	=> $request->variable('bbcode', $user->optionget('bbcode')), +					'smilies'	=> $request->variable('smilies', $user->optionget('smilies')), +					'sig'		=> $request->variable('sig', $user->optionget('attachsig')), +					'notify'	=> $request->variable('notify', (bool) $user->data['user_notify']),  				);  				add_form_key('ucp_prefs_post'); diff --git a/phpBB/includes/ucp/ucp_profile.php b/phpBB/includes/ucp/ucp_profile.php index 8d8d42e742..66eae22a1b 100644 --- a/phpBB/includes/ucp/ucp_profile.php +++ b/phpBB/includes/ucp/ucp_profile.php @@ -32,11 +32,10 @@ class ucp_profile  	function main($id, $mode)  	{  		global $cache, $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx; -		global $request, $phpbb_container, $phpbb_dispatcher; +		global $request, $phpbb_container, $phpbb_log, $phpbb_dispatcher;  		$user->add_lang('posting'); -		$preview	= $request->variable('preview', false, false, \phpbb\request\request_interface::POST);  		$submit		= $request->variable('submit', false, false, \phpbb\request\request_interface::POST);  		$delete		= $request->variable('delete', false, false, \phpbb\request\request_interface::POST);  		$error = $data = array(); @@ -47,8 +46,8 @@ class ucp_profile  			case 'reg_details':  				$data = array( -					'username'			=> utf8_normalize_nfc(request_var('username', $user->data['username'], true)), -					'email'				=> strtolower(request_var('email', $user->data['user_email'])), +					'username'			=> $request->variable('username', $user->data['username'], true), +					'email'				=> strtolower($request->variable('email', $user->data['user_email'])),  					'new_password'		=> $request->variable('new_password', '', true),  					'cur_password'		=> $request->variable('cur_password', '', true),  					'password_confirm'	=> $request->variable('password_confirm', '', true), @@ -96,6 +95,7 @@ class ucp_profile  					}  					// Instantiate passwords manager +					/* @var $passwords_manager \phpbb\passwords\manager */  					$passwords_manager = $phpbb_container->get('passwords.manager');  					// Only check the new password against the previous password if there have been no errors @@ -139,18 +139,30 @@ class ucp_profile  						if ($auth->acl_get('u_chgname') && $config['allow_namechange'] && $data['username'] != $user->data['username'])  						{ -							add_log('user', $user->data['user_id'], 'LOG_USER_UPDATE_NAME', $user->data['username'], $data['username']); +							$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_UPDATE_NAME', false, array( +								'reportee_id' => $user->data['user_id'], +								$user->data['username'], +								$data['username'] +							));  						}  						if ($auth->acl_get('u_chgpasswd') && $data['new_password'] && !$passwords_manager->check($data['new_password'], $user->data['user_password']))  						{  							$user->reset_login_keys(); -							add_log('user', $user->data['user_id'], 'LOG_USER_NEW_PASSWORD', $data['username']); +							$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_NEW_PASSWORD', false, array( +								'reportee_id' => $user->data['user_id'], +								$user->data['username'] +							));  						}  						if ($auth->acl_get('u_chgemail') && $data['email'] != $user->data['user_email'])  						{ -							add_log('user', $user->data['user_id'], 'LOG_USER_UPDATE_EMAIL', $data['username'], $user->data['user_email'], $data['email']); +							$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_UPDATE_EMAIL', false, array( +								'reportee_id' => $user->data['user_id'], +								$user->data['username'], +								$data['user_email'], +								$data['email'] +							));  						}  						$message = 'PROFILE_UPDATED'; @@ -296,12 +308,13 @@ class ucp_profile  					trigger_error('NO_AUTH_PROFILEINFO');  				} +				/* @var $cp \phpbb\profilefields\manager */  				$cp = $phpbb_container->get('profilefields.manager');  				$cp_data = $cp_error = array();  				$data = array( -					'jabber'		=> utf8_normalize_nfc(request_var('jabber', $user->data['user_jabber'], true)), +					'jabber'		=> $request->variable('jabber', $user->data['user_jabber'], true),  				);  				if ($config['allow_birthdays']) @@ -313,9 +326,9 @@ class ucp_profile  						list($data['bday_day'], $data['bday_month'], $data['bday_year']) = explode('-', $user->data['user_birthday']);  					} -					$data['bday_day'] = request_var('bday_day', $data['bday_day']); -					$data['bday_month'] = request_var('bday_month', $data['bday_month']); -					$data['bday_year'] = request_var('bday_year', $data['bday_year']); +					$data['bday_day'] = $request->variable('bday_day', $data['bday_day']); +					$data['bday_month'] = $request->variable('bday_month', $data['bday_month']); +					$data['bday_year'] = $request->variable('bday_year', $data['bday_year']);  					$data['user_birthday'] = sprintf('%2d-%2d-%4d', $data['bday_day'], $data['bday_month'], $data['bday_year']);  				} @@ -484,86 +497,82 @@ class ucp_profile  				include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);  				include($phpbb_root_path . 'includes/functions_display.' . $phpEx); -				$enable_bbcode	= ($config['allow_sig_bbcode']) ? (bool) $user->optionget('sig_bbcode') : false; -				$enable_smilies	= ($config['allow_sig_smilies']) ? (bool) $user->optionget('sig_smilies') : false; -				$enable_urls	= ($config['allow_sig_links']) ? (bool) $user->optionget('sig_links') : false; +				$enable_bbcode	= ($config['allow_sig_bbcode']) ? $user->optionget('sig_bbcode') : false; +				$enable_smilies	= ($config['allow_sig_smilies']) ? $user->optionget('sig_smilies') : false; +				$enable_urls	= ($config['allow_sig_links']) ? $user->optionget('sig_links') : false; -				$signature		= utf8_normalize_nfc(request_var('signature', (string) $user->data['user_sig'], true)); +				$decoded_message	= generate_text_for_edit($user->data['user_sig'], $user->data['user_sig_bbcode_uid'], $user->data['user_sig_bbcode_bitfield']); +				$signature			= $request->variable('signature', $decoded_message['text'], true); +				$signature_preview	= ''; -				add_form_key('ucp_sig'); - -				if ($submit || $preview) +				if ($submit || $request->is_set_post('preview'))  				{ -					include($phpbb_root_path . 'includes/message_parser.' . $phpEx); - -					$enable_bbcode	= ($config['allow_sig_bbcode']) ? ((request_var('disable_bbcode', false)) ? false : true) : false; -					$enable_smilies	= ($config['allow_sig_smilies']) ? ((request_var('disable_smilies', false)) ? false : true) : false; -					$enable_urls	= ($config['allow_sig_links']) ? ((request_var('disable_magic_url', false)) ? false : true) : false; +					$enable_bbcode	= ($config['allow_sig_bbcode']) ? !$request->variable('disable_bbcode', false) : false; +					$enable_smilies	= ($config['allow_sig_smilies']) ? !$request->variable('disable_smilies', false) : false; +					$enable_urls	= ($config['allow_sig_links']) ? !$request->variable('disable_magic_url', false) : false; -					if (!sizeof($error)) +					if (!check_form_key('ucp_sig'))  					{ -						$message_parser = new parse_message($signature); +						$error[] = 'FORM_INVALID'; +					} +				} -						// Allowing Quote BBCode -						$message_parser->parse($enable_bbcode, $enable_urls, $enable_smilies, $config['allow_sig_img'], $config['allow_sig_flash'], true, $config['allow_sig_links'], true, 'sig'); +				$bbcode_uid = $bbcode_bitfield = $bbcode_flags = ''; +				$warn_msg = generate_text_for_storage($signature, $bbcode_uid, $bbcode_bitfield, $bbcode_flags, $enable_bbcode, $enable_urls, $enable_smilies); -						if (sizeof($message_parser->warn_msg)) -						{ -							$error[] = implode('<br />', $message_parser->warn_msg); -						} +				if (sizeof($warn_msg)) +				{ +					$error += $warn_msg; +				} -						if (!check_form_key('ucp_sig')) -						{ -							$error[] = 'FORM_INVALID'; -						} +				if (!$submit) +				{ +					// Parse it for displaying +					$signature_preview = generate_text_for_display($signature, $bbcode_uid, $bbcode_bitfield, $bbcode_flags); +				} +				else +				{ +					if (!sizeof($error)) +					{ +						$user->optionset('sig_bbcode', $enable_bbcode); +						$user->optionset('sig_smilies', $enable_smilies); +						$user->optionset('sig_links', $enable_urls); -						if (!sizeof($error) && $submit) -						{ -							$user->optionset('sig_bbcode', $enable_bbcode); -							$user->optionset('sig_smilies', $enable_smilies); -							$user->optionset('sig_links', $enable_urls); - -							$sql_ary = array( -								'user_sig'					=> (string) $message_parser->message, -								'user_options'				=> $user->data['user_options'], -								'user_sig_bbcode_uid'		=> (string) $message_parser->bbcode_uid, -								'user_sig_bbcode_bitfield'	=> $message_parser->bbcode_bitfield -							); +						$sql_ary = array( +							'user_sig'					=> $signature, +							'user_options'				=> $user->data['user_options'], +							'user_sig_bbcode_uid'		=> $bbcode_uid, +							'user_sig_bbcode_bitfield'	=> $bbcode_bitfield +						); -							$sql = 'UPDATE ' . USERS_TABLE . ' -								SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' -								WHERE user_id = ' . $user->data['user_id']; -							$db->sql_query($sql); +						$sql = 'UPDATE ' . USERS_TABLE . ' +							SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' +							WHERE user_id = ' . $user->data['user_id']; +						$db->sql_query($sql); -							$message = $user->lang['PROFILE_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>'); -							trigger_error($message); -						} +						$message = $user->lang['PROFILE_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>'); +						trigger_error($message);  					} - -					// Replace "error" strings with their real, localised form -					$error = array_map(array($user, 'lang'), $error);  				} -				$signature_preview = ''; -				if ($preview) -				{ -					// Now parse it for displaying -					$signature_preview = $message_parser->format_display($enable_bbcode, $enable_urls, $enable_smilies, false); -					unset($message_parser); -				} +				// Replace "error" strings with their real, localised form +				$error = array_map(array($user, 'lang'), $error); + +				$decoded_message = generate_text_for_edit($signature, $bbcode_uid, $bbcode_bitfield); -				decode_message($signature, $user->data['user_sig_bbcode_uid']); +				/** @var \phpbb\controller\helper $controller_helper */ +				$controller_helper = $phpbb_container->get('controller.helper');  				$template->assign_vars(array(  					'ERROR'				=> (sizeof($error)) ? implode('<br />', $error) : '', -					'SIGNATURE'			=> $signature, +					'SIGNATURE'			=> $decoded_message['text'],  					'SIGNATURE_PREVIEW'	=> $signature_preview,  					'S_BBCODE_CHECKED' 		=> (!$enable_bbcode) ? ' checked="checked"' : '',  					'S_SMILIES_CHECKED' 	=> (!$enable_smilies) ? ' checked="checked"' : '',  					'S_MAGIC_URL_CHECKED' 	=> (!$enable_urls) ? ' checked="checked"' : '', -					'BBCODE_STATUS'			=> ($config['allow_sig_bbcode']) ? sprintf($user->lang['BBCODE_IS_ON'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>') : sprintf($user->lang['BBCODE_IS_OFF'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>'), +					'BBCODE_STATUS'			=> $user->lang(($config['allow_sig_bbcode'] ? 'BBCODE_IS_ON' : 'BBCODE_IS_OFF'), '<a href="' . $controller_helper->route('phpbb_help_controller', array('mode' => 'bbcode')) . '">', '</a>'),  					'SMILIES_STATUS'		=> ($config['allow_sig_smilies']) ? $user->lang['SMILIES_ARE_ON'] : $user->lang['SMILIES_ARE_OFF'],  					'IMG_STATUS'			=> ($config['allow_sig_img']) ? $user->lang['IMAGES_ARE_ON'] : $user->lang['IMAGES_ARE_OFF'],  					'FLASH_STATUS'			=> ($config['allow_sig_flash']) ? $user->lang['FLASH_IS_ON'] : $user->lang['FLASH_IS_OFF'], @@ -579,6 +588,8 @@ class ucp_profile  					'S_LINKS_ALLOWED'		=> ($config['allow_sig_links']) ? true : false)  				); +				add_form_key('ucp_sig'); +  				// Build custom bbcodes array  				display_custom_bbcodes(); @@ -595,6 +606,7 @@ class ucp_profile  				if ($config['allow_avatar'] && $auth->acl_get('u_chgavatar'))  				{ +					/* @var $phpbb_avatar_manager \phpbb\avatar\manager */  					$phpbb_avatar_manager = $phpbb_container->get('avatar.manager');  					$avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers(); @@ -713,7 +725,7 @@ class ucp_profile  				if ($submit)  				{ -					$keys = request_var('keys', array('')); +					$keys = $request->variable('keys', array(''));  					if (!check_form_key('ucp_autologin_keys'))  					{ diff --git a/phpBB/includes/ucp/ucp_register.php b/phpBB/includes/ucp/ucp_register.php index 0ee45b0706..7ff6506292 100644 --- a/phpBB/includes/ucp/ucp_register.php +++ b/phpBB/includes/ucp/ucp_register.php @@ -42,8 +42,8 @@ class ucp_register  		$coppa			= $request->is_set('coppa') ? (int) $request->variable('coppa', false) : false;  		$agreed			= $request->variable('agreed', false);  		$submit			= $request->is_set_post('submit'); -		$change_lang	= request_var('change_lang', ''); -		$user_lang		= request_var('lang', $user->lang_name); +		$change_lang	= $request->variable('change_lang', ''); +		$user_lang		= $request->variable('lang', $user->lang_name);  		if ($agreed)  		{ @@ -77,6 +77,7 @@ class ucp_register  			}  		} +		/* @var $cp \phpbb\profilefields\manager */  		$cp = $phpbb_container->get('profilefields.manager');  		$error = $cp_data = $cp_error = array(); @@ -88,6 +89,7 @@ class ucp_register  		if (!empty($login_link_data))  		{  			// Confirm that we have all necessary data +			/* @var $provider_collection \phpbb\auth\provider_collection */  			$provider_collection = $phpbb_container->get('auth.provider_collection');  			$auth_provider = $provider_collection->get_provider($request->variable('auth_provider', '')); @@ -113,10 +115,10 @@ class ucp_register  			{  				// We do not include the password  				$s_hidden_fields = array_merge($s_hidden_fields, array( -					'username'			=> utf8_normalize_nfc(request_var('username', '', true)), -					'email'				=> strtolower(request_var('email', '')), +					'username'			=> $request->variable('username', '', true), +					'email'				=> strtolower($request->variable('email', '')),  					'lang'				=> $user->lang_name, -					'tz'				=> request_var('tz', $config['board_timezone']), +					'tz'				=> $request->variable('tz', $config['board_timezone']),  				));  			} @@ -190,12 +192,12 @@ class ucp_register  		$timezone = $config['board_timezone'];  		$data = array( -			'username'			=> utf8_normalize_nfc(request_var('username', '', true)), +			'username'			=> $request->variable('username', '', true),  			'new_password'		=> $request->variable('new_password', '', true),  			'password_confirm'	=> $request->variable('password_confirm', '', true), -			'email'				=> strtolower(request_var('email', '')), -			'lang'				=> basename(request_var('lang', $user->lang_name)), -			'tz'				=> request_var('tz', $timezone), +			'email'				=> strtolower($request->variable('email', '')), +			'lang'				=> basename($request->variable('lang', $user->lang_name)), +			'tz'				=> $request->variable('tz', $timezone),  		);  		/**  		* Add UCP register data before they are assigned to the template or submitted @@ -324,6 +326,7 @@ class ucp_register  				}  				// Instantiate passwords manager +				/* @var $passwords_manager \phpbb\passwords\manager */  				$passwords_manager = $phpbb_container->get('passwords.manager');  				$user_row = array( @@ -429,6 +432,7 @@ class ucp_register  				if ($config['require_activation'] == USER_ACTIVATION_ADMIN)  				{ +					/* @var $phpbb_notifications \phpbb\notification\manager */  					$phpbb_notifications = $phpbb_container->get('notification_manager');  					$phpbb_notifications->add_notifications('notification.type.admin_activate_user', array(  						'user_id'		=> $user_id, diff --git a/phpBB/includes/ucp/ucp_remind.php b/phpBB/includes/ucp/ucp_remind.php index 415bf0e84d..2342aa2137 100644 --- a/phpBB/includes/ucp/ucp_remind.php +++ b/phpBB/includes/ucp/ucp_remind.php @@ -29,7 +29,7 @@ class ucp_remind  	function main($id, $mode)  	{ -		global $config, $phpbb_root_path, $phpEx; +		global $config, $phpbb_root_path, $phpEx, $request;  		global $db, $user, $auth, $template, $phpbb_container;  		if (!$config['allow_password_reset']) @@ -37,8 +37,8 @@ class ucp_remind  			trigger_error($user->lang('UCP_PASSWORD_RESET_DISABLED', '<a href="mailto:' . htmlspecialchars($config['board_contact']) . '">', '</a>'));  		} -		$username	= request_var('username', '', true); -		$email		= strtolower(request_var('email', '')); +		$username	= $request->variable('username', '', true); +		$email		= strtolower($request->variable('email', ''));  		$submit		= (isset($_POST['submit'])) ? true : false;  		if ($submit) @@ -92,6 +92,7 @@ class ucp_remind  			$user_actkey = gen_rand_string(mt_rand(6, 10));  			// Instantiate passwords manager +			/* @var $manager \phpbb\passwords\manager */  			$passwords_manager = $phpbb_container->get('passwords.manager');  			$sql = 'UPDATE ' . USERS_TABLE . " diff --git a/phpBB/includes/ucp/ucp_resend.php b/phpBB/includes/ucp/ucp_resend.php index 9fe8850000..44c54100cd 100644 --- a/phpBB/includes/ucp/ucp_resend.php +++ b/phpBB/includes/ucp/ucp_resend.php @@ -30,10 +30,10 @@ class ucp_resend  	function main($id, $mode)  	{  		global $config, $phpbb_root_path, $phpEx; -		global $db, $user, $auth, $template; +		global $db, $user, $auth, $template, $request; -		$username	= request_var('username', '', true); -		$email		= strtolower(request_var('email', '')); +		$username	= $request->variable('username', '', true); +		$email		= strtolower($request->variable('email', ''));  		$submit		= (isset($_POST['submit'])) ? true : false;  		add_form_key('ucp_resend'); diff --git a/phpBB/includes/ucp/ucp_zebra.php b/phpBB/includes/ucp/ucp_zebra.php index dbf8cf31c1..d4e7e70247 100644 --- a/phpBB/includes/ucp/ucp_zebra.php +++ b/phpBB/includes/ucp/ucp_zebra.php @@ -44,7 +44,7 @@ class ucp_zebra  			foreach ($var_ary as $var => $default)  			{ -				$data[$var] = request_var($var, $default, true); +				$data[$var] = $request->variable($var, $default, true);  			}  			if (!empty($data['add']) || sizeof($data['usernames'])) diff --git a/phpBB/includes/utf/data/utf_canonical_comp.php b/phpBB/includes/utf/data/utf_canonical_comp.php deleted file mode 100644 index 2de3149ee8..0000000000 --- a/phpBB/includes/utf/data/utf_canonical_comp.php +++ /dev/null @@ -1,2 +0,0 @@ -<?php -$GLOBALS['utf_canonical_comp']=array('À'=>'À','Á'=>'Á','Â'=>'Â','Ã'=>'Ã','Ä'=>'Ä','Å'=>'Å','Ç'=>'Ç','È'=>'È','É'=>'É','Ê'=>'Ê','Ë'=>'Ë','Ì'=>'Ì','Í'=>'Í','Î'=>'Î','Ï'=>'Ï','Ñ'=>'Ñ','Ò'=>'Ò','Ó'=>'Ó','Ô'=>'Ô','Õ'=>'Õ','Ö'=>'Ö','Ù'=>'Ù','Ú'=>'Ú','Û'=>'Û','Ü'=>'Ü','Ý'=>'Ý','à'=>'à','á'=>'á','â'=>'â','ã'=>'ã','ä'=>'ä','å'=>'å','ç'=>'ç','è'=>'è','é'=>'é','ê'=>'ê','ë'=>'ë','ì'=>'ì','í'=>'í','î'=>'î','ï'=>'ï','ñ'=>'ñ','ò'=>'ò','ó'=>'ó','ô'=>'ô','õ'=>'õ','ö'=>'ö','ù'=>'ù','ú'=>'ú','û'=>'û','ü'=>'ü','ý'=>'ý','ÿ'=>'ÿ','Ā'=>'Ā','ā'=>'ā','Ă'=>'Ă','ă'=>'ă','Ą'=>'Ą','ą'=>'ą','Ć'=>'Ć','ć'=>'ć','Ĉ'=>'Ĉ','ĉ'=>'ĉ','Ċ'=>'Ċ','ċ'=>'ċ','Č'=>'Č','č'=>'č','Ď'=>'Ď','ď'=>'ď','Ē'=>'Ē','ē'=>'ē','Ĕ'=>'Ĕ','ĕ'=>'ĕ','Ė'=>'Ė','ė'=>'ė','Ę'=>'Ę','ę'=>'ę','Ě'=>'Ě','ě'=>'ě','Ĝ'=>'Ĝ','ĝ'=>'ĝ','Ğ'=>'Ğ','ğ'=>'ğ','Ġ'=>'Ġ','ġ'=>'ġ','Ģ'=>'Ģ','ģ'=>'ģ','Ĥ'=>'Ĥ','ĥ'=>'ĥ','Ĩ'=>'Ĩ','ĩ'=>'ĩ','Ī'=>'Ī','ī'=>'ī','Ĭ'=>'Ĭ','ĭ'=>'ĭ','Į'=>'Į','į'=>'į','İ'=>'İ','Ĵ'=>'Ĵ','ĵ'=>'ĵ','Ķ'=>'Ķ','ķ'=>'ķ','Ĺ'=>'Ĺ','ĺ'=>'ĺ','Ļ'=>'Ļ','ļ'=>'ļ','Ľ'=>'Ľ','ľ'=>'ľ','Ń'=>'Ń','ń'=>'ń','Ņ'=>'Ņ','ņ'=>'ņ','Ň'=>'Ň','ň'=>'ň','Ō'=>'Ō','ō'=>'ō','Ŏ'=>'Ŏ','ŏ'=>'ŏ','Ő'=>'Ő','ő'=>'ő','Ŕ'=>'Ŕ','ŕ'=>'ŕ','Ŗ'=>'Ŗ','ŗ'=>'ŗ','Ř'=>'Ř','ř'=>'ř','Ś'=>'Ś','ś'=>'ś','Ŝ'=>'Ŝ','ŝ'=>'ŝ','Ş'=>'Ş','ş'=>'ş','Š'=>'Š','š'=>'š','Ţ'=>'Ţ','ţ'=>'ţ','Ť'=>'Ť','ť'=>'ť','Ũ'=>'Ũ','ũ'=>'ũ','Ū'=>'Ū','ū'=>'ū','Ŭ'=>'Ŭ','ŭ'=>'ŭ','Ů'=>'Ů','ů'=>'ů','Ű'=>'Ű','ű'=>'ű','Ų'=>'Ų','ų'=>'ų','Ŵ'=>'Ŵ','ŵ'=>'ŵ','Ŷ'=>'Ŷ','ŷ'=>'ŷ','Ÿ'=>'Ÿ','Ź'=>'Ź','ź'=>'ź','Ż'=>'Ż','ż'=>'ż','Ž'=>'Ž','ž'=>'ž','Ơ'=>'Ơ','ơ'=>'ơ','Ư'=>'Ư','ư'=>'ư','Ǎ'=>'Ǎ','ǎ'=>'ǎ','Ǐ'=>'Ǐ','ǐ'=>'ǐ','Ǒ'=>'Ǒ','ǒ'=>'ǒ','Ǔ'=>'Ǔ','ǔ'=>'ǔ','Ǖ'=>'Ǖ','ǖ'=>'ǖ','Ǘ'=>'Ǘ','ǘ'=>'ǘ','Ǚ'=>'Ǚ','ǚ'=>'ǚ','Ǜ'=>'Ǜ','ǜ'=>'ǜ','Ǟ'=>'Ǟ','ǟ'=>'ǟ','Ǡ'=>'Ǡ','ǡ'=>'ǡ','Ǣ'=>'Ǣ','ǣ'=>'ǣ','Ǧ'=>'Ǧ','ǧ'=>'ǧ','Ǩ'=>'Ǩ','ǩ'=>'ǩ','Ǫ'=>'Ǫ','ǫ'=>'ǫ','Ǭ'=>'Ǭ','ǭ'=>'ǭ','Ǯ'=>'Ǯ','ǯ'=>'ǯ','ǰ'=>'ǰ','Ǵ'=>'Ǵ','ǵ'=>'ǵ','Ǹ'=>'Ǹ','ǹ'=>'ǹ','Ǻ'=>'Ǻ','ǻ'=>'ǻ','Ǽ'=>'Ǽ','ǽ'=>'ǽ','Ǿ'=>'Ǿ','ǿ'=>'ǿ','Ȁ'=>'Ȁ','ȁ'=>'ȁ','Ȃ'=>'Ȃ','ȃ'=>'ȃ','Ȅ'=>'Ȅ','ȅ'=>'ȅ','Ȇ'=>'Ȇ','ȇ'=>'ȇ','Ȉ'=>'Ȉ','ȉ'=>'ȉ','Ȋ'=>'Ȋ','ȋ'=>'ȋ','Ȍ'=>'Ȍ','ȍ'=>'ȍ','Ȏ'=>'Ȏ','ȏ'=>'ȏ','Ȑ'=>'Ȑ','ȑ'=>'ȑ','Ȓ'=>'Ȓ','ȓ'=>'ȓ','Ȕ'=>'Ȕ','ȕ'=>'ȕ','Ȗ'=>'Ȗ','ȗ'=>'ȗ','Ș'=>'Ș','ș'=>'ș','Ț'=>'Ț','ț'=>'ț','Ȟ'=>'Ȟ','ȟ'=>'ȟ','Ȧ'=>'Ȧ','ȧ'=>'ȧ','Ȩ'=>'Ȩ','ȩ'=>'ȩ','Ȫ'=>'Ȫ','ȫ'=>'ȫ','Ȭ'=>'Ȭ','ȭ'=>'ȭ','Ȯ'=>'Ȯ','ȯ'=>'ȯ','Ȱ'=>'Ȱ','ȱ'=>'ȱ','Ȳ'=>'Ȳ','ȳ'=>'ȳ','̈́'=>'̈́','΅'=>'΅','Ά'=>'Ά','Έ'=>'Έ','Ή'=>'Ή','Ί'=>'Ί','Ό'=>'Ό','Ύ'=>'Ύ','Ώ'=>'Ώ','ΐ'=>'ΐ','Ϊ'=>'Ϊ','Ϋ'=>'Ϋ','ά'=>'ά','έ'=>'έ','ή'=>'ή','ί'=>'ί','ΰ'=>'ΰ','ϊ'=>'ϊ','ϋ'=>'ϋ','ό'=>'ό','ύ'=>'ύ','ώ'=>'ώ','ϓ'=>'ϓ','ϔ'=>'ϔ','Ѐ'=>'Ѐ','Ё'=>'Ё','Ѓ'=>'Ѓ','Ї'=>'Ї','Ќ'=>'Ќ','Ѝ'=>'Ѝ','Ў'=>'Ў','Й'=>'Й','й'=>'й','ѐ'=>'ѐ','ё'=>'ё','ѓ'=>'ѓ','ї'=>'ї','ќ'=>'ќ','ѝ'=>'ѝ','ў'=>'ў','Ѷ'=>'Ѷ','ѷ'=>'ѷ','Ӂ'=>'Ӂ','ӂ'=>'ӂ','Ӑ'=>'Ӑ','ӑ'=>'ӑ','Ӓ'=>'Ӓ','ӓ'=>'ӓ','Ӗ'=>'Ӗ','ӗ'=>'ӗ','Ӛ'=>'Ӛ','ӛ'=>'ӛ','Ӝ'=>'Ӝ','ӝ'=>'ӝ','Ӟ'=>'Ӟ','ӟ'=>'ӟ','Ӣ'=>'Ӣ','ӣ'=>'ӣ','Ӥ'=>'Ӥ','ӥ'=>'ӥ','Ӧ'=>'Ӧ','ӧ'=>'ӧ','Ӫ'=>'Ӫ','ӫ'=>'ӫ','Ӭ'=>'Ӭ','ӭ'=>'ӭ','Ӯ'=>'Ӯ','ӯ'=>'ӯ','Ӱ'=>'Ӱ','ӱ'=>'ӱ','Ӳ'=>'Ӳ','ӳ'=>'ӳ','Ӵ'=>'Ӵ','ӵ'=>'ӵ','Ӹ'=>'Ӹ','ӹ'=>'ӹ','آ'=>'آ','أ'=>'أ','ؤ'=>'ؤ','إ'=>'إ','ئ'=>'ئ','ۀ'=>'ۀ','ۂ'=>'ۂ','ۓ'=>'ۓ','ऩ'=>'ऩ','ऱ'=>'ऱ','ऴ'=>'ऴ','ো'=>'ো','ৌ'=>'ৌ','ୈ'=>'ୈ','ୋ'=>'ୋ','ୌ'=>'ୌ','ஔ'=>'ஔ','ொ'=>'ொ','ோ'=>'ோ','ௌ'=>'ௌ','ై'=>'ై','ೀ'=>'ೀ','ೇ'=>'ೇ','ೈ'=>'ೈ','ೊ'=>'ೊ','ೋ'=>'ೋ','ൊ'=>'ൊ','ോ'=>'ോ','ൌ'=>'ൌ','ේ'=>'ේ','ො'=>'ො','ෝ'=>'ෝ','ෞ'=>'ෞ','ཱི'=>'ཱི','ཱུ'=>'ཱུ','ཱྀ'=>'ཱྀ','ဦ'=>'ဦ','ᬆ'=>'ᬆ','ᬈ'=>'ᬈ','ᬊ'=>'ᬊ','ᬌ'=>'ᬌ','ᬎ'=>'ᬎ','ᬒ'=>'ᬒ','ᬻ'=>'ᬻ','ᬽ'=>'ᬽ','ᭀ'=>'ᭀ','ᭁ'=>'ᭁ','ᭃ'=>'ᭃ','Ḁ'=>'Ḁ','ḁ'=>'ḁ','Ḃ'=>'Ḃ','ḃ'=>'ḃ','Ḅ'=>'Ḅ','ḅ'=>'ḅ','Ḇ'=>'Ḇ','ḇ'=>'ḇ','Ḉ'=>'Ḉ','ḉ'=>'ḉ','Ḋ'=>'Ḋ','ḋ'=>'ḋ','Ḍ'=>'Ḍ','ḍ'=>'ḍ','Ḏ'=>'Ḏ','ḏ'=>'ḏ','Ḑ'=>'Ḑ','ḑ'=>'ḑ','Ḓ'=>'Ḓ','ḓ'=>'ḓ','Ḕ'=>'Ḕ','ḕ'=>'ḕ','Ḗ'=>'Ḗ','ḗ'=>'ḗ','Ḙ'=>'Ḙ','ḙ'=>'ḙ','Ḛ'=>'Ḛ','ḛ'=>'ḛ','Ḝ'=>'Ḝ','ḝ'=>'ḝ','Ḟ'=>'Ḟ','ḟ'=>'ḟ','Ḡ'=>'Ḡ','ḡ'=>'ḡ','Ḣ'=>'Ḣ','ḣ'=>'ḣ','Ḥ'=>'Ḥ','ḥ'=>'ḥ','Ḧ'=>'Ḧ','ḧ'=>'ḧ','Ḩ'=>'Ḩ','ḩ'=>'ḩ','Ḫ'=>'Ḫ','ḫ'=>'ḫ','Ḭ'=>'Ḭ','ḭ'=>'ḭ','Ḯ'=>'Ḯ','ḯ'=>'ḯ','Ḱ'=>'Ḱ','ḱ'=>'ḱ','Ḳ'=>'Ḳ','ḳ'=>'ḳ','Ḵ'=>'Ḵ','ḵ'=>'ḵ','Ḷ'=>'Ḷ','ḷ'=>'ḷ','Ḹ'=>'Ḹ','ḹ'=>'ḹ','Ḻ'=>'Ḻ','ḻ'=>'ḻ','Ḽ'=>'Ḽ','ḽ'=>'ḽ','Ḿ'=>'Ḿ','ḿ'=>'ḿ','Ṁ'=>'Ṁ','ṁ'=>'ṁ','Ṃ'=>'Ṃ','ṃ'=>'ṃ','Ṅ'=>'Ṅ','ṅ'=>'ṅ','Ṇ'=>'Ṇ','ṇ'=>'ṇ','Ṉ'=>'Ṉ','ṉ'=>'ṉ','Ṋ'=>'Ṋ','ṋ'=>'ṋ','Ṍ'=>'Ṍ','ṍ'=>'ṍ','Ṏ'=>'Ṏ','ṏ'=>'ṏ','Ṑ'=>'Ṑ','ṑ'=>'ṑ','Ṓ'=>'Ṓ','ṓ'=>'ṓ','Ṕ'=>'Ṕ','ṕ'=>'ṕ','Ṗ'=>'Ṗ','ṗ'=>'ṗ','Ṙ'=>'Ṙ','ṙ'=>'ṙ','Ṛ'=>'Ṛ','ṛ'=>'ṛ','Ṝ'=>'Ṝ','ṝ'=>'ṝ','Ṟ'=>'Ṟ','ṟ'=>'ṟ','Ṡ'=>'Ṡ','ṡ'=>'ṡ','Ṣ'=>'Ṣ','ṣ'=>'ṣ','Ṥ'=>'Ṥ','ṥ'=>'ṥ','Ṧ'=>'Ṧ','ṧ'=>'ṧ','Ṩ'=>'Ṩ','ṩ'=>'ṩ','Ṫ'=>'Ṫ','ṫ'=>'ṫ','Ṭ'=>'Ṭ','ṭ'=>'ṭ','Ṯ'=>'Ṯ','ṯ'=>'ṯ','Ṱ'=>'Ṱ','ṱ'=>'ṱ','Ṳ'=>'Ṳ','ṳ'=>'ṳ','Ṵ'=>'Ṵ','ṵ'=>'ṵ','Ṷ'=>'Ṷ','ṷ'=>'ṷ','Ṹ'=>'Ṹ','ṹ'=>'ṹ','Ṻ'=>'Ṻ','ṻ'=>'ṻ','Ṽ'=>'Ṽ','ṽ'=>'ṽ','Ṿ'=>'Ṿ','ṿ'=>'ṿ','Ẁ'=>'Ẁ','ẁ'=>'ẁ','Ẃ'=>'Ẃ','ẃ'=>'ẃ','Ẅ'=>'Ẅ','ẅ'=>'ẅ','Ẇ'=>'Ẇ','ẇ'=>'ẇ','Ẉ'=>'Ẉ','ẉ'=>'ẉ','Ẋ'=>'Ẋ','ẋ'=>'ẋ','Ẍ'=>'Ẍ','ẍ'=>'ẍ','Ẏ'=>'Ẏ','ẏ'=>'ẏ','Ẑ'=>'Ẑ','ẑ'=>'ẑ','Ẓ'=>'Ẓ','ẓ'=>'ẓ','Ẕ'=>'Ẕ','ẕ'=>'ẕ','ẖ'=>'ẖ','ẗ'=>'ẗ','ẘ'=>'ẘ','ẙ'=>'ẙ','ẛ'=>'ẛ','Ạ'=>'Ạ','ạ'=>'ạ','Ả'=>'Ả','ả'=>'ả','Ấ'=>'Ấ','ấ'=>'ấ','Ầ'=>'Ầ','ầ'=>'ầ','Ẩ'=>'Ẩ','ẩ'=>'ẩ','Ẫ'=>'Ẫ','ẫ'=>'ẫ','Ậ'=>'Ậ','ậ'=>'ậ','Ắ'=>'Ắ','ắ'=>'ắ','Ằ'=>'Ằ','ằ'=>'ằ','Ẳ'=>'Ẳ','ẳ'=>'ẳ','Ẵ'=>'Ẵ','ẵ'=>'ẵ','Ặ'=>'Ặ','ặ'=>'ặ','Ẹ'=>'Ẹ','ẹ'=>'ẹ','Ẻ'=>'Ẻ','ẻ'=>'ẻ','Ẽ'=>'Ẽ','ẽ'=>'ẽ','Ế'=>'Ế','ế'=>'ế','Ề'=>'Ề','ề'=>'ề','Ể'=>'Ể','ể'=>'ể','Ễ'=>'Ễ','ễ'=>'ễ','Ệ'=>'Ệ','ệ'=>'ệ','Ỉ'=>'Ỉ','ỉ'=>'ỉ','Ị'=>'Ị','ị'=>'ị','Ọ'=>'Ọ','ọ'=>'ọ','Ỏ'=>'Ỏ','ỏ'=>'ỏ','Ố'=>'Ố','ố'=>'ố','Ồ'=>'Ồ','ồ'=>'ồ','Ổ'=>'Ổ','ổ'=>'ổ','Ỗ'=>'Ỗ','ỗ'=>'ỗ','Ộ'=>'Ộ','ộ'=>'ộ','Ớ'=>'Ớ','ớ'=>'ớ','Ờ'=>'Ờ','ờ'=>'ờ','Ở'=>'Ở','ở'=>'ở','Ỡ'=>'Ỡ','ỡ'=>'ỡ','Ợ'=>'Ợ','ợ'=>'ợ','Ụ'=>'Ụ','ụ'=>'ụ','Ủ'=>'Ủ','ủ'=>'ủ','Ứ'=>'Ứ','ứ'=>'ứ','Ừ'=>'Ừ','ừ'=>'ừ','Ử'=>'Ử','ử'=>'ử','Ữ'=>'Ữ','ữ'=>'ữ','Ự'=>'Ự','ự'=>'ự','Ỳ'=>'Ỳ','ỳ'=>'ỳ','Ỵ'=>'Ỵ','ỵ'=>'ỵ','Ỷ'=>'Ỷ','ỷ'=>'ỷ','Ỹ'=>'Ỹ','ỹ'=>'ỹ','ἀ'=>'ἀ','ἁ'=>'ἁ','ἂ'=>'ἂ','ἃ'=>'ἃ','ἄ'=>'ἄ','ἅ'=>'ἅ','ἆ'=>'ἆ','ἇ'=>'ἇ','Ἀ'=>'Ἀ','Ἁ'=>'Ἁ','Ἂ'=>'Ἂ','Ἃ'=>'Ἃ','Ἄ'=>'Ἄ','Ἅ'=>'Ἅ','Ἆ'=>'Ἆ','Ἇ'=>'Ἇ','ἐ'=>'ἐ','ἑ'=>'ἑ','ἒ'=>'ἒ','ἓ'=>'ἓ','ἔ'=>'ἔ','ἕ'=>'ἕ','Ἐ'=>'Ἐ','Ἑ'=>'Ἑ','Ἒ'=>'Ἒ','Ἓ'=>'Ἓ','Ἔ'=>'Ἔ','Ἕ'=>'Ἕ','ἠ'=>'ἠ','ἡ'=>'ἡ','ἢ'=>'ἢ','ἣ'=>'ἣ','ἤ'=>'ἤ','ἥ'=>'ἥ','ἦ'=>'ἦ','ἧ'=>'ἧ','Ἠ'=>'Ἠ','Ἡ'=>'Ἡ','Ἢ'=>'Ἢ','Ἣ'=>'Ἣ','Ἤ'=>'Ἤ','Ἥ'=>'Ἥ','Ἦ'=>'Ἦ','Ἧ'=>'Ἧ','ἰ'=>'ἰ','ἱ'=>'ἱ','ἲ'=>'ἲ','ἳ'=>'ἳ','ἴ'=>'ἴ','ἵ'=>'ἵ','ἶ'=>'ἶ','ἷ'=>'ἷ','Ἰ'=>'Ἰ','Ἱ'=>'Ἱ','Ἲ'=>'Ἲ','Ἳ'=>'Ἳ','Ἴ'=>'Ἴ','Ἵ'=>'Ἵ','Ἶ'=>'Ἶ','Ἷ'=>'Ἷ','ὀ'=>'ὀ','ὁ'=>'ὁ','ὂ'=>'ὂ','ὃ'=>'ὃ','ὄ'=>'ὄ','ὅ'=>'ὅ','Ὀ'=>'Ὀ','Ὁ'=>'Ὁ','Ὂ'=>'Ὂ','Ὃ'=>'Ὃ','Ὄ'=>'Ὄ','Ὅ'=>'Ὅ','ὐ'=>'ὐ','ὑ'=>'ὑ','ὒ'=>'ὒ','ὓ'=>'ὓ','ὔ'=>'ὔ','ὕ'=>'ὕ','ὖ'=>'ὖ','ὗ'=>'ὗ','Ὑ'=>'Ὑ','Ὓ'=>'Ὓ','Ὕ'=>'Ὕ','Ὗ'=>'Ὗ','ὠ'=>'ὠ','ὡ'=>'ὡ','ὢ'=>'ὢ','ὣ'=>'ὣ','ὤ'=>'ὤ','ὥ'=>'ὥ','ὦ'=>'ὦ','ὧ'=>'ὧ','Ὠ'=>'Ὠ','Ὡ'=>'Ὡ','Ὢ'=>'Ὢ','Ὣ'=>'Ὣ','Ὤ'=>'Ὤ','Ὥ'=>'Ὥ','Ὦ'=>'Ὦ','Ὧ'=>'Ὧ','ὰ'=>'ὰ','ὲ'=>'ὲ','ὴ'=>'ὴ','ὶ'=>'ὶ','ὸ'=>'ὸ','ὺ'=>'ὺ','ὼ'=>'ὼ','ᾀ'=>'ᾀ','ᾁ'=>'ᾁ','ᾂ'=>'ᾂ','ᾃ'=>'ᾃ','ᾄ'=>'ᾄ','ᾅ'=>'ᾅ','ᾆ'=>'ᾆ','ᾇ'=>'ᾇ','ᾈ'=>'ᾈ','ᾉ'=>'ᾉ','ᾊ'=>'ᾊ','ᾋ'=>'ᾋ','ᾌ'=>'ᾌ','ᾍ'=>'ᾍ','ᾎ'=>'ᾎ','ᾏ'=>'ᾏ','ᾐ'=>'ᾐ','ᾑ'=>'ᾑ','ᾒ'=>'ᾒ','ᾓ'=>'ᾓ','ᾔ'=>'ᾔ','ᾕ'=>'ᾕ','ᾖ'=>'ᾖ','ᾗ'=>'ᾗ','ᾘ'=>'ᾘ','ᾙ'=>'ᾙ','ᾚ'=>'ᾚ','ᾛ'=>'ᾛ','ᾜ'=>'ᾜ','ᾝ'=>'ᾝ','ᾞ'=>'ᾞ','ᾟ'=>'ᾟ','ᾠ'=>'ᾠ','ᾡ'=>'ᾡ','ᾢ'=>'ᾢ','ᾣ'=>'ᾣ','ᾤ'=>'ᾤ','ᾥ'=>'ᾥ','ᾦ'=>'ᾦ','ᾧ'=>'ᾧ','ᾨ'=>'ᾨ','ᾩ'=>'ᾩ','ᾪ'=>'ᾪ','ᾫ'=>'ᾫ','ᾬ'=>'ᾬ','ᾭ'=>'ᾭ','ᾮ'=>'ᾮ','ᾯ'=>'ᾯ','ᾰ'=>'ᾰ','ᾱ'=>'ᾱ','ᾲ'=>'ᾲ','ᾳ'=>'ᾳ','ᾴ'=>'ᾴ','ᾶ'=>'ᾶ','ᾷ'=>'ᾷ','Ᾰ'=>'Ᾰ','Ᾱ'=>'Ᾱ','Ὰ'=>'Ὰ','ᾼ'=>'ᾼ','῁'=>'῁','ῂ'=>'ῂ','ῃ'=>'ῃ','ῄ'=>'ῄ','ῆ'=>'ῆ','ῇ'=>'ῇ','Ὲ'=>'Ὲ','Ὴ'=>'Ὴ','ῌ'=>'ῌ','῍'=>'῍','῎'=>'῎','῏'=>'῏','ῐ'=>'ῐ','ῑ'=>'ῑ','ῒ'=>'ῒ','ῖ'=>'ῖ','ῗ'=>'ῗ','Ῐ'=>'Ῐ','Ῑ'=>'Ῑ','Ὶ'=>'Ὶ','῝'=>'῝','῞'=>'῞','῟'=>'῟','ῠ'=>'ῠ','ῡ'=>'ῡ','ῢ'=>'ῢ','ῤ'=>'ῤ','ῥ'=>'ῥ','ῦ'=>'ῦ','ῧ'=>'ῧ','Ῠ'=>'Ῠ','Ῡ'=>'Ῡ','Ὺ'=>'Ὺ','Ῥ'=>'Ῥ','῭'=>'῭','ῲ'=>'ῲ','ῳ'=>'ῳ','ῴ'=>'ῴ','ῶ'=>'ῶ','ῷ'=>'ῷ','Ὸ'=>'Ὸ','Ὼ'=>'Ὼ','ῼ'=>'ῼ','↚'=>'↚','↛'=>'↛','↮'=>'↮','⇍'=>'⇍','⇎'=>'⇎','⇏'=>'⇏','∄'=>'∄','∉'=>'∉','∌'=>'∌','∤'=>'∤','∦'=>'∦','≁'=>'≁','≄'=>'≄','≇'=>'≇','≉'=>'≉','≠'=>'≠','≢'=>'≢','≭'=>'≭','≮'=>'≮','≯'=>'≯','≰'=>'≰','≱'=>'≱','≴'=>'≴','≵'=>'≵','≸'=>'≸','≹'=>'≹','⊀'=>'⊀','⊁'=>'⊁','⊄'=>'⊄','⊅'=>'⊅','⊈'=>'⊈','⊉'=>'⊉','⊬'=>'⊬','⊭'=>'⊭','⊮'=>'⊮','⊯'=>'⊯','⋠'=>'⋠','⋡'=>'⋡','⋢'=>'⋢','⋣'=>'⋣','⋪'=>'⋪','⋫'=>'⋫','⋬'=>'⋬','⋭'=>'⋭','が'=>'が','ぎ'=>'ぎ','ぐ'=>'ぐ','げ'=>'げ','ご'=>'ご','ざ'=>'ざ','じ'=>'じ','ず'=>'ず','ぜ'=>'ぜ','ぞ'=>'ぞ','だ'=>'だ','ぢ'=>'ぢ','づ'=>'づ','で'=>'で','ど'=>'ど','ば'=>'ば','ぱ'=>'ぱ','び'=>'び','ぴ'=>'ぴ','ぶ'=>'ぶ','ぷ'=>'ぷ','べ'=>'べ','ぺ'=>'ぺ','ぼ'=>'ぼ','ぽ'=>'ぽ','ゔ'=>'ゔ','ゞ'=>'ゞ','ガ'=>'ガ','ギ'=>'ギ','グ'=>'グ','ゲ'=>'ゲ','ゴ'=>'ゴ','ザ'=>'ザ','ジ'=>'ジ','ズ'=>'ズ','ゼ'=>'ゼ','ゾ'=>'ゾ','ダ'=>'ダ','ヂ'=>'ヂ','ヅ'=>'ヅ','デ'=>'デ','ド'=>'ド','バ'=>'バ','パ'=>'パ','ビ'=>'ビ','ピ'=>'ピ','ブ'=>'ブ','プ'=>'プ','ベ'=>'ベ','ペ'=>'ペ','ボ'=>'ボ','ポ'=>'ポ','ヴ'=>'ヴ','ヷ'=>'ヷ','ヸ'=>'ヸ','ヹ'=>'ヹ','ヺ'=>'ヺ','ヾ'=>'ヾ'); diff --git a/phpBB/includes/utf/data/utf_canonical_decomp.php b/phpBB/includes/utf/data/utf_canonical_decomp.php deleted file mode 100644 index 9fb90803e2..0000000000 --- a/phpBB/includes/utf/data/utf_canonical_decomp.php +++ /dev/null @@ -1,2 +0,0 @@ -<?php -$GLOBALS['utf_canonical_decomp']=array('À'=>'À','Á'=>'Á','Â'=>'Â','Ã'=>'Ã','Ä'=>'Ä','Å'=>'Å','Ç'=>'Ç','È'=>'È','É'=>'É','Ê'=>'Ê','Ë'=>'Ë','Ì'=>'Ì','Í'=>'Í','Î'=>'Î','Ï'=>'Ï','Ñ'=>'Ñ','Ò'=>'Ò','Ó'=>'Ó','Ô'=>'Ô','Õ'=>'Õ','Ö'=>'Ö','Ù'=>'Ù','Ú'=>'Ú','Û'=>'Û','Ü'=>'Ü','Ý'=>'Ý','à'=>'à','á'=>'á','â'=>'â','ã'=>'ã','ä'=>'ä','å'=>'å','ç'=>'ç','è'=>'è','é'=>'é','ê'=>'ê','ë'=>'ë','ì'=>'ì','í'=>'í','î'=>'î','ï'=>'ï','ñ'=>'ñ','ò'=>'ò','ó'=>'ó','ô'=>'ô','õ'=>'õ','ö'=>'ö','ù'=>'ù','ú'=>'ú','û'=>'û','ü'=>'ü','ý'=>'ý','ÿ'=>'ÿ','Ā'=>'Ā','ā'=>'ā','Ă'=>'Ă','ă'=>'ă','Ą'=>'Ą','ą'=>'ą','Ć'=>'Ć','ć'=>'ć','Ĉ'=>'Ĉ','ĉ'=>'ĉ','Ċ'=>'Ċ','ċ'=>'ċ','Č'=>'Č','č'=>'č','Ď'=>'Ď','ď'=>'ď','Ē'=>'Ē','ē'=>'ē','Ĕ'=>'Ĕ','ĕ'=>'ĕ','Ė'=>'Ė','ė'=>'ė','Ę'=>'Ę','ę'=>'ę','Ě'=>'Ě','ě'=>'ě','Ĝ'=>'Ĝ','ĝ'=>'ĝ','Ğ'=>'Ğ','ğ'=>'ğ','Ġ'=>'Ġ','ġ'=>'ġ','Ģ'=>'Ģ','ģ'=>'ģ','Ĥ'=>'Ĥ','ĥ'=>'ĥ','Ĩ'=>'Ĩ','ĩ'=>'ĩ','Ī'=>'Ī','ī'=>'ī','Ĭ'=>'Ĭ','ĭ'=>'ĭ','Į'=>'Į','į'=>'į','İ'=>'İ','Ĵ'=>'Ĵ','ĵ'=>'ĵ','Ķ'=>'Ķ','ķ'=>'ķ','Ĺ'=>'Ĺ','ĺ'=>'ĺ','Ļ'=>'Ļ','ļ'=>'ļ','Ľ'=>'Ľ','ľ'=>'ľ','Ń'=>'Ń','ń'=>'ń','Ņ'=>'Ņ','ņ'=>'ņ','Ň'=>'Ň','ň'=>'ň','Ō'=>'Ō','ō'=>'ō','Ŏ'=>'Ŏ','ŏ'=>'ŏ','Ő'=>'Ő','ő'=>'ő','Ŕ'=>'Ŕ','ŕ'=>'ŕ','Ŗ'=>'Ŗ','ŗ'=>'ŗ','Ř'=>'Ř','ř'=>'ř','Ś'=>'Ś','ś'=>'ś','Ŝ'=>'Ŝ','ŝ'=>'ŝ','Ş'=>'Ş','ş'=>'ş','Š'=>'Š','š'=>'š','Ţ'=>'Ţ','ţ'=>'ţ','Ť'=>'Ť','ť'=>'ť','Ũ'=>'Ũ','ũ'=>'ũ','Ū'=>'Ū','ū'=>'ū','Ŭ'=>'Ŭ','ŭ'=>'ŭ','Ů'=>'Ů','ů'=>'ů','Ű'=>'Ű','ű'=>'ű','Ų'=>'Ų','ų'=>'ų','Ŵ'=>'Ŵ','ŵ'=>'ŵ','Ŷ'=>'Ŷ','ŷ'=>'ŷ','Ÿ'=>'Ÿ','Ź'=>'Ź','ź'=>'ź','Ż'=>'Ż','ż'=>'ż','Ž'=>'Ž','ž'=>'ž','Ơ'=>'Ơ','ơ'=>'ơ','Ư'=>'Ư','ư'=>'ư','Ǎ'=>'Ǎ','ǎ'=>'ǎ','Ǐ'=>'Ǐ','ǐ'=>'ǐ','Ǒ'=>'Ǒ','ǒ'=>'ǒ','Ǔ'=>'Ǔ','ǔ'=>'ǔ','Ǖ'=>'Ǖ','ǖ'=>'ǖ','Ǘ'=>'Ǘ','ǘ'=>'ǘ','Ǚ'=>'Ǚ','ǚ'=>'ǚ','Ǜ'=>'Ǜ','ǜ'=>'ǜ','Ǟ'=>'Ǟ','ǟ'=>'ǟ','Ǡ'=>'Ǡ','ǡ'=>'ǡ','Ǣ'=>'Ǣ','ǣ'=>'ǣ','Ǧ'=>'Ǧ','ǧ'=>'ǧ','Ǩ'=>'Ǩ','ǩ'=>'ǩ','Ǫ'=>'Ǫ','ǫ'=>'ǫ','Ǭ'=>'Ǭ','ǭ'=>'ǭ','Ǯ'=>'Ǯ','ǯ'=>'ǯ','ǰ'=>'ǰ','Ǵ'=>'Ǵ','ǵ'=>'ǵ','Ǹ'=>'Ǹ','ǹ'=>'ǹ','Ǻ'=>'Ǻ','ǻ'=>'ǻ','Ǽ'=>'Ǽ','ǽ'=>'ǽ','Ǿ'=>'Ǿ','ǿ'=>'ǿ','Ȁ'=>'Ȁ','ȁ'=>'ȁ','Ȃ'=>'Ȃ','ȃ'=>'ȃ','Ȅ'=>'Ȅ','ȅ'=>'ȅ','Ȇ'=>'Ȇ','ȇ'=>'ȇ','Ȉ'=>'Ȉ','ȉ'=>'ȉ','Ȋ'=>'Ȋ','ȋ'=>'ȋ','Ȍ'=>'Ȍ','ȍ'=>'ȍ','Ȏ'=>'Ȏ','ȏ'=>'ȏ','Ȑ'=>'Ȑ','ȑ'=>'ȑ','Ȓ'=>'Ȓ','ȓ'=>'ȓ','Ȕ'=>'Ȕ','ȕ'=>'ȕ','Ȗ'=>'Ȗ','ȗ'=>'ȗ','Ș'=>'Ș','ș'=>'ș','Ț'=>'Ț','ț'=>'ț','Ȟ'=>'Ȟ','ȟ'=>'ȟ','Ȧ'=>'Ȧ','ȧ'=>'ȧ','Ȩ'=>'Ȩ','ȩ'=>'ȩ','Ȫ'=>'Ȫ','ȫ'=>'ȫ','Ȭ'=>'Ȭ','ȭ'=>'ȭ','Ȯ'=>'Ȯ','ȯ'=>'ȯ','Ȱ'=>'Ȱ','ȱ'=>'ȱ','Ȳ'=>'Ȳ','ȳ'=>'ȳ','̀'=>'̀','́'=>'́','̓'=>'̓','̈́'=>'̈́','ʹ'=>'ʹ',';'=>';','΅'=>'΅','Ά'=>'Ά','·'=>'·','Έ'=>'Έ','Ή'=>'Ή','Ί'=>'Ί','Ό'=>'Ό','Ύ'=>'Ύ','Ώ'=>'Ώ','ΐ'=>'ΐ','Ϊ'=>'Ϊ','Ϋ'=>'Ϋ','ά'=>'ά','έ'=>'έ','ή'=>'ή','ί'=>'ί','ΰ'=>'ΰ','ϊ'=>'ϊ','ϋ'=>'ϋ','ό'=>'ό','ύ'=>'ύ','ώ'=>'ώ','ϓ'=>'ϓ','ϔ'=>'ϔ','Ѐ'=>'Ѐ','Ё'=>'Ё','Ѓ'=>'Ѓ','Ї'=>'Ї','Ќ'=>'Ќ','Ѝ'=>'Ѝ','Ў'=>'Ў','Й'=>'Й','й'=>'й','ѐ'=>'ѐ','ё'=>'ё','ѓ'=>'ѓ','ї'=>'ї','ќ'=>'ќ','ѝ'=>'ѝ','ў'=>'ў','Ѷ'=>'Ѷ','ѷ'=>'ѷ','Ӂ'=>'Ӂ','ӂ'=>'ӂ','Ӑ'=>'Ӑ','ӑ'=>'ӑ','Ӓ'=>'Ӓ','ӓ'=>'ӓ','Ӗ'=>'Ӗ','ӗ'=>'ӗ','Ӛ'=>'Ӛ','ӛ'=>'ӛ','Ӝ'=>'Ӝ','ӝ'=>'ӝ','Ӟ'=>'Ӟ','ӟ'=>'ӟ','Ӣ'=>'Ӣ','ӣ'=>'ӣ','Ӥ'=>'Ӥ','ӥ'=>'ӥ','Ӧ'=>'Ӧ','ӧ'=>'ӧ','Ӫ'=>'Ӫ','ӫ'=>'ӫ','Ӭ'=>'Ӭ','ӭ'=>'ӭ','Ӯ'=>'Ӯ','ӯ'=>'ӯ','Ӱ'=>'Ӱ','ӱ'=>'ӱ','Ӳ'=>'Ӳ','ӳ'=>'ӳ','Ӵ'=>'Ӵ','ӵ'=>'ӵ','Ӹ'=>'Ӹ','ӹ'=>'ӹ','آ'=>'آ','أ'=>'أ','ؤ'=>'ؤ','إ'=>'إ','ئ'=>'ئ','ۀ'=>'ۀ','ۂ'=>'ۂ','ۓ'=>'ۓ','ऩ'=>'ऩ','ऱ'=>'ऱ','ऴ'=>'ऴ','क़'=>'क़','ख़'=>'ख़','ग़'=>'ग़','ज़'=>'ज़','ड़'=>'ड़','ढ़'=>'ढ़','फ़'=>'फ़','य़'=>'य़','ো'=>'ো','ৌ'=>'ৌ','ড়'=>'ড়','ঢ়'=>'ঢ়','য়'=>'য়','ਲ਼'=>'ਲ਼','ਸ਼'=>'ਸ਼','ਖ਼'=>'ਖ਼','ਗ਼'=>'ਗ਼','ਜ਼'=>'ਜ਼','ਫ਼'=>'ਫ਼','ୈ'=>'ୈ','ୋ'=>'ୋ','ୌ'=>'ୌ','ଡ଼'=>'ଡ଼','ଢ଼'=>'ଢ଼','ஔ'=>'ஔ','ொ'=>'ொ','ோ'=>'ோ','ௌ'=>'ௌ','ై'=>'ై','ೀ'=>'ೀ','ೇ'=>'ೇ','ೈ'=>'ೈ','ೊ'=>'ೊ','ೋ'=>'ೋ','ൊ'=>'ൊ','ോ'=>'ോ','ൌ'=>'ൌ','ේ'=>'ේ','ො'=>'ො','ෝ'=>'ෝ','ෞ'=>'ෞ','གྷ'=>'གྷ','ཌྷ'=>'ཌྷ','དྷ'=>'དྷ','བྷ'=>'བྷ','ཛྷ'=>'ཛྷ','ཀྵ'=>'ཀྵ','ཱི'=>'ཱི','ཱུ'=>'ཱུ','ྲྀ'=>'ྲྀ','ླྀ'=>'ླྀ','ཱྀ'=>'ཱྀ','ྒྷ'=>'ྒྷ','ྜྷ'=>'ྜྷ','ྡྷ'=>'ྡྷ','ྦྷ'=>'ྦྷ','ྫྷ'=>'ྫྷ','ྐྵ'=>'ྐྵ','ဦ'=>'ဦ','ᬆ'=>'ᬆ','ᬈ'=>'ᬈ','ᬊ'=>'ᬊ','ᬌ'=>'ᬌ','ᬎ'=>'ᬎ','ᬒ'=>'ᬒ','ᬻ'=>'ᬻ','ᬽ'=>'ᬽ','ᭀ'=>'ᭀ','ᭁ'=>'ᭁ','ᭃ'=>'ᭃ','Ḁ'=>'Ḁ','ḁ'=>'ḁ','Ḃ'=>'Ḃ','ḃ'=>'ḃ','Ḅ'=>'Ḅ','ḅ'=>'ḅ','Ḇ'=>'Ḇ','ḇ'=>'ḇ','Ḉ'=>'Ḉ','ḉ'=>'ḉ','Ḋ'=>'Ḋ','ḋ'=>'ḋ','Ḍ'=>'Ḍ','ḍ'=>'ḍ','Ḏ'=>'Ḏ','ḏ'=>'ḏ','Ḑ'=>'Ḑ','ḑ'=>'ḑ','Ḓ'=>'Ḓ','ḓ'=>'ḓ','Ḕ'=>'Ḕ','ḕ'=>'ḕ','Ḗ'=>'Ḗ','ḗ'=>'ḗ','Ḙ'=>'Ḙ','ḙ'=>'ḙ','Ḛ'=>'Ḛ','ḛ'=>'ḛ','Ḝ'=>'Ḝ','ḝ'=>'ḝ','Ḟ'=>'Ḟ','ḟ'=>'ḟ','Ḡ'=>'Ḡ','ḡ'=>'ḡ','Ḣ'=>'Ḣ','ḣ'=>'ḣ','Ḥ'=>'Ḥ','ḥ'=>'ḥ','Ḧ'=>'Ḧ','ḧ'=>'ḧ','Ḩ'=>'Ḩ','ḩ'=>'ḩ','Ḫ'=>'Ḫ','ḫ'=>'ḫ','Ḭ'=>'Ḭ','ḭ'=>'ḭ','Ḯ'=>'Ḯ','ḯ'=>'ḯ','Ḱ'=>'Ḱ','ḱ'=>'ḱ','Ḳ'=>'Ḳ','ḳ'=>'ḳ','Ḵ'=>'Ḵ','ḵ'=>'ḵ','Ḷ'=>'Ḷ','ḷ'=>'ḷ','Ḹ'=>'Ḹ','ḹ'=>'ḹ','Ḻ'=>'Ḻ','ḻ'=>'ḻ','Ḽ'=>'Ḽ','ḽ'=>'ḽ','Ḿ'=>'Ḿ','ḿ'=>'ḿ','Ṁ'=>'Ṁ','ṁ'=>'ṁ','Ṃ'=>'Ṃ','ṃ'=>'ṃ','Ṅ'=>'Ṅ','ṅ'=>'ṅ','Ṇ'=>'Ṇ','ṇ'=>'ṇ','Ṉ'=>'Ṉ','ṉ'=>'ṉ','Ṋ'=>'Ṋ','ṋ'=>'ṋ','Ṍ'=>'Ṍ','ṍ'=>'ṍ','Ṏ'=>'Ṏ','ṏ'=>'ṏ','Ṑ'=>'Ṑ','ṑ'=>'ṑ','Ṓ'=>'Ṓ','ṓ'=>'ṓ','Ṕ'=>'Ṕ','ṕ'=>'ṕ','Ṗ'=>'Ṗ','ṗ'=>'ṗ','Ṙ'=>'Ṙ','ṙ'=>'ṙ','Ṛ'=>'Ṛ','ṛ'=>'ṛ','Ṝ'=>'Ṝ','ṝ'=>'ṝ','Ṟ'=>'Ṟ','ṟ'=>'ṟ','Ṡ'=>'Ṡ','ṡ'=>'ṡ','Ṣ'=>'Ṣ','ṣ'=>'ṣ','Ṥ'=>'Ṥ','ṥ'=>'ṥ','Ṧ'=>'Ṧ','ṧ'=>'ṧ','Ṩ'=>'Ṩ','ṩ'=>'ṩ','Ṫ'=>'Ṫ','ṫ'=>'ṫ','Ṭ'=>'Ṭ','ṭ'=>'ṭ','Ṯ'=>'Ṯ','ṯ'=>'ṯ','Ṱ'=>'Ṱ','ṱ'=>'ṱ','Ṳ'=>'Ṳ','ṳ'=>'ṳ','Ṵ'=>'Ṵ','ṵ'=>'ṵ','Ṷ'=>'Ṷ','ṷ'=>'ṷ','Ṹ'=>'Ṹ','ṹ'=>'ṹ','Ṻ'=>'Ṻ','ṻ'=>'ṻ','Ṽ'=>'Ṽ','ṽ'=>'ṽ','Ṿ'=>'Ṿ','ṿ'=>'ṿ','Ẁ'=>'Ẁ','ẁ'=>'ẁ','Ẃ'=>'Ẃ','ẃ'=>'ẃ','Ẅ'=>'Ẅ','ẅ'=>'ẅ','Ẇ'=>'Ẇ','ẇ'=>'ẇ','Ẉ'=>'Ẉ','ẉ'=>'ẉ','Ẋ'=>'Ẋ','ẋ'=>'ẋ','Ẍ'=>'Ẍ','ẍ'=>'ẍ','Ẏ'=>'Ẏ','ẏ'=>'ẏ','Ẑ'=>'Ẑ','ẑ'=>'ẑ','Ẓ'=>'Ẓ','ẓ'=>'ẓ','Ẕ'=>'Ẕ','ẕ'=>'ẕ','ẖ'=>'ẖ','ẗ'=>'ẗ','ẘ'=>'ẘ','ẙ'=>'ẙ','ẛ'=>'ẛ','Ạ'=>'Ạ','ạ'=>'ạ','Ả'=>'Ả','ả'=>'ả','Ấ'=>'Ấ','ấ'=>'ấ','Ầ'=>'Ầ','ầ'=>'ầ','Ẩ'=>'Ẩ','ẩ'=>'ẩ','Ẫ'=>'Ẫ','ẫ'=>'ẫ','Ậ'=>'Ậ','ậ'=>'ậ','Ắ'=>'Ắ','ắ'=>'ắ','Ằ'=>'Ằ','ằ'=>'ằ','Ẳ'=>'Ẳ','ẳ'=>'ẳ','Ẵ'=>'Ẵ','ẵ'=>'ẵ','Ặ'=>'Ặ','ặ'=>'ặ','Ẹ'=>'Ẹ','ẹ'=>'ẹ','Ẻ'=>'Ẻ','ẻ'=>'ẻ','Ẽ'=>'Ẽ','ẽ'=>'ẽ','Ế'=>'Ế','ế'=>'ế','Ề'=>'Ề','ề'=>'ề','Ể'=>'Ể','ể'=>'ể','Ễ'=>'Ễ','ễ'=>'ễ','Ệ'=>'Ệ','ệ'=>'ệ','Ỉ'=>'Ỉ','ỉ'=>'ỉ','Ị'=>'Ị','ị'=>'ị','Ọ'=>'Ọ','ọ'=>'ọ','Ỏ'=>'Ỏ','ỏ'=>'ỏ','Ố'=>'Ố','ố'=>'ố','Ồ'=>'Ồ','ồ'=>'ồ','Ổ'=>'Ổ','ổ'=>'ổ','Ỗ'=>'Ỗ','ỗ'=>'ỗ','Ộ'=>'Ộ','ộ'=>'ộ','Ớ'=>'Ớ','ớ'=>'ớ','Ờ'=>'Ờ','ờ'=>'ờ','Ở'=>'Ở','ở'=>'ở','Ỡ'=>'Ỡ','ỡ'=>'ỡ','Ợ'=>'Ợ','ợ'=>'ợ','Ụ'=>'Ụ','ụ'=>'ụ','Ủ'=>'Ủ','ủ'=>'ủ','Ứ'=>'Ứ','ứ'=>'ứ','Ừ'=>'Ừ','ừ'=>'ừ','Ử'=>'Ử','ử'=>'ử','Ữ'=>'Ữ','ữ'=>'ữ','Ự'=>'Ự','ự'=>'ự','Ỳ'=>'Ỳ','ỳ'=>'ỳ','Ỵ'=>'Ỵ','ỵ'=>'ỵ','Ỷ'=>'Ỷ','ỷ'=>'ỷ','Ỹ'=>'Ỹ','ỹ'=>'ỹ','ἀ'=>'ἀ','ἁ'=>'ἁ','ἂ'=>'ἂ','ἃ'=>'ἃ','ἄ'=>'ἄ','ἅ'=>'ἅ','ἆ'=>'ἆ','ἇ'=>'ἇ','Ἀ'=>'Ἀ','Ἁ'=>'Ἁ','Ἂ'=>'Ἂ','Ἃ'=>'Ἃ','Ἄ'=>'Ἄ','Ἅ'=>'Ἅ','Ἆ'=>'Ἆ','Ἇ'=>'Ἇ','ἐ'=>'ἐ','ἑ'=>'ἑ','ἒ'=>'ἒ','ἓ'=>'ἓ','ἔ'=>'ἔ','ἕ'=>'ἕ','Ἐ'=>'Ἐ','Ἑ'=>'Ἑ','Ἒ'=>'Ἒ','Ἓ'=>'Ἓ','Ἔ'=>'Ἔ','Ἕ'=>'Ἕ','ἠ'=>'ἠ','ἡ'=>'ἡ','ἢ'=>'ἢ','ἣ'=>'ἣ','ἤ'=>'ἤ','ἥ'=>'ἥ','ἦ'=>'ἦ','ἧ'=>'ἧ','Ἠ'=>'Ἠ','Ἡ'=>'Ἡ','Ἢ'=>'Ἢ','Ἣ'=>'Ἣ','Ἤ'=>'Ἤ','Ἥ'=>'Ἥ','Ἦ'=>'Ἦ','Ἧ'=>'Ἧ','ἰ'=>'ἰ','ἱ'=>'ἱ','ἲ'=>'ἲ','ἳ'=>'ἳ','ἴ'=>'ἴ','ἵ'=>'ἵ','ἶ'=>'ἶ','ἷ'=>'ἷ','Ἰ'=>'Ἰ','Ἱ'=>'Ἱ','Ἲ'=>'Ἲ','Ἳ'=>'Ἳ','Ἴ'=>'Ἴ','Ἵ'=>'Ἵ','Ἶ'=>'Ἶ','Ἷ'=>'Ἷ','ὀ'=>'ὀ','ὁ'=>'ὁ','ὂ'=>'ὂ','ὃ'=>'ὃ','ὄ'=>'ὄ','ὅ'=>'ὅ','Ὀ'=>'Ὀ','Ὁ'=>'Ὁ','Ὂ'=>'Ὂ','Ὃ'=>'Ὃ','Ὄ'=>'Ὄ','Ὅ'=>'Ὅ','ὐ'=>'ὐ','ὑ'=>'ὑ','ὒ'=>'ὒ','ὓ'=>'ὓ','ὔ'=>'ὔ','ὕ'=>'ὕ','ὖ'=>'ὖ','ὗ'=>'ὗ','Ὑ'=>'Ὑ','Ὓ'=>'Ὓ','Ὕ'=>'Ὕ','Ὗ'=>'Ὗ','ὠ'=>'ὠ','ὡ'=>'ὡ','ὢ'=>'ὢ','ὣ'=>'ὣ','ὤ'=>'ὤ','ὥ'=>'ὥ','ὦ'=>'ὦ','ὧ'=>'ὧ','Ὠ'=>'Ὠ','Ὡ'=>'Ὡ','Ὢ'=>'Ὢ','Ὣ'=>'Ὣ','Ὤ'=>'Ὤ','Ὥ'=>'Ὥ','Ὦ'=>'Ὦ','Ὧ'=>'Ὧ','ὰ'=>'ὰ','ά'=>'ά','ὲ'=>'ὲ','έ'=>'έ','ὴ'=>'ὴ','ή'=>'ή','ὶ'=>'ὶ','ί'=>'ί','ὸ'=>'ὸ','ό'=>'ό','ὺ'=>'ὺ','ύ'=>'ύ','ὼ'=>'ὼ','ώ'=>'ώ','ᾀ'=>'ᾀ','ᾁ'=>'ᾁ','ᾂ'=>'ᾂ','ᾃ'=>'ᾃ','ᾄ'=>'ᾄ','ᾅ'=>'ᾅ','ᾆ'=>'ᾆ','ᾇ'=>'ᾇ','ᾈ'=>'ᾈ','ᾉ'=>'ᾉ','ᾊ'=>'ᾊ','ᾋ'=>'ᾋ','ᾌ'=>'ᾌ','ᾍ'=>'ᾍ','ᾎ'=>'ᾎ','ᾏ'=>'ᾏ','ᾐ'=>'ᾐ','ᾑ'=>'ᾑ','ᾒ'=>'ᾒ','ᾓ'=>'ᾓ','ᾔ'=>'ᾔ','ᾕ'=>'ᾕ','ᾖ'=>'ᾖ','ᾗ'=>'ᾗ','ᾘ'=>'ᾘ','ᾙ'=>'ᾙ','ᾚ'=>'ᾚ','ᾛ'=>'ᾛ','ᾜ'=>'ᾜ','ᾝ'=>'ᾝ','ᾞ'=>'ᾞ','ᾟ'=>'ᾟ','ᾠ'=>'ᾠ','ᾡ'=>'ᾡ','ᾢ'=>'ᾢ','ᾣ'=>'ᾣ','ᾤ'=>'ᾤ','ᾥ'=>'ᾥ','ᾦ'=>'ᾦ','ᾧ'=>'ᾧ','ᾨ'=>'ᾨ','ᾩ'=>'ᾩ','ᾪ'=>'ᾪ','ᾫ'=>'ᾫ','ᾬ'=>'ᾬ','ᾭ'=>'ᾭ','ᾮ'=>'ᾮ','ᾯ'=>'ᾯ','ᾰ'=>'ᾰ','ᾱ'=>'ᾱ','ᾲ'=>'ᾲ','ᾳ'=>'ᾳ','ᾴ'=>'ᾴ','ᾶ'=>'ᾶ','ᾷ'=>'ᾷ','Ᾰ'=>'Ᾰ','Ᾱ'=>'Ᾱ','Ὰ'=>'Ὰ','Ά'=>'Ά','ᾼ'=>'ᾼ','ι'=>'ι','῁'=>'῁','ῂ'=>'ῂ','ῃ'=>'ῃ','ῄ'=>'ῄ','ῆ'=>'ῆ','ῇ'=>'ῇ','Ὲ'=>'Ὲ','Έ'=>'Έ','Ὴ'=>'Ὴ','Ή'=>'Ή','ῌ'=>'ῌ','῍'=>'῍','῎'=>'῎','῏'=>'῏','ῐ'=>'ῐ','ῑ'=>'ῑ','ῒ'=>'ῒ','ΐ'=>'ΐ','ῖ'=>'ῖ','ῗ'=>'ῗ','Ῐ'=>'Ῐ','Ῑ'=>'Ῑ','Ὶ'=>'Ὶ','Ί'=>'Ί','῝'=>'῝','῞'=>'῞','῟'=>'῟','ῠ'=>'ῠ','ῡ'=>'ῡ','ῢ'=>'ῢ','ΰ'=>'ΰ','ῤ'=>'ῤ','ῥ'=>'ῥ','ῦ'=>'ῦ','ῧ'=>'ῧ','Ῠ'=>'Ῠ','Ῡ'=>'Ῡ','Ὺ'=>'Ὺ','Ύ'=>'Ύ','Ῥ'=>'Ῥ','῭'=>'῭','΅'=>'΅','`'=>'`','ῲ'=>'ῲ','ῳ'=>'ῳ','ῴ'=>'ῴ','ῶ'=>'ῶ','ῷ'=>'ῷ','Ὸ'=>'Ὸ','Ό'=>'Ό','Ὼ'=>'Ὼ','Ώ'=>'Ώ','ῼ'=>'ῼ','´'=>'´',' '=>' ',' '=>' ','Ω'=>'Ω','K'=>'K','Å'=>'Å','↚'=>'↚','↛'=>'↛','↮'=>'↮','⇍'=>'⇍','⇎'=>'⇎','⇏'=>'⇏','∄'=>'∄','∉'=>'∉','∌'=>'∌','∤'=>'∤','∦'=>'∦','≁'=>'≁','≄'=>'≄','≇'=>'≇','≉'=>'≉','≠'=>'≠','≢'=>'≢','≭'=>'≭','≮'=>'≮','≯'=>'≯','≰'=>'≰','≱'=>'≱','≴'=>'≴','≵'=>'≵','≸'=>'≸','≹'=>'≹','⊀'=>'⊀','⊁'=>'⊁','⊄'=>'⊄','⊅'=>'⊅','⊈'=>'⊈','⊉'=>'⊉','⊬'=>'⊬','⊭'=>'⊭','⊮'=>'⊮','⊯'=>'⊯','⋠'=>'⋠','⋡'=>'⋡','⋢'=>'⋢','⋣'=>'⋣','⋪'=>'⋪','⋫'=>'⋫','⋬'=>'⋬','⋭'=>'⋭','〈'=>'〈','〉'=>'〉','⫝̸'=>'⫝̸','が'=>'が','ぎ'=>'ぎ','ぐ'=>'ぐ','げ'=>'げ','ご'=>'ご','ざ'=>'ざ','じ'=>'じ','ず'=>'ず','ぜ'=>'ぜ','ぞ'=>'ぞ','だ'=>'だ','ぢ'=>'ぢ','づ'=>'づ','で'=>'で','ど'=>'ど','ば'=>'ば','ぱ'=>'ぱ','び'=>'び','ぴ'=>'ぴ','ぶ'=>'ぶ','ぷ'=>'ぷ','べ'=>'べ','ぺ'=>'ぺ','ぼ'=>'ぼ','ぽ'=>'ぽ','ゔ'=>'ゔ','ゞ'=>'ゞ','ガ'=>'ガ','ギ'=>'ギ','グ'=>'グ','ゲ'=>'ゲ','ゴ'=>'ゴ','ザ'=>'ザ','ジ'=>'ジ','ズ'=>'ズ','ゼ'=>'ゼ','ゾ'=>'ゾ','ダ'=>'ダ','ヂ'=>'ヂ','ヅ'=>'ヅ','デ'=>'デ','ド'=>'ド','バ'=>'バ','パ'=>'パ','ビ'=>'ビ','ピ'=>'ピ','ブ'=>'ブ','プ'=>'プ','ベ'=>'ベ','ペ'=>'ペ','ボ'=>'ボ','ポ'=>'ポ','ヴ'=>'ヴ','ヷ'=>'ヷ','ヸ'=>'ヸ','ヹ'=>'ヹ','ヺ'=>'ヺ','ヾ'=>'ヾ','豈'=>'豈','更'=>'更','車'=>'車','賈'=>'賈','滑'=>'滑','串'=>'串','句'=>'句','龜'=>'龜','龜'=>'龜','契'=>'契','金'=>'金','喇'=>'喇','奈'=>'奈','懶'=>'懶','癩'=>'癩','羅'=>'羅','蘿'=>'蘿','螺'=>'螺','裸'=>'裸','邏'=>'邏','樂'=>'樂','洛'=>'洛','烙'=>'烙','珞'=>'珞','落'=>'落','酪'=>'酪','駱'=>'駱','亂'=>'亂','卵'=>'卵','欄'=>'欄','爛'=>'爛','蘭'=>'蘭','鸞'=>'鸞','嵐'=>'嵐','濫'=>'濫','藍'=>'藍','襤'=>'襤','拉'=>'拉','臘'=>'臘','蠟'=>'蠟','廊'=>'廊','朗'=>'朗','浪'=>'浪','狼'=>'狼','郎'=>'郎','來'=>'來','冷'=>'冷','勞'=>'勞','擄'=>'擄','櫓'=>'櫓','爐'=>'爐','盧'=>'盧','老'=>'老','蘆'=>'蘆','虜'=>'虜','路'=>'路','露'=>'露','魯'=>'魯','鷺'=>'鷺','碌'=>'碌','祿'=>'祿','綠'=>'綠','菉'=>'菉','錄'=>'錄','鹿'=>'鹿','論'=>'論','壟'=>'壟','弄'=>'弄','籠'=>'籠','聾'=>'聾','牢'=>'牢','磊'=>'磊','賂'=>'賂','雷'=>'雷','壘'=>'壘','屢'=>'屢','樓'=>'樓','淚'=>'淚','漏'=>'漏','累'=>'累','縷'=>'縷','陋'=>'陋','勒'=>'勒','肋'=>'肋','凜'=>'凜','凌'=>'凌','稜'=>'稜','綾'=>'綾','菱'=>'菱','陵'=>'陵','讀'=>'讀','拏'=>'拏','樂'=>'樂','諾'=>'諾','丹'=>'丹','寧'=>'寧','怒'=>'怒','率'=>'率','異'=>'異','北'=>'北','磻'=>'磻','便'=>'便','復'=>'復','不'=>'不','泌'=>'泌','數'=>'數','索'=>'索','參'=>'參','塞'=>'塞','省'=>'省','葉'=>'葉','說'=>'說','殺'=>'殺','辰'=>'辰','沈'=>'沈','拾'=>'拾','若'=>'若','掠'=>'掠','略'=>'略','亮'=>'亮','兩'=>'兩','凉'=>'凉','梁'=>'梁','糧'=>'糧','良'=>'良','諒'=>'諒','量'=>'量','勵'=>'勵','呂'=>'呂','女'=>'女','廬'=>'廬','旅'=>'旅','濾'=>'濾','礪'=>'礪','閭'=>'閭','驪'=>'驪','麗'=>'麗','黎'=>'黎','力'=>'力','曆'=>'曆','歷'=>'歷','轢'=>'轢','年'=>'年','憐'=>'憐','戀'=>'戀','撚'=>'撚','漣'=>'漣','煉'=>'煉','璉'=>'璉','秊'=>'秊','練'=>'練','聯'=>'聯','輦'=>'輦','蓮'=>'蓮','連'=>'連','鍊'=>'鍊','列'=>'列','劣'=>'劣','咽'=>'咽','烈'=>'烈','裂'=>'裂','說'=>'說','廉'=>'廉','念'=>'念','捻'=>'捻','殮'=>'殮','簾'=>'簾','獵'=>'獵','令'=>'令','囹'=>'囹','寧'=>'寧','嶺'=>'嶺','怜'=>'怜','玲'=>'玲','瑩'=>'瑩','羚'=>'羚','聆'=>'聆','鈴'=>'鈴','零'=>'零','靈'=>'靈','領'=>'領','例'=>'例','禮'=>'禮','醴'=>'醴','隸'=>'隸','惡'=>'惡','了'=>'了','僚'=>'僚','寮'=>'寮','尿'=>'尿','料'=>'料','樂'=>'樂','燎'=>'燎','療'=>'療','蓼'=>'蓼','遼'=>'遼','龍'=>'龍','暈'=>'暈','阮'=>'阮','劉'=>'劉','杻'=>'杻','柳'=>'柳','流'=>'流','溜'=>'溜','琉'=>'琉','留'=>'留','硫'=>'硫','紐'=>'紐','類'=>'類','六'=>'六','戮'=>'戮','陸'=>'陸','倫'=>'倫','崙'=>'崙','淪'=>'淪','輪'=>'輪','律'=>'律','慄'=>'慄','栗'=>'栗','率'=>'率','隆'=>'隆','利'=>'利','吏'=>'吏','履'=>'履','易'=>'易','李'=>'李','梨'=>'梨','泥'=>'泥','理'=>'理','痢'=>'痢','罹'=>'罹','裏'=>'裏','裡'=>'裡','里'=>'里','離'=>'離','匿'=>'匿','溺'=>'溺','吝'=>'吝','燐'=>'燐','璘'=>'璘','藺'=>'藺','隣'=>'隣','鱗'=>'鱗','麟'=>'麟','林'=>'林','淋'=>'淋','臨'=>'臨','立'=>'立','笠'=>'笠','粒'=>'粒','狀'=>'狀','炙'=>'炙','識'=>'識','什'=>'什','茶'=>'茶','刺'=>'刺','切'=>'切','度'=>'度','拓'=>'拓','糖'=>'糖','宅'=>'宅','洞'=>'洞','暴'=>'暴','輻'=>'輻','行'=>'行','降'=>'降','見'=>'見','廓'=>'廓','兀'=>'兀','嗀'=>'嗀','塚'=>'塚','晴'=>'晴','凞'=>'凞','猪'=>'猪','益'=>'益','礼'=>'礼','神'=>'神','祥'=>'祥','福'=>'福','靖'=>'靖','精'=>'精','羽'=>'羽','蘒'=>'蘒','諸'=>'諸','逸'=>'逸','都'=>'都','飯'=>'飯','飼'=>'飼','館'=>'館','鶴'=>'鶴','侮'=>'侮','僧'=>'僧','免'=>'免','勉'=>'勉','勤'=>'勤','卑'=>'卑','喝'=>'喝','嘆'=>'嘆','器'=>'器','塀'=>'塀','墨'=>'墨','層'=>'層','屮'=>'屮','悔'=>'悔','慨'=>'慨','憎'=>'憎','懲'=>'懲','敏'=>'敏','既'=>'既','暑'=>'暑','梅'=>'梅','海'=>'海','渚'=>'渚','漢'=>'漢','煮'=>'煮','爫'=>'爫','琢'=>'琢','碑'=>'碑','社'=>'社','祉'=>'祉','祈'=>'祈','祐'=>'祐','祖'=>'祖','祝'=>'祝','禍'=>'禍','禎'=>'禎','穀'=>'穀','突'=>'突','節'=>'節','練'=>'練','縉'=>'縉','繁'=>'繁','署'=>'署','者'=>'者','臭'=>'臭','艹'=>'艹','艹'=>'艹','著'=>'著','褐'=>'褐','視'=>'視','謁'=>'謁','謹'=>'謹','賓'=>'賓','贈'=>'贈','辶'=>'辶','逸'=>'逸','難'=>'難','響'=>'響','頻'=>'頻','並'=>'並','况'=>'况','全'=>'全','侀'=>'侀','充'=>'充','冀'=>'冀','勇'=>'勇','勺'=>'勺','喝'=>'喝','啕'=>'啕','喙'=>'喙','嗢'=>'嗢','塚'=>'塚','墳'=>'墳','奄'=>'奄','奔'=>'奔','婢'=>'婢','嬨'=>'嬨','廒'=>'廒','廙'=>'廙','彩'=>'彩','徭'=>'徭','惘'=>'惘','慎'=>'慎','愈'=>'愈','憎'=>'憎','慠'=>'慠','懲'=>'懲','戴'=>'戴','揄'=>'揄','搜'=>'搜','摒'=>'摒','敖'=>'敖','晴'=>'晴','朗'=>'朗','望'=>'望','杖'=>'杖','歹'=>'歹','殺'=>'殺','流'=>'流','滛'=>'滛','滋'=>'滋','漢'=>'漢','瀞'=>'瀞','煮'=>'煮','瞧'=>'瞧','爵'=>'爵','犯'=>'犯','猪'=>'猪','瑱'=>'瑱','甆'=>'甆','画'=>'画','瘝'=>'瘝','瘟'=>'瘟','益'=>'益','盛'=>'盛','直'=>'直','睊'=>'睊','着'=>'着','磌'=>'磌','窱'=>'窱','節'=>'節','类'=>'类','絛'=>'絛','練'=>'練','缾'=>'缾','者'=>'者','荒'=>'荒','華'=>'華','蝹'=>'蝹','襁'=>'襁','覆'=>'覆','視'=>'視','調'=>'調','諸'=>'諸','請'=>'請','謁'=>'謁','諾'=>'諾','諭'=>'諭','謹'=>'謹','變'=>'變','贈'=>'贈','輸'=>'輸','遲'=>'遲','醙'=>'醙','鉶'=>'鉶','陼'=>'陼','難'=>'難','靖'=>'靖','韛'=>'韛','響'=>'響','頋'=>'頋','頻'=>'頻','鬒'=>'鬒','龜'=>'龜','𢡊'=>'𢡊','𢡄'=>'𢡄','𣏕'=>'𣏕','㮝'=>'㮝','䀘'=>'䀘','䀹'=>'䀹','𥉉'=>'𥉉','𥳐'=>'𥳐','𧻓'=>'𧻓','齃'=>'齃','龎'=>'龎','יִ'=>'יִ','ײַ'=>'ײַ','שׁ'=>'שׁ','שׂ'=>'שׂ','שּׁ'=>'שּׁ','שּׂ'=>'שּׂ','אַ'=>'אַ','אָ'=>'אָ','אּ'=>'אּ','בּ'=>'בּ','גּ'=>'גּ','דּ'=>'דּ','הּ'=>'הּ','וּ'=>'וּ','זּ'=>'זּ','טּ'=>'טּ','יּ'=>'יּ','ךּ'=>'ךּ','כּ'=>'כּ','לּ'=>'לּ','מּ'=>'מּ','נּ'=>'נּ','סּ'=>'סּ','ףּ'=>'ףּ','פּ'=>'פּ','צּ'=>'צּ','קּ'=>'קּ','רּ'=>'רּ','שּ'=>'שּ','תּ'=>'תּ','וֹ'=>'וֹ','בֿ'=>'בֿ','כֿ'=>'כֿ','פֿ'=>'פֿ','𝅗𝅥'=>'𝅗𝅥','𝅘𝅥'=>'𝅘𝅥','𝅘𝅥𝅮'=>'𝅘𝅥𝅮','𝅘𝅥𝅯'=>'𝅘𝅥𝅯','𝅘𝅥𝅰'=>'𝅘𝅥𝅰','𝅘𝅥𝅱'=>'𝅘𝅥𝅱','𝅘𝅥𝅲'=>'𝅘𝅥𝅲','𝆹𝅥'=>'𝆹𝅥','𝆺𝅥'=>'𝆺𝅥','𝆹𝅥𝅮'=>'𝆹𝅥𝅮','𝆺𝅥𝅮'=>'𝆺𝅥𝅮','𝆹𝅥𝅯'=>'𝆹𝅥𝅯','𝆺𝅥𝅯'=>'𝆺𝅥𝅯','丽'=>'丽','丸'=>'丸','乁'=>'乁','𠄢'=>'𠄢','你'=>'你','侮'=>'侮','侻'=>'侻','倂'=>'倂','偺'=>'偺','備'=>'備','僧'=>'僧','像'=>'像','㒞'=>'㒞','𠘺'=>'𠘺','免'=>'免','兔'=>'兔','兤'=>'兤','具'=>'具','𠔜'=>'𠔜','㒹'=>'㒹','內'=>'內','再'=>'再','𠕋'=>'𠕋','冗'=>'冗','冤'=>'冤','仌'=>'仌','冬'=>'冬','况'=>'况','𩇟'=>'𩇟','凵'=>'凵','刃'=>'刃','㓟'=>'㓟','刻'=>'刻','剆'=>'剆','割'=>'割','剷'=>'剷','㔕'=>'㔕','勇'=>'勇','勉'=>'勉','勤'=>'勤','勺'=>'勺','包'=>'包','匆'=>'匆','北'=>'北','卉'=>'卉','卑'=>'卑','博'=>'博','即'=>'即','卽'=>'卽','卿'=>'卿','卿'=>'卿','卿'=>'卿','𠨬'=>'𠨬','灰'=>'灰','及'=>'及','叟'=>'叟','𠭣'=>'𠭣','叫'=>'叫','叱'=>'叱','吆'=>'吆','咞'=>'咞','吸'=>'吸','呈'=>'呈','周'=>'周','咢'=>'咢','哶'=>'哶','唐'=>'唐','啓'=>'啓','啣'=>'啣','善'=>'善','善'=>'善','喙'=>'喙','喫'=>'喫','喳'=>'喳','嗂'=>'嗂','圖'=>'圖','嘆'=>'嘆','圗'=>'圗','噑'=>'噑','噴'=>'噴','切'=>'切','壮'=>'壮','城'=>'城','埴'=>'埴','堍'=>'堍','型'=>'型','堲'=>'堲','報'=>'報','墬'=>'墬','𡓤'=>'𡓤','売'=>'売','壷'=>'壷','夆'=>'夆','多'=>'多','夢'=>'夢','奢'=>'奢','𡚨'=>'𡚨','𡛪'=>'𡛪','姬'=>'姬','娛'=>'娛','娧'=>'娧','姘'=>'姘','婦'=>'婦','㛮'=>'㛮','㛼'=>'㛼','嬈'=>'嬈','嬾'=>'嬾','嬾'=>'嬾','𡧈'=>'𡧈','寃'=>'寃','寘'=>'寘','寧'=>'寧','寳'=>'寳','𡬘'=>'𡬘','寿'=>'寿','将'=>'将','当'=>'当','尢'=>'尢','㞁'=>'㞁','屠'=>'屠','屮'=>'屮','峀'=>'峀','岍'=>'岍','𡷤'=>'𡷤','嵃'=>'嵃','𡷦'=>'𡷦','嵮'=>'嵮','嵫'=>'嵫','嵼'=>'嵼','巡'=>'巡','巢'=>'巢','㠯'=>'㠯','巽'=>'巽','帨'=>'帨','帽'=>'帽','幩'=>'幩','㡢'=>'㡢','𢆃'=>'𢆃','㡼'=>'㡼','庰'=>'庰','庳'=>'庳','庶'=>'庶','廊'=>'廊','𪎒'=>'𪎒','廾'=>'廾','𢌱'=>'𢌱','𢌱'=>'𢌱','舁'=>'舁','弢'=>'弢','弢'=>'弢','㣇'=>'㣇','𣊸'=>'𣊸','𦇚'=>'𦇚','形'=>'形','彫'=>'彫','㣣'=>'㣣','徚'=>'徚','忍'=>'忍','志'=>'志','忹'=>'忹','悁'=>'悁','㤺'=>'㤺','㤜'=>'㤜','悔'=>'悔','𢛔'=>'𢛔','惇'=>'惇','慈'=>'慈','慌'=>'慌','慎'=>'慎','慌'=>'慌','慺'=>'慺','憎'=>'憎','憲'=>'憲','憤'=>'憤','憯'=>'憯','懞'=>'懞','懲'=>'懲','懶'=>'懶','成'=>'成','戛'=>'戛','扝'=>'扝','抱'=>'抱','拔'=>'拔','捐'=>'捐','𢬌'=>'𢬌','挽'=>'挽','拼'=>'拼','捨'=>'捨','掃'=>'掃','揤'=>'揤','𢯱'=>'𢯱','搢'=>'搢','揅'=>'揅','掩'=>'掩','㨮'=>'㨮','摩'=>'摩','摾'=>'摾','撝'=>'撝','摷'=>'摷','㩬'=>'㩬','敏'=>'敏','敬'=>'敬','𣀊'=>'𣀊','旣'=>'旣','書'=>'書','晉'=>'晉','㬙'=>'㬙','暑'=>'暑','㬈'=>'㬈','㫤'=>'㫤','冒'=>'冒','冕'=>'冕','最'=>'最','暜'=>'暜','肭'=>'肭','䏙'=>'䏙','朗'=>'朗','望'=>'望','朡'=>'朡','杞'=>'杞','杓'=>'杓','𣏃'=>'𣏃','㭉'=>'㭉','柺'=>'柺','枅'=>'枅','桒'=>'桒','梅'=>'梅','𣑭'=>'𣑭','梎'=>'梎','栟'=>'栟','椔'=>'椔','㮝'=>'㮝','楂'=>'楂','榣'=>'榣','槪'=>'槪','檨'=>'檨','𣚣'=>'𣚣','櫛'=>'櫛','㰘'=>'㰘','次'=>'次','𣢧'=>'𣢧','歔'=>'歔','㱎'=>'㱎','歲'=>'歲','殟'=>'殟','殺'=>'殺','殻'=>'殻','𣪍'=>'𣪍','𡴋'=>'𡴋','𣫺'=>'𣫺','汎'=>'汎','𣲼'=>'𣲼','沿'=>'沿','泍'=>'泍','汧'=>'汧','洖'=>'洖','派'=>'派','海'=>'海','流'=>'流','浩'=>'浩','浸'=>'浸','涅'=>'涅','𣴞'=>'𣴞','洴'=>'洴','港'=>'港','湮'=>'湮','㴳'=>'㴳','滋'=>'滋','滇'=>'滇','𣻑'=>'𣻑','淹'=>'淹','潮'=>'潮','𣽞'=>'𣽞','𣾎'=>'𣾎','濆'=>'濆','瀹'=>'瀹','瀞'=>'瀞','瀛'=>'瀛','㶖'=>'㶖','灊'=>'灊','災'=>'災','灷'=>'灷','炭'=>'炭','𠔥'=>'𠔥','煅'=>'煅','𤉣'=>'𤉣','熜'=>'熜','𤎫'=>'𤎫','爨'=>'爨','爵'=>'爵','牐'=>'牐','𤘈'=>'𤘈','犀'=>'犀','犕'=>'犕','𤜵'=>'𤜵','𤠔'=>'𤠔','獺'=>'獺','王'=>'王','㺬'=>'㺬','玥'=>'玥','㺸'=>'㺸','㺸'=>'㺸','瑇'=>'瑇','瑜'=>'瑜','瑱'=>'瑱','璅'=>'璅','瓊'=>'瓊','㼛'=>'㼛','甤'=>'甤','𤰶'=>'𤰶','甾'=>'甾','𤲒'=>'𤲒','異'=>'異','𢆟'=>'𢆟','瘐'=>'瘐','𤾡'=>'𤾡','𤾸'=>'𤾸','𥁄'=>'𥁄','㿼'=>'㿼','䀈'=>'䀈','直'=>'直','𥃳'=>'𥃳','𥃲'=>'𥃲','𥄙'=>'𥄙','𥄳'=>'𥄳','眞'=>'眞','真'=>'真','真'=>'真','睊'=>'睊','䀹'=>'䀹','瞋'=>'瞋','䁆'=>'䁆','䂖'=>'䂖','𥐝'=>'𥐝','硎'=>'硎','碌'=>'碌','磌'=>'磌','䃣'=>'䃣','𥘦'=>'𥘦','祖'=>'祖','𥚚'=>'𥚚','𥛅'=>'𥛅','福'=>'福','秫'=>'秫','䄯'=>'䄯','穀'=>'穀','穊'=>'穊','穏'=>'穏','𥥼'=>'𥥼','𥪧'=>'𥪧','𥪧'=>'𥪧','竮'=>'竮','䈂'=>'䈂','𥮫'=>'𥮫','篆'=>'篆','築'=>'築','䈧'=>'䈧','𥲀'=>'𥲀','糒'=>'糒','䊠'=>'䊠','糨'=>'糨','糣'=>'糣','紀'=>'紀','𥾆'=>'𥾆','絣'=>'絣','䌁'=>'䌁','緇'=>'緇','縂'=>'縂','繅'=>'繅','䌴'=>'䌴','𦈨'=>'𦈨','𦉇'=>'𦉇','䍙'=>'䍙','𦋙'=>'𦋙','罺'=>'罺','𦌾'=>'𦌾','羕'=>'羕','翺'=>'翺','者'=>'者','𦓚'=>'𦓚','𦔣'=>'𦔣','聠'=>'聠','𦖨'=>'𦖨','聰'=>'聰','𣍟'=>'𣍟','䏕'=>'䏕','育'=>'育','脃'=>'脃','䐋'=>'䐋','脾'=>'脾','媵'=>'媵','𦞧'=>'𦞧','𦞵'=>'𦞵','𣎓'=>'𣎓','𣎜'=>'𣎜','舁'=>'舁','舄'=>'舄','辞'=>'辞','䑫'=>'䑫','芑'=>'芑','芋'=>'芋','芝'=>'芝','劳'=>'劳','花'=>'花','芳'=>'芳','芽'=>'芽','苦'=>'苦','𦬼'=>'𦬼','若'=>'若','茝'=>'茝','荣'=>'荣','莭'=>'莭','茣'=>'茣','莽'=>'莽','菧'=>'菧','著'=>'著','荓'=>'荓','菊'=>'菊','菌'=>'菌','菜'=>'菜','𦰶'=>'𦰶','𦵫'=>'𦵫','𦳕'=>'𦳕','䔫'=>'䔫','蓱'=>'蓱','蓳'=>'蓳','蔖'=>'蔖','𧏊'=>'𧏊','蕤'=>'蕤','𦼬'=>'𦼬','䕝'=>'䕝','䕡'=>'䕡','𦾱'=>'𦾱','𧃒'=>'𧃒','䕫'=>'䕫','虐'=>'虐','虜'=>'虜','虧'=>'虧','虩'=>'虩','蚩'=>'蚩','蚈'=>'蚈','蜎'=>'蜎','蛢'=>'蛢','蝹'=>'蝹','蜨'=>'蜨','蝫'=>'蝫','螆'=>'螆','䗗'=>'䗗','蟡'=>'蟡','蠁'=>'蠁','䗹'=>'䗹','衠'=>'衠','衣'=>'衣','𧙧'=>'𧙧','裗'=>'裗','裞'=>'裞','䘵'=>'䘵','裺'=>'裺','㒻'=>'㒻','𧢮'=>'𧢮','𧥦'=>'𧥦','䚾'=>'䚾','䛇'=>'䛇','誠'=>'誠','諭'=>'諭','變'=>'變','豕'=>'豕','𧲨'=>'𧲨','貫'=>'貫','賁'=>'賁','贛'=>'贛','起'=>'起','𧼯'=>'𧼯','𠠄'=>'𠠄','跋'=>'跋','趼'=>'趼','跰'=>'跰','𠣞'=>'𠣞','軔'=>'軔','輸'=>'輸','𨗒'=>'𨗒','𨗭'=>'𨗭','邔'=>'邔','郱'=>'郱','鄑'=>'鄑','𨜮'=>'𨜮','鄛'=>'鄛','鈸'=>'鈸','鋗'=>'鋗','鋘'=>'鋘','鉼'=>'鉼','鏹'=>'鏹','鐕'=>'鐕','𨯺'=>'𨯺','開'=>'開','䦕'=>'䦕','閷'=>'閷','𨵷'=>'𨵷','䧦'=>'䧦','雃'=>'雃','嶲'=>'嶲','霣'=>'霣','𩅅'=>'𩅅','𩈚'=>'𩈚','䩮'=>'䩮','䩶'=>'䩶','韠'=>'韠','𩐊'=>'𩐊','䪲'=>'䪲','𩒖'=>'𩒖','頋'=>'頋','頋'=>'頋','頩'=>'頩','𩖶'=>'𩖶','飢'=>'飢','䬳'=>'䬳','餩'=>'餩','馧'=>'馧','駂'=>'駂','駾'=>'駾','䯎'=>'䯎','𩬰'=>'𩬰','鬒'=>'鬒','鱀'=>'鱀','鳽'=>'鳽','䳎'=>'䳎','䳭'=>'䳭','鵧'=>'鵧','𪃎'=>'𪃎','䳸'=>'䳸','𪄅'=>'𪄅','𪈎'=>'𪈎','𪊑'=>'𪊑','麻'=>'麻','䵖'=>'䵖','黹'=>'黹','黾'=>'黾','鼅'=>'鼅','鼏'=>'鼏','鼖'=>'鼖','鼻'=>'鼻','𪘀'=>'𪘀'); diff --git a/phpBB/includes/utf/data/utf_compatibility_decomp.php b/phpBB/includes/utf/data/utf_compatibility_decomp.php deleted file mode 100644 index c62948e81a..0000000000 --- a/phpBB/includes/utf/data/utf_compatibility_decomp.php +++ /dev/null @@ -1,2 +0,0 @@ -<?php -$GLOBALS['utf_compatibility_decomp']=array(' '=>' ','¨'=>' ̈','ª'=>'a','¯'=>' ̄','²'=>'2','³'=>'3','´'=>' ́','µ'=>'μ','¸'=>' ̧','¹'=>'1','º'=>'o','¼'=>'1⁄4','½'=>'1⁄2','¾'=>'3⁄4','À'=>'À','Á'=>'Á','Â'=>'Â','Ã'=>'Ã','Ä'=>'Ä','Å'=>'Å','Ç'=>'Ç','È'=>'È','É'=>'É','Ê'=>'Ê','Ë'=>'Ë','Ì'=>'Ì','Í'=>'Í','Î'=>'Î','Ï'=>'Ï','Ñ'=>'Ñ','Ò'=>'Ò','Ó'=>'Ó','Ô'=>'Ô','Õ'=>'Õ','Ö'=>'Ö','Ù'=>'Ù','Ú'=>'Ú','Û'=>'Û','Ü'=>'Ü','Ý'=>'Ý','à'=>'à','á'=>'á','â'=>'â','ã'=>'ã','ä'=>'ä','å'=>'å','ç'=>'ç','è'=>'è','é'=>'é','ê'=>'ê','ë'=>'ë','ì'=>'ì','í'=>'í','î'=>'î','ï'=>'ï','ñ'=>'ñ','ò'=>'ò','ó'=>'ó','ô'=>'ô','õ'=>'õ','ö'=>'ö','ù'=>'ù','ú'=>'ú','û'=>'û','ü'=>'ü','ý'=>'ý','ÿ'=>'ÿ','Ā'=>'Ā','ā'=>'ā','Ă'=>'Ă','ă'=>'ă','Ą'=>'Ą','ą'=>'ą','Ć'=>'Ć','ć'=>'ć','Ĉ'=>'Ĉ','ĉ'=>'ĉ','Ċ'=>'Ċ','ċ'=>'ċ','Č'=>'Č','č'=>'č','Ď'=>'Ď','ď'=>'ď','Ē'=>'Ē','ē'=>'ē','Ĕ'=>'Ĕ','ĕ'=>'ĕ','Ė'=>'Ė','ė'=>'ė','Ę'=>'Ę','ę'=>'ę','Ě'=>'Ě','ě'=>'ě','Ĝ'=>'Ĝ','ĝ'=>'ĝ','Ğ'=>'Ğ','ğ'=>'ğ','Ġ'=>'Ġ','ġ'=>'ġ','Ģ'=>'Ģ','ģ'=>'ģ','Ĥ'=>'Ĥ','ĥ'=>'ĥ','Ĩ'=>'Ĩ','ĩ'=>'ĩ','Ī'=>'Ī','ī'=>'ī','Ĭ'=>'Ĭ','ĭ'=>'ĭ','Į'=>'Į','į'=>'į','İ'=>'İ','IJ'=>'IJ','ij'=>'ij','Ĵ'=>'Ĵ','ĵ'=>'ĵ','Ķ'=>'Ķ','ķ'=>'ķ','Ĺ'=>'Ĺ','ĺ'=>'ĺ','Ļ'=>'Ļ','ļ'=>'ļ','Ľ'=>'Ľ','ľ'=>'ľ','Ŀ'=>'L·','ŀ'=>'l·','Ń'=>'Ń','ń'=>'ń','Ņ'=>'Ņ','ņ'=>'ņ','Ň'=>'Ň','ň'=>'ň','ʼn'=>'ʼn','Ō'=>'Ō','ō'=>'ō','Ŏ'=>'Ŏ','ŏ'=>'ŏ','Ő'=>'Ő','ő'=>'ő','Ŕ'=>'Ŕ','ŕ'=>'ŕ','Ŗ'=>'Ŗ','ŗ'=>'ŗ','Ř'=>'Ř','ř'=>'ř','Ś'=>'Ś','ś'=>'ś','Ŝ'=>'Ŝ','ŝ'=>'ŝ','Ş'=>'Ş','ş'=>'ş','Š'=>'Š','š'=>'š','Ţ'=>'Ţ','ţ'=>'ţ','Ť'=>'Ť','ť'=>'ť','Ũ'=>'Ũ','ũ'=>'ũ','Ū'=>'Ū','ū'=>'ū','Ŭ'=>'Ŭ','ŭ'=>'ŭ','Ů'=>'Ů','ů'=>'ů','Ű'=>'Ű','ű'=>'ű','Ų'=>'Ų','ų'=>'ų','Ŵ'=>'Ŵ','ŵ'=>'ŵ','Ŷ'=>'Ŷ','ŷ'=>'ŷ','Ÿ'=>'Ÿ','Ź'=>'Ź','ź'=>'ź','Ż'=>'Ż','ż'=>'ż','Ž'=>'Ž','ž'=>'ž','ſ'=>'s','Ơ'=>'Ơ','ơ'=>'ơ','Ư'=>'Ư','ư'=>'ư','DŽ'=>'DŽ','Dž'=>'Dž','dž'=>'dž','LJ'=>'LJ','Lj'=>'Lj','lj'=>'lj','NJ'=>'NJ','Nj'=>'Nj','nj'=>'nj','Ǎ'=>'Ǎ','ǎ'=>'ǎ','Ǐ'=>'Ǐ','ǐ'=>'ǐ','Ǒ'=>'Ǒ','ǒ'=>'ǒ','Ǔ'=>'Ǔ','ǔ'=>'ǔ','Ǖ'=>'Ǖ','ǖ'=>'ǖ','Ǘ'=>'Ǘ','ǘ'=>'ǘ','Ǚ'=>'Ǚ','ǚ'=>'ǚ','Ǜ'=>'Ǜ','ǜ'=>'ǜ','Ǟ'=>'Ǟ','ǟ'=>'ǟ','Ǡ'=>'Ǡ','ǡ'=>'ǡ','Ǣ'=>'Ǣ','ǣ'=>'ǣ','Ǧ'=>'Ǧ','ǧ'=>'ǧ','Ǩ'=>'Ǩ','ǩ'=>'ǩ','Ǫ'=>'Ǫ','ǫ'=>'ǫ','Ǭ'=>'Ǭ','ǭ'=>'ǭ','Ǯ'=>'Ǯ','ǯ'=>'ǯ','ǰ'=>'ǰ','DZ'=>'DZ','Dz'=>'Dz','dz'=>'dz','Ǵ'=>'Ǵ','ǵ'=>'ǵ','Ǹ'=>'Ǹ','ǹ'=>'ǹ','Ǻ'=>'Ǻ','ǻ'=>'ǻ','Ǽ'=>'Ǽ','ǽ'=>'ǽ','Ǿ'=>'Ǿ','ǿ'=>'ǿ','Ȁ'=>'Ȁ','ȁ'=>'ȁ','Ȃ'=>'Ȃ','ȃ'=>'ȃ','Ȅ'=>'Ȅ','ȅ'=>'ȅ','Ȇ'=>'Ȇ','ȇ'=>'ȇ','Ȉ'=>'Ȉ','ȉ'=>'ȉ','Ȋ'=>'Ȋ','ȋ'=>'ȋ','Ȍ'=>'Ȍ','ȍ'=>'ȍ','Ȏ'=>'Ȏ','ȏ'=>'ȏ','Ȑ'=>'Ȑ','ȑ'=>'ȑ','Ȓ'=>'Ȓ','ȓ'=>'ȓ','Ȕ'=>'Ȕ','ȕ'=>'ȕ','Ȗ'=>'Ȗ','ȗ'=>'ȗ','Ș'=>'Ș','ș'=>'ș','Ț'=>'Ț','ț'=>'ț','Ȟ'=>'Ȟ','ȟ'=>'ȟ','Ȧ'=>'Ȧ','ȧ'=>'ȧ','Ȩ'=>'Ȩ','ȩ'=>'ȩ','Ȫ'=>'Ȫ','ȫ'=>'ȫ','Ȭ'=>'Ȭ','ȭ'=>'ȭ','Ȯ'=>'Ȯ','ȯ'=>'ȯ','Ȱ'=>'Ȱ','ȱ'=>'ȱ','Ȳ'=>'Ȳ','ȳ'=>'ȳ','ʰ'=>'h','ʱ'=>'ɦ','ʲ'=>'j','ʳ'=>'r','ʴ'=>'ɹ','ʵ'=>'ɻ','ʶ'=>'ʁ','ʷ'=>'w','ʸ'=>'y','˘'=>' ̆','˙'=>' ̇','˚'=>' ̊','˛'=>' ̨','˜'=>' ̃','˝'=>' ̋','ˠ'=>'ɣ','ˡ'=>'l','ˢ'=>'s','ˣ'=>'x','ˤ'=>'ʕ','̀'=>'̀','́'=>'́','̓'=>'̓','̈́'=>'̈́','ʹ'=>'ʹ','ͺ'=>' ͅ',';'=>';','΄'=>' ́','΅'=>' ̈́','Ά'=>'Ά','·'=>'·','Έ'=>'Έ','Ή'=>'Ή','Ί'=>'Ί','Ό'=>'Ό','Ύ'=>'Ύ','Ώ'=>'Ώ','ΐ'=>'ΐ','Ϊ'=>'Ϊ','Ϋ'=>'Ϋ','ά'=>'ά','έ'=>'έ','ή'=>'ή','ί'=>'ί','ΰ'=>'ΰ','ϊ'=>'ϊ','ϋ'=>'ϋ','ό'=>'ό','ύ'=>'ύ','ώ'=>'ώ','ϐ'=>'β','ϑ'=>'θ','ϒ'=>'Υ','ϓ'=>'Ύ','ϔ'=>'Ϋ','ϕ'=>'φ','ϖ'=>'π','ϰ'=>'κ','ϱ'=>'ρ','ϲ'=>'ς','ϴ'=>'Θ','ϵ'=>'ε','Ϲ'=>'Σ','Ѐ'=>'Ѐ','Ё'=>'Ё','Ѓ'=>'Ѓ','Ї'=>'Ї','Ќ'=>'Ќ','Ѝ'=>'Ѝ','Ў'=>'Ў','Й'=>'Й','й'=>'й','ѐ'=>'ѐ','ё'=>'ё','ѓ'=>'ѓ','ї'=>'ї','ќ'=>'ќ','ѝ'=>'ѝ','ў'=>'ў','Ѷ'=>'Ѷ','ѷ'=>'ѷ','Ӂ'=>'Ӂ','ӂ'=>'ӂ','Ӑ'=>'Ӑ','ӑ'=>'ӑ','Ӓ'=>'Ӓ','ӓ'=>'ӓ','Ӗ'=>'Ӗ','ӗ'=>'ӗ','Ӛ'=>'Ӛ','ӛ'=>'ӛ','Ӝ'=>'Ӝ','ӝ'=>'ӝ','Ӟ'=>'Ӟ','ӟ'=>'ӟ','Ӣ'=>'Ӣ','ӣ'=>'ӣ','Ӥ'=>'Ӥ','ӥ'=>'ӥ','Ӧ'=>'Ӧ','ӧ'=>'ӧ','Ӫ'=>'Ӫ','ӫ'=>'ӫ','Ӭ'=>'Ӭ','ӭ'=>'ӭ','Ӯ'=>'Ӯ','ӯ'=>'ӯ','Ӱ'=>'Ӱ','ӱ'=>'ӱ','Ӳ'=>'Ӳ','ӳ'=>'ӳ','Ӵ'=>'Ӵ','ӵ'=>'ӵ','Ӹ'=>'Ӹ','ӹ'=>'ӹ','և'=>'եւ','آ'=>'آ','أ'=>'أ','ؤ'=>'ؤ','إ'=>'إ','ئ'=>'ئ','ٵ'=>'اٴ','ٶ'=>'وٴ','ٷ'=>'ۇٴ','ٸ'=>'يٴ','ۀ'=>'ۀ','ۂ'=>'ۂ','ۓ'=>'ۓ','ऩ'=>'ऩ','ऱ'=>'ऱ','ऴ'=>'ऴ','क़'=>'क़','ख़'=>'ख़','ग़'=>'ग़','ज़'=>'ज़','ड़'=>'ड़','ढ़'=>'ढ़','फ़'=>'फ़','य़'=>'य़','ো'=>'ো','ৌ'=>'ৌ','ড়'=>'ড়','ঢ়'=>'ঢ়','য়'=>'য়','ਲ਼'=>'ਲ਼','ਸ਼'=>'ਸ਼','ਖ਼'=>'ਖ਼','ਗ਼'=>'ਗ਼','ਜ਼'=>'ਜ਼','ਫ਼'=>'ਫ਼','ୈ'=>'ୈ','ୋ'=>'ୋ','ୌ'=>'ୌ','ଡ଼'=>'ଡ଼','ଢ଼'=>'ଢ଼','ஔ'=>'ஔ','ொ'=>'ொ','ோ'=>'ோ','ௌ'=>'ௌ','ై'=>'ై','ೀ'=>'ೀ','ೇ'=>'ೇ','ೈ'=>'ೈ','ೊ'=>'ೊ','ೋ'=>'ೋ','ൊ'=>'ൊ','ോ'=>'ോ','ൌ'=>'ൌ','ේ'=>'ේ','ො'=>'ො','ෝ'=>'ෝ','ෞ'=>'ෞ','ำ'=>'ํา','ຳ'=>'ໍາ','ໜ'=>'ຫນ','ໝ'=>'ຫມ','༌'=>'་','གྷ'=>'གྷ','ཌྷ'=>'ཌྷ','དྷ'=>'དྷ','བྷ'=>'བྷ','ཛྷ'=>'ཛྷ','ཀྵ'=>'ཀྵ','ཱི'=>'ཱི','ཱུ'=>'ཱུ','ྲྀ'=>'ྲྀ','ཷ'=>'ྲཱྀ','ླྀ'=>'ླྀ','ཹ'=>'ླཱྀ','ཱྀ'=>'ཱྀ','ྒྷ'=>'ྒྷ','ྜྷ'=>'ྜྷ','ྡྷ'=>'ྡྷ','ྦྷ'=>'ྦྷ','ྫྷ'=>'ྫྷ','ྐྵ'=>'ྐྵ','ဦ'=>'ဦ','ჼ'=>'ნ','ᬆ'=>'ᬆ','ᬈ'=>'ᬈ','ᬊ'=>'ᬊ','ᬌ'=>'ᬌ','ᬎ'=>'ᬎ','ᬒ'=>'ᬒ','ᬻ'=>'ᬻ','ᬽ'=>'ᬽ','ᭀ'=>'ᭀ','ᭁ'=>'ᭁ','ᭃ'=>'ᭃ','ᴬ'=>'A','ᴭ'=>'Æ','ᴮ'=>'B','ᴰ'=>'D','ᴱ'=>'E','ᴲ'=>'Ǝ','ᴳ'=>'G','ᴴ'=>'H','ᴵ'=>'I','ᴶ'=>'J','ᴷ'=>'K','ᴸ'=>'L','ᴹ'=>'M','ᴺ'=>'N','ᴼ'=>'O','ᴽ'=>'Ȣ','ᴾ'=>'P','ᴿ'=>'R','ᵀ'=>'T','ᵁ'=>'U','ᵂ'=>'W','ᵃ'=>'a','ᵄ'=>'ɐ','ᵅ'=>'ɑ','ᵆ'=>'ᴂ','ᵇ'=>'b','ᵈ'=>'d','ᵉ'=>'e','ᵊ'=>'ə','ᵋ'=>'ɛ','ᵌ'=>'ɜ','ᵍ'=>'g','ᵏ'=>'k','ᵐ'=>'m','ᵑ'=>'ŋ','ᵒ'=>'o','ᵓ'=>'ɔ','ᵔ'=>'ᴖ','ᵕ'=>'ᴗ','ᵖ'=>'p','ᵗ'=>'t','ᵘ'=>'u','ᵙ'=>'ᴝ','ᵚ'=>'ɯ','ᵛ'=>'v','ᵜ'=>'ᴥ','ᵝ'=>'β','ᵞ'=>'γ','ᵟ'=>'δ','ᵠ'=>'φ','ᵡ'=>'χ','ᵢ'=>'i','ᵣ'=>'r','ᵤ'=>'u','ᵥ'=>'v','ᵦ'=>'β','ᵧ'=>'γ','ᵨ'=>'ρ','ᵩ'=>'φ','ᵪ'=>'χ','ᵸ'=>'н','ᶛ'=>'ɒ','ᶜ'=>'c','ᶝ'=>'ɕ','ᶞ'=>'ð','ᶟ'=>'ɜ','ᶠ'=>'f','ᶡ'=>'ɟ','ᶢ'=>'ɡ','ᶣ'=>'ɥ','ᶤ'=>'ɨ','ᶥ'=>'ɩ','ᶦ'=>'ɪ','ᶧ'=>'ᵻ','ᶨ'=>'ʝ','ᶩ'=>'ɭ','ᶪ'=>'ᶅ','ᶫ'=>'ʟ','ᶬ'=>'ɱ','ᶭ'=>'ɰ','ᶮ'=>'ɲ','ᶯ'=>'ɳ','ᶰ'=>'ɴ','ᶱ'=>'ɵ','ᶲ'=>'ɸ','ᶳ'=>'ʂ','ᶴ'=>'ʃ','ᶵ'=>'ƫ','ᶶ'=>'ʉ','ᶷ'=>'ʊ','ᶸ'=>'ᴜ','ᶹ'=>'ʋ','ᶺ'=>'ʌ','ᶻ'=>'z','ᶼ'=>'ʐ','ᶽ'=>'ʑ','ᶾ'=>'ʒ','ᶿ'=>'θ','Ḁ'=>'Ḁ','ḁ'=>'ḁ','Ḃ'=>'Ḃ','ḃ'=>'ḃ','Ḅ'=>'Ḅ','ḅ'=>'ḅ','Ḇ'=>'Ḇ','ḇ'=>'ḇ','Ḉ'=>'Ḉ','ḉ'=>'ḉ','Ḋ'=>'Ḋ','ḋ'=>'ḋ','Ḍ'=>'Ḍ','ḍ'=>'ḍ','Ḏ'=>'Ḏ','ḏ'=>'ḏ','Ḑ'=>'Ḑ','ḑ'=>'ḑ','Ḓ'=>'Ḓ','ḓ'=>'ḓ','Ḕ'=>'Ḕ','ḕ'=>'ḕ','Ḗ'=>'Ḗ','ḗ'=>'ḗ','Ḙ'=>'Ḙ','ḙ'=>'ḙ','Ḛ'=>'Ḛ','ḛ'=>'ḛ','Ḝ'=>'Ḝ','ḝ'=>'ḝ','Ḟ'=>'Ḟ','ḟ'=>'ḟ','Ḡ'=>'Ḡ','ḡ'=>'ḡ','Ḣ'=>'Ḣ','ḣ'=>'ḣ','Ḥ'=>'Ḥ','ḥ'=>'ḥ','Ḧ'=>'Ḧ','ḧ'=>'ḧ','Ḩ'=>'Ḩ','ḩ'=>'ḩ','Ḫ'=>'Ḫ','ḫ'=>'ḫ','Ḭ'=>'Ḭ','ḭ'=>'ḭ','Ḯ'=>'Ḯ','ḯ'=>'ḯ','Ḱ'=>'Ḱ','ḱ'=>'ḱ','Ḳ'=>'Ḳ','ḳ'=>'ḳ','Ḵ'=>'Ḵ','ḵ'=>'ḵ','Ḷ'=>'Ḷ','ḷ'=>'ḷ','Ḹ'=>'Ḹ','ḹ'=>'ḹ','Ḻ'=>'Ḻ','ḻ'=>'ḻ','Ḽ'=>'Ḽ','ḽ'=>'ḽ','Ḿ'=>'Ḿ','ḿ'=>'ḿ','Ṁ'=>'Ṁ','ṁ'=>'ṁ','Ṃ'=>'Ṃ','ṃ'=>'ṃ','Ṅ'=>'Ṅ','ṅ'=>'ṅ','Ṇ'=>'Ṇ','ṇ'=>'ṇ','Ṉ'=>'Ṉ','ṉ'=>'ṉ','Ṋ'=>'Ṋ','ṋ'=>'ṋ','Ṍ'=>'Ṍ','ṍ'=>'ṍ','Ṏ'=>'Ṏ','ṏ'=>'ṏ','Ṑ'=>'Ṑ','ṑ'=>'ṑ','Ṓ'=>'Ṓ','ṓ'=>'ṓ','Ṕ'=>'Ṕ','ṕ'=>'ṕ','Ṗ'=>'Ṗ','ṗ'=>'ṗ','Ṙ'=>'Ṙ','ṙ'=>'ṙ','Ṛ'=>'Ṛ','ṛ'=>'ṛ','Ṝ'=>'Ṝ','ṝ'=>'ṝ','Ṟ'=>'Ṟ','ṟ'=>'ṟ','Ṡ'=>'Ṡ','ṡ'=>'ṡ','Ṣ'=>'Ṣ','ṣ'=>'ṣ','Ṥ'=>'Ṥ','ṥ'=>'ṥ','Ṧ'=>'Ṧ','ṧ'=>'ṧ','Ṩ'=>'Ṩ','ṩ'=>'ṩ','Ṫ'=>'Ṫ','ṫ'=>'ṫ','Ṭ'=>'Ṭ','ṭ'=>'ṭ','Ṯ'=>'Ṯ','ṯ'=>'ṯ','Ṱ'=>'Ṱ','ṱ'=>'ṱ','Ṳ'=>'Ṳ','ṳ'=>'ṳ','Ṵ'=>'Ṵ','ṵ'=>'ṵ','Ṷ'=>'Ṷ','ṷ'=>'ṷ','Ṹ'=>'Ṹ','ṹ'=>'ṹ','Ṻ'=>'Ṻ','ṻ'=>'ṻ','Ṽ'=>'Ṽ','ṽ'=>'ṽ','Ṿ'=>'Ṿ','ṿ'=>'ṿ','Ẁ'=>'Ẁ','ẁ'=>'ẁ','Ẃ'=>'Ẃ','ẃ'=>'ẃ','Ẅ'=>'Ẅ','ẅ'=>'ẅ','Ẇ'=>'Ẇ','ẇ'=>'ẇ','Ẉ'=>'Ẉ','ẉ'=>'ẉ','Ẋ'=>'Ẋ','ẋ'=>'ẋ','Ẍ'=>'Ẍ','ẍ'=>'ẍ','Ẏ'=>'Ẏ','ẏ'=>'ẏ','Ẑ'=>'Ẑ','ẑ'=>'ẑ','Ẓ'=>'Ẓ','ẓ'=>'ẓ','Ẕ'=>'Ẕ','ẕ'=>'ẕ','ẖ'=>'ẖ','ẗ'=>'ẗ','ẘ'=>'ẘ','ẙ'=>'ẙ','ẚ'=>'aʾ','ẛ'=>'ṡ','Ạ'=>'Ạ','ạ'=>'ạ','Ả'=>'Ả','ả'=>'ả','Ấ'=>'Ấ','ấ'=>'ấ','Ầ'=>'Ầ','ầ'=>'ầ','Ẩ'=>'Ẩ','ẩ'=>'ẩ','Ẫ'=>'Ẫ','ẫ'=>'ẫ','Ậ'=>'Ậ','ậ'=>'ậ','Ắ'=>'Ắ','ắ'=>'ắ','Ằ'=>'Ằ','ằ'=>'ằ','Ẳ'=>'Ẳ','ẳ'=>'ẳ','Ẵ'=>'Ẵ','ẵ'=>'ẵ','Ặ'=>'Ặ','ặ'=>'ặ','Ẹ'=>'Ẹ','ẹ'=>'ẹ','Ẻ'=>'Ẻ','ẻ'=>'ẻ','Ẽ'=>'Ẽ','ẽ'=>'ẽ','Ế'=>'Ế','ế'=>'ế','Ề'=>'Ề','ề'=>'ề','Ể'=>'Ể','ể'=>'ể','Ễ'=>'Ễ','ễ'=>'ễ','Ệ'=>'Ệ','ệ'=>'ệ','Ỉ'=>'Ỉ','ỉ'=>'ỉ','Ị'=>'Ị','ị'=>'ị','Ọ'=>'Ọ','ọ'=>'ọ','Ỏ'=>'Ỏ','ỏ'=>'ỏ','Ố'=>'Ố','ố'=>'ố','Ồ'=>'Ồ','ồ'=>'ồ','Ổ'=>'Ổ','ổ'=>'ổ','Ỗ'=>'Ỗ','ỗ'=>'ỗ','Ộ'=>'Ộ','ộ'=>'ộ','Ớ'=>'Ớ','ớ'=>'ớ','Ờ'=>'Ờ','ờ'=>'ờ','Ở'=>'Ở','ở'=>'ở','Ỡ'=>'Ỡ','ỡ'=>'ỡ','Ợ'=>'Ợ','ợ'=>'ợ','Ụ'=>'Ụ','ụ'=>'ụ','Ủ'=>'Ủ','ủ'=>'ủ','Ứ'=>'Ứ','ứ'=>'ứ','Ừ'=>'Ừ','ừ'=>'ừ','Ử'=>'Ử','ử'=>'ử','Ữ'=>'Ữ','ữ'=>'ữ','Ự'=>'Ự','ự'=>'ự','Ỳ'=>'Ỳ','ỳ'=>'ỳ','Ỵ'=>'Ỵ','ỵ'=>'ỵ','Ỷ'=>'Ỷ','ỷ'=>'ỷ','Ỹ'=>'Ỹ','ỹ'=>'ỹ','ἀ'=>'ἀ','ἁ'=>'ἁ','ἂ'=>'ἂ','ἃ'=>'ἃ','ἄ'=>'ἄ','ἅ'=>'ἅ','ἆ'=>'ἆ','ἇ'=>'ἇ','Ἀ'=>'Ἀ','Ἁ'=>'Ἁ','Ἂ'=>'Ἂ','Ἃ'=>'Ἃ','Ἄ'=>'Ἄ','Ἅ'=>'Ἅ','Ἆ'=>'Ἆ','Ἇ'=>'Ἇ','ἐ'=>'ἐ','ἑ'=>'ἑ','ἒ'=>'ἒ','ἓ'=>'ἓ','ἔ'=>'ἔ','ἕ'=>'ἕ','Ἐ'=>'Ἐ','Ἑ'=>'Ἑ','Ἒ'=>'Ἒ','Ἓ'=>'Ἓ','Ἔ'=>'Ἔ','Ἕ'=>'Ἕ','ἠ'=>'ἠ','ἡ'=>'ἡ','ἢ'=>'ἢ','ἣ'=>'ἣ','ἤ'=>'ἤ','ἥ'=>'ἥ','ἦ'=>'ἦ','ἧ'=>'ἧ','Ἠ'=>'Ἠ','Ἡ'=>'Ἡ','Ἢ'=>'Ἢ','Ἣ'=>'Ἣ','Ἤ'=>'Ἤ','Ἥ'=>'Ἥ','Ἦ'=>'Ἦ','Ἧ'=>'Ἧ','ἰ'=>'ἰ','ἱ'=>'ἱ','ἲ'=>'ἲ','ἳ'=>'ἳ','ἴ'=>'ἴ','ἵ'=>'ἵ','ἶ'=>'ἶ','ἷ'=>'ἷ','Ἰ'=>'Ἰ','Ἱ'=>'Ἱ','Ἲ'=>'Ἲ','Ἳ'=>'Ἳ','Ἴ'=>'Ἴ','Ἵ'=>'Ἵ','Ἶ'=>'Ἶ','Ἷ'=>'Ἷ','ὀ'=>'ὀ','ὁ'=>'ὁ','ὂ'=>'ὂ','ὃ'=>'ὃ','ὄ'=>'ὄ','ὅ'=>'ὅ','Ὀ'=>'Ὀ','Ὁ'=>'Ὁ','Ὂ'=>'Ὂ','Ὃ'=>'Ὃ','Ὄ'=>'Ὄ','Ὅ'=>'Ὅ','ὐ'=>'ὐ','ὑ'=>'ὑ','ὒ'=>'ὒ','ὓ'=>'ὓ','ὔ'=>'ὔ','ὕ'=>'ὕ','ὖ'=>'ὖ','ὗ'=>'ὗ','Ὑ'=>'Ὑ','Ὓ'=>'Ὓ','Ὕ'=>'Ὕ','Ὗ'=>'Ὗ','ὠ'=>'ὠ','ὡ'=>'ὡ','ὢ'=>'ὢ','ὣ'=>'ὣ','ὤ'=>'ὤ','ὥ'=>'ὥ','ὦ'=>'ὦ','ὧ'=>'ὧ','Ὠ'=>'Ὠ','Ὡ'=>'Ὡ','Ὢ'=>'Ὢ','Ὣ'=>'Ὣ','Ὤ'=>'Ὤ','Ὥ'=>'Ὥ','Ὦ'=>'Ὦ','Ὧ'=>'Ὧ','ὰ'=>'ὰ','ά'=>'ά','ὲ'=>'ὲ','έ'=>'έ','ὴ'=>'ὴ','ή'=>'ή','ὶ'=>'ὶ','ί'=>'ί','ὸ'=>'ὸ','ό'=>'ό','ὺ'=>'ὺ','ύ'=>'ύ','ὼ'=>'ὼ','ώ'=>'ώ','ᾀ'=>'ᾀ','ᾁ'=>'ᾁ','ᾂ'=>'ᾂ','ᾃ'=>'ᾃ','ᾄ'=>'ᾄ','ᾅ'=>'ᾅ','ᾆ'=>'ᾆ','ᾇ'=>'ᾇ','ᾈ'=>'ᾈ','ᾉ'=>'ᾉ','ᾊ'=>'ᾊ','ᾋ'=>'ᾋ','ᾌ'=>'ᾌ','ᾍ'=>'ᾍ','ᾎ'=>'ᾎ','ᾏ'=>'ᾏ','ᾐ'=>'ᾐ','ᾑ'=>'ᾑ','ᾒ'=>'ᾒ','ᾓ'=>'ᾓ','ᾔ'=>'ᾔ','ᾕ'=>'ᾕ','ᾖ'=>'ᾖ','ᾗ'=>'ᾗ','ᾘ'=>'ᾘ','ᾙ'=>'ᾙ','ᾚ'=>'ᾚ','ᾛ'=>'ᾛ','ᾜ'=>'ᾜ','ᾝ'=>'ᾝ','ᾞ'=>'ᾞ','ᾟ'=>'ᾟ','ᾠ'=>'ᾠ','ᾡ'=>'ᾡ','ᾢ'=>'ᾢ','ᾣ'=>'ᾣ','ᾤ'=>'ᾤ','ᾥ'=>'ᾥ','ᾦ'=>'ᾦ','ᾧ'=>'ᾧ','ᾨ'=>'ᾨ','ᾩ'=>'ᾩ','ᾪ'=>'ᾪ','ᾫ'=>'ᾫ','ᾬ'=>'ᾬ','ᾭ'=>'ᾭ','ᾮ'=>'ᾮ','ᾯ'=>'ᾯ','ᾰ'=>'ᾰ','ᾱ'=>'ᾱ','ᾲ'=>'ᾲ','ᾳ'=>'ᾳ','ᾴ'=>'ᾴ','ᾶ'=>'ᾶ','ᾷ'=>'ᾷ','Ᾰ'=>'Ᾰ','Ᾱ'=>'Ᾱ','Ὰ'=>'Ὰ','Ά'=>'Ά','ᾼ'=>'ᾼ','᾽'=>' ̓','ι'=>'ι','᾿'=>' ̓','῀'=>' ͂','῁'=>' ̈͂','ῂ'=>'ῂ','ῃ'=>'ῃ','ῄ'=>'ῄ','ῆ'=>'ῆ','ῇ'=>'ῇ','Ὲ'=>'Ὲ','Έ'=>'Έ','Ὴ'=>'Ὴ','Ή'=>'Ή','ῌ'=>'ῌ','῍'=>' ̓̀','῎'=>' ̓́','῏'=>' ̓͂','ῐ'=>'ῐ','ῑ'=>'ῑ','ῒ'=>'ῒ','ΐ'=>'ΐ','ῖ'=>'ῖ','ῗ'=>'ῗ','Ῐ'=>'Ῐ','Ῑ'=>'Ῑ','Ὶ'=>'Ὶ','Ί'=>'Ί','῝'=>' ̔̀','῞'=>' ̔́','῟'=>' ̔͂','ῠ'=>'ῠ','ῡ'=>'ῡ','ῢ'=>'ῢ','ΰ'=>'ΰ','ῤ'=>'ῤ','ῥ'=>'ῥ','ῦ'=>'ῦ','ῧ'=>'ῧ','Ῠ'=>'Ῠ','Ῡ'=>'Ῡ','Ὺ'=>'Ὺ','Ύ'=>'Ύ','Ῥ'=>'Ῥ','῭'=>' ̈̀','΅'=>' ̈́','`'=>'`','ῲ'=>'ῲ','ῳ'=>'ῳ','ῴ'=>'ῴ','ῶ'=>'ῶ','ῷ'=>'ῷ','Ὸ'=>'Ὸ','Ό'=>'Ό','Ὼ'=>'Ὼ','Ώ'=>'Ώ','ῼ'=>'ῼ','´'=>' ́','῾'=>' ̔',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ',' '=>' ','‑'=>'‐','‗'=>' ̳','․'=>'.','‥'=>'..','…'=>'...',' '=>' ','″'=>'′′','‴'=>'′′′','‶'=>'‵‵','‷'=>'‵‵‵','‼'=>'!!','‾'=>' ̅','⁇'=>'??','⁈'=>'?!','⁉'=>'!?','⁗'=>'′′′′',' '=>' ','⁰'=>'0','ⁱ'=>'i','⁴'=>'4','⁵'=>'5','⁶'=>'6','⁷'=>'7','⁸'=>'8','⁹'=>'9','⁺'=>'+','⁻'=>'−','⁼'=>'=','⁽'=>'(','⁾'=>')','ⁿ'=>'n','₀'=>'0','₁'=>'1','₂'=>'2','₃'=>'3','₄'=>'4','₅'=>'5','₆'=>'6','₇'=>'7','₈'=>'8','₉'=>'9','₊'=>'+','₋'=>'−','₌'=>'=','₍'=>'(','₎'=>')','ₐ'=>'a','ₑ'=>'e','ₒ'=>'o','ₓ'=>'x','ₔ'=>'ə','₨'=>'Rs','℀'=>'a/c','℁'=>'a/s','ℂ'=>'C','℃'=>'°C','℅'=>'c/o','℆'=>'c/u','ℇ'=>'Ɛ','℉'=>'°F','ℊ'=>'g','ℋ'=>'H','ℌ'=>'H','ℍ'=>'H','ℎ'=>'h','ℏ'=>'ħ','ℐ'=>'I','ℑ'=>'I','ℒ'=>'L','ℓ'=>'l','ℕ'=>'N','№'=>'No','ℙ'=>'P','ℚ'=>'Q','ℛ'=>'R','ℜ'=>'R','ℝ'=>'R','℠'=>'SM','℡'=>'TEL','™'=>'TM','ℤ'=>'Z','Ω'=>'Ω','ℨ'=>'Z','K'=>'K','Å'=>'Å','ℬ'=>'B','ℭ'=>'C','ℯ'=>'e','ℰ'=>'E','ℱ'=>'F','ℳ'=>'M','ℴ'=>'o','ℵ'=>'א','ℶ'=>'ב','ℷ'=>'ג','ℸ'=>'ד','ℹ'=>'i','℻'=>'FAX','ℼ'=>'π','ℽ'=>'γ','ℾ'=>'Γ','ℿ'=>'Π','⅀'=>'∑','ⅅ'=>'D','ⅆ'=>'d','ⅇ'=>'e','ⅈ'=>'i','ⅉ'=>'j','⅓'=>'1⁄3','⅔'=>'2⁄3','⅕'=>'1⁄5','⅖'=>'2⁄5','⅗'=>'3⁄5','⅘'=>'4⁄5','⅙'=>'1⁄6','⅚'=>'5⁄6','⅛'=>'1⁄8','⅜'=>'3⁄8','⅝'=>'5⁄8','⅞'=>'7⁄8','⅟'=>'1⁄','Ⅰ'=>'I','Ⅱ'=>'II','Ⅲ'=>'III','Ⅳ'=>'IV','Ⅴ'=>'V','Ⅵ'=>'VI','Ⅶ'=>'VII','Ⅷ'=>'VIII','Ⅸ'=>'IX','Ⅹ'=>'X','Ⅺ'=>'XI','Ⅻ'=>'XII','Ⅼ'=>'L','Ⅽ'=>'C','Ⅾ'=>'D','Ⅿ'=>'M','ⅰ'=>'i','ⅱ'=>'ii','ⅲ'=>'iii','ⅳ'=>'iv','ⅴ'=>'v','ⅵ'=>'vi','ⅶ'=>'vii','ⅷ'=>'viii','ⅸ'=>'ix','ⅹ'=>'x','ⅺ'=>'xi','ⅻ'=>'xii','ⅼ'=>'l','ⅽ'=>'c','ⅾ'=>'d','ⅿ'=>'m','↚'=>'↚','↛'=>'↛','↮'=>'↮','⇍'=>'⇍','⇎'=>'⇎','⇏'=>'⇏','∄'=>'∄','∉'=>'∉','∌'=>'∌','∤'=>'∤','∦'=>'∦','∬'=>'∫∫','∭'=>'∫∫∫','∯'=>'∮∮','∰'=>'∮∮∮','≁'=>'≁','≄'=>'≄','≇'=>'≇','≉'=>'≉','≠'=>'≠','≢'=>'≢','≭'=>'≭','≮'=>'≮','≯'=>'≯','≰'=>'≰','≱'=>'≱','≴'=>'≴','≵'=>'≵','≸'=>'≸','≹'=>'≹','⊀'=>'⊀','⊁'=>'⊁','⊄'=>'⊄','⊅'=>'⊅','⊈'=>'⊈','⊉'=>'⊉','⊬'=>'⊬','⊭'=>'⊭','⊮'=>'⊮','⊯'=>'⊯','⋠'=>'⋠','⋡'=>'⋡','⋢'=>'⋢','⋣'=>'⋣','⋪'=>'⋪','⋫'=>'⋫','⋬'=>'⋬','⋭'=>'⋭','〈'=>'〈','〉'=>'〉','①'=>'1','②'=>'2','③'=>'3','④'=>'4','⑤'=>'5','⑥'=>'6','⑦'=>'7','⑧'=>'8','⑨'=>'9','⑩'=>'10','⑪'=>'11','⑫'=>'12','⑬'=>'13','⑭'=>'14','⑮'=>'15','⑯'=>'16','⑰'=>'17','⑱'=>'18','⑲'=>'19','⑳'=>'20','⑴'=>'(1)','⑵'=>'(2)','⑶'=>'(3)','⑷'=>'(4)','⑸'=>'(5)','⑹'=>'(6)','⑺'=>'(7)','⑻'=>'(8)','⑼'=>'(9)','⑽'=>'(10)','⑾'=>'(11)','⑿'=>'(12)','⒀'=>'(13)','⒁'=>'(14)','⒂'=>'(15)','⒃'=>'(16)','⒄'=>'(17)','⒅'=>'(18)','⒆'=>'(19)','⒇'=>'(20)','⒈'=>'1.','⒉'=>'2.','⒊'=>'3.','⒋'=>'4.','⒌'=>'5.','⒍'=>'6.','⒎'=>'7.','⒏'=>'8.','⒐'=>'9.','⒑'=>'10.','⒒'=>'11.','⒓'=>'12.','⒔'=>'13.','⒕'=>'14.','⒖'=>'15.','⒗'=>'16.','⒘'=>'17.','⒙'=>'18.','⒚'=>'19.','⒛'=>'20.','⒜'=>'(a)','⒝'=>'(b)','⒞'=>'(c)','⒟'=>'(d)','⒠'=>'(e)','⒡'=>'(f)','⒢'=>'(g)','⒣'=>'(h)','⒤'=>'(i)','⒥'=>'(j)','⒦'=>'(k)','⒧'=>'(l)','⒨'=>'(m)','⒩'=>'(n)','⒪'=>'(o)','⒫'=>'(p)','⒬'=>'(q)','⒭'=>'(r)','⒮'=>'(s)','⒯'=>'(t)','⒰'=>'(u)','⒱'=>'(v)','⒲'=>'(w)','⒳'=>'(x)','⒴'=>'(y)','⒵'=>'(z)','Ⓐ'=>'A','Ⓑ'=>'B','Ⓒ'=>'C','Ⓓ'=>'D','Ⓔ'=>'E','Ⓕ'=>'F','Ⓖ'=>'G','Ⓗ'=>'H','Ⓘ'=>'I','Ⓙ'=>'J','Ⓚ'=>'K','Ⓛ'=>'L','Ⓜ'=>'M','Ⓝ'=>'N','Ⓞ'=>'O','Ⓟ'=>'P','Ⓠ'=>'Q','Ⓡ'=>'R','Ⓢ'=>'S','Ⓣ'=>'T','Ⓤ'=>'U','Ⓥ'=>'V','Ⓦ'=>'W','Ⓧ'=>'X','Ⓨ'=>'Y','Ⓩ'=>'Z','ⓐ'=>'a','ⓑ'=>'b','ⓒ'=>'c','ⓓ'=>'d','ⓔ'=>'e','ⓕ'=>'f','ⓖ'=>'g','ⓗ'=>'h','ⓘ'=>'i','ⓙ'=>'j','ⓚ'=>'k','ⓛ'=>'l','ⓜ'=>'m','ⓝ'=>'n','ⓞ'=>'o','ⓟ'=>'p','ⓠ'=>'q','ⓡ'=>'r','ⓢ'=>'s','ⓣ'=>'t','ⓤ'=>'u','ⓥ'=>'v','ⓦ'=>'w','ⓧ'=>'x','ⓨ'=>'y','ⓩ'=>'z','⓪'=>'0','⨌'=>'∫∫∫∫','⩴'=>'::=','⩵'=>'==','⩶'=>'===','⫝̸'=>'⫝̸','ⵯ'=>'ⵡ','⺟'=>'母','⻳'=>'龟','⼀'=>'一','⼁'=>'丨','⼂'=>'丶','⼃'=>'丿','⼄'=>'乙','⼅'=>'亅','⼆'=>'二','⼇'=>'亠','⼈'=>'人','⼉'=>'儿','⼊'=>'入','⼋'=>'八','⼌'=>'冂','⼍'=>'冖','⼎'=>'冫','⼏'=>'几','⼐'=>'凵','⼑'=>'刀','⼒'=>'力','⼓'=>'勹','⼔'=>'匕','⼕'=>'匚','⼖'=>'匸','⼗'=>'十','⼘'=>'卜','⼙'=>'卩','⼚'=>'厂','⼛'=>'厶','⼜'=>'又','⼝'=>'口','⼞'=>'囗','⼟'=>'土','⼠'=>'士','⼡'=>'夂','⼢'=>'夊','⼣'=>'夕','⼤'=>'大','⼥'=>'女','⼦'=>'子','⼧'=>'宀','⼨'=>'寸','⼩'=>'小','⼪'=>'尢','⼫'=>'尸','⼬'=>'屮','⼭'=>'山','⼮'=>'巛','⼯'=>'工','⼰'=>'己','⼱'=>'巾','⼲'=>'干','⼳'=>'幺','⼴'=>'广','⼵'=>'廴','⼶'=>'廾','⼷'=>'弋','⼸'=>'弓','⼹'=>'彐','⼺'=>'彡','⼻'=>'彳','⼼'=>'心','⼽'=>'戈','⼾'=>'戶','⼿'=>'手','⽀'=>'支','⽁'=>'攴','⽂'=>'文','⽃'=>'斗','⽄'=>'斤','⽅'=>'方','⽆'=>'无','⽇'=>'日','⽈'=>'曰','⽉'=>'月','⽊'=>'木','⽋'=>'欠','⽌'=>'止','⽍'=>'歹','⽎'=>'殳','⽏'=>'毋','⽐'=>'比','⽑'=>'毛','⽒'=>'氏','⽓'=>'气','⽔'=>'水','⽕'=>'火','⽖'=>'爪','⽗'=>'父','⽘'=>'爻','⽙'=>'爿','⽚'=>'片','⽛'=>'牙','⽜'=>'牛','⽝'=>'犬','⽞'=>'玄','⽟'=>'玉','⽠'=>'瓜','⽡'=>'瓦','⽢'=>'甘','⽣'=>'生','⽤'=>'用','⽥'=>'田','⽦'=>'疋','⽧'=>'疒','⽨'=>'癶','⽩'=>'白','⽪'=>'皮','⽫'=>'皿','⽬'=>'目','⽭'=>'矛','⽮'=>'矢','⽯'=>'石','⽰'=>'示','⽱'=>'禸','⽲'=>'禾','⽳'=>'穴','⽴'=>'立','⽵'=>'竹','⽶'=>'米','⽷'=>'糸','⽸'=>'缶','⽹'=>'网','⽺'=>'羊','⽻'=>'羽','⽼'=>'老','⽽'=>'而','⽾'=>'耒','⽿'=>'耳','⾀'=>'聿','⾁'=>'肉','⾂'=>'臣','⾃'=>'自','⾄'=>'至','⾅'=>'臼','⾆'=>'舌','⾇'=>'舛','⾈'=>'舟','⾉'=>'艮','⾊'=>'色','⾋'=>'艸','⾌'=>'虍','⾍'=>'虫','⾎'=>'血','⾏'=>'行','⾐'=>'衣','⾑'=>'襾','⾒'=>'見','⾓'=>'角','⾔'=>'言','⾕'=>'谷','⾖'=>'豆','⾗'=>'豕','⾘'=>'豸','⾙'=>'貝','⾚'=>'赤','⾛'=>'走','⾜'=>'足','⾝'=>'身','⾞'=>'車','⾟'=>'辛','⾠'=>'辰','⾡'=>'辵','⾢'=>'邑','⾣'=>'酉','⾤'=>'釆','⾥'=>'里','⾦'=>'金','⾧'=>'長','⾨'=>'門','⾩'=>'阜','⾪'=>'隶','⾫'=>'隹','⾬'=>'雨','⾭'=>'靑','⾮'=>'非','⾯'=>'面','⾰'=>'革','⾱'=>'韋','⾲'=>'韭','⾳'=>'音','⾴'=>'頁','⾵'=>'風','⾶'=>'飛','⾷'=>'食','⾸'=>'首','⾹'=>'香','⾺'=>'馬','⾻'=>'骨','⾼'=>'高','⾽'=>'髟','⾾'=>'鬥','⾿'=>'鬯','⿀'=>'鬲','⿁'=>'鬼','⿂'=>'魚','⿃'=>'鳥','⿄'=>'鹵','⿅'=>'鹿','⿆'=>'麥','⿇'=>'麻','⿈'=>'黃','⿉'=>'黍','⿊'=>'黑','⿋'=>'黹','⿌'=>'黽','⿍'=>'鼎','⿎'=>'鼓','⿏'=>'鼠','⿐'=>'鼻','⿑'=>'齊','⿒'=>'齒','⿓'=>'龍','⿔'=>'龜','⿕'=>'龠',' '=>' ','〶'=>'〒','〸'=>'十','〹'=>'卄','〺'=>'卅','が'=>'が','ぎ'=>'ぎ','ぐ'=>'ぐ','げ'=>'げ','ご'=>'ご','ざ'=>'ざ','じ'=>'じ','ず'=>'ず','ぜ'=>'ぜ','ぞ'=>'ぞ','だ'=>'だ','ぢ'=>'ぢ','づ'=>'づ','で'=>'で','ど'=>'ど','ば'=>'ば','ぱ'=>'ぱ','び'=>'び','ぴ'=>'ぴ','ぶ'=>'ぶ','ぷ'=>'ぷ','べ'=>'べ','ぺ'=>'ぺ','ぼ'=>'ぼ','ぽ'=>'ぽ','ゔ'=>'ゔ','゛'=>' ゙','゜'=>' ゚','ゞ'=>'ゞ','ゟ'=>'より','ガ'=>'ガ','ギ'=>'ギ','グ'=>'グ','ゲ'=>'ゲ','ゴ'=>'ゴ','ザ'=>'ザ','ジ'=>'ジ','ズ'=>'ズ','ゼ'=>'ゼ','ゾ'=>'ゾ','ダ'=>'ダ','ヂ'=>'ヂ','ヅ'=>'ヅ','デ'=>'デ','ド'=>'ド','バ'=>'バ','パ'=>'パ','ビ'=>'ビ','ピ'=>'ピ','ブ'=>'ブ','プ'=>'プ','ベ'=>'ベ','ペ'=>'ペ','ボ'=>'ボ','ポ'=>'ポ','ヴ'=>'ヴ','ヷ'=>'ヷ','ヸ'=>'ヸ','ヹ'=>'ヹ','ヺ'=>'ヺ','ヾ'=>'ヾ','ヿ'=>'コト','ㄱ'=>'ᄀ','ㄲ'=>'ᄁ','ㄳ'=>'ᆪ','ㄴ'=>'ᄂ','ㄵ'=>'ᆬ','ㄶ'=>'ᆭ','ㄷ'=>'ᄃ','ㄸ'=>'ᄄ','ㄹ'=>'ᄅ','ㄺ'=>'ᆰ','ㄻ'=>'ᆱ','ㄼ'=>'ᆲ','ㄽ'=>'ᆳ','ㄾ'=>'ᆴ','ㄿ'=>'ᆵ','ㅀ'=>'ᄚ','ㅁ'=>'ᄆ','ㅂ'=>'ᄇ','ㅃ'=>'ᄈ','ㅄ'=>'ᄡ','ㅅ'=>'ᄉ','ㅆ'=>'ᄊ','ㅇ'=>'ᄋ','ㅈ'=>'ᄌ','ㅉ'=>'ᄍ','ㅊ'=>'ᄎ','ㅋ'=>'ᄏ','ㅌ'=>'ᄐ','ㅍ'=>'ᄑ','ㅎ'=>'ᄒ','ㅏ'=>'ᅡ','ㅐ'=>'ᅢ','ㅑ'=>'ᅣ','ㅒ'=>'ᅤ','ㅓ'=>'ᅥ','ㅔ'=>'ᅦ','ㅕ'=>'ᅧ','ㅖ'=>'ᅨ','ㅗ'=>'ᅩ','ㅘ'=>'ᅪ','ㅙ'=>'ᅫ','ㅚ'=>'ᅬ','ㅛ'=>'ᅭ','ㅜ'=>'ᅮ','ㅝ'=>'ᅯ','ㅞ'=>'ᅰ','ㅟ'=>'ᅱ','ㅠ'=>'ᅲ','ㅡ'=>'ᅳ','ㅢ'=>'ᅴ','ㅣ'=>'ᅵ','ㅤ'=>'ᅠ','ㅥ'=>'ᄔ','ㅦ'=>'ᄕ','ㅧ'=>'ᇇ','ㅨ'=>'ᇈ','ㅩ'=>'ᇌ','ㅪ'=>'ᇎ','ㅫ'=>'ᇓ','ㅬ'=>'ᇗ','ㅭ'=>'ᇙ','ㅮ'=>'ᄜ','ㅯ'=>'ᇝ','ㅰ'=>'ᇟ','ㅱ'=>'ᄝ','ㅲ'=>'ᄞ','ㅳ'=>'ᄠ','ㅴ'=>'ᄢ','ㅵ'=>'ᄣ','ㅶ'=>'ᄧ','ㅷ'=>'ᄩ','ㅸ'=>'ᄫ','ㅹ'=>'ᄬ','ㅺ'=>'ᄭ','ㅻ'=>'ᄮ','ㅼ'=>'ᄯ','ㅽ'=>'ᄲ','ㅾ'=>'ᄶ','ㅿ'=>'ᅀ','ㆀ'=>'ᅇ','ㆁ'=>'ᅌ','ㆂ'=>'ᇱ','ㆃ'=>'ᇲ','ㆄ'=>'ᅗ','ㆅ'=>'ᅘ','ㆆ'=>'ᅙ','ㆇ'=>'ᆄ','ㆈ'=>'ᆅ','ㆉ'=>'ᆈ','ㆊ'=>'ᆑ','ㆋ'=>'ᆒ','ㆌ'=>'ᆔ','ㆍ'=>'ᆞ','ㆎ'=>'ᆡ','㆒'=>'一','㆓'=>'二','㆔'=>'三','㆕'=>'四','㆖'=>'上','㆗'=>'中','㆘'=>'下','㆙'=>'甲','㆚'=>'乙','㆛'=>'丙','㆜'=>'丁','㆝'=>'天','㆞'=>'地','㆟'=>'人','㈀'=>'(ᄀ)','㈁'=>'(ᄂ)','㈂'=>'(ᄃ)','㈃'=>'(ᄅ)','㈄'=>'(ᄆ)','㈅'=>'(ᄇ)','㈆'=>'(ᄉ)','㈇'=>'(ᄋ)','㈈'=>'(ᄌ)','㈉'=>'(ᄎ)','㈊'=>'(ᄏ)','㈋'=>'(ᄐ)','㈌'=>'(ᄑ)','㈍'=>'(ᄒ)','㈎'=>'(가)','㈏'=>'(나)','㈐'=>'(다)','㈑'=>'(라)','㈒'=>'(마)','㈓'=>'(바)','㈔'=>'(사)','㈕'=>'(아)','㈖'=>'(자)','㈗'=>'(차)','㈘'=>'(카)','㈙'=>'(타)','㈚'=>'(파)','㈛'=>'(하)','㈜'=>'(주)','㈝'=>'(오전)','㈞'=>'(오후)','㈠'=>'(一)','㈡'=>'(二)','㈢'=>'(三)','㈣'=>'(四)','㈤'=>'(五)','㈥'=>'(六)','㈦'=>'(七)','㈧'=>'(八)','㈨'=>'(九)','㈩'=>'(十)','㈪'=>'(月)','㈫'=>'(火)','㈬'=>'(水)','㈭'=>'(木)','㈮'=>'(金)','㈯'=>'(土)','㈰'=>'(日)','㈱'=>'(株)','㈲'=>'(有)','㈳'=>'(社)','㈴'=>'(名)','㈵'=>'(特)','㈶'=>'(財)','㈷'=>'(祝)','㈸'=>'(労)','㈹'=>'(代)','㈺'=>'(呼)','㈻'=>'(学)','㈼'=>'(監)','㈽'=>'(企)','㈾'=>'(資)','㈿'=>'(協)','㉀'=>'(祭)','㉁'=>'(休)','㉂'=>'(自)','㉃'=>'(至)','㉐'=>'PTE','㉑'=>'21','㉒'=>'22','㉓'=>'23','㉔'=>'24','㉕'=>'25','㉖'=>'26','㉗'=>'27','㉘'=>'28','㉙'=>'29','㉚'=>'30','㉛'=>'31','㉜'=>'32','㉝'=>'33','㉞'=>'34','㉟'=>'35','㉠'=>'ᄀ','㉡'=>'ᄂ','㉢'=>'ᄃ','㉣'=>'ᄅ','㉤'=>'ᄆ','㉥'=>'ᄇ','㉦'=>'ᄉ','㉧'=>'ᄋ','㉨'=>'ᄌ','㉩'=>'ᄎ','㉪'=>'ᄏ','㉫'=>'ᄐ','㉬'=>'ᄑ','㉭'=>'ᄒ','㉮'=>'가','㉯'=>'나','㉰'=>'다','㉱'=>'라','㉲'=>'마','㉳'=>'바','㉴'=>'사','㉵'=>'아','㉶'=>'자','㉷'=>'차','㉸'=>'카','㉹'=>'타','㉺'=>'파','㉻'=>'하','㉼'=>'참고','㉽'=>'주의','㉾'=>'우','㊀'=>'一','㊁'=>'二','㊂'=>'三','㊃'=>'四','㊄'=>'五','㊅'=>'六','㊆'=>'七','㊇'=>'八','㊈'=>'九','㊉'=>'十','㊊'=>'月','㊋'=>'火','㊌'=>'水','㊍'=>'木','㊎'=>'金','㊏'=>'土','㊐'=>'日','㊑'=>'株','㊒'=>'有','㊓'=>'社','㊔'=>'名','㊕'=>'特','㊖'=>'財','㊗'=>'祝','㊘'=>'労','㊙'=>'秘','㊚'=>'男','㊛'=>'女','㊜'=>'適','㊝'=>'優','㊞'=>'印','㊟'=>'注','㊠'=>'項','㊡'=>'休','㊢'=>'写','㊣'=>'正','㊤'=>'上','㊥'=>'中','㊦'=>'下','㊧'=>'左','㊨'=>'右','㊩'=>'医','㊪'=>'宗','㊫'=>'学','㊬'=>'監','㊭'=>'企','㊮'=>'資','㊯'=>'協','㊰'=>'夜','㊱'=>'36','㊲'=>'37','㊳'=>'38','㊴'=>'39','㊵'=>'40','㊶'=>'41','㊷'=>'42','㊸'=>'43','㊹'=>'44','㊺'=>'45','㊻'=>'46','㊼'=>'47','㊽'=>'48','㊾'=>'49','㊿'=>'50','㋀'=>'1月','㋁'=>'2月','㋂'=>'3月','㋃'=>'4月','㋄'=>'5月','㋅'=>'6月','㋆'=>'7月','㋇'=>'8月','㋈'=>'9月','㋉'=>'10月','㋊'=>'11月','㋋'=>'12月','㋌'=>'Hg','㋍'=>'erg','㋎'=>'eV','㋏'=>'LTD','㋐'=>'ア','㋑'=>'イ','㋒'=>'ウ','㋓'=>'エ','㋔'=>'オ','㋕'=>'カ','㋖'=>'キ','㋗'=>'ク','㋘'=>'ケ','㋙'=>'コ','㋚'=>'サ','㋛'=>'シ','㋜'=>'ス','㋝'=>'セ','㋞'=>'ソ','㋟'=>'タ','㋠'=>'チ','㋡'=>'ツ','㋢'=>'テ','㋣'=>'ト','㋤'=>'ナ','㋥'=>'ニ','㋦'=>'ヌ','㋧'=>'ネ','㋨'=>'ノ','㋩'=>'ハ','㋪'=>'ヒ','㋫'=>'フ','㋬'=>'ヘ','㋭'=>'ホ','㋮'=>'マ','㋯'=>'ミ','㋰'=>'ム','㋱'=>'メ','㋲'=>'モ','㋳'=>'ヤ','㋴'=>'ユ','㋵'=>'ヨ','㋶'=>'ラ','㋷'=>'リ','㋸'=>'ル','㋹'=>'レ','㋺'=>'ロ','㋻'=>'ワ','㋼'=>'ヰ','㋽'=>'ヱ','㋾'=>'ヲ','㌀'=>'アパート','㌁'=>'アルファ','㌂'=>'アンペア','㌃'=>'アール','㌄'=>'イニング','㌅'=>'インチ','㌆'=>'ウォン','㌇'=>'エスクード','㌈'=>'エーカー','㌉'=>'オンス','㌊'=>'オーム','㌋'=>'カイリ','㌌'=>'カラット','㌍'=>'カロリー','㌎'=>'ガロン','㌏'=>'ガンマ','㌐'=>'ギガ','㌑'=>'ギニー','㌒'=>'キュリー','㌓'=>'ギルダー','㌔'=>'キロ','㌕'=>'キログラム','㌖'=>'キロメートル','㌗'=>'キロワット','㌘'=>'グラム','㌙'=>'グラムトン','㌚'=>'クルゼイロ','㌛'=>'クローネ','㌜'=>'ケース','㌝'=>'コルナ','㌞'=>'コーポ','㌟'=>'サイクル','㌠'=>'サンチーム','㌡'=>'シリング','㌢'=>'センチ','㌣'=>'セント','㌤'=>'ダース','㌥'=>'デシ','㌦'=>'ドル','㌧'=>'トン','㌨'=>'ナノ','㌩'=>'ノット','㌪'=>'ハイツ','㌫'=>'パーセント','㌬'=>'パーツ','㌭'=>'バーレル','㌮'=>'ピアストル','㌯'=>'ピクル','㌰'=>'ピコ','㌱'=>'ビル','㌲'=>'ファラッド','㌳'=>'フィート','㌴'=>'ブッシェル','㌵'=>'フラン','㌶'=>'ヘクタール','㌷'=>'ペソ','㌸'=>'ペニヒ','㌹'=>'ヘルツ','㌺'=>'ペンス','㌻'=>'ページ','㌼'=>'ベータ','㌽'=>'ポイント','㌾'=>'ボルト','㌿'=>'ホン','㍀'=>'ポンド','㍁'=>'ホール','㍂'=>'ホーン','㍃'=>'マイクロ','㍄'=>'マイル','㍅'=>'マッハ','㍆'=>'マルク','㍇'=>'マンション','㍈'=>'ミクロン','㍉'=>'ミリ','㍊'=>'ミリバール','㍋'=>'メガ','㍌'=>'メガトン','㍍'=>'メートル','㍎'=>'ヤード','㍏'=>'ヤール','㍐'=>'ユアン','㍑'=>'リットル','㍒'=>'リラ','㍓'=>'ルピー','㍔'=>'ルーブル','㍕'=>'レム','㍖'=>'レントゲン','㍗'=>'ワット','㍘'=>'0点','㍙'=>'1点','㍚'=>'2点','㍛'=>'3点','㍜'=>'4点','㍝'=>'5点','㍞'=>'6点','㍟'=>'7点','㍠'=>'8点','㍡'=>'9点','㍢'=>'10点','㍣'=>'11点','㍤'=>'12点','㍥'=>'13点','㍦'=>'14点','㍧'=>'15点','㍨'=>'16点','㍩'=>'17点','㍪'=>'18点','㍫'=>'19点','㍬'=>'20点','㍭'=>'21点','㍮'=>'22点','㍯'=>'23点','㍰'=>'24点','㍱'=>'hPa','㍲'=>'da','㍳'=>'AU','㍴'=>'bar','㍵'=>'oV','㍶'=>'pc','㍷'=>'dm','㍸'=>'dm2','㍹'=>'dm3','㍺'=>'IU','㍻'=>'平成','㍼'=>'昭和','㍽'=>'大正','㍾'=>'明治','㍿'=>'株式会社','㎀'=>'pA','㎁'=>'nA','㎂'=>'μA','㎃'=>'mA','㎄'=>'kA','㎅'=>'KB','㎆'=>'MB','㎇'=>'GB','㎈'=>'cal','㎉'=>'kcal','㎊'=>'pF','㎋'=>'nF','㎌'=>'μF','㎍'=>'μg','㎎'=>'mg','㎏'=>'kg','㎐'=>'Hz','㎑'=>'kHz','㎒'=>'MHz','㎓'=>'GHz','㎔'=>'THz','㎕'=>'μl','㎖'=>'ml','㎗'=>'dl','㎘'=>'kl','㎙'=>'fm','㎚'=>'nm','㎛'=>'μm','㎜'=>'mm','㎝'=>'cm','㎞'=>'km','㎟'=>'mm2','㎠'=>'cm2','㎡'=>'m2','㎢'=>'km2','㎣'=>'mm3','㎤'=>'cm3','㎥'=>'m3','㎦'=>'km3','㎧'=>'m∕s','㎨'=>'m∕s2','㎩'=>'Pa','㎪'=>'kPa','㎫'=>'MPa','㎬'=>'GPa','㎭'=>'rad','㎮'=>'rad∕s','㎯'=>'rad∕s2','㎰'=>'ps','㎱'=>'ns','㎲'=>'μs','㎳'=>'ms','㎴'=>'pV','㎵'=>'nV','㎶'=>'μV','㎷'=>'mV','㎸'=>'kV','㎹'=>'MV','㎺'=>'pW','㎻'=>'nW','㎼'=>'μW','㎽'=>'mW','㎾'=>'kW','㎿'=>'MW','㏀'=>'kΩ','㏁'=>'MΩ','㏂'=>'a.m.','㏃'=>'Bq','㏄'=>'cc','㏅'=>'cd','㏆'=>'C∕kg','㏇'=>'Co.','㏈'=>'dB','㏉'=>'Gy','㏊'=>'ha','㏋'=>'HP','㏌'=>'in','㏍'=>'KK','㏎'=>'KM','㏏'=>'kt','㏐'=>'lm','㏑'=>'ln','㏒'=>'log','㏓'=>'lx','㏔'=>'mb','㏕'=>'mil','㏖'=>'mol','㏗'=>'PH','㏘'=>'p.m.','㏙'=>'PPM','㏚'=>'PR','㏛'=>'sr','㏜'=>'Sv','㏝'=>'Wb','㏞'=>'V∕m','㏟'=>'A∕m','㏠'=>'1日','㏡'=>'2日','㏢'=>'3日','㏣'=>'4日','㏤'=>'5日','㏥'=>'6日','㏦'=>'7日','㏧'=>'8日','㏨'=>'9日','㏩'=>'10日','㏪'=>'11日','㏫'=>'12日','㏬'=>'13日','㏭'=>'14日','㏮'=>'15日','㏯'=>'16日','㏰'=>'17日','㏱'=>'18日','㏲'=>'19日','㏳'=>'20日','㏴'=>'21日','㏵'=>'22日','㏶'=>'23日','㏷'=>'24日','㏸'=>'25日','㏹'=>'26日','㏺'=>'27日','㏻'=>'28日','㏼'=>'29日','㏽'=>'30日','㏾'=>'31日','㏿'=>'gal','豈'=>'豈','更'=>'更','車'=>'車','賈'=>'賈','滑'=>'滑','串'=>'串','句'=>'句','龜'=>'龜','龜'=>'龜','契'=>'契','金'=>'金','喇'=>'喇','奈'=>'奈','懶'=>'懶','癩'=>'癩','羅'=>'羅','蘿'=>'蘿','螺'=>'螺','裸'=>'裸','邏'=>'邏','樂'=>'樂','洛'=>'洛','烙'=>'烙','珞'=>'珞','落'=>'落','酪'=>'酪','駱'=>'駱','亂'=>'亂','卵'=>'卵','欄'=>'欄','爛'=>'爛','蘭'=>'蘭','鸞'=>'鸞','嵐'=>'嵐','濫'=>'濫','藍'=>'藍','襤'=>'襤','拉'=>'拉','臘'=>'臘','蠟'=>'蠟','廊'=>'廊','朗'=>'朗','浪'=>'浪','狼'=>'狼','郎'=>'郎','來'=>'來','冷'=>'冷','勞'=>'勞','擄'=>'擄','櫓'=>'櫓','爐'=>'爐','盧'=>'盧','老'=>'老','蘆'=>'蘆','虜'=>'虜','路'=>'路','露'=>'露','魯'=>'魯','鷺'=>'鷺','碌'=>'碌','祿'=>'祿','綠'=>'綠','菉'=>'菉','錄'=>'錄','鹿'=>'鹿','論'=>'論','壟'=>'壟','弄'=>'弄','籠'=>'籠','聾'=>'聾','牢'=>'牢','磊'=>'磊','賂'=>'賂','雷'=>'雷','壘'=>'壘','屢'=>'屢','樓'=>'樓','淚'=>'淚','漏'=>'漏','累'=>'累','縷'=>'縷','陋'=>'陋','勒'=>'勒','肋'=>'肋','凜'=>'凜','凌'=>'凌','稜'=>'稜','綾'=>'綾','菱'=>'菱','陵'=>'陵','讀'=>'讀','拏'=>'拏','樂'=>'樂','諾'=>'諾','丹'=>'丹','寧'=>'寧','怒'=>'怒','率'=>'率','異'=>'異','北'=>'北','磻'=>'磻','便'=>'便','復'=>'復','不'=>'不','泌'=>'泌','數'=>'數','索'=>'索','參'=>'參','塞'=>'塞','省'=>'省','葉'=>'葉','說'=>'說','殺'=>'殺','辰'=>'辰','沈'=>'沈','拾'=>'拾','若'=>'若','掠'=>'掠','略'=>'略','亮'=>'亮','兩'=>'兩','凉'=>'凉','梁'=>'梁','糧'=>'糧','良'=>'良','諒'=>'諒','量'=>'量','勵'=>'勵','呂'=>'呂','女'=>'女','廬'=>'廬','旅'=>'旅','濾'=>'濾','礪'=>'礪','閭'=>'閭','驪'=>'驪','麗'=>'麗','黎'=>'黎','力'=>'力','曆'=>'曆','歷'=>'歷','轢'=>'轢','年'=>'年','憐'=>'憐','戀'=>'戀','撚'=>'撚','漣'=>'漣','煉'=>'煉','璉'=>'璉','秊'=>'秊','練'=>'練','聯'=>'聯','輦'=>'輦','蓮'=>'蓮','連'=>'連','鍊'=>'鍊','列'=>'列','劣'=>'劣','咽'=>'咽','烈'=>'烈','裂'=>'裂','說'=>'說','廉'=>'廉','念'=>'念','捻'=>'捻','殮'=>'殮','簾'=>'簾','獵'=>'獵','令'=>'令','囹'=>'囹','寧'=>'寧','嶺'=>'嶺','怜'=>'怜','玲'=>'玲','瑩'=>'瑩','羚'=>'羚','聆'=>'聆','鈴'=>'鈴','零'=>'零','靈'=>'靈','領'=>'領','例'=>'例','禮'=>'禮','醴'=>'醴','隸'=>'隸','惡'=>'惡','了'=>'了','僚'=>'僚','寮'=>'寮','尿'=>'尿','料'=>'料','樂'=>'樂','燎'=>'燎','療'=>'療','蓼'=>'蓼','遼'=>'遼','龍'=>'龍','暈'=>'暈','阮'=>'阮','劉'=>'劉','杻'=>'杻','柳'=>'柳','流'=>'流','溜'=>'溜','琉'=>'琉','留'=>'留','硫'=>'硫','紐'=>'紐','類'=>'類','六'=>'六','戮'=>'戮','陸'=>'陸','倫'=>'倫','崙'=>'崙','淪'=>'淪','輪'=>'輪','律'=>'律','慄'=>'慄','栗'=>'栗','率'=>'率','隆'=>'隆','利'=>'利','吏'=>'吏','履'=>'履','易'=>'易','李'=>'李','梨'=>'梨','泥'=>'泥','理'=>'理','痢'=>'痢','罹'=>'罹','裏'=>'裏','裡'=>'裡','里'=>'里','離'=>'離','匿'=>'匿','溺'=>'溺','吝'=>'吝','燐'=>'燐','璘'=>'璘','藺'=>'藺','隣'=>'隣','鱗'=>'鱗','麟'=>'麟','林'=>'林','淋'=>'淋','臨'=>'臨','立'=>'立','笠'=>'笠','粒'=>'粒','狀'=>'狀','炙'=>'炙','識'=>'識','什'=>'什','茶'=>'茶','刺'=>'刺','切'=>'切','度'=>'度','拓'=>'拓','糖'=>'糖','宅'=>'宅','洞'=>'洞','暴'=>'暴','輻'=>'輻','行'=>'行','降'=>'降','見'=>'見','廓'=>'廓','兀'=>'兀','嗀'=>'嗀','塚'=>'塚','晴'=>'晴','凞'=>'凞','猪'=>'猪','益'=>'益','礼'=>'礼','神'=>'神','祥'=>'祥','福'=>'福','靖'=>'靖','精'=>'精','羽'=>'羽','蘒'=>'蘒','諸'=>'諸','逸'=>'逸','都'=>'都','飯'=>'飯','飼'=>'飼','館'=>'館','鶴'=>'鶴','侮'=>'侮','僧'=>'僧','免'=>'免','勉'=>'勉','勤'=>'勤','卑'=>'卑','喝'=>'喝','嘆'=>'嘆','器'=>'器','塀'=>'塀','墨'=>'墨','層'=>'層','屮'=>'屮','悔'=>'悔','慨'=>'慨','憎'=>'憎','懲'=>'懲','敏'=>'敏','既'=>'既','暑'=>'暑','梅'=>'梅','海'=>'海','渚'=>'渚','漢'=>'漢','煮'=>'煮','爫'=>'爫','琢'=>'琢','碑'=>'碑','社'=>'社','祉'=>'祉','祈'=>'祈','祐'=>'祐','祖'=>'祖','祝'=>'祝','禍'=>'禍','禎'=>'禎','穀'=>'穀','突'=>'突','節'=>'節','練'=>'練','縉'=>'縉','繁'=>'繁','署'=>'署','者'=>'者','臭'=>'臭','艹'=>'艹','艹'=>'艹','著'=>'著','褐'=>'褐','視'=>'視','謁'=>'謁','謹'=>'謹','賓'=>'賓','贈'=>'贈','辶'=>'辶','逸'=>'逸','難'=>'難','響'=>'響','頻'=>'頻','並'=>'並','况'=>'况','全'=>'全','侀'=>'侀','充'=>'充','冀'=>'冀','勇'=>'勇','勺'=>'勺','喝'=>'喝','啕'=>'啕','喙'=>'喙','嗢'=>'嗢','塚'=>'塚','墳'=>'墳','奄'=>'奄','奔'=>'奔','婢'=>'婢','嬨'=>'嬨','廒'=>'廒','廙'=>'廙','彩'=>'彩','徭'=>'徭','惘'=>'惘','慎'=>'慎','愈'=>'愈','憎'=>'憎','慠'=>'慠','懲'=>'懲','戴'=>'戴','揄'=>'揄','搜'=>'搜','摒'=>'摒','敖'=>'敖','晴'=>'晴','朗'=>'朗','望'=>'望','杖'=>'杖','歹'=>'歹','殺'=>'殺','流'=>'流','滛'=>'滛','滋'=>'滋','漢'=>'漢','瀞'=>'瀞','煮'=>'煮','瞧'=>'瞧','爵'=>'爵','犯'=>'犯','猪'=>'猪','瑱'=>'瑱','甆'=>'甆','画'=>'画','瘝'=>'瘝','瘟'=>'瘟','益'=>'益','盛'=>'盛','直'=>'直','睊'=>'睊','着'=>'着','磌'=>'磌','窱'=>'窱','節'=>'節','类'=>'类','絛'=>'絛','練'=>'練','缾'=>'缾','者'=>'者','荒'=>'荒','華'=>'華','蝹'=>'蝹','襁'=>'襁','覆'=>'覆','視'=>'視','調'=>'調','諸'=>'諸','請'=>'請','謁'=>'謁','諾'=>'諾','諭'=>'諭','謹'=>'謹','變'=>'變','贈'=>'贈','輸'=>'輸','遲'=>'遲','醙'=>'醙','鉶'=>'鉶','陼'=>'陼','難'=>'難','靖'=>'靖','韛'=>'韛','響'=>'響','頋'=>'頋','頻'=>'頻','鬒'=>'鬒','龜'=>'龜','𢡊'=>'𢡊','𢡄'=>'𢡄','𣏕'=>'𣏕','㮝'=>'㮝','䀘'=>'䀘','䀹'=>'䀹','𥉉'=>'𥉉','𥳐'=>'𥳐','𧻓'=>'𧻓','齃'=>'齃','龎'=>'龎','ff'=>'ff','fi'=>'fi','fl'=>'fl','ffi'=>'ffi','ffl'=>'ffl','ſt'=>'st','st'=>'st','ﬓ'=>'մն','ﬔ'=>'մե','ﬕ'=>'մի','ﬖ'=>'վն','ﬗ'=>'մխ','יִ'=>'יִ','ײַ'=>'ײַ','ﬠ'=>'ע','ﬡ'=>'א','ﬢ'=>'ד','ﬣ'=>'ה','ﬤ'=>'כ','ﬥ'=>'ל','ﬦ'=>'ם','ﬧ'=>'ר','ﬨ'=>'ת','﬩'=>'+','שׁ'=>'שׁ','שׂ'=>'שׂ','שּׁ'=>'שּׁ','שּׂ'=>'שּׂ','אַ'=>'אַ','אָ'=>'אָ','אּ'=>'אּ','בּ'=>'בּ','גּ'=>'גּ','דּ'=>'דּ','הּ'=>'הּ','וּ'=>'וּ','זּ'=>'זּ','טּ'=>'טּ','יּ'=>'יּ','ךּ'=>'ךּ','כּ'=>'כּ','לּ'=>'לּ','מּ'=>'מּ','נּ'=>'נּ','סּ'=>'סּ','ףּ'=>'ףּ','פּ'=>'פּ','צּ'=>'צּ','קּ'=>'קּ','רּ'=>'רּ','שּ'=>'שּ','תּ'=>'תּ','וֹ'=>'וֹ','בֿ'=>'בֿ','כֿ'=>'כֿ','פֿ'=>'פֿ','ﭏ'=>'אל','ﭐ'=>'ٱ','ﭑ'=>'ٱ','ﭒ'=>'ٻ','ﭓ'=>'ٻ','ﭔ'=>'ٻ','ﭕ'=>'ٻ','ﭖ'=>'پ','ﭗ'=>'پ','ﭘ'=>'پ','ﭙ'=>'پ','ﭚ'=>'ڀ','ﭛ'=>'ڀ','ﭜ'=>'ڀ','ﭝ'=>'ڀ','ﭞ'=>'ٺ','ﭟ'=>'ٺ','ﭠ'=>'ٺ','ﭡ'=>'ٺ','ﭢ'=>'ٿ','ﭣ'=>'ٿ','ﭤ'=>'ٿ','ﭥ'=>'ٿ','ﭦ'=>'ٹ','ﭧ'=>'ٹ','ﭨ'=>'ٹ','ﭩ'=>'ٹ','ﭪ'=>'ڤ','ﭫ'=>'ڤ','ﭬ'=>'ڤ','ﭭ'=>'ڤ','ﭮ'=>'ڦ','ﭯ'=>'ڦ','ﭰ'=>'ڦ','ﭱ'=>'ڦ','ﭲ'=>'ڄ','ﭳ'=>'ڄ','ﭴ'=>'ڄ','ﭵ'=>'ڄ','ﭶ'=>'ڃ','ﭷ'=>'ڃ','ﭸ'=>'ڃ','ﭹ'=>'ڃ','ﭺ'=>'چ','ﭻ'=>'چ','ﭼ'=>'چ','ﭽ'=>'چ','ﭾ'=>'ڇ','ﭿ'=>'ڇ','ﮀ'=>'ڇ','ﮁ'=>'ڇ','ﮂ'=>'ڍ','ﮃ'=>'ڍ','ﮄ'=>'ڌ','ﮅ'=>'ڌ','ﮆ'=>'ڎ','ﮇ'=>'ڎ','ﮈ'=>'ڈ','ﮉ'=>'ڈ','ﮊ'=>'ژ','ﮋ'=>'ژ','ﮌ'=>'ڑ','ﮍ'=>'ڑ','ﮎ'=>'ک','ﮏ'=>'ک','ﮐ'=>'ک','ﮑ'=>'ک','ﮒ'=>'گ','ﮓ'=>'گ','ﮔ'=>'گ','ﮕ'=>'گ','ﮖ'=>'ڳ','ﮗ'=>'ڳ','ﮘ'=>'ڳ','ﮙ'=>'ڳ','ﮚ'=>'ڱ','ﮛ'=>'ڱ','ﮜ'=>'ڱ','ﮝ'=>'ڱ','ﮞ'=>'ں','ﮟ'=>'ں','ﮠ'=>'ڻ','ﮡ'=>'ڻ','ﮢ'=>'ڻ','ﮣ'=>'ڻ','ﮤ'=>'ۀ','ﮥ'=>'ۀ','ﮦ'=>'ہ','ﮧ'=>'ہ','ﮨ'=>'ہ','ﮩ'=>'ہ','ﮪ'=>'ھ','ﮫ'=>'ھ','ﮬ'=>'ھ','ﮭ'=>'ھ','ﮮ'=>'ے','ﮯ'=>'ے','ﮰ'=>'ۓ','ﮱ'=>'ۓ','ﯓ'=>'ڭ','ﯔ'=>'ڭ','ﯕ'=>'ڭ','ﯖ'=>'ڭ','ﯗ'=>'ۇ','ﯘ'=>'ۇ','ﯙ'=>'ۆ','ﯚ'=>'ۆ','ﯛ'=>'ۈ','ﯜ'=>'ۈ','ﯝ'=>'ۇٴ','ﯞ'=>'ۋ','ﯟ'=>'ۋ','ﯠ'=>'ۅ','ﯡ'=>'ۅ','ﯢ'=>'ۉ','ﯣ'=>'ۉ','ﯤ'=>'ې','ﯥ'=>'ې','ﯦ'=>'ې','ﯧ'=>'ې','ﯨ'=>'ى','ﯩ'=>'ى','ﯪ'=>'ئا','ﯫ'=>'ئا','ﯬ'=>'ئە','ﯭ'=>'ئە','ﯮ'=>'ئو','ﯯ'=>'ئو','ﯰ'=>'ئۇ','ﯱ'=>'ئۇ','ﯲ'=>'ئۆ','ﯳ'=>'ئۆ','ﯴ'=>'ئۈ','ﯵ'=>'ئۈ','ﯶ'=>'ئې','ﯷ'=>'ئې','ﯸ'=>'ئې','ﯹ'=>'ئى','ﯺ'=>'ئى','ﯻ'=>'ئى','ﯼ'=>'ی','ﯽ'=>'ی','ﯾ'=>'ی','ﯿ'=>'ی','ﰀ'=>'ئج','ﰁ'=>'ئح','ﰂ'=>'ئم','ﰃ'=>'ئى','ﰄ'=>'ئي','ﰅ'=>'بج','ﰆ'=>'بح','ﰇ'=>'بخ','ﰈ'=>'بم','ﰉ'=>'بى','ﰊ'=>'بي','ﰋ'=>'تج','ﰌ'=>'تح','ﰍ'=>'تخ','ﰎ'=>'تم','ﰏ'=>'تى','ﰐ'=>'تي','ﰑ'=>'ثج','ﰒ'=>'ثم','ﰓ'=>'ثى','ﰔ'=>'ثي','ﰕ'=>'جح','ﰖ'=>'جم','ﰗ'=>'حج','ﰘ'=>'حم','ﰙ'=>'خج','ﰚ'=>'خح','ﰛ'=>'خم','ﰜ'=>'سج','ﰝ'=>'سح','ﰞ'=>'سخ','ﰟ'=>'سم','ﰠ'=>'صح','ﰡ'=>'صم','ﰢ'=>'ضج','ﰣ'=>'ضح','ﰤ'=>'ضخ','ﰥ'=>'ضم','ﰦ'=>'طح','ﰧ'=>'طم','ﰨ'=>'ظم','ﰩ'=>'عج','ﰪ'=>'عم','ﰫ'=>'غج','ﰬ'=>'غم','ﰭ'=>'فج','ﰮ'=>'فح','ﰯ'=>'فخ','ﰰ'=>'فم','ﰱ'=>'فى','ﰲ'=>'في','ﰳ'=>'قح','ﰴ'=>'قم','ﰵ'=>'قى','ﰶ'=>'قي','ﰷ'=>'كا','ﰸ'=>'كج','ﰹ'=>'كح','ﰺ'=>'كخ','ﰻ'=>'كل','ﰼ'=>'كم','ﰽ'=>'كى','ﰾ'=>'كي','ﰿ'=>'لج','ﱀ'=>'لح','ﱁ'=>'لخ','ﱂ'=>'لم','ﱃ'=>'لى','ﱄ'=>'لي','ﱅ'=>'مج','ﱆ'=>'مح','ﱇ'=>'مخ','ﱈ'=>'مم','ﱉ'=>'مى','ﱊ'=>'مي','ﱋ'=>'نج','ﱌ'=>'نح','ﱍ'=>'نخ','ﱎ'=>'نم','ﱏ'=>'نى','ﱐ'=>'ني','ﱑ'=>'هج','ﱒ'=>'هم','ﱓ'=>'هى','ﱔ'=>'هي','ﱕ'=>'يج','ﱖ'=>'يح','ﱗ'=>'يخ','ﱘ'=>'يم','ﱙ'=>'يى','ﱚ'=>'يي','ﱛ'=>'ذٰ','ﱜ'=>'رٰ','ﱝ'=>'ىٰ','ﱞ'=>' ٌّ','ﱟ'=>' ٍّ','ﱠ'=>' َّ','ﱡ'=>' ُّ','ﱢ'=>' ِّ','ﱣ'=>' ّٰ','ﱤ'=>'ئر','ﱥ'=>'ئز','ﱦ'=>'ئم','ﱧ'=>'ئن','ﱨ'=>'ئى','ﱩ'=>'ئي','ﱪ'=>'بر','ﱫ'=>'بز','ﱬ'=>'بم','ﱭ'=>'بن','ﱮ'=>'بى','ﱯ'=>'بي','ﱰ'=>'تر','ﱱ'=>'تز','ﱲ'=>'تم','ﱳ'=>'تن','ﱴ'=>'تى','ﱵ'=>'تي','ﱶ'=>'ثر','ﱷ'=>'ثز','ﱸ'=>'ثم','ﱹ'=>'ثن','ﱺ'=>'ثى','ﱻ'=>'ثي','ﱼ'=>'فى','ﱽ'=>'في','ﱾ'=>'قى','ﱿ'=>'قي','ﲀ'=>'كا','ﲁ'=>'كل','ﲂ'=>'كم','ﲃ'=>'كى','ﲄ'=>'كي','ﲅ'=>'لم','ﲆ'=>'لى','ﲇ'=>'لي','ﲈ'=>'ما','ﲉ'=>'مم','ﲊ'=>'نر','ﲋ'=>'نز','ﲌ'=>'نم','ﲍ'=>'نن','ﲎ'=>'نى','ﲏ'=>'ني','ﲐ'=>'ىٰ','ﲑ'=>'ير','ﲒ'=>'يز','ﲓ'=>'يم','ﲔ'=>'ين','ﲕ'=>'يى','ﲖ'=>'يي','ﲗ'=>'ئج','ﲘ'=>'ئح','ﲙ'=>'ئخ','ﲚ'=>'ئم','ﲛ'=>'ئه','ﲜ'=>'بج','ﲝ'=>'بح','ﲞ'=>'بخ','ﲟ'=>'بم','ﲠ'=>'به','ﲡ'=>'تج','ﲢ'=>'تح','ﲣ'=>'تخ','ﲤ'=>'تم','ﲥ'=>'ته','ﲦ'=>'ثم','ﲧ'=>'جح','ﲨ'=>'جم','ﲩ'=>'حج','ﲪ'=>'حم','ﲫ'=>'خج','ﲬ'=>'خم','ﲭ'=>'سج','ﲮ'=>'سح','ﲯ'=>'سخ','ﲰ'=>'سم','ﲱ'=>'صح','ﲲ'=>'صخ','ﲳ'=>'صم','ﲴ'=>'ضج','ﲵ'=>'ضح','ﲶ'=>'ضخ','ﲷ'=>'ضم','ﲸ'=>'طح','ﲹ'=>'ظم','ﲺ'=>'عج','ﲻ'=>'عم','ﲼ'=>'غج','ﲽ'=>'غم','ﲾ'=>'فج','ﲿ'=>'فح','ﳀ'=>'فخ','ﳁ'=>'فم','ﳂ'=>'قح','ﳃ'=>'قم','ﳄ'=>'كج','ﳅ'=>'كح','ﳆ'=>'كخ','ﳇ'=>'كل','ﳈ'=>'كم','ﳉ'=>'لج','ﳊ'=>'لح','ﳋ'=>'لخ','ﳌ'=>'لم','ﳍ'=>'له','ﳎ'=>'مج','ﳏ'=>'مح','ﳐ'=>'مخ','ﳑ'=>'مم','ﳒ'=>'نج','ﳓ'=>'نح','ﳔ'=>'نخ','ﳕ'=>'نم','ﳖ'=>'نه','ﳗ'=>'هج','ﳘ'=>'هم','ﳙ'=>'هٰ','ﳚ'=>'يج','ﳛ'=>'يح','ﳜ'=>'يخ','ﳝ'=>'يم','ﳞ'=>'يه','ﳟ'=>'ئم','ﳠ'=>'ئه','ﳡ'=>'بم','ﳢ'=>'به','ﳣ'=>'تم','ﳤ'=>'ته','ﳥ'=>'ثم','ﳦ'=>'ثه','ﳧ'=>'سم','ﳨ'=>'سه','ﳩ'=>'شم','ﳪ'=>'شه','ﳫ'=>'كل','ﳬ'=>'كم','ﳭ'=>'لم','ﳮ'=>'نم','ﳯ'=>'نه','ﳰ'=>'يم','ﳱ'=>'يه','ﳲ'=>'ـَّ','ﳳ'=>'ـُّ','ﳴ'=>'ـِّ','ﳵ'=>'طى','ﳶ'=>'طي','ﳷ'=>'عى','ﳸ'=>'عي','ﳹ'=>'غى','ﳺ'=>'غي','ﳻ'=>'سى','ﳼ'=>'سي','ﳽ'=>'شى','ﳾ'=>'شي','ﳿ'=>'حى','ﴀ'=>'حي','ﴁ'=>'جى','ﴂ'=>'جي','ﴃ'=>'خى','ﴄ'=>'خي','ﴅ'=>'صى','ﴆ'=>'صي','ﴇ'=>'ضى','ﴈ'=>'ضي','ﴉ'=>'شج','ﴊ'=>'شح','ﴋ'=>'شخ','ﴌ'=>'شم','ﴍ'=>'شر','ﴎ'=>'سر','ﴏ'=>'صر','ﴐ'=>'ضر','ﴑ'=>'طى','ﴒ'=>'طي','ﴓ'=>'عى','ﴔ'=>'عي','ﴕ'=>'غى','ﴖ'=>'غي','ﴗ'=>'سى','ﴘ'=>'سي','ﴙ'=>'شى','ﴚ'=>'شي','ﴛ'=>'حى','ﴜ'=>'حي','ﴝ'=>'جى','ﴞ'=>'جي','ﴟ'=>'خى','ﴠ'=>'خي','ﴡ'=>'صى','ﴢ'=>'صي','ﴣ'=>'ضى','ﴤ'=>'ضي','ﴥ'=>'شج','ﴦ'=>'شح','ﴧ'=>'شخ','ﴨ'=>'شم','ﴩ'=>'شر','ﴪ'=>'سر','ﴫ'=>'صر','ﴬ'=>'ضر','ﴭ'=>'شج','ﴮ'=>'شح','ﴯ'=>'شخ','ﴰ'=>'شم','ﴱ'=>'سه','ﴲ'=>'شه','ﴳ'=>'طم','ﴴ'=>'سج','ﴵ'=>'سح','ﴶ'=>'سخ','ﴷ'=>'شج','ﴸ'=>'شح','ﴹ'=>'شخ','ﴺ'=>'طم','ﴻ'=>'ظم','ﴼ'=>'اً','ﴽ'=>'اً','ﵐ'=>'تجم','ﵑ'=>'تحج','ﵒ'=>'تحج','ﵓ'=>'تحم','ﵔ'=>'تخم','ﵕ'=>'تمج','ﵖ'=>'تمح','ﵗ'=>'تمخ','ﵘ'=>'جمح','ﵙ'=>'جمح','ﵚ'=>'حمي','ﵛ'=>'حمى','ﵜ'=>'سحج','ﵝ'=>'سجح','ﵞ'=>'سجى','ﵟ'=>'سمح','ﵠ'=>'سمح','ﵡ'=>'سمج','ﵢ'=>'سمم','ﵣ'=>'سمم','ﵤ'=>'صحح','ﵥ'=>'صحح','ﵦ'=>'صمم','ﵧ'=>'شحم','ﵨ'=>'شحم','ﵩ'=>'شجي','ﵪ'=>'شمخ','ﵫ'=>'شمخ','ﵬ'=>'شمم','ﵭ'=>'شمم','ﵮ'=>'ضحى','ﵯ'=>'ضخم','ﵰ'=>'ضخم','ﵱ'=>'طمح','ﵲ'=>'طمح','ﵳ'=>'طمم','ﵴ'=>'طمي','ﵵ'=>'عجم','ﵶ'=>'عمم','ﵷ'=>'عمم','ﵸ'=>'عمى','ﵹ'=>'غمم','ﵺ'=>'غمي','ﵻ'=>'غمى','ﵼ'=>'فخم','ﵽ'=>'فخم','ﵾ'=>'قمح','ﵿ'=>'قمم','ﶀ'=>'لحم','ﶁ'=>'لحي','ﶂ'=>'لحى','ﶃ'=>'لجج','ﶄ'=>'لجج','ﶅ'=>'لخم','ﶆ'=>'لخم','ﶇ'=>'لمح','ﶈ'=>'لمح','ﶉ'=>'محج','ﶊ'=>'محم','ﶋ'=>'محي','ﶌ'=>'مجح','ﶍ'=>'مجم','ﶎ'=>'مخج','ﶏ'=>'مخم','ﶒ'=>'مجخ','ﶓ'=>'همج','ﶔ'=>'همم','ﶕ'=>'نحم','ﶖ'=>'نحى','ﶗ'=>'نجم','ﶘ'=>'نجم','ﶙ'=>'نجى','ﶚ'=>'نمي','ﶛ'=>'نمى','ﶜ'=>'يمم','ﶝ'=>'يمم','ﶞ'=>'بخي','ﶟ'=>'تجي','ﶠ'=>'تجى','ﶡ'=>'تخي','ﶢ'=>'تخى','ﶣ'=>'تمي','ﶤ'=>'تمى','ﶥ'=>'جمي','ﶦ'=>'جحى','ﶧ'=>'جمى','ﶨ'=>'سخى','ﶩ'=>'صحي','ﶪ'=>'شحي','ﶫ'=>'ضحي','ﶬ'=>'لجي','ﶭ'=>'لمي','ﶮ'=>'يحي','ﶯ'=>'يجي','ﶰ'=>'يمي','ﶱ'=>'ممي','ﶲ'=>'قمي','ﶳ'=>'نحي','ﶴ'=>'قمح','ﶵ'=>'لحم','ﶶ'=>'عمي','ﶷ'=>'كمي','ﶸ'=>'نجح','ﶹ'=>'مخي','ﶺ'=>'لجم','ﶻ'=>'كمم','ﶼ'=>'لجم','ﶽ'=>'نجح','ﶾ'=>'جحي','ﶿ'=>'حجي','ﷀ'=>'مجي','ﷁ'=>'فمي','ﷂ'=>'بحي','ﷃ'=>'كمم','ﷄ'=>'عجم','ﷅ'=>'صمم','ﷆ'=>'سخي','ﷇ'=>'نجي','ﷰ'=>'صلے','ﷱ'=>'قلے','ﷲ'=>'الله','ﷳ'=>'اكبر','ﷴ'=>'محمد','ﷵ'=>'صلعم','ﷶ'=>'رسول','ﷷ'=>'عليه','ﷸ'=>'وسلم','ﷹ'=>'صلى','ﷺ'=>'صلى الله عليه وسلم','ﷻ'=>'جل جلاله','﷼'=>'ریال','︐'=>',','︑'=>'、','︒'=>'。','︓'=>':','︔'=>';','︕'=>'!','︖'=>'?','︗'=>'〖','︘'=>'〗','︙'=>'...','︰'=>'..','︱'=>'—','︲'=>'–','︳'=>'_','︴'=>'_','︵'=>'(','︶'=>')','︷'=>'{','︸'=>'}','︹'=>'〔','︺'=>'〕','︻'=>'【','︼'=>'】','︽'=>'《','︾'=>'》','︿'=>'〈','﹀'=>'〉','﹁'=>'「','﹂'=>'」','﹃'=>'『','﹄'=>'』','﹇'=>'[','﹈'=>']','﹉'=>' ̅','﹊'=>' ̅','﹋'=>' ̅','﹌'=>' ̅','﹍'=>'_','﹎'=>'_','﹏'=>'_','﹐'=>',','﹑'=>'、','﹒'=>'.','﹔'=>';','﹕'=>':','﹖'=>'?','﹗'=>'!','﹘'=>'—','﹙'=>'(','﹚'=>')','﹛'=>'{','﹜'=>'}','﹝'=>'〔','﹞'=>'〕','﹟'=>'#','﹠'=>'&','﹡'=>'*','﹢'=>'+','﹣'=>'-','﹤'=>'<','﹥'=>'>','﹦'=>'=','﹨'=>'\\','﹩'=>'$','﹪'=>'%','﹫'=>'@','ﹰ'=>' ً','ﹱ'=>'ـً','ﹲ'=>' ٌ','ﹴ'=>' ٍ','ﹶ'=>' َ','ﹷ'=>'ـَ','ﹸ'=>' ُ','ﹹ'=>'ـُ','ﹺ'=>' ِ','ﹻ'=>'ـِ','ﹼ'=>' ّ','ﹽ'=>'ـّ','ﹾ'=>' ْ','ﹿ'=>'ـْ','ﺀ'=>'ء','ﺁ'=>'آ','ﺂ'=>'آ','ﺃ'=>'أ','ﺄ'=>'أ','ﺅ'=>'ؤ','ﺆ'=>'ؤ','ﺇ'=>'إ','ﺈ'=>'إ','ﺉ'=>'ئ','ﺊ'=>'ئ','ﺋ'=>'ئ','ﺌ'=>'ئ','ﺍ'=>'ا','ﺎ'=>'ا','ﺏ'=>'ب','ﺐ'=>'ب','ﺑ'=>'ب','ﺒ'=>'ب','ﺓ'=>'ة','ﺔ'=>'ة','ﺕ'=>'ت','ﺖ'=>'ت','ﺗ'=>'ت','ﺘ'=>'ت','ﺙ'=>'ث','ﺚ'=>'ث','ﺛ'=>'ث','ﺜ'=>'ث','ﺝ'=>'ج','ﺞ'=>'ج','ﺟ'=>'ج','ﺠ'=>'ج','ﺡ'=>'ح','ﺢ'=>'ح','ﺣ'=>'ح','ﺤ'=>'ح','ﺥ'=>'خ','ﺦ'=>'خ','ﺧ'=>'خ','ﺨ'=>'خ','ﺩ'=>'د','ﺪ'=>'د','ﺫ'=>'ذ','ﺬ'=>'ذ','ﺭ'=>'ر','ﺮ'=>'ر','ﺯ'=>'ز','ﺰ'=>'ز','ﺱ'=>'س','ﺲ'=>'س','ﺳ'=>'س','ﺴ'=>'س','ﺵ'=>'ش','ﺶ'=>'ش','ﺷ'=>'ش','ﺸ'=>'ش','ﺹ'=>'ص','ﺺ'=>'ص','ﺻ'=>'ص','ﺼ'=>'ص','ﺽ'=>'ض','ﺾ'=>'ض','ﺿ'=>'ض','ﻀ'=>'ض','ﻁ'=>'ط','ﻂ'=>'ط','ﻃ'=>'ط','ﻄ'=>'ط','ﻅ'=>'ظ','ﻆ'=>'ظ','ﻇ'=>'ظ','ﻈ'=>'ظ','ﻉ'=>'ع','ﻊ'=>'ع','ﻋ'=>'ع','ﻌ'=>'ع','ﻍ'=>'غ','ﻎ'=>'غ','ﻏ'=>'غ','ﻐ'=>'غ','ﻑ'=>'ف','ﻒ'=>'ف','ﻓ'=>'ف','ﻔ'=>'ف','ﻕ'=>'ق','ﻖ'=>'ق','ﻗ'=>'ق','ﻘ'=>'ق','ﻙ'=>'ك','ﻚ'=>'ك','ﻛ'=>'ك','ﻜ'=>'ك','ﻝ'=>'ل','ﻞ'=>'ل','ﻟ'=>'ل','ﻠ'=>'ل','ﻡ'=>'م','ﻢ'=>'م','ﻣ'=>'م','ﻤ'=>'م','ﻥ'=>'ن','ﻦ'=>'ن','ﻧ'=>'ن','ﻨ'=>'ن','ﻩ'=>'ه','ﻪ'=>'ه','ﻫ'=>'ه','ﻬ'=>'ه','ﻭ'=>'و','ﻮ'=>'و','ﻯ'=>'ى','ﻰ'=>'ى','ﻱ'=>'ي','ﻲ'=>'ي','ﻳ'=>'ي','ﻴ'=>'ي','ﻵ'=>'لآ','ﻶ'=>'لآ','ﻷ'=>'لأ','ﻸ'=>'لأ','ﻹ'=>'لإ','ﻺ'=>'لإ','ﻻ'=>'لا','ﻼ'=>'لا','!'=>'!','"'=>'"','#'=>'#','$'=>'$','%'=>'%','&'=>'&','''=>'\'','('=>'(',')'=>')','*'=>'*','+'=>'+',','=>',','-'=>'-','.'=>'.','/'=>'/','0'=>'0','1'=>'1','2'=>'2','3'=>'3','4'=>'4','5'=>'5','6'=>'6','7'=>'7','8'=>'8','9'=>'9',':'=>':',';'=>';','<'=>'<','='=>'=','>'=>'>','?'=>'?','@'=>'@','A'=>'A','B'=>'B','C'=>'C','D'=>'D','E'=>'E','F'=>'F','G'=>'G','H'=>'H','I'=>'I','J'=>'J','K'=>'K','L'=>'L','M'=>'M','N'=>'N','O'=>'O','P'=>'P','Q'=>'Q','R'=>'R','S'=>'S','T'=>'T','U'=>'U','V'=>'V','W'=>'W','X'=>'X','Y'=>'Y','Z'=>'Z','['=>'[','\'=>'\\',']'=>']','^'=>'^','_'=>'_','`'=>'`','a'=>'a','b'=>'b','c'=>'c','d'=>'d','e'=>'e','f'=>'f','g'=>'g','h'=>'h','i'=>'i','j'=>'j','k'=>'k','l'=>'l','m'=>'m','n'=>'n','o'=>'o','p'=>'p','q'=>'q','r'=>'r','s'=>'s','t'=>'t','u'=>'u','v'=>'v','w'=>'w','x'=>'x','y'=>'y','z'=>'z','{'=>'{','|'=>'|','}'=>'}','~'=>'~','⦅'=>'⦅','⦆'=>'⦆','。'=>'。','「'=>'「','」'=>'」','、'=>'、','・'=>'・','ヲ'=>'ヲ','ァ'=>'ァ','ィ'=>'ィ','ゥ'=>'ゥ','ェ'=>'ェ','ォ'=>'ォ','ャ'=>'ャ','ュ'=>'ュ','ョ'=>'ョ','ッ'=>'ッ','ー'=>'ー','ア'=>'ア','イ'=>'イ','ウ'=>'ウ','エ'=>'エ','オ'=>'オ','カ'=>'カ','キ'=>'キ','ク'=>'ク','ケ'=>'ケ','コ'=>'コ','サ'=>'サ','シ'=>'シ','ス'=>'ス','セ'=>'セ','ソ'=>'ソ','タ'=>'タ','チ'=>'チ','ツ'=>'ツ','テ'=>'テ','ト'=>'ト','ナ'=>'ナ','ニ'=>'ニ','ヌ'=>'ヌ','ネ'=>'ネ','ノ'=>'ノ','ハ'=>'ハ','ヒ'=>'ヒ','フ'=>'フ','ヘ'=>'ヘ','ホ'=>'ホ','マ'=>'マ','ミ'=>'ミ','ム'=>'ム','メ'=>'メ','モ'=>'モ','ヤ'=>'ヤ','ユ'=>'ユ','ヨ'=>'ヨ','ラ'=>'ラ','リ'=>'リ','ル'=>'ル','レ'=>'レ','ロ'=>'ロ','ワ'=>'ワ','ン'=>'ン','゙'=>'゙','゚'=>'゚','ᅠ'=>'ᅠ','ᄀ'=>'ᄀ','ᄁ'=>'ᄁ','ᆪ'=>'ᆪ','ᄂ'=>'ᄂ','ᆬ'=>'ᆬ','ᆭ'=>'ᆭ','ᄃ'=>'ᄃ','ᄄ'=>'ᄄ','ᄅ'=>'ᄅ','ᆰ'=>'ᆰ','ᆱ'=>'ᆱ','ᆲ'=>'ᆲ','ᆳ'=>'ᆳ','ᆴ'=>'ᆴ','ᆵ'=>'ᆵ','ᄚ'=>'ᄚ','ᄆ'=>'ᄆ','ᄇ'=>'ᄇ','ᄈ'=>'ᄈ','ᄡ'=>'ᄡ','ᄉ'=>'ᄉ','ᄊ'=>'ᄊ','ᄋ'=>'ᄋ','ᄌ'=>'ᄌ','ᄍ'=>'ᄍ','ᄎ'=>'ᄎ','ᄏ'=>'ᄏ','ᄐ'=>'ᄐ','ᄑ'=>'ᄑ','ᄒ'=>'ᄒ','ᅡ'=>'ᅡ','ᅢ'=>'ᅢ','ᅣ'=>'ᅣ','ᅤ'=>'ᅤ','ᅥ'=>'ᅥ','ᅦ'=>'ᅦ','ᅧ'=>'ᅧ','ᅨ'=>'ᅨ','ᅩ'=>'ᅩ','ᅪ'=>'ᅪ','ᅫ'=>'ᅫ','ᅬ'=>'ᅬ','ᅭ'=>'ᅭ','ᅮ'=>'ᅮ','ᅯ'=>'ᅯ','ᅰ'=>'ᅰ','ᅱ'=>'ᅱ','ᅲ'=>'ᅲ','ᅳ'=>'ᅳ','ᅴ'=>'ᅴ','ᅵ'=>'ᅵ','¢'=>'¢','£'=>'£','¬'=>'¬',' ̄'=>' ̄','¦'=>'¦','¥'=>'¥','₩'=>'₩','│'=>'│','←'=>'←','↑'=>'↑','→'=>'→','↓'=>'↓','■'=>'■','○'=>'○','𝅗𝅥'=>'𝅗𝅥','𝅘𝅥'=>'𝅘𝅥','𝅘𝅥𝅮'=>'𝅘𝅥𝅮','𝅘𝅥𝅯'=>'𝅘𝅥𝅯','𝅘𝅥𝅰'=>'𝅘𝅥𝅰','𝅘𝅥𝅱'=>'𝅘𝅥𝅱','𝅘𝅥𝅲'=>'𝅘𝅥𝅲','𝆹𝅥'=>'𝆹𝅥','𝆺𝅥'=>'𝆺𝅥','𝆹𝅥𝅮'=>'𝆹𝅥𝅮','𝆺𝅥𝅮'=>'𝆺𝅥𝅮','𝆹𝅥𝅯'=>'𝆹𝅥𝅯','𝆺𝅥𝅯'=>'𝆺𝅥𝅯','𝐀'=>'A','𝐁'=>'B','𝐂'=>'C','𝐃'=>'D','𝐄'=>'E','𝐅'=>'F','𝐆'=>'G','𝐇'=>'H','𝐈'=>'I','𝐉'=>'J','𝐊'=>'K','𝐋'=>'L','𝐌'=>'M','𝐍'=>'N','𝐎'=>'O','𝐏'=>'P','𝐐'=>'Q','𝐑'=>'R','𝐒'=>'S','𝐓'=>'T','𝐔'=>'U','𝐕'=>'V','𝐖'=>'W','𝐗'=>'X','𝐘'=>'Y','𝐙'=>'Z','𝐚'=>'a','𝐛'=>'b','𝐜'=>'c','𝐝'=>'d','𝐞'=>'e','𝐟'=>'f','𝐠'=>'g','𝐡'=>'h','𝐢'=>'i','𝐣'=>'j','𝐤'=>'k','𝐥'=>'l','𝐦'=>'m','𝐧'=>'n','𝐨'=>'o','𝐩'=>'p','𝐪'=>'q','𝐫'=>'r','𝐬'=>'s','𝐭'=>'t','𝐮'=>'u','𝐯'=>'v','𝐰'=>'w','𝐱'=>'x','𝐲'=>'y','𝐳'=>'z','𝐴'=>'A','𝐵'=>'B','𝐶'=>'C','𝐷'=>'D','𝐸'=>'E','𝐹'=>'F','𝐺'=>'G','𝐻'=>'H','𝐼'=>'I','𝐽'=>'J','𝐾'=>'K','𝐿'=>'L','𝑀'=>'M','𝑁'=>'N','𝑂'=>'O','𝑃'=>'P','𝑄'=>'Q','𝑅'=>'R','𝑆'=>'S','𝑇'=>'T','𝑈'=>'U','𝑉'=>'V','𝑊'=>'W','𝑋'=>'X','𝑌'=>'Y','𝑍'=>'Z','𝑎'=>'a','𝑏'=>'b','𝑐'=>'c','𝑑'=>'d','𝑒'=>'e','𝑓'=>'f','𝑔'=>'g','𝑖'=>'i','𝑗'=>'j','𝑘'=>'k','𝑙'=>'l','𝑚'=>'m','𝑛'=>'n','𝑜'=>'o','𝑝'=>'p','𝑞'=>'q','𝑟'=>'r','𝑠'=>'s','𝑡'=>'t','𝑢'=>'u','𝑣'=>'v','𝑤'=>'w','𝑥'=>'x','𝑦'=>'y','𝑧'=>'z','𝑨'=>'A','𝑩'=>'B','𝑪'=>'C','𝑫'=>'D','𝑬'=>'E','𝑭'=>'F','𝑮'=>'G','𝑯'=>'H','𝑰'=>'I','𝑱'=>'J','𝑲'=>'K','𝑳'=>'L','𝑴'=>'M','𝑵'=>'N','𝑶'=>'O','𝑷'=>'P','𝑸'=>'Q','𝑹'=>'R','𝑺'=>'S','𝑻'=>'T','𝑼'=>'U','𝑽'=>'V','𝑾'=>'W','𝑿'=>'X','𝒀'=>'Y','𝒁'=>'Z','𝒂'=>'a','𝒃'=>'b','𝒄'=>'c','𝒅'=>'d','𝒆'=>'e','𝒇'=>'f','𝒈'=>'g','𝒉'=>'h','𝒊'=>'i','𝒋'=>'j','𝒌'=>'k','𝒍'=>'l','𝒎'=>'m','𝒏'=>'n','𝒐'=>'o','𝒑'=>'p','𝒒'=>'q','𝒓'=>'r','𝒔'=>'s','𝒕'=>'t','𝒖'=>'u','𝒗'=>'v','𝒘'=>'w','𝒙'=>'x','𝒚'=>'y','𝒛'=>'z','𝒜'=>'A','𝒞'=>'C','𝒟'=>'D','𝒢'=>'G','𝒥'=>'J','𝒦'=>'K','𝒩'=>'N','𝒪'=>'O','𝒫'=>'P','𝒬'=>'Q','𝒮'=>'S','𝒯'=>'T','𝒰'=>'U','𝒱'=>'V','𝒲'=>'W','𝒳'=>'X','𝒴'=>'Y','𝒵'=>'Z','𝒶'=>'a','𝒷'=>'b','𝒸'=>'c','𝒹'=>'d','𝒻'=>'f','𝒽'=>'h','𝒾'=>'i','𝒿'=>'j','𝓀'=>'k','𝓁'=>'l','𝓂'=>'m','𝓃'=>'n','𝓅'=>'p','𝓆'=>'q','𝓇'=>'r','𝓈'=>'s','𝓉'=>'t','𝓊'=>'u','𝓋'=>'v','𝓌'=>'w','𝓍'=>'x','𝓎'=>'y','𝓏'=>'z','𝓐'=>'A','𝓑'=>'B','𝓒'=>'C','𝓓'=>'D','𝓔'=>'E','𝓕'=>'F','𝓖'=>'G','𝓗'=>'H','𝓘'=>'I','𝓙'=>'J','𝓚'=>'K','𝓛'=>'L','𝓜'=>'M','𝓝'=>'N','𝓞'=>'O','𝓟'=>'P','𝓠'=>'Q','𝓡'=>'R','𝓢'=>'S','𝓣'=>'T','𝓤'=>'U','𝓥'=>'V','𝓦'=>'W','𝓧'=>'X','𝓨'=>'Y','𝓩'=>'Z','𝓪'=>'a','𝓫'=>'b','𝓬'=>'c','𝓭'=>'d','𝓮'=>'e','𝓯'=>'f','𝓰'=>'g','𝓱'=>'h','𝓲'=>'i','𝓳'=>'j','𝓴'=>'k','𝓵'=>'l','𝓶'=>'m','𝓷'=>'n','𝓸'=>'o','𝓹'=>'p','𝓺'=>'q','𝓻'=>'r','𝓼'=>'s','𝓽'=>'t','𝓾'=>'u','𝓿'=>'v','𝔀'=>'w','𝔁'=>'x','𝔂'=>'y','𝔃'=>'z','𝔄'=>'A','𝔅'=>'B','𝔇'=>'D','𝔈'=>'E','𝔉'=>'F','𝔊'=>'G','𝔍'=>'J','𝔎'=>'K','𝔏'=>'L','𝔐'=>'M','𝔑'=>'N','𝔒'=>'O','𝔓'=>'P','𝔔'=>'Q','𝔖'=>'S','𝔗'=>'T','𝔘'=>'U','𝔙'=>'V','𝔚'=>'W','𝔛'=>'X','𝔜'=>'Y','𝔞'=>'a','𝔟'=>'b','𝔠'=>'c','𝔡'=>'d','𝔢'=>'e','𝔣'=>'f','𝔤'=>'g','𝔥'=>'h','𝔦'=>'i','𝔧'=>'j','𝔨'=>'k','𝔩'=>'l','𝔪'=>'m','𝔫'=>'n','𝔬'=>'o','𝔭'=>'p','𝔮'=>'q','𝔯'=>'r','𝔰'=>'s','𝔱'=>'t','𝔲'=>'u','𝔳'=>'v','𝔴'=>'w','𝔵'=>'x','𝔶'=>'y','𝔷'=>'z','𝔸'=>'A','𝔹'=>'B','𝔻'=>'D','𝔼'=>'E','𝔽'=>'F','𝔾'=>'G','𝕀'=>'I','𝕁'=>'J','𝕂'=>'K','𝕃'=>'L','𝕄'=>'M','𝕆'=>'O','𝕊'=>'S','𝕋'=>'T','𝕌'=>'U','𝕍'=>'V','𝕎'=>'W','𝕏'=>'X','𝕐'=>'Y','𝕒'=>'a','𝕓'=>'b','𝕔'=>'c','𝕕'=>'d','𝕖'=>'e','𝕗'=>'f','𝕘'=>'g','𝕙'=>'h','𝕚'=>'i','𝕛'=>'j','𝕜'=>'k','𝕝'=>'l','𝕞'=>'m','𝕟'=>'n','𝕠'=>'o','𝕡'=>'p','𝕢'=>'q','𝕣'=>'r','𝕤'=>'s','𝕥'=>'t','𝕦'=>'u','𝕧'=>'v','𝕨'=>'w','𝕩'=>'x','𝕪'=>'y','𝕫'=>'z','𝕬'=>'A','𝕭'=>'B','𝕮'=>'C','𝕯'=>'D','𝕰'=>'E','𝕱'=>'F','𝕲'=>'G','𝕳'=>'H','𝕴'=>'I','𝕵'=>'J','𝕶'=>'K','𝕷'=>'L','𝕸'=>'M','𝕹'=>'N','𝕺'=>'O','𝕻'=>'P','𝕼'=>'Q','𝕽'=>'R','𝕾'=>'S','𝕿'=>'T','𝖀'=>'U','𝖁'=>'V','𝖂'=>'W','𝖃'=>'X','𝖄'=>'Y','𝖅'=>'Z','𝖆'=>'a','𝖇'=>'b','𝖈'=>'c','𝖉'=>'d','𝖊'=>'e','𝖋'=>'f','𝖌'=>'g','𝖍'=>'h','𝖎'=>'i','𝖏'=>'j','𝖐'=>'k','𝖑'=>'l','𝖒'=>'m','𝖓'=>'n','𝖔'=>'o','𝖕'=>'p','𝖖'=>'q','𝖗'=>'r','𝖘'=>'s','𝖙'=>'t','𝖚'=>'u','𝖛'=>'v','𝖜'=>'w','𝖝'=>'x','𝖞'=>'y','𝖟'=>'z','𝖠'=>'A','𝖡'=>'B','𝖢'=>'C','𝖣'=>'D','𝖤'=>'E','𝖥'=>'F','𝖦'=>'G','𝖧'=>'H','𝖨'=>'I','𝖩'=>'J','𝖪'=>'K','𝖫'=>'L','𝖬'=>'M','𝖭'=>'N','𝖮'=>'O','𝖯'=>'P','𝖰'=>'Q','𝖱'=>'R','𝖲'=>'S','𝖳'=>'T','𝖴'=>'U','𝖵'=>'V','𝖶'=>'W','𝖷'=>'X','𝖸'=>'Y','𝖹'=>'Z','𝖺'=>'a','𝖻'=>'b','𝖼'=>'c','𝖽'=>'d','𝖾'=>'e','𝖿'=>'f','𝗀'=>'g','𝗁'=>'h','𝗂'=>'i','𝗃'=>'j','𝗄'=>'k','𝗅'=>'l','𝗆'=>'m','𝗇'=>'n','𝗈'=>'o','𝗉'=>'p','𝗊'=>'q','𝗋'=>'r','𝗌'=>'s','𝗍'=>'t','𝗎'=>'u','𝗏'=>'v','𝗐'=>'w','𝗑'=>'x','𝗒'=>'y','𝗓'=>'z','𝗔'=>'A','𝗕'=>'B','𝗖'=>'C','𝗗'=>'D','𝗘'=>'E','𝗙'=>'F','𝗚'=>'G','𝗛'=>'H','𝗜'=>'I','𝗝'=>'J','𝗞'=>'K','𝗟'=>'L','𝗠'=>'M','𝗡'=>'N','𝗢'=>'O','𝗣'=>'P','𝗤'=>'Q','𝗥'=>'R','𝗦'=>'S','𝗧'=>'T','𝗨'=>'U','𝗩'=>'V','𝗪'=>'W','𝗫'=>'X','𝗬'=>'Y','𝗭'=>'Z','𝗮'=>'a','𝗯'=>'b','𝗰'=>'c','𝗱'=>'d','𝗲'=>'e','𝗳'=>'f','𝗴'=>'g','𝗵'=>'h','𝗶'=>'i','𝗷'=>'j','𝗸'=>'k','𝗹'=>'l','𝗺'=>'m','𝗻'=>'n','𝗼'=>'o','𝗽'=>'p','𝗾'=>'q','𝗿'=>'r','𝘀'=>'s','𝘁'=>'t','𝘂'=>'u','𝘃'=>'v','𝘄'=>'w','𝘅'=>'x','𝘆'=>'y','𝘇'=>'z','𝘈'=>'A','𝘉'=>'B','𝘊'=>'C','𝘋'=>'D','𝘌'=>'E','𝘍'=>'F','𝘎'=>'G','𝘏'=>'H','𝘐'=>'I','𝘑'=>'J','𝘒'=>'K','𝘓'=>'L','𝘔'=>'M','𝘕'=>'N','𝘖'=>'O','𝘗'=>'P','𝘘'=>'Q','𝘙'=>'R','𝘚'=>'S','𝘛'=>'T','𝘜'=>'U','𝘝'=>'V','𝘞'=>'W','𝘟'=>'X','𝘠'=>'Y','𝘡'=>'Z','𝘢'=>'a','𝘣'=>'b','𝘤'=>'c','𝘥'=>'d','𝘦'=>'e','𝘧'=>'f','𝘨'=>'g','𝘩'=>'h','𝘪'=>'i','𝘫'=>'j','𝘬'=>'k','𝘭'=>'l','𝘮'=>'m','𝘯'=>'n','𝘰'=>'o','𝘱'=>'p','𝘲'=>'q','𝘳'=>'r','𝘴'=>'s','𝘵'=>'t','𝘶'=>'u','𝘷'=>'v','𝘸'=>'w','𝘹'=>'x','𝘺'=>'y','𝘻'=>'z','𝘼'=>'A','𝘽'=>'B','𝘾'=>'C','𝘿'=>'D','𝙀'=>'E','𝙁'=>'F','𝙂'=>'G','𝙃'=>'H','𝙄'=>'I','𝙅'=>'J','𝙆'=>'K','𝙇'=>'L','𝙈'=>'M','𝙉'=>'N','𝙊'=>'O','𝙋'=>'P','𝙌'=>'Q','𝙍'=>'R','𝙎'=>'S','𝙏'=>'T','𝙐'=>'U','𝙑'=>'V','𝙒'=>'W','𝙓'=>'X','𝙔'=>'Y','𝙕'=>'Z','𝙖'=>'a','𝙗'=>'b','𝙘'=>'c','𝙙'=>'d','𝙚'=>'e','𝙛'=>'f','𝙜'=>'g','𝙝'=>'h','𝙞'=>'i','𝙟'=>'j','𝙠'=>'k','𝙡'=>'l','𝙢'=>'m','𝙣'=>'n','𝙤'=>'o','𝙥'=>'p','𝙦'=>'q','𝙧'=>'r','𝙨'=>'s','𝙩'=>'t','𝙪'=>'u','𝙫'=>'v','𝙬'=>'w','𝙭'=>'x','𝙮'=>'y','𝙯'=>'z','𝙰'=>'A','𝙱'=>'B','𝙲'=>'C','𝙳'=>'D','𝙴'=>'E','𝙵'=>'F','𝙶'=>'G','𝙷'=>'H','𝙸'=>'I','𝙹'=>'J','𝙺'=>'K','𝙻'=>'L','𝙼'=>'M','𝙽'=>'N','𝙾'=>'O','𝙿'=>'P','𝚀'=>'Q','𝚁'=>'R','𝚂'=>'S','𝚃'=>'T','𝚄'=>'U','𝚅'=>'V','𝚆'=>'W','𝚇'=>'X','𝚈'=>'Y','𝚉'=>'Z','𝚊'=>'a','𝚋'=>'b','𝚌'=>'c','𝚍'=>'d','𝚎'=>'e','𝚏'=>'f','𝚐'=>'g','𝚑'=>'h','𝚒'=>'i','𝚓'=>'j','𝚔'=>'k','𝚕'=>'l','𝚖'=>'m','𝚗'=>'n','𝚘'=>'o','𝚙'=>'p','𝚚'=>'q','𝚛'=>'r','𝚜'=>'s','𝚝'=>'t','𝚞'=>'u','𝚟'=>'v','𝚠'=>'w','𝚡'=>'x','𝚢'=>'y','𝚣'=>'z','𝚤'=>'ı','𝚥'=>'ȷ','𝚨'=>'Α','𝚩'=>'Β','𝚪'=>'Γ','𝚫'=>'Δ','𝚬'=>'Ε','𝚭'=>'Ζ','𝚮'=>'Η','𝚯'=>'Θ','𝚰'=>'Ι','𝚱'=>'Κ','𝚲'=>'Λ','𝚳'=>'Μ','𝚴'=>'Ν','𝚵'=>'Ξ','𝚶'=>'Ο','𝚷'=>'Π','𝚸'=>'Ρ','𝚹'=>'Θ','𝚺'=>'Σ','𝚻'=>'Τ','𝚼'=>'Υ','𝚽'=>'Φ','𝚾'=>'Χ','𝚿'=>'Ψ','𝛀'=>'Ω','𝛁'=>'∇','𝛂'=>'α','𝛃'=>'β','𝛄'=>'γ','𝛅'=>'δ','𝛆'=>'ε','𝛇'=>'ζ','𝛈'=>'η','𝛉'=>'θ','𝛊'=>'ι','𝛋'=>'κ','𝛌'=>'λ','𝛍'=>'μ','𝛎'=>'ν','𝛏'=>'ξ','𝛐'=>'ο','𝛑'=>'π','𝛒'=>'ρ','𝛓'=>'ς','𝛔'=>'σ','𝛕'=>'τ','𝛖'=>'υ','𝛗'=>'φ','𝛘'=>'χ','𝛙'=>'ψ','𝛚'=>'ω','𝛛'=>'∂','𝛜'=>'ε','𝛝'=>'θ','𝛞'=>'κ','𝛟'=>'φ','𝛠'=>'ρ','𝛡'=>'π','𝛢'=>'Α','𝛣'=>'Β','𝛤'=>'Γ','𝛥'=>'Δ','𝛦'=>'Ε','𝛧'=>'Ζ','𝛨'=>'Η','𝛩'=>'Θ','𝛪'=>'Ι','𝛫'=>'Κ','𝛬'=>'Λ','𝛭'=>'Μ','𝛮'=>'Ν','𝛯'=>'Ξ','𝛰'=>'Ο','𝛱'=>'Π','𝛲'=>'Ρ','𝛳'=>'Θ','𝛴'=>'Σ','𝛵'=>'Τ','𝛶'=>'Υ','𝛷'=>'Φ','𝛸'=>'Χ','𝛹'=>'Ψ','𝛺'=>'Ω','𝛻'=>'∇','𝛼'=>'α','𝛽'=>'β','𝛾'=>'γ','𝛿'=>'δ','𝜀'=>'ε','𝜁'=>'ζ','𝜂'=>'η','𝜃'=>'θ','𝜄'=>'ι','𝜅'=>'κ','𝜆'=>'λ','𝜇'=>'μ','𝜈'=>'ν','𝜉'=>'ξ','𝜊'=>'ο','𝜋'=>'π','𝜌'=>'ρ','𝜍'=>'ς','𝜎'=>'σ','𝜏'=>'τ','𝜐'=>'υ','𝜑'=>'φ','𝜒'=>'χ','𝜓'=>'ψ','𝜔'=>'ω','𝜕'=>'∂','𝜖'=>'ε','𝜗'=>'θ','𝜘'=>'κ','𝜙'=>'φ','𝜚'=>'ρ','𝜛'=>'π','𝜜'=>'Α','𝜝'=>'Β','𝜞'=>'Γ','𝜟'=>'Δ','𝜠'=>'Ε','𝜡'=>'Ζ','𝜢'=>'Η','𝜣'=>'Θ','𝜤'=>'Ι','𝜥'=>'Κ','𝜦'=>'Λ','𝜧'=>'Μ','𝜨'=>'Ν','𝜩'=>'Ξ','𝜪'=>'Ο','𝜫'=>'Π','𝜬'=>'Ρ','𝜭'=>'Θ','𝜮'=>'Σ','𝜯'=>'Τ','𝜰'=>'Υ','𝜱'=>'Φ','𝜲'=>'Χ','𝜳'=>'Ψ','𝜴'=>'Ω','𝜵'=>'∇','𝜶'=>'α','𝜷'=>'β','𝜸'=>'γ','𝜹'=>'δ','𝜺'=>'ε','𝜻'=>'ζ','𝜼'=>'η','𝜽'=>'θ','𝜾'=>'ι','𝜿'=>'κ','𝝀'=>'λ','𝝁'=>'μ','𝝂'=>'ν','𝝃'=>'ξ','𝝄'=>'ο','𝝅'=>'π','𝝆'=>'ρ','𝝇'=>'ς','𝝈'=>'σ','𝝉'=>'τ','𝝊'=>'υ','𝝋'=>'φ','𝝌'=>'χ','𝝍'=>'ψ','𝝎'=>'ω','𝝏'=>'∂','𝝐'=>'ε','𝝑'=>'θ','𝝒'=>'κ','𝝓'=>'φ','𝝔'=>'ρ','𝝕'=>'π','𝝖'=>'Α','𝝗'=>'Β','𝝘'=>'Γ','𝝙'=>'Δ','𝝚'=>'Ε','𝝛'=>'Ζ','𝝜'=>'Η','𝝝'=>'Θ','𝝞'=>'Ι','𝝟'=>'Κ','𝝠'=>'Λ','𝝡'=>'Μ','𝝢'=>'Ν','𝝣'=>'Ξ','𝝤'=>'Ο','𝝥'=>'Π','𝝦'=>'Ρ','𝝧'=>'Θ','𝝨'=>'Σ','𝝩'=>'Τ','𝝪'=>'Υ','𝝫'=>'Φ','𝝬'=>'Χ','𝝭'=>'Ψ','𝝮'=>'Ω','𝝯'=>'∇','𝝰'=>'α','𝝱'=>'β','𝝲'=>'γ','𝝳'=>'δ','𝝴'=>'ε','𝝵'=>'ζ','𝝶'=>'η','𝝷'=>'θ','𝝸'=>'ι','𝝹'=>'κ','𝝺'=>'λ','𝝻'=>'μ','𝝼'=>'ν','𝝽'=>'ξ','𝝾'=>'ο','𝝿'=>'π','𝞀'=>'ρ','𝞁'=>'ς','𝞂'=>'σ','𝞃'=>'τ','𝞄'=>'υ','𝞅'=>'φ','𝞆'=>'χ','𝞇'=>'ψ','𝞈'=>'ω','𝞉'=>'∂','𝞊'=>'ε','𝞋'=>'θ','𝞌'=>'κ','𝞍'=>'φ','𝞎'=>'ρ','𝞏'=>'π','𝞐'=>'Α','𝞑'=>'Β','𝞒'=>'Γ','𝞓'=>'Δ','𝞔'=>'Ε','𝞕'=>'Ζ','𝞖'=>'Η','𝞗'=>'Θ','𝞘'=>'Ι','𝞙'=>'Κ','𝞚'=>'Λ','𝞛'=>'Μ','𝞜'=>'Ν','𝞝'=>'Ξ','𝞞'=>'Ο','𝞟'=>'Π','𝞠'=>'Ρ','𝞡'=>'Θ','𝞢'=>'Σ','𝞣'=>'Τ','𝞤'=>'Υ','𝞥'=>'Φ','𝞦'=>'Χ','𝞧'=>'Ψ','𝞨'=>'Ω','𝞩'=>'∇','𝞪'=>'α','𝞫'=>'β','𝞬'=>'γ','𝞭'=>'δ','𝞮'=>'ε','𝞯'=>'ζ','𝞰'=>'η','𝞱'=>'θ','𝞲'=>'ι','𝞳'=>'κ','𝞴'=>'λ','𝞵'=>'μ','𝞶'=>'ν','𝞷'=>'ξ','𝞸'=>'ο','𝞹'=>'π','𝞺'=>'ρ','𝞻'=>'ς','𝞼'=>'σ','𝞽'=>'τ','𝞾'=>'υ','𝞿'=>'φ','𝟀'=>'χ','𝟁'=>'ψ','𝟂'=>'ω','𝟃'=>'∂','𝟄'=>'ε','𝟅'=>'θ','𝟆'=>'κ','𝟇'=>'φ','𝟈'=>'ρ','𝟉'=>'π','𝟊'=>'Ϝ','𝟋'=>'ϝ','𝟎'=>'0','𝟏'=>'1','𝟐'=>'2','𝟑'=>'3','𝟒'=>'4','𝟓'=>'5','𝟔'=>'6','𝟕'=>'7','𝟖'=>'8','𝟗'=>'9','𝟘'=>'0','𝟙'=>'1','𝟚'=>'2','𝟛'=>'3','𝟜'=>'4','𝟝'=>'5','𝟞'=>'6','𝟟'=>'7','𝟠'=>'8','𝟡'=>'9','𝟢'=>'0','𝟣'=>'1','𝟤'=>'2','𝟥'=>'3','𝟦'=>'4','𝟧'=>'5','𝟨'=>'6','𝟩'=>'7','𝟪'=>'8','𝟫'=>'9','𝟬'=>'0','𝟭'=>'1','𝟮'=>'2','𝟯'=>'3','𝟰'=>'4','𝟱'=>'5','𝟲'=>'6','𝟳'=>'7','𝟴'=>'8','𝟵'=>'9','𝟶'=>'0','𝟷'=>'1','𝟸'=>'2','𝟹'=>'3','𝟺'=>'4','𝟻'=>'5','𝟼'=>'6','𝟽'=>'7','𝟾'=>'8','𝟿'=>'9','丽'=>'丽','丸'=>'丸','乁'=>'乁','𠄢'=>'𠄢','你'=>'你','侮'=>'侮','侻'=>'侻','倂'=>'倂','偺'=>'偺','備'=>'備','僧'=>'僧','像'=>'像','㒞'=>'㒞','𠘺'=>'𠘺','免'=>'免','兔'=>'兔','兤'=>'兤','具'=>'具','𠔜'=>'𠔜','㒹'=>'㒹','內'=>'內','再'=>'再','𠕋'=>'𠕋','冗'=>'冗','冤'=>'冤','仌'=>'仌','冬'=>'冬','况'=>'况','𩇟'=>'𩇟','凵'=>'凵','刃'=>'刃','㓟'=>'㓟','刻'=>'刻','剆'=>'剆','割'=>'割','剷'=>'剷','㔕'=>'㔕','勇'=>'勇','勉'=>'勉','勤'=>'勤','勺'=>'勺','包'=>'包','匆'=>'匆','北'=>'北','卉'=>'卉','卑'=>'卑','博'=>'博','即'=>'即','卽'=>'卽','卿'=>'卿','卿'=>'卿','卿'=>'卿','𠨬'=>'𠨬','灰'=>'灰','及'=>'及','叟'=>'叟','𠭣'=>'𠭣','叫'=>'叫','叱'=>'叱','吆'=>'吆','咞'=>'咞','吸'=>'吸','呈'=>'呈','周'=>'周','咢'=>'咢','哶'=>'哶','唐'=>'唐','啓'=>'啓','啣'=>'啣','善'=>'善','善'=>'善','喙'=>'喙','喫'=>'喫','喳'=>'喳','嗂'=>'嗂','圖'=>'圖','嘆'=>'嘆','圗'=>'圗','噑'=>'噑','噴'=>'噴','切'=>'切','壮'=>'壮','城'=>'城','埴'=>'埴','堍'=>'堍','型'=>'型','堲'=>'堲','報'=>'報','墬'=>'墬','𡓤'=>'𡓤','売'=>'売','壷'=>'壷','夆'=>'夆','多'=>'多','夢'=>'夢','奢'=>'奢','𡚨'=>'𡚨','𡛪'=>'𡛪','姬'=>'姬','娛'=>'娛','娧'=>'娧','姘'=>'姘','婦'=>'婦','㛮'=>'㛮','㛼'=>'㛼','嬈'=>'嬈','嬾'=>'嬾','嬾'=>'嬾','𡧈'=>'𡧈','寃'=>'寃','寘'=>'寘','寧'=>'寧','寳'=>'寳','𡬘'=>'𡬘','寿'=>'寿','将'=>'将','当'=>'当','尢'=>'尢','㞁'=>'㞁','屠'=>'屠','屮'=>'屮','峀'=>'峀','岍'=>'岍','𡷤'=>'𡷤','嵃'=>'嵃','𡷦'=>'𡷦','嵮'=>'嵮','嵫'=>'嵫','嵼'=>'嵼','巡'=>'巡','巢'=>'巢','㠯'=>'㠯','巽'=>'巽','帨'=>'帨','帽'=>'帽','幩'=>'幩','㡢'=>'㡢','𢆃'=>'𢆃','㡼'=>'㡼','庰'=>'庰','庳'=>'庳','庶'=>'庶','廊'=>'廊','𪎒'=>'𪎒','廾'=>'廾','𢌱'=>'𢌱','𢌱'=>'𢌱','舁'=>'舁','弢'=>'弢','弢'=>'弢','㣇'=>'㣇','𣊸'=>'𣊸','𦇚'=>'𦇚','形'=>'形','彫'=>'彫','㣣'=>'㣣','徚'=>'徚','忍'=>'忍','志'=>'志','忹'=>'忹','悁'=>'悁','㤺'=>'㤺','㤜'=>'㤜','悔'=>'悔','𢛔'=>'𢛔','惇'=>'惇','慈'=>'慈','慌'=>'慌','慎'=>'慎','慌'=>'慌','慺'=>'慺','憎'=>'憎','憲'=>'憲','憤'=>'憤','憯'=>'憯','懞'=>'懞','懲'=>'懲','懶'=>'懶','成'=>'成','戛'=>'戛','扝'=>'扝','抱'=>'抱','拔'=>'拔','捐'=>'捐','𢬌'=>'𢬌','挽'=>'挽','拼'=>'拼','捨'=>'捨','掃'=>'掃','揤'=>'揤','𢯱'=>'𢯱','搢'=>'搢','揅'=>'揅','掩'=>'掩','㨮'=>'㨮','摩'=>'摩','摾'=>'摾','撝'=>'撝','摷'=>'摷','㩬'=>'㩬','敏'=>'敏','敬'=>'敬','𣀊'=>'𣀊','旣'=>'旣','書'=>'書','晉'=>'晉','㬙'=>'㬙','暑'=>'暑','㬈'=>'㬈','㫤'=>'㫤','冒'=>'冒','冕'=>'冕','最'=>'最','暜'=>'暜','肭'=>'肭','䏙'=>'䏙','朗'=>'朗','望'=>'望','朡'=>'朡','杞'=>'杞','杓'=>'杓','𣏃'=>'𣏃','㭉'=>'㭉','柺'=>'柺','枅'=>'枅','桒'=>'桒','梅'=>'梅','𣑭'=>'𣑭','梎'=>'梎','栟'=>'栟','椔'=>'椔','㮝'=>'㮝','楂'=>'楂','榣'=>'榣','槪'=>'槪','檨'=>'檨','𣚣'=>'𣚣','櫛'=>'櫛','㰘'=>'㰘','次'=>'次','𣢧'=>'𣢧','歔'=>'歔','㱎'=>'㱎','歲'=>'歲','殟'=>'殟','殺'=>'殺','殻'=>'殻','𣪍'=>'𣪍','𡴋'=>'𡴋','𣫺'=>'𣫺','汎'=>'汎','𣲼'=>'𣲼','沿'=>'沿','泍'=>'泍','汧'=>'汧','洖'=>'洖','派'=>'派','海'=>'海','流'=>'流','浩'=>'浩','浸'=>'浸','涅'=>'涅','𣴞'=>'𣴞','洴'=>'洴','港'=>'港','湮'=>'湮','㴳'=>'㴳','滋'=>'滋','滇'=>'滇','𣻑'=>'𣻑','淹'=>'淹','潮'=>'潮','𣽞'=>'𣽞','𣾎'=>'𣾎','濆'=>'濆','瀹'=>'瀹','瀞'=>'瀞','瀛'=>'瀛','㶖'=>'㶖','灊'=>'灊','災'=>'災','灷'=>'灷','炭'=>'炭','𠔥'=>'𠔥','煅'=>'煅','𤉣'=>'𤉣','熜'=>'熜','𤎫'=>'𤎫','爨'=>'爨','爵'=>'爵','牐'=>'牐','𤘈'=>'𤘈','犀'=>'犀','犕'=>'犕','𤜵'=>'𤜵','𤠔'=>'𤠔','獺'=>'獺','王'=>'王','㺬'=>'㺬','玥'=>'玥','㺸'=>'㺸','㺸'=>'㺸','瑇'=>'瑇','瑜'=>'瑜','瑱'=>'瑱','璅'=>'璅','瓊'=>'瓊','㼛'=>'㼛','甤'=>'甤','𤰶'=>'𤰶','甾'=>'甾','𤲒'=>'𤲒','異'=>'異','𢆟'=>'𢆟','瘐'=>'瘐','𤾡'=>'𤾡','𤾸'=>'𤾸','𥁄'=>'𥁄','㿼'=>'㿼','䀈'=>'䀈','直'=>'直','𥃳'=>'𥃳','𥃲'=>'𥃲','𥄙'=>'𥄙','𥄳'=>'𥄳','眞'=>'眞','真'=>'真','真'=>'真','睊'=>'睊','䀹'=>'䀹','瞋'=>'瞋','䁆'=>'䁆','䂖'=>'䂖','𥐝'=>'𥐝','硎'=>'硎','碌'=>'碌','磌'=>'磌','䃣'=>'䃣','𥘦'=>'𥘦','祖'=>'祖','𥚚'=>'𥚚','𥛅'=>'𥛅','福'=>'福','秫'=>'秫','䄯'=>'䄯','穀'=>'穀','穊'=>'穊','穏'=>'穏','𥥼'=>'𥥼','𥪧'=>'𥪧','𥪧'=>'𥪧','竮'=>'竮','䈂'=>'䈂','𥮫'=>'𥮫','篆'=>'篆','築'=>'築','䈧'=>'䈧','𥲀'=>'𥲀','糒'=>'糒','䊠'=>'䊠','糨'=>'糨','糣'=>'糣','紀'=>'紀','𥾆'=>'𥾆','絣'=>'絣','䌁'=>'䌁','緇'=>'緇','縂'=>'縂','繅'=>'繅','䌴'=>'䌴','𦈨'=>'𦈨','𦉇'=>'𦉇','䍙'=>'䍙','𦋙'=>'𦋙','罺'=>'罺','𦌾'=>'𦌾','羕'=>'羕','翺'=>'翺','者'=>'者','𦓚'=>'𦓚','𦔣'=>'𦔣','聠'=>'聠','𦖨'=>'𦖨','聰'=>'聰','𣍟'=>'𣍟','䏕'=>'䏕','育'=>'育','脃'=>'脃','䐋'=>'䐋','脾'=>'脾','媵'=>'媵','𦞧'=>'𦞧','𦞵'=>'𦞵','𣎓'=>'𣎓','𣎜'=>'𣎜','舁'=>'舁','舄'=>'舄','辞'=>'辞','䑫'=>'䑫','芑'=>'芑','芋'=>'芋','芝'=>'芝','劳'=>'劳','花'=>'花','芳'=>'芳','芽'=>'芽','苦'=>'苦','𦬼'=>'𦬼','若'=>'若','茝'=>'茝','荣'=>'荣','莭'=>'莭','茣'=>'茣','莽'=>'莽','菧'=>'菧','著'=>'著','荓'=>'荓','菊'=>'菊','菌'=>'菌','菜'=>'菜','𦰶'=>'𦰶','𦵫'=>'𦵫','𦳕'=>'𦳕','䔫'=>'䔫','蓱'=>'蓱','蓳'=>'蓳','蔖'=>'蔖','𧏊'=>'𧏊','蕤'=>'蕤','𦼬'=>'𦼬','䕝'=>'䕝','䕡'=>'䕡','𦾱'=>'𦾱','𧃒'=>'𧃒','䕫'=>'䕫','虐'=>'虐','虜'=>'虜','虧'=>'虧','虩'=>'虩','蚩'=>'蚩','蚈'=>'蚈','蜎'=>'蜎','蛢'=>'蛢','蝹'=>'蝹','蜨'=>'蜨','蝫'=>'蝫','螆'=>'螆','䗗'=>'䗗','蟡'=>'蟡','蠁'=>'蠁','䗹'=>'䗹','衠'=>'衠','衣'=>'衣','𧙧'=>'𧙧','裗'=>'裗','裞'=>'裞','䘵'=>'䘵','裺'=>'裺','㒻'=>'㒻','𧢮'=>'𧢮','𧥦'=>'𧥦','䚾'=>'䚾','䛇'=>'䛇','誠'=>'誠','諭'=>'諭','變'=>'變','豕'=>'豕','𧲨'=>'𧲨','貫'=>'貫','賁'=>'賁','贛'=>'贛','起'=>'起','𧼯'=>'𧼯','𠠄'=>'𠠄','跋'=>'跋','趼'=>'趼','跰'=>'跰','𠣞'=>'𠣞','軔'=>'軔','輸'=>'輸','𨗒'=>'𨗒','𨗭'=>'𨗭','邔'=>'邔','郱'=>'郱','鄑'=>'鄑','𨜮'=>'𨜮','鄛'=>'鄛','鈸'=>'鈸','鋗'=>'鋗','鋘'=>'鋘','鉼'=>'鉼','鏹'=>'鏹','鐕'=>'鐕','𨯺'=>'𨯺','開'=>'開','䦕'=>'䦕','閷'=>'閷','𨵷'=>'𨵷','䧦'=>'䧦','雃'=>'雃','嶲'=>'嶲','霣'=>'霣','𩅅'=>'𩅅','𩈚'=>'𩈚','䩮'=>'䩮','䩶'=>'䩶','韠'=>'韠','𩐊'=>'𩐊','䪲'=>'䪲','𩒖'=>'𩒖','頋'=>'頋','頋'=>'頋','頩'=>'頩','𩖶'=>'𩖶','飢'=>'飢','䬳'=>'䬳','餩'=>'餩','馧'=>'馧','駂'=>'駂','駾'=>'駾','䯎'=>'䯎','𩬰'=>'𩬰','鬒'=>'鬒','鱀'=>'鱀','鳽'=>'鳽','䳎'=>'䳎','䳭'=>'䳭','鵧'=>'鵧','𪃎'=>'𪃎','䳸'=>'䳸','𪄅'=>'𪄅','𪈎'=>'𪈎','𪊑'=>'𪊑','麻'=>'麻','䵖'=>'䵖','黹'=>'黹','黾'=>'黾','鼅'=>'鼅','鼏'=>'鼏','鼖'=>'鼖','鼻'=>'鼻','𪘀'=>'𪘀'); diff --git a/phpBB/includes/utf/data/utf_nfc_qc.php b/phpBB/includes/utf/data/utf_nfc_qc.php deleted file mode 100644 index ff56357ea6..0000000000 --- a/phpBB/includes/utf/data/utf_nfc_qc.php +++ /dev/null @@ -1,2 +0,0 @@ -<?php -$GLOBALS['utf_nfc_qc']=array('̀'=>1,'́'=>1,'̓'=>1,'̈́'=>1,'ʹ'=>1,';'=>1,'·'=>1,'क़'=>1,'ख़'=>1,'ग़'=>1,'ज़'=>1,'ड़'=>1,'ढ़'=>1,'फ़'=>1,'य़'=>1,'ড়'=>1,'ঢ়'=>1,'য়'=>1,'ਲ਼'=>1,'ਸ਼'=>1,'ਖ਼'=>1,'ਗ਼'=>1,'ਜ਼'=>1,'ਫ਼'=>1,'ଡ଼'=>1,'ଢ଼'=>1,'གྷ'=>1,'ཌྷ'=>1,'དྷ'=>1,'བྷ'=>1,'ཛྷ'=>1,'ཀྵ'=>1,'ཱི'=>1,'ཱུ'=>1,'ྲྀ'=>1,'ླྀ'=>1,'ཱྀ'=>1,'ྒྷ'=>1,'ྜྷ'=>1,'ྡྷ'=>1,'ྦྷ'=>1,'ྫྷ'=>1,'ྐྵ'=>1,'ά'=>1,'έ'=>1,'ή'=>1,'ί'=>1,'ό'=>1,'ύ'=>1,'ώ'=>1,'Ά'=>1,'ι'=>1,'Έ'=>1,'Ή'=>1,'ΐ'=>1,'Ί'=>1,'ΰ'=>1,'Ύ'=>1,'΅'=>1,'`'=>1,'Ό'=>1,'Ώ'=>1,'´'=>1,' '=>1,' '=>1,'Ω'=>1,'K'=>1,'Å'=>1,'〈'=>1,'〉'=>1,'⫝̸'=>1,'豈'=>1,'更'=>1,'車'=>1,'賈'=>1,'滑'=>1,'串'=>1,'句'=>1,'龜'=>1,'龜'=>1,'契'=>1,'金'=>1,'喇'=>1,'奈'=>1,'懶'=>1,'癩'=>1,'羅'=>1,'蘿'=>1,'螺'=>1,'裸'=>1,'邏'=>1,'樂'=>1,'洛'=>1,'烙'=>1,'珞'=>1,'落'=>1,'酪'=>1,'駱'=>1,'亂'=>1,'卵'=>1,'欄'=>1,'爛'=>1,'蘭'=>1,'鸞'=>1,'嵐'=>1,'濫'=>1,'藍'=>1,'襤'=>1,'拉'=>1,'臘'=>1,'蠟'=>1,'廊'=>1,'朗'=>1,'浪'=>1,'狼'=>1,'郎'=>1,'來'=>1,'冷'=>1,'勞'=>1,'擄'=>1,'櫓'=>1,'爐'=>1,'盧'=>1,'老'=>1,'蘆'=>1,'虜'=>1,'路'=>1,'露'=>1,'魯'=>1,'鷺'=>1,'碌'=>1,'祿'=>1,'綠'=>1,'菉'=>1,'錄'=>1,'鹿'=>1,'論'=>1,'壟'=>1,'弄'=>1,'籠'=>1,'聾'=>1,'牢'=>1,'磊'=>1,'賂'=>1,'雷'=>1,'壘'=>1,'屢'=>1,'樓'=>1,'淚'=>1,'漏'=>1,'累'=>1,'縷'=>1,'陋'=>1,'勒'=>1,'肋'=>1,'凜'=>1,'凌'=>1,'稜'=>1,'綾'=>1,'菱'=>1,'陵'=>1,'讀'=>1,'拏'=>1,'樂'=>1,'諾'=>1,'丹'=>1,'寧'=>1,'怒'=>1,'率'=>1,'異'=>1,'北'=>1,'磻'=>1,'便'=>1,'復'=>1,'不'=>1,'泌'=>1,'數'=>1,'索'=>1,'參'=>1,'塞'=>1,'省'=>1,'葉'=>1,'說'=>1,'殺'=>1,'辰'=>1,'沈'=>1,'拾'=>1,'若'=>1,'掠'=>1,'略'=>1,'亮'=>1,'兩'=>1,'凉'=>1,'梁'=>1,'糧'=>1,'良'=>1,'諒'=>1,'量'=>1,'勵'=>1,'呂'=>1,'女'=>1,'廬'=>1,'旅'=>1,'濾'=>1,'礪'=>1,'閭'=>1,'驪'=>1,'麗'=>1,'黎'=>1,'力'=>1,'曆'=>1,'歷'=>1,'轢'=>1,'年'=>1,'憐'=>1,'戀'=>1,'撚'=>1,'漣'=>1,'煉'=>1,'璉'=>1,'秊'=>1,'練'=>1,'聯'=>1,'輦'=>1,'蓮'=>1,'連'=>1,'鍊'=>1,'列'=>1,'劣'=>1,'咽'=>1,'烈'=>1,'裂'=>1,'說'=>1,'廉'=>1,'念'=>1,'捻'=>1,'殮'=>1,'簾'=>1,'獵'=>1,'令'=>1,'囹'=>1,'寧'=>1,'嶺'=>1,'怜'=>1,'玲'=>1,'瑩'=>1,'羚'=>1,'聆'=>1,'鈴'=>1,'零'=>1,'靈'=>1,'領'=>1,'例'=>1,'禮'=>1,'醴'=>1,'隸'=>1,'惡'=>1,'了'=>1,'僚'=>1,'寮'=>1,'尿'=>1,'料'=>1,'樂'=>1,'燎'=>1,'療'=>1,'蓼'=>1,'遼'=>1,'龍'=>1,'暈'=>1,'阮'=>1,'劉'=>1,'杻'=>1,'柳'=>1,'流'=>1,'溜'=>1,'琉'=>1,'留'=>1,'硫'=>1,'紐'=>1,'類'=>1,'六'=>1,'戮'=>1,'陸'=>1,'倫'=>1,'崙'=>1,'淪'=>1,'輪'=>1,'律'=>1,'慄'=>1,'栗'=>1,'率'=>1,'隆'=>1,'利'=>1,'吏'=>1,'履'=>1,'易'=>1,'李'=>1,'梨'=>1,'泥'=>1,'理'=>1,'痢'=>1,'罹'=>1,'裏'=>1,'裡'=>1,'里'=>1,'離'=>1,'匿'=>1,'溺'=>1,'吝'=>1,'燐'=>1,'璘'=>1,'藺'=>1,'隣'=>1,'鱗'=>1,'麟'=>1,'林'=>1,'淋'=>1,'臨'=>1,'立'=>1,'笠'=>1,'粒'=>1,'狀'=>1,'炙'=>1,'識'=>1,'什'=>1,'茶'=>1,'刺'=>1,'切'=>1,'度'=>1,'拓'=>1,'糖'=>1,'宅'=>1,'洞'=>1,'暴'=>1,'輻'=>1,'行'=>1,'降'=>1,'見'=>1,'廓'=>1,'兀'=>1,'嗀'=>1,'塚'=>1,'晴'=>1,'凞'=>1,'猪'=>1,'益'=>1,'礼'=>1,'神'=>1,'祥'=>1,'福'=>1,'靖'=>1,'精'=>1,'羽'=>1,'蘒'=>1,'諸'=>1,'逸'=>1,'都'=>1,'飯'=>1,'飼'=>1,'館'=>1,'鶴'=>1,'侮'=>1,'僧'=>1,'免'=>1,'勉'=>1,'勤'=>1,'卑'=>1,'喝'=>1,'嘆'=>1,'器'=>1,'塀'=>1,'墨'=>1,'層'=>1,'屮'=>1,'悔'=>1,'慨'=>1,'憎'=>1,'懲'=>1,'敏'=>1,'既'=>1,'暑'=>1,'梅'=>1,'海'=>1,'渚'=>1,'漢'=>1,'煮'=>1,'爫'=>1,'琢'=>1,'碑'=>1,'社'=>1,'祉'=>1,'祈'=>1,'祐'=>1,'祖'=>1,'祝'=>1,'禍'=>1,'禎'=>1,'穀'=>1,'突'=>1,'節'=>1,'練'=>1,'縉'=>1,'繁'=>1,'署'=>1,'者'=>1,'臭'=>1,'艹'=>1,'艹'=>1,'著'=>1,'褐'=>1,'視'=>1,'謁'=>1,'謹'=>1,'賓'=>1,'贈'=>1,'辶'=>1,'逸'=>1,'難'=>1,'響'=>1,'頻'=>1,'並'=>1,'况'=>1,'全'=>1,'侀'=>1,'充'=>1,'冀'=>1,'勇'=>1,'勺'=>1,'喝'=>1,'啕'=>1,'喙'=>1,'嗢'=>1,'塚'=>1,'墳'=>1,'奄'=>1,'奔'=>1,'婢'=>1,'嬨'=>1,'廒'=>1,'廙'=>1,'彩'=>1,'徭'=>1,'惘'=>1,'慎'=>1,'愈'=>1,'憎'=>1,'慠'=>1,'懲'=>1,'戴'=>1,'揄'=>1,'搜'=>1,'摒'=>1,'敖'=>1,'晴'=>1,'朗'=>1,'望'=>1,'杖'=>1,'歹'=>1,'殺'=>1,'流'=>1,'滛'=>1,'滋'=>1,'漢'=>1,'瀞'=>1,'煮'=>1,'瞧'=>1,'爵'=>1,'犯'=>1,'猪'=>1,'瑱'=>1,'甆'=>1,'画'=>1,'瘝'=>1,'瘟'=>1,'益'=>1,'盛'=>1,'直'=>1,'睊'=>1,'着'=>1,'磌'=>1,'窱'=>1,'節'=>1,'类'=>1,'絛'=>1,'練'=>1,'缾'=>1,'者'=>1,'荒'=>1,'華'=>1,'蝹'=>1,'襁'=>1,'覆'=>1,'視'=>1,'調'=>1,'諸'=>1,'請'=>1,'謁'=>1,'諾'=>1,'諭'=>1,'謹'=>1,'變'=>1,'贈'=>1,'輸'=>1,'遲'=>1,'醙'=>1,'鉶'=>1,'陼'=>1,'難'=>1,'靖'=>1,'韛'=>1,'響'=>1,'頋'=>1,'頻'=>1,'鬒'=>1,'龜'=>1,'𢡊'=>1,'𢡄'=>1,'𣏕'=>1,'㮝'=>1,'䀘'=>1,'䀹'=>1,'𥉉'=>1,'𥳐'=>1,'𧻓'=>1,'齃'=>1,'龎'=>1,'יִ'=>1,'ײַ'=>1,'שׁ'=>1,'שׂ'=>1,'שּׁ'=>1,'שּׂ'=>1,'אַ'=>1,'אָ'=>1,'אּ'=>1,'בּ'=>1,'גּ'=>1,'דּ'=>1,'הּ'=>1,'וּ'=>1,'זּ'=>1,'טּ'=>1,'יּ'=>1,'ךּ'=>1,'כּ'=>1,'לּ'=>1,'מּ'=>1,'נּ'=>1,'סּ'=>1,'ףּ'=>1,'פּ'=>1,'צּ'=>1,'קּ'=>1,'רּ'=>1,'שּ'=>1,'תּ'=>1,'וֹ'=>1,'בֿ'=>1,'כֿ'=>1,'פֿ'=>1,'𝅗𝅥'=>1,'𝅘𝅥'=>1,'𝅘𝅥𝅮'=>1,'𝅘𝅥𝅯'=>1,'𝅘𝅥𝅰'=>1,'𝅘𝅥𝅱'=>1,'𝅘𝅥𝅲'=>1,'𝆹𝅥'=>1,'𝆺𝅥'=>1,'𝆹𝅥𝅮'=>1,'𝆺𝅥𝅮'=>1,'𝆹𝅥𝅯'=>1,'𝆺𝅥𝅯'=>1,'丽'=>1,'丸'=>1,'乁'=>1,'𠄢'=>1,'你'=>1,'侮'=>1,'侻'=>1,'倂'=>1,'偺'=>1,'備'=>1,'僧'=>1,'像'=>1,'㒞'=>1,'𠘺'=>1,'免'=>1,'兔'=>1,'兤'=>1,'具'=>1,'𠔜'=>1,'㒹'=>1,'內'=>1,'再'=>1,'𠕋'=>1,'冗'=>1,'冤'=>1,'仌'=>1,'冬'=>1,'况'=>1,'𩇟'=>1,'凵'=>1,'刃'=>1,'㓟'=>1,'刻'=>1,'剆'=>1,'割'=>1,'剷'=>1,'㔕'=>1,'勇'=>1,'勉'=>1,'勤'=>1,'勺'=>1,'包'=>1,'匆'=>1,'北'=>1,'卉'=>1,'卑'=>1,'博'=>1,'即'=>1,'卽'=>1,'卿'=>1,'卿'=>1,'卿'=>1,'𠨬'=>1,'灰'=>1,'及'=>1,'叟'=>1,'𠭣'=>1,'叫'=>1,'叱'=>1,'吆'=>1,'咞'=>1,'吸'=>1,'呈'=>1,'周'=>1,'咢'=>1,'哶'=>1,'唐'=>1,'啓'=>1,'啣'=>1,'善'=>1,'善'=>1,'喙'=>1,'喫'=>1,'喳'=>1,'嗂'=>1,'圖'=>1,'嘆'=>1,'圗'=>1,'噑'=>1,'噴'=>1,'切'=>1,'壮'=>1,'城'=>1,'埴'=>1,'堍'=>1,'型'=>1,'堲'=>1,'報'=>1,'墬'=>1,'𡓤'=>1,'売'=>1,'壷'=>1,'夆'=>1,'多'=>1,'夢'=>1,'奢'=>1,'𡚨'=>1,'𡛪'=>1,'姬'=>1,'娛'=>1,'娧'=>1,'姘'=>1,'婦'=>1,'㛮'=>1,'㛼'=>1,'嬈'=>1,'嬾'=>1,'嬾'=>1,'𡧈'=>1,'寃'=>1,'寘'=>1,'寧'=>1,'寳'=>1,'𡬘'=>1,'寿'=>1,'将'=>1,'当'=>1,'尢'=>1,'㞁'=>1,'屠'=>1,'屮'=>1,'峀'=>1,'岍'=>1,'𡷤'=>1,'嵃'=>1,'𡷦'=>1,'嵮'=>1,'嵫'=>1,'嵼'=>1,'巡'=>1,'巢'=>1,'㠯'=>1,'巽'=>1,'帨'=>1,'帽'=>1,'幩'=>1,'㡢'=>1,'𢆃'=>1,'㡼'=>1,'庰'=>1,'庳'=>1,'庶'=>1,'廊'=>1,'𪎒'=>1,'廾'=>1,'𢌱'=>1,'𢌱'=>1,'舁'=>1,'弢'=>1,'弢'=>1,'㣇'=>1,'𣊸'=>1,'𦇚'=>1,'形'=>1,'彫'=>1,'㣣'=>1,'徚'=>1,'忍'=>1,'志'=>1,'忹'=>1,'悁'=>1,'㤺'=>1,'㤜'=>1,'悔'=>1,'𢛔'=>1,'惇'=>1,'慈'=>1,'慌'=>1,'慎'=>1,'慌'=>1,'慺'=>1,'憎'=>1,'憲'=>1,'憤'=>1,'憯'=>1,'懞'=>1,'懲'=>1,'懶'=>1,'成'=>1,'戛'=>1,'扝'=>1,'抱'=>1,'拔'=>1,'捐'=>1,'𢬌'=>1,'挽'=>1,'拼'=>1,'捨'=>1,'掃'=>1,'揤'=>1,'𢯱'=>1,'搢'=>1,'揅'=>1,'掩'=>1,'㨮'=>1,'摩'=>1,'摾'=>1,'撝'=>1,'摷'=>1,'㩬'=>1,'敏'=>1,'敬'=>1,'𣀊'=>1,'旣'=>1,'書'=>1,'晉'=>1,'㬙'=>1,'暑'=>1,'㬈'=>1,'㫤'=>1,'冒'=>1,'冕'=>1,'最'=>1,'暜'=>1,'肭'=>1,'䏙'=>1,'朗'=>1,'望'=>1,'朡'=>1,'杞'=>1,'杓'=>1,'𣏃'=>1,'㭉'=>1,'柺'=>1,'枅'=>1,'桒'=>1,'梅'=>1,'𣑭'=>1,'梎'=>1,'栟'=>1,'椔'=>1,'㮝'=>1,'楂'=>1,'榣'=>1,'槪'=>1,'檨'=>1,'𣚣'=>1,'櫛'=>1,'㰘'=>1,'次'=>1,'𣢧'=>1,'歔'=>1,'㱎'=>1,'歲'=>1,'殟'=>1,'殺'=>1,'殻'=>1,'𣪍'=>1,'𡴋'=>1,'𣫺'=>1,'汎'=>1,'𣲼'=>1,'沿'=>1,'泍'=>1,'汧'=>1,'洖'=>1,'派'=>1,'海'=>1,'流'=>1,'浩'=>1,'浸'=>1,'涅'=>1,'𣴞'=>1,'洴'=>1,'港'=>1,'湮'=>1,'㴳'=>1,'滋'=>1,'滇'=>1,'𣻑'=>1,'淹'=>1,'潮'=>1,'𣽞'=>1,'𣾎'=>1,'濆'=>1,'瀹'=>1,'瀞'=>1,'瀛'=>1,'㶖'=>1,'灊'=>1,'災'=>1,'灷'=>1,'炭'=>1,'𠔥'=>1,'煅'=>1,'𤉣'=>1,'熜'=>1,'𤎫'=>1,'爨'=>1,'爵'=>1,'牐'=>1,'𤘈'=>1,'犀'=>1,'犕'=>1,'𤜵'=>1,'𤠔'=>1,'獺'=>1,'王'=>1,'㺬'=>1,'玥'=>1,'㺸'=>1,'㺸'=>1,'瑇'=>1,'瑜'=>1,'瑱'=>1,'璅'=>1,'瓊'=>1,'㼛'=>1,'甤'=>1,'𤰶'=>1,'甾'=>1,'𤲒'=>1,'異'=>1,'𢆟'=>1,'瘐'=>1,'𤾡'=>1,'𤾸'=>1,'𥁄'=>1,'㿼'=>1,'䀈'=>1,'直'=>1,'𥃳'=>1,'𥃲'=>1,'𥄙'=>1,'𥄳'=>1,'眞'=>1,'真'=>1,'真'=>1,'睊'=>1,'䀹'=>1,'瞋'=>1,'䁆'=>1,'䂖'=>1,'𥐝'=>1,'硎'=>1,'碌'=>1,'磌'=>1,'䃣'=>1,'𥘦'=>1,'祖'=>1,'𥚚'=>1,'𥛅'=>1,'福'=>1,'秫'=>1,'䄯'=>1,'穀'=>1,'穊'=>1,'穏'=>1,'𥥼'=>1,'𥪧'=>1,'𥪧'=>1,'竮'=>1,'䈂'=>1,'𥮫'=>1,'篆'=>1,'築'=>1,'䈧'=>1,'𥲀'=>1,'糒'=>1,'䊠'=>1,'糨'=>1,'糣'=>1,'紀'=>1,'𥾆'=>1,'絣'=>1,'䌁'=>1,'緇'=>1,'縂'=>1,'繅'=>1,'䌴'=>1,'𦈨'=>1,'𦉇'=>1,'䍙'=>1,'𦋙'=>1,'罺'=>1,'𦌾'=>1,'羕'=>1,'翺'=>1,'者'=>1,'𦓚'=>1,'𦔣'=>1,'聠'=>1,'𦖨'=>1,'聰'=>1,'𣍟'=>1,'䏕'=>1,'育'=>1,'脃'=>1,'䐋'=>1,'脾'=>1,'媵'=>1,'𦞧'=>1,'𦞵'=>1,'𣎓'=>1,'𣎜'=>1,'舁'=>1,'舄'=>1,'辞'=>1,'䑫'=>1,'芑'=>1,'芋'=>1,'芝'=>1,'劳'=>1,'花'=>1,'芳'=>1,'芽'=>1,'苦'=>1,'𦬼'=>1,'若'=>1,'茝'=>1,'荣'=>1,'莭'=>1,'茣'=>1,'莽'=>1,'菧'=>1,'著'=>1,'荓'=>1,'菊'=>1,'菌'=>1,'菜'=>1,'𦰶'=>1,'𦵫'=>1,'𦳕'=>1,'䔫'=>1,'蓱'=>1,'蓳'=>1,'蔖'=>1,'𧏊'=>1,'蕤'=>1,'𦼬'=>1,'䕝'=>1,'䕡'=>1,'𦾱'=>1,'𧃒'=>1,'䕫'=>1,'虐'=>1,'虜'=>1,'虧'=>1,'虩'=>1,'蚩'=>1,'蚈'=>1,'蜎'=>1,'蛢'=>1,'蝹'=>1,'蜨'=>1,'蝫'=>1,'螆'=>1,'䗗'=>1,'蟡'=>1,'蠁'=>1,'䗹'=>1,'衠'=>1,'衣'=>1,'𧙧'=>1,'裗'=>1,'裞'=>1,'䘵'=>1,'裺'=>1,'㒻'=>1,'𧢮'=>1,'𧥦'=>1,'䚾'=>1,'䛇'=>1,'誠'=>1,'諭'=>1,'變'=>1,'豕'=>1,'𧲨'=>1,'貫'=>1,'賁'=>1,'贛'=>1,'起'=>1,'𧼯'=>1,'𠠄'=>1,'跋'=>1,'趼'=>1,'跰'=>1,'𠣞'=>1,'軔'=>1,'輸'=>1,'𨗒'=>1,'𨗭'=>1,'邔'=>1,'郱'=>1,'鄑'=>1,'𨜮'=>1,'鄛'=>1,'鈸'=>1,'鋗'=>1,'鋘'=>1,'鉼'=>1,'鏹'=>1,'鐕'=>1,'𨯺'=>1,'開'=>1,'䦕'=>1,'閷'=>1,'𨵷'=>1,'䧦'=>1,'雃'=>1,'嶲'=>1,'霣'=>1,'𩅅'=>1,'𩈚'=>1,'䩮'=>1,'䩶'=>1,'韠'=>1,'𩐊'=>1,'䪲'=>1,'𩒖'=>1,'頋'=>1,'頋'=>1,'頩'=>1,'𩖶'=>1,'飢'=>1,'䬳'=>1,'餩'=>1,'馧'=>1,'駂'=>1,'駾'=>1,'䯎'=>1,'𩬰'=>1,'鬒'=>1,'鱀'=>1,'鳽'=>1,'䳎'=>1,'䳭'=>1,'鵧'=>1,'𪃎'=>1,'䳸'=>1,'𪄅'=>1,'𪈎'=>1,'𪊑'=>1,'麻'=>1,'䵖'=>1,'黹'=>1,'黾'=>1,'鼅'=>1,'鼏'=>1,'鼖'=>1,'鼻'=>1,'𪘀'=>1,'̀'=>0,'́'=>0,'̂'=>0,'̃'=>0,'̄'=>0,'̆'=>0,'̇'=>0,'̈'=>0,'̉'=>0,'̊'=>0,'̋'=>0,'̌'=>0,'̏'=>0,'̑'=>0,'̓'=>0,'̔'=>0,'̛'=>0,'̣'=>0,'̤'=>0,'̥'=>0,'̦'=>0,'̧'=>0,'̨'=>0,'̭'=>0,'̮'=>0,'̰'=>0,'̱'=>0,'̸'=>0,'͂'=>0,'ͅ'=>0,'ٓ'=>0,'ٔ'=>0,'ٕ'=>0,'़'=>0,'া'=>0,'ৗ'=>0,'ା'=>0,'ୖ'=>0,'ୗ'=>0,'ா'=>0,'ௗ'=>0,'ౖ'=>0,'ೂ'=>0,'ೕ'=>0,'ೖ'=>0,'ാ'=>0,'ൗ'=>0,'්'=>0,'ා'=>0,'ෟ'=>0,'ီ'=>0,'ᅡ'=>0,'ᅢ'=>0,'ᅣ'=>0,'ᅤ'=>0,'ᅥ'=>0,'ᅦ'=>0,'ᅧ'=>0,'ᅨ'=>0,'ᅩ'=>0,'ᅪ'=>0,'ᅫ'=>0,'ᅬ'=>0,'ᅭ'=>0,'ᅮ'=>0,'ᅯ'=>0,'ᅰ'=>0,'ᅱ'=>0,'ᅲ'=>0,'ᅳ'=>0,'ᅴ'=>0,'ᅵ'=>0,'ᆨ'=>0,'ᆩ'=>0,'ᆪ'=>0,'ᆫ'=>0,'ᆬ'=>0,'ᆭ'=>0,'ᆮ'=>0,'ᆯ'=>0,'ᆰ'=>0,'ᆱ'=>0,'ᆲ'=>0,'ᆳ'=>0,'ᆴ'=>0,'ᆵ'=>0,'ᆶ'=>0,'ᆷ'=>0,'ᆸ'=>0,'ᆹ'=>0,'ᆺ'=>0,'ᆻ'=>0,'ᆼ'=>0,'ᆽ'=>0,'ᆾ'=>0,'ᆿ'=>0,'ᇀ'=>0,'ᇁ'=>0,'ᇂ'=>0,'ᬵ'=>0,'゙'=>0,'゚'=>0); diff --git a/phpBB/includes/utf/data/utf_nfkc_qc.php b/phpBB/includes/utf/data/utf_nfkc_qc.php deleted file mode 100644 index 181a07b351..0000000000 --- a/phpBB/includes/utf/data/utf_nfkc_qc.php +++ /dev/null @@ -1,2 +0,0 @@ -<?php -$GLOBALS['utf_nfkc_qc']=array(' '=>1,'¨'=>1,'ª'=>1,'¯'=>1,'²'=>1,'³'=>1,'´'=>1,'µ'=>1,'¸'=>1,'¹'=>1,'º'=>1,'¼'=>1,'½'=>1,'¾'=>1,'IJ'=>1,'ij'=>1,'Ŀ'=>1,'ŀ'=>1,'ʼn'=>1,'ſ'=>1,'DŽ'=>1,'Dž'=>1,'dž'=>1,'LJ'=>1,'Lj'=>1,'lj'=>1,'NJ'=>1,'Nj'=>1,'nj'=>1,'DZ'=>1,'Dz'=>1,'dz'=>1,'ʰ'=>1,'ʱ'=>1,'ʲ'=>1,'ʳ'=>1,'ʴ'=>1,'ʵ'=>1,'ʶ'=>1,'ʷ'=>1,'ʸ'=>1,'˘'=>1,'˙'=>1,'˚'=>1,'˛'=>1,'˜'=>1,'˝'=>1,'ˠ'=>1,'ˡ'=>1,'ˢ'=>1,'ˣ'=>1,'ˤ'=>1,'̀'=>1,'́'=>1,'̓'=>1,'̈́'=>1,'ʹ'=>1,'ͺ'=>1,';'=>1,'΄'=>1,'΅'=>1,'·'=>1,'ϐ'=>1,'ϑ'=>1,'ϒ'=>1,'ϓ'=>1,'ϔ'=>1,'ϕ'=>1,'ϖ'=>1,'ϰ'=>1,'ϱ'=>1,'ϲ'=>1,'ϴ'=>1,'ϵ'=>1,'Ϲ'=>1,'և'=>1,'ٵ'=>1,'ٶ'=>1,'ٷ'=>1,'ٸ'=>1,'क़'=>1,'ख़'=>1,'ग़'=>1,'ज़'=>1,'ड़'=>1,'ढ़'=>1,'फ़'=>1,'य़'=>1,'ড়'=>1,'ঢ়'=>1,'য়'=>1,'ਲ਼'=>1,'ਸ਼'=>1,'ਖ਼'=>1,'ਗ਼'=>1,'ਜ਼'=>1,'ਫ਼'=>1,'ଡ଼'=>1,'ଢ଼'=>1,'ำ'=>1,'ຳ'=>1,'ໜ'=>1,'ໝ'=>1,'༌'=>1,'གྷ'=>1,'ཌྷ'=>1,'དྷ'=>1,'བྷ'=>1,'ཛྷ'=>1,'ཀྵ'=>1,'ཱི'=>1,'ཱུ'=>1,'ྲྀ'=>1,'ཷ'=>1,'ླྀ'=>1,'ཹ'=>1,'ཱྀ'=>1,'ྒྷ'=>1,'ྜྷ'=>1,'ྡྷ'=>1,'ྦྷ'=>1,'ྫྷ'=>1,'ྐྵ'=>1,'ჼ'=>1,'ᴬ'=>1,'ᴭ'=>1,'ᴮ'=>1,'ᴰ'=>1,'ᴱ'=>1,'ᴲ'=>1,'ᴳ'=>1,'ᴴ'=>1,'ᴵ'=>1,'ᴶ'=>1,'ᴷ'=>1,'ᴸ'=>1,'ᴹ'=>1,'ᴺ'=>1,'ᴼ'=>1,'ᴽ'=>1,'ᴾ'=>1,'ᴿ'=>1,'ᵀ'=>1,'ᵁ'=>1,'ᵂ'=>1,'ᵃ'=>1,'ᵄ'=>1,'ᵅ'=>1,'ᵆ'=>1,'ᵇ'=>1,'ᵈ'=>1,'ᵉ'=>1,'ᵊ'=>1,'ᵋ'=>1,'ᵌ'=>1,'ᵍ'=>1,'ᵏ'=>1,'ᵐ'=>1,'ᵑ'=>1,'ᵒ'=>1,'ᵓ'=>1,'ᵔ'=>1,'ᵕ'=>1,'ᵖ'=>1,'ᵗ'=>1,'ᵘ'=>1,'ᵙ'=>1,'ᵚ'=>1,'ᵛ'=>1,'ᵜ'=>1,'ᵝ'=>1,'ᵞ'=>1,'ᵟ'=>1,'ᵠ'=>1,'ᵡ'=>1,'ᵢ'=>1,'ᵣ'=>1,'ᵤ'=>1,'ᵥ'=>1,'ᵦ'=>1,'ᵧ'=>1,'ᵨ'=>1,'ᵩ'=>1,'ᵪ'=>1,'ᵸ'=>1,'ᶛ'=>1,'ᶜ'=>1,'ᶝ'=>1,'ᶞ'=>1,'ᶟ'=>1,'ᶠ'=>1,'ᶡ'=>1,'ᶢ'=>1,'ᶣ'=>1,'ᶤ'=>1,'ᶥ'=>1,'ᶦ'=>1,'ᶧ'=>1,'ᶨ'=>1,'ᶩ'=>1,'ᶪ'=>1,'ᶫ'=>1,'ᶬ'=>1,'ᶭ'=>1,'ᶮ'=>1,'ᶯ'=>1,'ᶰ'=>1,'ᶱ'=>1,'ᶲ'=>1,'ᶳ'=>1,'ᶴ'=>1,'ᶵ'=>1,'ᶶ'=>1,'ᶷ'=>1,'ᶸ'=>1,'ᶹ'=>1,'ᶺ'=>1,'ᶻ'=>1,'ᶼ'=>1,'ᶽ'=>1,'ᶾ'=>1,'ᶿ'=>1,'ẚ'=>1,'ẛ'=>1,'ά'=>1,'έ'=>1,'ή'=>1,'ί'=>1,'ό'=>1,'ύ'=>1,'ώ'=>1,'Ά'=>1,'᾽'=>1,'ι'=>1,'᾿'=>1,'῀'=>1,'῁'=>1,'Έ'=>1,'Ή'=>1,'῍'=>1,'῎'=>1,'῏'=>1,'ΐ'=>1,'Ί'=>1,'῝'=>1,'῞'=>1,'῟'=>1,'ΰ'=>1,'Ύ'=>1,'῭'=>1,'΅'=>1,'`'=>1,'Ό'=>1,'Ώ'=>1,'´'=>1,'῾'=>1,' '=>1,' '=>1,' '=>1,' '=>1,' '=>1,' '=>1,' '=>1,' '=>1,' '=>1,' '=>1,' '=>1,'‑'=>1,'‗'=>1,'․'=>1,'‥'=>1,'…'=>1,' '=>1,'″'=>1,'‴'=>1,'‶'=>1,'‷'=>1,'‼'=>1,'‾'=>1,'⁇'=>1,'⁈'=>1,'⁉'=>1,'⁗'=>1,' '=>1,'⁰'=>1,'ⁱ'=>1,'⁴'=>1,'⁵'=>1,'⁶'=>1,'⁷'=>1,'⁸'=>1,'⁹'=>1,'⁺'=>1,'⁻'=>1,'⁼'=>1,'⁽'=>1,'⁾'=>1,'ⁿ'=>1,'₀'=>1,'₁'=>1,'₂'=>1,'₃'=>1,'₄'=>1,'₅'=>1,'₆'=>1,'₇'=>1,'₈'=>1,'₉'=>1,'₊'=>1,'₋'=>1,'₌'=>1,'₍'=>1,'₎'=>1,'ₐ'=>1,'ₑ'=>1,'ₒ'=>1,'ₓ'=>1,'ₔ'=>1,'₨'=>1,'℀'=>1,'℁'=>1,'ℂ'=>1,'℃'=>1,'℅'=>1,'℆'=>1,'ℇ'=>1,'℉'=>1,'ℊ'=>1,'ℋ'=>1,'ℌ'=>1,'ℍ'=>1,'ℎ'=>1,'ℏ'=>1,'ℐ'=>1,'ℑ'=>1,'ℒ'=>1,'ℓ'=>1,'ℕ'=>1,'№'=>1,'ℙ'=>1,'ℚ'=>1,'ℛ'=>1,'ℜ'=>1,'ℝ'=>1,'℠'=>1,'℡'=>1,'™'=>1,'ℤ'=>1,'Ω'=>1,'ℨ'=>1,'K'=>1,'Å'=>1,'ℬ'=>1,'ℭ'=>1,'ℯ'=>1,'ℰ'=>1,'ℱ'=>1,'ℳ'=>1,'ℴ'=>1,'ℵ'=>1,'ℶ'=>1,'ℷ'=>1,'ℸ'=>1,'ℹ'=>1,'℻'=>1,'ℼ'=>1,'ℽ'=>1,'ℾ'=>1,'ℿ'=>1,'⅀'=>1,'ⅅ'=>1,'ⅆ'=>1,'ⅇ'=>1,'ⅈ'=>1,'ⅉ'=>1,'⅓'=>1,'⅔'=>1,'⅕'=>1,'⅖'=>1,'⅗'=>1,'⅘'=>1,'⅙'=>1,'⅚'=>1,'⅛'=>1,'⅜'=>1,'⅝'=>1,'⅞'=>1,'⅟'=>1,'Ⅰ'=>1,'Ⅱ'=>1,'Ⅲ'=>1,'Ⅳ'=>1,'Ⅴ'=>1,'Ⅵ'=>1,'Ⅶ'=>1,'Ⅷ'=>1,'Ⅸ'=>1,'Ⅹ'=>1,'Ⅺ'=>1,'Ⅻ'=>1,'Ⅼ'=>1,'Ⅽ'=>1,'Ⅾ'=>1,'Ⅿ'=>1,'ⅰ'=>1,'ⅱ'=>1,'ⅲ'=>1,'ⅳ'=>1,'ⅴ'=>1,'ⅵ'=>1,'ⅶ'=>1,'ⅷ'=>1,'ⅸ'=>1,'ⅹ'=>1,'ⅺ'=>1,'ⅻ'=>1,'ⅼ'=>1,'ⅽ'=>1,'ⅾ'=>1,'ⅿ'=>1,'∬'=>1,'∭'=>1,'∯'=>1,'∰'=>1,'〈'=>1,'〉'=>1,'①'=>1,'②'=>1,'③'=>1,'④'=>1,'⑤'=>1,'⑥'=>1,'⑦'=>1,'⑧'=>1,'⑨'=>1,'⑩'=>1,'⑪'=>1,'⑫'=>1,'⑬'=>1,'⑭'=>1,'⑮'=>1,'⑯'=>1,'⑰'=>1,'⑱'=>1,'⑲'=>1,'⑳'=>1,'⑴'=>1,'⑵'=>1,'⑶'=>1,'⑷'=>1,'⑸'=>1,'⑹'=>1,'⑺'=>1,'⑻'=>1,'⑼'=>1,'⑽'=>1,'⑾'=>1,'⑿'=>1,'⒀'=>1,'⒁'=>1,'⒂'=>1,'⒃'=>1,'⒄'=>1,'⒅'=>1,'⒆'=>1,'⒇'=>1,'⒈'=>1,'⒉'=>1,'⒊'=>1,'⒋'=>1,'⒌'=>1,'⒍'=>1,'⒎'=>1,'⒏'=>1,'⒐'=>1,'⒑'=>1,'⒒'=>1,'⒓'=>1,'⒔'=>1,'⒕'=>1,'⒖'=>1,'⒗'=>1,'⒘'=>1,'⒙'=>1,'⒚'=>1,'⒛'=>1,'⒜'=>1,'⒝'=>1,'⒞'=>1,'⒟'=>1,'⒠'=>1,'⒡'=>1,'⒢'=>1,'⒣'=>1,'⒤'=>1,'⒥'=>1,'⒦'=>1,'⒧'=>1,'⒨'=>1,'⒩'=>1,'⒪'=>1,'⒫'=>1,'⒬'=>1,'⒭'=>1,'⒮'=>1,'⒯'=>1,'⒰'=>1,'⒱'=>1,'⒲'=>1,'⒳'=>1,'⒴'=>1,'⒵'=>1,'Ⓐ'=>1,'Ⓑ'=>1,'Ⓒ'=>1,'Ⓓ'=>1,'Ⓔ'=>1,'Ⓕ'=>1,'Ⓖ'=>1,'Ⓗ'=>1,'Ⓘ'=>1,'Ⓙ'=>1,'Ⓚ'=>1,'Ⓛ'=>1,'Ⓜ'=>1,'Ⓝ'=>1,'Ⓞ'=>1,'Ⓟ'=>1,'Ⓠ'=>1,'Ⓡ'=>1,'Ⓢ'=>1,'Ⓣ'=>1,'Ⓤ'=>1,'Ⓥ'=>1,'Ⓦ'=>1,'Ⓧ'=>1,'Ⓨ'=>1,'Ⓩ'=>1,'ⓐ'=>1,'ⓑ'=>1,'ⓒ'=>1,'ⓓ'=>1,'ⓔ'=>1,'ⓕ'=>1,'ⓖ'=>1,'ⓗ'=>1,'ⓘ'=>1,'ⓙ'=>1,'ⓚ'=>1,'ⓛ'=>1,'ⓜ'=>1,'ⓝ'=>1,'ⓞ'=>1,'ⓟ'=>1,'ⓠ'=>1,'ⓡ'=>1,'ⓢ'=>1,'ⓣ'=>1,'ⓤ'=>1,'ⓥ'=>1,'ⓦ'=>1,'ⓧ'=>1,'ⓨ'=>1,'ⓩ'=>1,'⓪'=>1,'⨌'=>1,'⩴'=>1,'⩵'=>1,'⩶'=>1,'⫝̸'=>1,'ⵯ'=>1,'⺟'=>1,'⻳'=>1,'⼀'=>1,'⼁'=>1,'⼂'=>1,'⼃'=>1,'⼄'=>1,'⼅'=>1,'⼆'=>1,'⼇'=>1,'⼈'=>1,'⼉'=>1,'⼊'=>1,'⼋'=>1,'⼌'=>1,'⼍'=>1,'⼎'=>1,'⼏'=>1,'⼐'=>1,'⼑'=>1,'⼒'=>1,'⼓'=>1,'⼔'=>1,'⼕'=>1,'⼖'=>1,'⼗'=>1,'⼘'=>1,'⼙'=>1,'⼚'=>1,'⼛'=>1,'⼜'=>1,'⼝'=>1,'⼞'=>1,'⼟'=>1,'⼠'=>1,'⼡'=>1,'⼢'=>1,'⼣'=>1,'⼤'=>1,'⼥'=>1,'⼦'=>1,'⼧'=>1,'⼨'=>1,'⼩'=>1,'⼪'=>1,'⼫'=>1,'⼬'=>1,'⼭'=>1,'⼮'=>1,'⼯'=>1,'⼰'=>1,'⼱'=>1,'⼲'=>1,'⼳'=>1,'⼴'=>1,'⼵'=>1,'⼶'=>1,'⼷'=>1,'⼸'=>1,'⼹'=>1,'⼺'=>1,'⼻'=>1,'⼼'=>1,'⼽'=>1,'⼾'=>1,'⼿'=>1,'⽀'=>1,'⽁'=>1,'⽂'=>1,'⽃'=>1,'⽄'=>1,'⽅'=>1,'⽆'=>1,'⽇'=>1,'⽈'=>1,'⽉'=>1,'⽊'=>1,'⽋'=>1,'⽌'=>1,'⽍'=>1,'⽎'=>1,'⽏'=>1,'⽐'=>1,'⽑'=>1,'⽒'=>1,'⽓'=>1,'⽔'=>1,'⽕'=>1,'⽖'=>1,'⽗'=>1,'⽘'=>1,'⽙'=>1,'⽚'=>1,'⽛'=>1,'⽜'=>1,'⽝'=>1,'⽞'=>1,'⽟'=>1,'⽠'=>1,'⽡'=>1,'⽢'=>1,'⽣'=>1,'⽤'=>1,'⽥'=>1,'⽦'=>1,'⽧'=>1,'⽨'=>1,'⽩'=>1,'⽪'=>1,'⽫'=>1,'⽬'=>1,'⽭'=>1,'⽮'=>1,'⽯'=>1,'⽰'=>1,'⽱'=>1,'⽲'=>1,'⽳'=>1,'⽴'=>1,'⽵'=>1,'⽶'=>1,'⽷'=>1,'⽸'=>1,'⽹'=>1,'⽺'=>1,'⽻'=>1,'⽼'=>1,'⽽'=>1,'⽾'=>1,'⽿'=>1,'⾀'=>1,'⾁'=>1,'⾂'=>1,'⾃'=>1,'⾄'=>1,'⾅'=>1,'⾆'=>1,'⾇'=>1,'⾈'=>1,'⾉'=>1,'⾊'=>1,'⾋'=>1,'⾌'=>1,'⾍'=>1,'⾎'=>1,'⾏'=>1,'⾐'=>1,'⾑'=>1,'⾒'=>1,'⾓'=>1,'⾔'=>1,'⾕'=>1,'⾖'=>1,'⾗'=>1,'⾘'=>1,'⾙'=>1,'⾚'=>1,'⾛'=>1,'⾜'=>1,'⾝'=>1,'⾞'=>1,'⾟'=>1,'⾠'=>1,'⾡'=>1,'⾢'=>1,'⾣'=>1,'⾤'=>1,'⾥'=>1,'⾦'=>1,'⾧'=>1,'⾨'=>1,'⾩'=>1,'⾪'=>1,'⾫'=>1,'⾬'=>1,'⾭'=>1,'⾮'=>1,'⾯'=>1,'⾰'=>1,'⾱'=>1,'⾲'=>1,'⾳'=>1,'⾴'=>1,'⾵'=>1,'⾶'=>1,'⾷'=>1,'⾸'=>1,'⾹'=>1,'⾺'=>1,'⾻'=>1,'⾼'=>1,'⾽'=>1,'⾾'=>1,'⾿'=>1,'⿀'=>1,'⿁'=>1,'⿂'=>1,'⿃'=>1,'⿄'=>1,'⿅'=>1,'⿆'=>1,'⿇'=>1,'⿈'=>1,'⿉'=>1,'⿊'=>1,'⿋'=>1,'⿌'=>1,'⿍'=>1,'⿎'=>1,'⿏'=>1,'⿐'=>1,'⿑'=>1,'⿒'=>1,'⿓'=>1,'⿔'=>1,'⿕'=>1,' '=>1,'〶'=>1,'〸'=>1,'〹'=>1,'〺'=>1,'゛'=>1,'゜'=>1,'ゟ'=>1,'ヿ'=>1,'ㄱ'=>1,'ㄲ'=>1,'ㄳ'=>1,'ㄴ'=>1,'ㄵ'=>1,'ㄶ'=>1,'ㄷ'=>1,'ㄸ'=>1,'ㄹ'=>1,'ㄺ'=>1,'ㄻ'=>1,'ㄼ'=>1,'ㄽ'=>1,'ㄾ'=>1,'ㄿ'=>1,'ㅀ'=>1,'ㅁ'=>1,'ㅂ'=>1,'ㅃ'=>1,'ㅄ'=>1,'ㅅ'=>1,'ㅆ'=>1,'ㅇ'=>1,'ㅈ'=>1,'ㅉ'=>1,'ㅊ'=>1,'ㅋ'=>1,'ㅌ'=>1,'ㅍ'=>1,'ㅎ'=>1,'ㅏ'=>1,'ㅐ'=>1,'ㅑ'=>1,'ㅒ'=>1,'ㅓ'=>1,'ㅔ'=>1,'ㅕ'=>1,'ㅖ'=>1,'ㅗ'=>1,'ㅘ'=>1,'ㅙ'=>1,'ㅚ'=>1,'ㅛ'=>1,'ㅜ'=>1,'ㅝ'=>1,'ㅞ'=>1,'ㅟ'=>1,'ㅠ'=>1,'ㅡ'=>1,'ㅢ'=>1,'ㅣ'=>1,'ㅤ'=>1,'ㅥ'=>1,'ㅦ'=>1,'ㅧ'=>1,'ㅨ'=>1,'ㅩ'=>1,'ㅪ'=>1,'ㅫ'=>1,'ㅬ'=>1,'ㅭ'=>1,'ㅮ'=>1,'ㅯ'=>1,'ㅰ'=>1,'ㅱ'=>1,'ㅲ'=>1,'ㅳ'=>1,'ㅴ'=>1,'ㅵ'=>1,'ㅶ'=>1,'ㅷ'=>1,'ㅸ'=>1,'ㅹ'=>1,'ㅺ'=>1,'ㅻ'=>1,'ㅼ'=>1,'ㅽ'=>1,'ㅾ'=>1,'ㅿ'=>1,'ㆀ'=>1,'ㆁ'=>1,'ㆂ'=>1,'ㆃ'=>1,'ㆄ'=>1,'ㆅ'=>1,'ㆆ'=>1,'ㆇ'=>1,'ㆈ'=>1,'ㆉ'=>1,'ㆊ'=>1,'ㆋ'=>1,'ㆌ'=>1,'ㆍ'=>1,'ㆎ'=>1,'㆒'=>1,'㆓'=>1,'㆔'=>1,'㆕'=>1,'㆖'=>1,'㆗'=>1,'㆘'=>1,'㆙'=>1,'㆚'=>1,'㆛'=>1,'㆜'=>1,'㆝'=>1,'㆞'=>1,'㆟'=>1,'㈀'=>1,'㈁'=>1,'㈂'=>1,'㈃'=>1,'㈄'=>1,'㈅'=>1,'㈆'=>1,'㈇'=>1,'㈈'=>1,'㈉'=>1,'㈊'=>1,'㈋'=>1,'㈌'=>1,'㈍'=>1,'㈎'=>1,'㈏'=>1,'㈐'=>1,'㈑'=>1,'㈒'=>1,'㈓'=>1,'㈔'=>1,'㈕'=>1,'㈖'=>1,'㈗'=>1,'㈘'=>1,'㈙'=>1,'㈚'=>1,'㈛'=>1,'㈜'=>1,'㈝'=>1,'㈞'=>1,'㈠'=>1,'㈡'=>1,'㈢'=>1,'㈣'=>1,'㈤'=>1,'㈥'=>1,'㈦'=>1,'㈧'=>1,'㈨'=>1,'㈩'=>1,'㈪'=>1,'㈫'=>1,'㈬'=>1,'㈭'=>1,'㈮'=>1,'㈯'=>1,'㈰'=>1,'㈱'=>1,'㈲'=>1,'㈳'=>1,'㈴'=>1,'㈵'=>1,'㈶'=>1,'㈷'=>1,'㈸'=>1,'㈹'=>1,'㈺'=>1,'㈻'=>1,'㈼'=>1,'㈽'=>1,'㈾'=>1,'㈿'=>1,'㉀'=>1,'㉁'=>1,'㉂'=>1,'㉃'=>1,'㉐'=>1,'㉑'=>1,'㉒'=>1,'㉓'=>1,'㉔'=>1,'㉕'=>1,'㉖'=>1,'㉗'=>1,'㉘'=>1,'㉙'=>1,'㉚'=>1,'㉛'=>1,'㉜'=>1,'㉝'=>1,'㉞'=>1,'㉟'=>1,'㉠'=>1,'㉡'=>1,'㉢'=>1,'㉣'=>1,'㉤'=>1,'㉥'=>1,'㉦'=>1,'㉧'=>1,'㉨'=>1,'㉩'=>1,'㉪'=>1,'㉫'=>1,'㉬'=>1,'㉭'=>1,'㉮'=>1,'㉯'=>1,'㉰'=>1,'㉱'=>1,'㉲'=>1,'㉳'=>1,'㉴'=>1,'㉵'=>1,'㉶'=>1,'㉷'=>1,'㉸'=>1,'㉹'=>1,'㉺'=>1,'㉻'=>1,'㉼'=>1,'㉽'=>1,'㉾'=>1,'㊀'=>1,'㊁'=>1,'㊂'=>1,'㊃'=>1,'㊄'=>1,'㊅'=>1,'㊆'=>1,'㊇'=>1,'㊈'=>1,'㊉'=>1,'㊊'=>1,'㊋'=>1,'㊌'=>1,'㊍'=>1,'㊎'=>1,'㊏'=>1,'㊐'=>1,'㊑'=>1,'㊒'=>1,'㊓'=>1,'㊔'=>1,'㊕'=>1,'㊖'=>1,'㊗'=>1,'㊘'=>1,'㊙'=>1,'㊚'=>1,'㊛'=>1,'㊜'=>1,'㊝'=>1,'㊞'=>1,'㊟'=>1,'㊠'=>1,'㊡'=>1,'㊢'=>1,'㊣'=>1,'㊤'=>1,'㊥'=>1,'㊦'=>1,'㊧'=>1,'㊨'=>1,'㊩'=>1,'㊪'=>1,'㊫'=>1,'㊬'=>1,'㊭'=>1,'㊮'=>1,'㊯'=>1,'㊰'=>1,'㊱'=>1,'㊲'=>1,'㊳'=>1,'㊴'=>1,'㊵'=>1,'㊶'=>1,'㊷'=>1,'㊸'=>1,'㊹'=>1,'㊺'=>1,'㊻'=>1,'㊼'=>1,'㊽'=>1,'㊾'=>1,'㊿'=>1,'㋀'=>1,'㋁'=>1,'㋂'=>1,'㋃'=>1,'㋄'=>1,'㋅'=>1,'㋆'=>1,'㋇'=>1,'㋈'=>1,'㋉'=>1,'㋊'=>1,'㋋'=>1,'㋌'=>1,'㋍'=>1,'㋎'=>1,'㋏'=>1,'㋐'=>1,'㋑'=>1,'㋒'=>1,'㋓'=>1,'㋔'=>1,'㋕'=>1,'㋖'=>1,'㋗'=>1,'㋘'=>1,'㋙'=>1,'㋚'=>1,'㋛'=>1,'㋜'=>1,'㋝'=>1,'㋞'=>1,'㋟'=>1,'㋠'=>1,'㋡'=>1,'㋢'=>1,'㋣'=>1,'㋤'=>1,'㋥'=>1,'㋦'=>1,'㋧'=>1,'㋨'=>1,'㋩'=>1,'㋪'=>1,'㋫'=>1,'㋬'=>1,'㋭'=>1,'㋮'=>1,'㋯'=>1,'㋰'=>1,'㋱'=>1,'㋲'=>1,'㋳'=>1,'㋴'=>1,'㋵'=>1,'㋶'=>1,'㋷'=>1,'㋸'=>1,'㋹'=>1,'㋺'=>1,'㋻'=>1,'㋼'=>1,'㋽'=>1,'㋾'=>1,'㌀'=>1,'㌁'=>1,'㌂'=>1,'㌃'=>1,'㌄'=>1,'㌅'=>1,'㌆'=>1,'㌇'=>1,'㌈'=>1,'㌉'=>1,'㌊'=>1,'㌋'=>1,'㌌'=>1,'㌍'=>1,'㌎'=>1,'㌏'=>1,'㌐'=>1,'㌑'=>1,'㌒'=>1,'㌓'=>1,'㌔'=>1,'㌕'=>1,'㌖'=>1,'㌗'=>1,'㌘'=>1,'㌙'=>1,'㌚'=>1,'㌛'=>1,'㌜'=>1,'㌝'=>1,'㌞'=>1,'㌟'=>1,'㌠'=>1,'㌡'=>1,'㌢'=>1,'㌣'=>1,'㌤'=>1,'㌥'=>1,'㌦'=>1,'㌧'=>1,'㌨'=>1,'㌩'=>1,'㌪'=>1,'㌫'=>1,'㌬'=>1,'㌭'=>1,'㌮'=>1,'㌯'=>1,'㌰'=>1,'㌱'=>1,'㌲'=>1,'㌳'=>1,'㌴'=>1,'㌵'=>1,'㌶'=>1,'㌷'=>1,'㌸'=>1,'㌹'=>1,'㌺'=>1,'㌻'=>1,'㌼'=>1,'㌽'=>1,'㌾'=>1,'㌿'=>1,'㍀'=>1,'㍁'=>1,'㍂'=>1,'㍃'=>1,'㍄'=>1,'㍅'=>1,'㍆'=>1,'㍇'=>1,'㍈'=>1,'㍉'=>1,'㍊'=>1,'㍋'=>1,'㍌'=>1,'㍍'=>1,'㍎'=>1,'㍏'=>1,'㍐'=>1,'㍑'=>1,'㍒'=>1,'㍓'=>1,'㍔'=>1,'㍕'=>1,'㍖'=>1,'㍗'=>1,'㍘'=>1,'㍙'=>1,'㍚'=>1,'㍛'=>1,'㍜'=>1,'㍝'=>1,'㍞'=>1,'㍟'=>1,'㍠'=>1,'㍡'=>1,'㍢'=>1,'㍣'=>1,'㍤'=>1,'㍥'=>1,'㍦'=>1,'㍧'=>1,'㍨'=>1,'㍩'=>1,'㍪'=>1,'㍫'=>1,'㍬'=>1,'㍭'=>1,'㍮'=>1,'㍯'=>1,'㍰'=>1,'㍱'=>1,'㍲'=>1,'㍳'=>1,'㍴'=>1,'㍵'=>1,'㍶'=>1,'㍷'=>1,'㍸'=>1,'㍹'=>1,'㍺'=>1,'㍻'=>1,'㍼'=>1,'㍽'=>1,'㍾'=>1,'㍿'=>1,'㎀'=>1,'㎁'=>1,'㎂'=>1,'㎃'=>1,'㎄'=>1,'㎅'=>1,'㎆'=>1,'㎇'=>1,'㎈'=>1,'㎉'=>1,'㎊'=>1,'㎋'=>1,'㎌'=>1,'㎍'=>1,'㎎'=>1,'㎏'=>1,'㎐'=>1,'㎑'=>1,'㎒'=>1,'㎓'=>1,'㎔'=>1,'㎕'=>1,'㎖'=>1,'㎗'=>1,'㎘'=>1,'㎙'=>1,'㎚'=>1,'㎛'=>1,'㎜'=>1,'㎝'=>1,'㎞'=>1,'㎟'=>1,'㎠'=>1,'㎡'=>1,'㎢'=>1,'㎣'=>1,'㎤'=>1,'㎥'=>1,'㎦'=>1,'㎧'=>1,'㎨'=>1,'㎩'=>1,'㎪'=>1,'㎫'=>1,'㎬'=>1,'㎭'=>1,'㎮'=>1,'㎯'=>1,'㎰'=>1,'㎱'=>1,'㎲'=>1,'㎳'=>1,'㎴'=>1,'㎵'=>1,'㎶'=>1,'㎷'=>1,'㎸'=>1,'㎹'=>1,'㎺'=>1,'㎻'=>1,'㎼'=>1,'㎽'=>1,'㎾'=>1,'㎿'=>1,'㏀'=>1,'㏁'=>1,'㏂'=>1,'㏃'=>1,'㏄'=>1,'㏅'=>1,'㏆'=>1,'㏇'=>1,'㏈'=>1,'㏉'=>1,'㏊'=>1,'㏋'=>1,'㏌'=>1,'㏍'=>1,'㏎'=>1,'㏏'=>1,'㏐'=>1,'㏑'=>1,'㏒'=>1,'㏓'=>1,'㏔'=>1,'㏕'=>1,'㏖'=>1,'㏗'=>1,'㏘'=>1,'㏙'=>1,'㏚'=>1,'㏛'=>1,'㏜'=>1,'㏝'=>1,'㏞'=>1,'㏟'=>1,'㏠'=>1,'㏡'=>1,'㏢'=>1,'㏣'=>1,'㏤'=>1,'㏥'=>1,'㏦'=>1,'㏧'=>1,'㏨'=>1,'㏩'=>1,'㏪'=>1,'㏫'=>1,'㏬'=>1,'㏭'=>1,'㏮'=>1,'㏯'=>1,'㏰'=>1,'㏱'=>1,'㏲'=>1,'㏳'=>1,'㏴'=>1,'㏵'=>1,'㏶'=>1,'㏷'=>1,'㏸'=>1,'㏹'=>1,'㏺'=>1,'㏻'=>1,'㏼'=>1,'㏽'=>1,'㏾'=>1,'㏿'=>1,'豈'=>1,'更'=>1,'車'=>1,'賈'=>1,'滑'=>1,'串'=>1,'句'=>1,'龜'=>1,'龜'=>1,'契'=>1,'金'=>1,'喇'=>1,'奈'=>1,'懶'=>1,'癩'=>1,'羅'=>1,'蘿'=>1,'螺'=>1,'裸'=>1,'邏'=>1,'樂'=>1,'洛'=>1,'烙'=>1,'珞'=>1,'落'=>1,'酪'=>1,'駱'=>1,'亂'=>1,'卵'=>1,'欄'=>1,'爛'=>1,'蘭'=>1,'鸞'=>1,'嵐'=>1,'濫'=>1,'藍'=>1,'襤'=>1,'拉'=>1,'臘'=>1,'蠟'=>1,'廊'=>1,'朗'=>1,'浪'=>1,'狼'=>1,'郎'=>1,'來'=>1,'冷'=>1,'勞'=>1,'擄'=>1,'櫓'=>1,'爐'=>1,'盧'=>1,'老'=>1,'蘆'=>1,'虜'=>1,'路'=>1,'露'=>1,'魯'=>1,'鷺'=>1,'碌'=>1,'祿'=>1,'綠'=>1,'菉'=>1,'錄'=>1,'鹿'=>1,'論'=>1,'壟'=>1,'弄'=>1,'籠'=>1,'聾'=>1,'牢'=>1,'磊'=>1,'賂'=>1,'雷'=>1,'壘'=>1,'屢'=>1,'樓'=>1,'淚'=>1,'漏'=>1,'累'=>1,'縷'=>1,'陋'=>1,'勒'=>1,'肋'=>1,'凜'=>1,'凌'=>1,'稜'=>1,'綾'=>1,'菱'=>1,'陵'=>1,'讀'=>1,'拏'=>1,'樂'=>1,'諾'=>1,'丹'=>1,'寧'=>1,'怒'=>1,'率'=>1,'異'=>1,'北'=>1,'磻'=>1,'便'=>1,'復'=>1,'不'=>1,'泌'=>1,'數'=>1,'索'=>1,'參'=>1,'塞'=>1,'省'=>1,'葉'=>1,'說'=>1,'殺'=>1,'辰'=>1,'沈'=>1,'拾'=>1,'若'=>1,'掠'=>1,'略'=>1,'亮'=>1,'兩'=>1,'凉'=>1,'梁'=>1,'糧'=>1,'良'=>1,'諒'=>1,'量'=>1,'勵'=>1,'呂'=>1,'女'=>1,'廬'=>1,'旅'=>1,'濾'=>1,'礪'=>1,'閭'=>1,'驪'=>1,'麗'=>1,'黎'=>1,'力'=>1,'曆'=>1,'歷'=>1,'轢'=>1,'年'=>1,'憐'=>1,'戀'=>1,'撚'=>1,'漣'=>1,'煉'=>1,'璉'=>1,'秊'=>1,'練'=>1,'聯'=>1,'輦'=>1,'蓮'=>1,'連'=>1,'鍊'=>1,'列'=>1,'劣'=>1,'咽'=>1,'烈'=>1,'裂'=>1,'說'=>1,'廉'=>1,'念'=>1,'捻'=>1,'殮'=>1,'簾'=>1,'獵'=>1,'令'=>1,'囹'=>1,'寧'=>1,'嶺'=>1,'怜'=>1,'玲'=>1,'瑩'=>1,'羚'=>1,'聆'=>1,'鈴'=>1,'零'=>1,'靈'=>1,'領'=>1,'例'=>1,'禮'=>1,'醴'=>1,'隸'=>1,'惡'=>1,'了'=>1,'僚'=>1,'寮'=>1,'尿'=>1,'料'=>1,'樂'=>1,'燎'=>1,'療'=>1,'蓼'=>1,'遼'=>1,'龍'=>1,'暈'=>1,'阮'=>1,'劉'=>1,'杻'=>1,'柳'=>1,'流'=>1,'溜'=>1,'琉'=>1,'留'=>1,'硫'=>1,'紐'=>1,'類'=>1,'六'=>1,'戮'=>1,'陸'=>1,'倫'=>1,'崙'=>1,'淪'=>1,'輪'=>1,'律'=>1,'慄'=>1,'栗'=>1,'率'=>1,'隆'=>1,'利'=>1,'吏'=>1,'履'=>1,'易'=>1,'李'=>1,'梨'=>1,'泥'=>1,'理'=>1,'痢'=>1,'罹'=>1,'裏'=>1,'裡'=>1,'里'=>1,'離'=>1,'匿'=>1,'溺'=>1,'吝'=>1,'燐'=>1,'璘'=>1,'藺'=>1,'隣'=>1,'鱗'=>1,'麟'=>1,'林'=>1,'淋'=>1,'臨'=>1,'立'=>1,'笠'=>1,'粒'=>1,'狀'=>1,'炙'=>1,'識'=>1,'什'=>1,'茶'=>1,'刺'=>1,'切'=>1,'度'=>1,'拓'=>1,'糖'=>1,'宅'=>1,'洞'=>1,'暴'=>1,'輻'=>1,'行'=>1,'降'=>1,'見'=>1,'廓'=>1,'兀'=>1,'嗀'=>1,'塚'=>1,'晴'=>1,'凞'=>1,'猪'=>1,'益'=>1,'礼'=>1,'神'=>1,'祥'=>1,'福'=>1,'靖'=>1,'精'=>1,'羽'=>1,'蘒'=>1,'諸'=>1,'逸'=>1,'都'=>1,'飯'=>1,'飼'=>1,'館'=>1,'鶴'=>1,'侮'=>1,'僧'=>1,'免'=>1,'勉'=>1,'勤'=>1,'卑'=>1,'喝'=>1,'嘆'=>1,'器'=>1,'塀'=>1,'墨'=>1,'層'=>1,'屮'=>1,'悔'=>1,'慨'=>1,'憎'=>1,'懲'=>1,'敏'=>1,'既'=>1,'暑'=>1,'梅'=>1,'海'=>1,'渚'=>1,'漢'=>1,'煮'=>1,'爫'=>1,'琢'=>1,'碑'=>1,'社'=>1,'祉'=>1,'祈'=>1,'祐'=>1,'祖'=>1,'祝'=>1,'禍'=>1,'禎'=>1,'穀'=>1,'突'=>1,'節'=>1,'練'=>1,'縉'=>1,'繁'=>1,'署'=>1,'者'=>1,'臭'=>1,'艹'=>1,'艹'=>1,'著'=>1,'褐'=>1,'視'=>1,'謁'=>1,'謹'=>1,'賓'=>1,'贈'=>1,'辶'=>1,'逸'=>1,'難'=>1,'響'=>1,'頻'=>1,'並'=>1,'况'=>1,'全'=>1,'侀'=>1,'充'=>1,'冀'=>1,'勇'=>1,'勺'=>1,'喝'=>1,'啕'=>1,'喙'=>1,'嗢'=>1,'塚'=>1,'墳'=>1,'奄'=>1,'奔'=>1,'婢'=>1,'嬨'=>1,'廒'=>1,'廙'=>1,'彩'=>1,'徭'=>1,'惘'=>1,'慎'=>1,'愈'=>1,'憎'=>1,'慠'=>1,'懲'=>1,'戴'=>1,'揄'=>1,'搜'=>1,'摒'=>1,'敖'=>1,'晴'=>1,'朗'=>1,'望'=>1,'杖'=>1,'歹'=>1,'殺'=>1,'流'=>1,'滛'=>1,'滋'=>1,'漢'=>1,'瀞'=>1,'煮'=>1,'瞧'=>1,'爵'=>1,'犯'=>1,'猪'=>1,'瑱'=>1,'甆'=>1,'画'=>1,'瘝'=>1,'瘟'=>1,'益'=>1,'盛'=>1,'直'=>1,'睊'=>1,'着'=>1,'磌'=>1,'窱'=>1,'節'=>1,'类'=>1,'絛'=>1,'練'=>1,'缾'=>1,'者'=>1,'荒'=>1,'華'=>1,'蝹'=>1,'襁'=>1,'覆'=>1,'視'=>1,'調'=>1,'諸'=>1,'請'=>1,'謁'=>1,'諾'=>1,'諭'=>1,'謹'=>1,'變'=>1,'贈'=>1,'輸'=>1,'遲'=>1,'醙'=>1,'鉶'=>1,'陼'=>1,'難'=>1,'靖'=>1,'韛'=>1,'響'=>1,'頋'=>1,'頻'=>1,'鬒'=>1,'龜'=>1,'𢡊'=>1,'𢡄'=>1,'𣏕'=>1,'㮝'=>1,'䀘'=>1,'䀹'=>1,'𥉉'=>1,'𥳐'=>1,'𧻓'=>1,'齃'=>1,'龎'=>1,'ff'=>1,'fi'=>1,'fl'=>1,'ffi'=>1,'ffl'=>1,'ſt'=>1,'st'=>1,'ﬓ'=>1,'ﬔ'=>1,'ﬕ'=>1,'ﬖ'=>1,'ﬗ'=>1,'יִ'=>1,'ײַ'=>1,'ﬠ'=>1,'ﬡ'=>1,'ﬢ'=>1,'ﬣ'=>1,'ﬤ'=>1,'ﬥ'=>1,'ﬦ'=>1,'ﬧ'=>1,'ﬨ'=>1,'﬩'=>1,'שׁ'=>1,'שׂ'=>1,'שּׁ'=>1,'שּׂ'=>1,'אַ'=>1,'אָ'=>1,'אּ'=>1,'בּ'=>1,'גּ'=>1,'דּ'=>1,'הּ'=>1,'וּ'=>1,'זּ'=>1,'טּ'=>1,'יּ'=>1,'ךּ'=>1,'כּ'=>1,'לּ'=>1,'מּ'=>1,'נּ'=>1,'סּ'=>1,'ףּ'=>1,'פּ'=>1,'צּ'=>1,'קּ'=>1,'רּ'=>1,'שּ'=>1,'תּ'=>1,'וֹ'=>1,'בֿ'=>1,'כֿ'=>1,'פֿ'=>1,'ﭏ'=>1,'ﭐ'=>1,'ﭑ'=>1,'ﭒ'=>1,'ﭓ'=>1,'ﭔ'=>1,'ﭕ'=>1,'ﭖ'=>1,'ﭗ'=>1,'ﭘ'=>1,'ﭙ'=>1,'ﭚ'=>1,'ﭛ'=>1,'ﭜ'=>1,'ﭝ'=>1,'ﭞ'=>1,'ﭟ'=>1,'ﭠ'=>1,'ﭡ'=>1,'ﭢ'=>1,'ﭣ'=>1,'ﭤ'=>1,'ﭥ'=>1,'ﭦ'=>1,'ﭧ'=>1,'ﭨ'=>1,'ﭩ'=>1,'ﭪ'=>1,'ﭫ'=>1,'ﭬ'=>1,'ﭭ'=>1,'ﭮ'=>1,'ﭯ'=>1,'ﭰ'=>1,'ﭱ'=>1,'ﭲ'=>1,'ﭳ'=>1,'ﭴ'=>1,'ﭵ'=>1,'ﭶ'=>1,'ﭷ'=>1,'ﭸ'=>1,'ﭹ'=>1,'ﭺ'=>1,'ﭻ'=>1,'ﭼ'=>1,'ﭽ'=>1,'ﭾ'=>1,'ﭿ'=>1,'ﮀ'=>1,'ﮁ'=>1,'ﮂ'=>1,'ﮃ'=>1,'ﮄ'=>1,'ﮅ'=>1,'ﮆ'=>1,'ﮇ'=>1,'ﮈ'=>1,'ﮉ'=>1,'ﮊ'=>1,'ﮋ'=>1,'ﮌ'=>1,'ﮍ'=>1,'ﮎ'=>1,'ﮏ'=>1,'ﮐ'=>1,'ﮑ'=>1,'ﮒ'=>1,'ﮓ'=>1,'ﮔ'=>1,'ﮕ'=>1,'ﮖ'=>1,'ﮗ'=>1,'ﮘ'=>1,'ﮙ'=>1,'ﮚ'=>1,'ﮛ'=>1,'ﮜ'=>1,'ﮝ'=>1,'ﮞ'=>1,'ﮟ'=>1,'ﮠ'=>1,'ﮡ'=>1,'ﮢ'=>1,'ﮣ'=>1,'ﮤ'=>1,'ﮥ'=>1,'ﮦ'=>1,'ﮧ'=>1,'ﮨ'=>1,'ﮩ'=>1,'ﮪ'=>1,'ﮫ'=>1,'ﮬ'=>1,'ﮭ'=>1,'ﮮ'=>1,'ﮯ'=>1,'ﮰ'=>1,'ﮱ'=>1,'ﯓ'=>1,'ﯔ'=>1,'ﯕ'=>1,'ﯖ'=>1,'ﯗ'=>1,'ﯘ'=>1,'ﯙ'=>1,'ﯚ'=>1,'ﯛ'=>1,'ﯜ'=>1,'ﯝ'=>1,'ﯞ'=>1,'ﯟ'=>1,'ﯠ'=>1,'ﯡ'=>1,'ﯢ'=>1,'ﯣ'=>1,'ﯤ'=>1,'ﯥ'=>1,'ﯦ'=>1,'ﯧ'=>1,'ﯨ'=>1,'ﯩ'=>1,'ﯪ'=>1,'ﯫ'=>1,'ﯬ'=>1,'ﯭ'=>1,'ﯮ'=>1,'ﯯ'=>1,'ﯰ'=>1,'ﯱ'=>1,'ﯲ'=>1,'ﯳ'=>1,'ﯴ'=>1,'ﯵ'=>1,'ﯶ'=>1,'ﯷ'=>1,'ﯸ'=>1,'ﯹ'=>1,'ﯺ'=>1,'ﯻ'=>1,'ﯼ'=>1,'ﯽ'=>1,'ﯾ'=>1,'ﯿ'=>1,'ﰀ'=>1,'ﰁ'=>1,'ﰂ'=>1,'ﰃ'=>1,'ﰄ'=>1,'ﰅ'=>1,'ﰆ'=>1,'ﰇ'=>1,'ﰈ'=>1,'ﰉ'=>1,'ﰊ'=>1,'ﰋ'=>1,'ﰌ'=>1,'ﰍ'=>1,'ﰎ'=>1,'ﰏ'=>1,'ﰐ'=>1,'ﰑ'=>1,'ﰒ'=>1,'ﰓ'=>1,'ﰔ'=>1,'ﰕ'=>1,'ﰖ'=>1,'ﰗ'=>1,'ﰘ'=>1,'ﰙ'=>1,'ﰚ'=>1,'ﰛ'=>1,'ﰜ'=>1,'ﰝ'=>1,'ﰞ'=>1,'ﰟ'=>1,'ﰠ'=>1,'ﰡ'=>1,'ﰢ'=>1,'ﰣ'=>1,'ﰤ'=>1,'ﰥ'=>1,'ﰦ'=>1,'ﰧ'=>1,'ﰨ'=>1,'ﰩ'=>1,'ﰪ'=>1,'ﰫ'=>1,'ﰬ'=>1,'ﰭ'=>1,'ﰮ'=>1,'ﰯ'=>1,'ﰰ'=>1,'ﰱ'=>1,'ﰲ'=>1,'ﰳ'=>1,'ﰴ'=>1,'ﰵ'=>1,'ﰶ'=>1,'ﰷ'=>1,'ﰸ'=>1,'ﰹ'=>1,'ﰺ'=>1,'ﰻ'=>1,'ﰼ'=>1,'ﰽ'=>1,'ﰾ'=>1,'ﰿ'=>1,'ﱀ'=>1,'ﱁ'=>1,'ﱂ'=>1,'ﱃ'=>1,'ﱄ'=>1,'ﱅ'=>1,'ﱆ'=>1,'ﱇ'=>1,'ﱈ'=>1,'ﱉ'=>1,'ﱊ'=>1,'ﱋ'=>1,'ﱌ'=>1,'ﱍ'=>1,'ﱎ'=>1,'ﱏ'=>1,'ﱐ'=>1,'ﱑ'=>1,'ﱒ'=>1,'ﱓ'=>1,'ﱔ'=>1,'ﱕ'=>1,'ﱖ'=>1,'ﱗ'=>1,'ﱘ'=>1,'ﱙ'=>1,'ﱚ'=>1,'ﱛ'=>1,'ﱜ'=>1,'ﱝ'=>1,'ﱞ'=>1,'ﱟ'=>1,'ﱠ'=>1,'ﱡ'=>1,'ﱢ'=>1,'ﱣ'=>1,'ﱤ'=>1,'ﱥ'=>1,'ﱦ'=>1,'ﱧ'=>1,'ﱨ'=>1,'ﱩ'=>1,'ﱪ'=>1,'ﱫ'=>1,'ﱬ'=>1,'ﱭ'=>1,'ﱮ'=>1,'ﱯ'=>1,'ﱰ'=>1,'ﱱ'=>1,'ﱲ'=>1,'ﱳ'=>1,'ﱴ'=>1,'ﱵ'=>1,'ﱶ'=>1,'ﱷ'=>1,'ﱸ'=>1,'ﱹ'=>1,'ﱺ'=>1,'ﱻ'=>1,'ﱼ'=>1,'ﱽ'=>1,'ﱾ'=>1,'ﱿ'=>1,'ﲀ'=>1,'ﲁ'=>1,'ﲂ'=>1,'ﲃ'=>1,'ﲄ'=>1,'ﲅ'=>1,'ﲆ'=>1,'ﲇ'=>1,'ﲈ'=>1,'ﲉ'=>1,'ﲊ'=>1,'ﲋ'=>1,'ﲌ'=>1,'ﲍ'=>1,'ﲎ'=>1,'ﲏ'=>1,'ﲐ'=>1,'ﲑ'=>1,'ﲒ'=>1,'ﲓ'=>1,'ﲔ'=>1,'ﲕ'=>1,'ﲖ'=>1,'ﲗ'=>1,'ﲘ'=>1,'ﲙ'=>1,'ﲚ'=>1,'ﲛ'=>1,'ﲜ'=>1,'ﲝ'=>1,'ﲞ'=>1,'ﲟ'=>1,'ﲠ'=>1,'ﲡ'=>1,'ﲢ'=>1,'ﲣ'=>1,'ﲤ'=>1,'ﲥ'=>1,'ﲦ'=>1,'ﲧ'=>1,'ﲨ'=>1,'ﲩ'=>1,'ﲪ'=>1,'ﲫ'=>1,'ﲬ'=>1,'ﲭ'=>1,'ﲮ'=>1,'ﲯ'=>1,'ﲰ'=>1,'ﲱ'=>1,'ﲲ'=>1,'ﲳ'=>1,'ﲴ'=>1,'ﲵ'=>1,'ﲶ'=>1,'ﲷ'=>1,'ﲸ'=>1,'ﲹ'=>1,'ﲺ'=>1,'ﲻ'=>1,'ﲼ'=>1,'ﲽ'=>1,'ﲾ'=>1,'ﲿ'=>1,'ﳀ'=>1,'ﳁ'=>1,'ﳂ'=>1,'ﳃ'=>1,'ﳄ'=>1,'ﳅ'=>1,'ﳆ'=>1,'ﳇ'=>1,'ﳈ'=>1,'ﳉ'=>1,'ﳊ'=>1,'ﳋ'=>1,'ﳌ'=>1,'ﳍ'=>1,'ﳎ'=>1,'ﳏ'=>1,'ﳐ'=>1,'ﳑ'=>1,'ﳒ'=>1,'ﳓ'=>1,'ﳔ'=>1,'ﳕ'=>1,'ﳖ'=>1,'ﳗ'=>1,'ﳘ'=>1,'ﳙ'=>1,'ﳚ'=>1,'ﳛ'=>1,'ﳜ'=>1,'ﳝ'=>1,'ﳞ'=>1,'ﳟ'=>1,'ﳠ'=>1,'ﳡ'=>1,'ﳢ'=>1,'ﳣ'=>1,'ﳤ'=>1,'ﳥ'=>1,'ﳦ'=>1,'ﳧ'=>1,'ﳨ'=>1,'ﳩ'=>1,'ﳪ'=>1,'ﳫ'=>1,'ﳬ'=>1,'ﳭ'=>1,'ﳮ'=>1,'ﳯ'=>1,'ﳰ'=>1,'ﳱ'=>1,'ﳲ'=>1,'ﳳ'=>1,'ﳴ'=>1,'ﳵ'=>1,'ﳶ'=>1,'ﳷ'=>1,'ﳸ'=>1,'ﳹ'=>1,'ﳺ'=>1,'ﳻ'=>1,'ﳼ'=>1,'ﳽ'=>1,'ﳾ'=>1,'ﳿ'=>1,'ﴀ'=>1,'ﴁ'=>1,'ﴂ'=>1,'ﴃ'=>1,'ﴄ'=>1,'ﴅ'=>1,'ﴆ'=>1,'ﴇ'=>1,'ﴈ'=>1,'ﴉ'=>1,'ﴊ'=>1,'ﴋ'=>1,'ﴌ'=>1,'ﴍ'=>1,'ﴎ'=>1,'ﴏ'=>1,'ﴐ'=>1,'ﴑ'=>1,'ﴒ'=>1,'ﴓ'=>1,'ﴔ'=>1,'ﴕ'=>1,'ﴖ'=>1,'ﴗ'=>1,'ﴘ'=>1,'ﴙ'=>1,'ﴚ'=>1,'ﴛ'=>1,'ﴜ'=>1,'ﴝ'=>1,'ﴞ'=>1,'ﴟ'=>1,'ﴠ'=>1,'ﴡ'=>1,'ﴢ'=>1,'ﴣ'=>1,'ﴤ'=>1,'ﴥ'=>1,'ﴦ'=>1,'ﴧ'=>1,'ﴨ'=>1,'ﴩ'=>1,'ﴪ'=>1,'ﴫ'=>1,'ﴬ'=>1,'ﴭ'=>1,'ﴮ'=>1,'ﴯ'=>1,'ﴰ'=>1,'ﴱ'=>1,'ﴲ'=>1,'ﴳ'=>1,'ﴴ'=>1,'ﴵ'=>1,'ﴶ'=>1,'ﴷ'=>1,'ﴸ'=>1,'ﴹ'=>1,'ﴺ'=>1,'ﴻ'=>1,'ﴼ'=>1,'ﴽ'=>1,'ﵐ'=>1,'ﵑ'=>1,'ﵒ'=>1,'ﵓ'=>1,'ﵔ'=>1,'ﵕ'=>1,'ﵖ'=>1,'ﵗ'=>1,'ﵘ'=>1,'ﵙ'=>1,'ﵚ'=>1,'ﵛ'=>1,'ﵜ'=>1,'ﵝ'=>1,'ﵞ'=>1,'ﵟ'=>1,'ﵠ'=>1,'ﵡ'=>1,'ﵢ'=>1,'ﵣ'=>1,'ﵤ'=>1,'ﵥ'=>1,'ﵦ'=>1,'ﵧ'=>1,'ﵨ'=>1,'ﵩ'=>1,'ﵪ'=>1,'ﵫ'=>1,'ﵬ'=>1,'ﵭ'=>1,'ﵮ'=>1,'ﵯ'=>1,'ﵰ'=>1,'ﵱ'=>1,'ﵲ'=>1,'ﵳ'=>1,'ﵴ'=>1,'ﵵ'=>1,'ﵶ'=>1,'ﵷ'=>1,'ﵸ'=>1,'ﵹ'=>1,'ﵺ'=>1,'ﵻ'=>1,'ﵼ'=>1,'ﵽ'=>1,'ﵾ'=>1,'ﵿ'=>1,'ﶀ'=>1,'ﶁ'=>1,'ﶂ'=>1,'ﶃ'=>1,'ﶄ'=>1,'ﶅ'=>1,'ﶆ'=>1,'ﶇ'=>1,'ﶈ'=>1,'ﶉ'=>1,'ﶊ'=>1,'ﶋ'=>1,'ﶌ'=>1,'ﶍ'=>1,'ﶎ'=>1,'ﶏ'=>1,'ﶒ'=>1,'ﶓ'=>1,'ﶔ'=>1,'ﶕ'=>1,'ﶖ'=>1,'ﶗ'=>1,'ﶘ'=>1,'ﶙ'=>1,'ﶚ'=>1,'ﶛ'=>1,'ﶜ'=>1,'ﶝ'=>1,'ﶞ'=>1,'ﶟ'=>1,'ﶠ'=>1,'ﶡ'=>1,'ﶢ'=>1,'ﶣ'=>1,'ﶤ'=>1,'ﶥ'=>1,'ﶦ'=>1,'ﶧ'=>1,'ﶨ'=>1,'ﶩ'=>1,'ﶪ'=>1,'ﶫ'=>1,'ﶬ'=>1,'ﶭ'=>1,'ﶮ'=>1,'ﶯ'=>1,'ﶰ'=>1,'ﶱ'=>1,'ﶲ'=>1,'ﶳ'=>1,'ﶴ'=>1,'ﶵ'=>1,'ﶶ'=>1,'ﶷ'=>1,'ﶸ'=>1,'ﶹ'=>1,'ﶺ'=>1,'ﶻ'=>1,'ﶼ'=>1,'ﶽ'=>1,'ﶾ'=>1,'ﶿ'=>1,'ﷀ'=>1,'ﷁ'=>1,'ﷂ'=>1,'ﷃ'=>1,'ﷄ'=>1,'ﷅ'=>1,'ﷆ'=>1,'ﷇ'=>1,'ﷰ'=>1,'ﷱ'=>1,'ﷲ'=>1,'ﷳ'=>1,'ﷴ'=>1,'ﷵ'=>1,'ﷶ'=>1,'ﷷ'=>1,'ﷸ'=>1,'ﷹ'=>1,'ﷺ'=>1,'ﷻ'=>1,'﷼'=>1,'︐'=>1,'︑'=>1,'︒'=>1,'︓'=>1,'︔'=>1,'︕'=>1,'︖'=>1,'︗'=>1,'︘'=>1,'︙'=>1,'︰'=>1,'︱'=>1,'︲'=>1,'︳'=>1,'︴'=>1,'︵'=>1,'︶'=>1,'︷'=>1,'︸'=>1,'︹'=>1,'︺'=>1,'︻'=>1,'︼'=>1,'︽'=>1,'︾'=>1,'︿'=>1,'﹀'=>1,'﹁'=>1,'﹂'=>1,'﹃'=>1,'﹄'=>1,'﹇'=>1,'﹈'=>1,'﹉'=>1,'﹊'=>1,'﹋'=>1,'﹌'=>1,'﹍'=>1,'﹎'=>1,'﹏'=>1,'﹐'=>1,'﹑'=>1,'﹒'=>1,'﹔'=>1,'﹕'=>1,'﹖'=>1,'﹗'=>1,'﹘'=>1,'﹙'=>1,'﹚'=>1,'﹛'=>1,'﹜'=>1,'﹝'=>1,'﹞'=>1,'﹟'=>1,'﹠'=>1,'﹡'=>1,'﹢'=>1,'﹣'=>1,'﹤'=>1,'﹥'=>1,'﹦'=>1,'﹨'=>1,'﹩'=>1,'﹪'=>1,'﹫'=>1,'ﹰ'=>1,'ﹱ'=>1,'ﹲ'=>1,'ﹴ'=>1,'ﹶ'=>1,'ﹷ'=>1,'ﹸ'=>1,'ﹹ'=>1,'ﹺ'=>1,'ﹻ'=>1,'ﹼ'=>1,'ﹽ'=>1,'ﹾ'=>1,'ﹿ'=>1,'ﺀ'=>1,'ﺁ'=>1,'ﺂ'=>1,'ﺃ'=>1,'ﺄ'=>1,'ﺅ'=>1,'ﺆ'=>1,'ﺇ'=>1,'ﺈ'=>1,'ﺉ'=>1,'ﺊ'=>1,'ﺋ'=>1,'ﺌ'=>1,'ﺍ'=>1,'ﺎ'=>1,'ﺏ'=>1,'ﺐ'=>1,'ﺑ'=>1,'ﺒ'=>1,'ﺓ'=>1,'ﺔ'=>1,'ﺕ'=>1,'ﺖ'=>1,'ﺗ'=>1,'ﺘ'=>1,'ﺙ'=>1,'ﺚ'=>1,'ﺛ'=>1,'ﺜ'=>1,'ﺝ'=>1,'ﺞ'=>1,'ﺟ'=>1,'ﺠ'=>1,'ﺡ'=>1,'ﺢ'=>1,'ﺣ'=>1,'ﺤ'=>1,'ﺥ'=>1,'ﺦ'=>1,'ﺧ'=>1,'ﺨ'=>1,'ﺩ'=>1,'ﺪ'=>1,'ﺫ'=>1,'ﺬ'=>1,'ﺭ'=>1,'ﺮ'=>1,'ﺯ'=>1,'ﺰ'=>1,'ﺱ'=>1,'ﺲ'=>1,'ﺳ'=>1,'ﺴ'=>1,'ﺵ'=>1,'ﺶ'=>1,'ﺷ'=>1,'ﺸ'=>1,'ﺹ'=>1,'ﺺ'=>1,'ﺻ'=>1,'ﺼ'=>1,'ﺽ'=>1,'ﺾ'=>1,'ﺿ'=>1,'ﻀ'=>1,'ﻁ'=>1,'ﻂ'=>1,'ﻃ'=>1,'ﻄ'=>1,'ﻅ'=>1,'ﻆ'=>1,'ﻇ'=>1,'ﻈ'=>1,'ﻉ'=>1,'ﻊ'=>1,'ﻋ'=>1,'ﻌ'=>1,'ﻍ'=>1,'ﻎ'=>1,'ﻏ'=>1,'ﻐ'=>1,'ﻑ'=>1,'ﻒ'=>1,'ﻓ'=>1,'ﻔ'=>1,'ﻕ'=>1,'ﻖ'=>1,'ﻗ'=>1,'ﻘ'=>1,'ﻙ'=>1,'ﻚ'=>1,'ﻛ'=>1,'ﻜ'=>1,'ﻝ'=>1,'ﻞ'=>1,'ﻟ'=>1,'ﻠ'=>1,'ﻡ'=>1,'ﻢ'=>1,'ﻣ'=>1,'ﻤ'=>1,'ﻥ'=>1,'ﻦ'=>1,'ﻧ'=>1,'ﻨ'=>1,'ﻩ'=>1,'ﻪ'=>1,'ﻫ'=>1,'ﻬ'=>1,'ﻭ'=>1,'ﻮ'=>1,'ﻯ'=>1,'ﻰ'=>1,'ﻱ'=>1,'ﻲ'=>1,'ﻳ'=>1,'ﻴ'=>1,'ﻵ'=>1,'ﻶ'=>1,'ﻷ'=>1,'ﻸ'=>1,'ﻹ'=>1,'ﻺ'=>1,'ﻻ'=>1,'ﻼ'=>1,'!'=>1,'"'=>1,'#'=>1,'$'=>1,'%'=>1,'&'=>1,'''=>1,'('=>1,')'=>1,'*'=>1,'+'=>1,','=>1,'-'=>1,'.'=>1,'/'=>1,'0'=>1,'1'=>1,'2'=>1,'3'=>1,'4'=>1,'5'=>1,'6'=>1,'7'=>1,'8'=>1,'9'=>1,':'=>1,';'=>1,'<'=>1,'='=>1,'>'=>1,'?'=>1,'@'=>1,'A'=>1,'B'=>1,'C'=>1,'D'=>1,'E'=>1,'F'=>1,'G'=>1,'H'=>1,'I'=>1,'J'=>1,'K'=>1,'L'=>1,'M'=>1,'N'=>1,'O'=>1,'P'=>1,'Q'=>1,'R'=>1,'S'=>1,'T'=>1,'U'=>1,'V'=>1,'W'=>1,'X'=>1,'Y'=>1,'Z'=>1,'['=>1,'\'=>1,']'=>1,'^'=>1,'_'=>1,'`'=>1,'a'=>1,'b'=>1,'c'=>1,'d'=>1,'e'=>1,'f'=>1,'g'=>1,'h'=>1,'i'=>1,'j'=>1,'k'=>1,'l'=>1,'m'=>1,'n'=>1,'o'=>1,'p'=>1,'q'=>1,'r'=>1,'s'=>1,'t'=>1,'u'=>1,'v'=>1,'w'=>1,'x'=>1,'y'=>1,'z'=>1,'{'=>1,'|'=>1,'}'=>1,'~'=>1,'⦅'=>1,'⦆'=>1,'。'=>1,'「'=>1,'」'=>1,'、'=>1,'・'=>1,'ヲ'=>1,'ァ'=>1,'ィ'=>1,'ゥ'=>1,'ェ'=>1,'ォ'=>1,'ャ'=>1,'ュ'=>1,'ョ'=>1,'ッ'=>1,'ー'=>1,'ア'=>1,'イ'=>1,'ウ'=>1,'エ'=>1,'オ'=>1,'カ'=>1,'キ'=>1,'ク'=>1,'ケ'=>1,'コ'=>1,'サ'=>1,'シ'=>1,'ス'=>1,'セ'=>1,'ソ'=>1,'タ'=>1,'チ'=>1,'ツ'=>1,'テ'=>1,'ト'=>1,'ナ'=>1,'ニ'=>1,'ヌ'=>1,'ネ'=>1,'ノ'=>1,'ハ'=>1,'ヒ'=>1,'フ'=>1,'ヘ'=>1,'ホ'=>1,'マ'=>1,'ミ'=>1,'ム'=>1,'メ'=>1,'モ'=>1,'ヤ'=>1,'ユ'=>1,'ヨ'=>1,'ラ'=>1,'リ'=>1,'ル'=>1,'レ'=>1,'ロ'=>1,'ワ'=>1,'ン'=>1,'゙'=>1,'゚'=>1,'ᅠ'=>1,'ᄀ'=>1,'ᄁ'=>1,'ᆪ'=>1,'ᄂ'=>1,'ᆬ'=>1,'ᆭ'=>1,'ᄃ'=>1,'ᄄ'=>1,'ᄅ'=>1,'ᆰ'=>1,'ᆱ'=>1,'ᆲ'=>1,'ᆳ'=>1,'ᆴ'=>1,'ᆵ'=>1,'ᄚ'=>1,'ᄆ'=>1,'ᄇ'=>1,'ᄈ'=>1,'ᄡ'=>1,'ᄉ'=>1,'ᄊ'=>1,'ᄋ'=>1,'ᄌ'=>1,'ᄍ'=>1,'ᄎ'=>1,'ᄏ'=>1,'ᄐ'=>1,'ᄑ'=>1,'ᄒ'=>1,'ᅡ'=>1,'ᅢ'=>1,'ᅣ'=>1,'ᅤ'=>1,'ᅥ'=>1,'ᅦ'=>1,'ᅧ'=>1,'ᅨ'=>1,'ᅩ'=>1,'ᅪ'=>1,'ᅫ'=>1,'ᅬ'=>1,'ᅭ'=>1,'ᅮ'=>1,'ᅯ'=>1,'ᅰ'=>1,'ᅱ'=>1,'ᅲ'=>1,'ᅳ'=>1,'ᅴ'=>1,'ᅵ'=>1,'¢'=>1,'£'=>1,'¬'=>1,' ̄'=>1,'¦'=>1,'¥'=>1,'₩'=>1,'│'=>1,'←'=>1,'↑'=>1,'→'=>1,'↓'=>1,'■'=>1,'○'=>1,'𝅗𝅥'=>1,'𝅘𝅥'=>1,'𝅘𝅥𝅮'=>1,'𝅘𝅥𝅯'=>1,'𝅘𝅥𝅰'=>1,'𝅘𝅥𝅱'=>1,'𝅘𝅥𝅲'=>1,'𝆹𝅥'=>1,'𝆺𝅥'=>1,'𝆹𝅥𝅮'=>1,'𝆺𝅥𝅮'=>1,'𝆹𝅥𝅯'=>1,'𝆺𝅥𝅯'=>1,'𝐀'=>1,'𝐁'=>1,'𝐂'=>1,'𝐃'=>1,'𝐄'=>1,'𝐅'=>1,'𝐆'=>1,'𝐇'=>1,'𝐈'=>1,'𝐉'=>1,'𝐊'=>1,'𝐋'=>1,'𝐌'=>1,'𝐍'=>1,'𝐎'=>1,'𝐏'=>1,'𝐐'=>1,'𝐑'=>1,'𝐒'=>1,'𝐓'=>1,'𝐔'=>1,'𝐕'=>1,'𝐖'=>1,'𝐗'=>1,'𝐘'=>1,'𝐙'=>1,'𝐚'=>1,'𝐛'=>1,'𝐜'=>1,'𝐝'=>1,'𝐞'=>1,'𝐟'=>1,'𝐠'=>1,'𝐡'=>1,'𝐢'=>1,'𝐣'=>1,'𝐤'=>1,'𝐥'=>1,'𝐦'=>1,'𝐧'=>1,'𝐨'=>1,'𝐩'=>1,'𝐪'=>1,'𝐫'=>1,'𝐬'=>1,'𝐭'=>1,'𝐮'=>1,'𝐯'=>1,'𝐰'=>1,'𝐱'=>1,'𝐲'=>1,'𝐳'=>1,'𝐴'=>1,'𝐵'=>1,'𝐶'=>1,'𝐷'=>1,'𝐸'=>1,'𝐹'=>1,'𝐺'=>1,'𝐻'=>1,'𝐼'=>1,'𝐽'=>1,'𝐾'=>1,'𝐿'=>1,'𝑀'=>1,'𝑁'=>1,'𝑂'=>1,'𝑃'=>1,'𝑄'=>1,'𝑅'=>1,'𝑆'=>1,'𝑇'=>1,'𝑈'=>1,'𝑉'=>1,'𝑊'=>1,'𝑋'=>1,'𝑌'=>1,'𝑍'=>1,'𝑎'=>1,'𝑏'=>1,'𝑐'=>1,'𝑑'=>1,'𝑒'=>1,'𝑓'=>1,'𝑔'=>1,'𝑖'=>1,'𝑗'=>1,'𝑘'=>1,'𝑙'=>1,'𝑚'=>1,'𝑛'=>1,'𝑜'=>1,'𝑝'=>1,'𝑞'=>1,'𝑟'=>1,'𝑠'=>1,'𝑡'=>1,'𝑢'=>1,'𝑣'=>1,'𝑤'=>1,'𝑥'=>1,'𝑦'=>1,'𝑧'=>1,'𝑨'=>1,'𝑩'=>1,'𝑪'=>1,'𝑫'=>1,'𝑬'=>1,'𝑭'=>1,'𝑮'=>1,'𝑯'=>1,'𝑰'=>1,'𝑱'=>1,'𝑲'=>1,'𝑳'=>1,'𝑴'=>1,'𝑵'=>1,'𝑶'=>1,'𝑷'=>1,'𝑸'=>1,'𝑹'=>1,'𝑺'=>1,'𝑻'=>1,'𝑼'=>1,'𝑽'=>1,'𝑾'=>1,'𝑿'=>1,'𝒀'=>1,'𝒁'=>1,'𝒂'=>1,'𝒃'=>1,'𝒄'=>1,'𝒅'=>1,'𝒆'=>1,'𝒇'=>1,'𝒈'=>1,'𝒉'=>1,'𝒊'=>1,'𝒋'=>1,'𝒌'=>1,'𝒍'=>1,'𝒎'=>1,'𝒏'=>1,'𝒐'=>1,'𝒑'=>1,'𝒒'=>1,'𝒓'=>1,'𝒔'=>1,'𝒕'=>1,'𝒖'=>1,'𝒗'=>1,'𝒘'=>1,'𝒙'=>1,'𝒚'=>1,'𝒛'=>1,'𝒜'=>1,'𝒞'=>1,'𝒟'=>1,'𝒢'=>1,'𝒥'=>1,'𝒦'=>1,'𝒩'=>1,'𝒪'=>1,'𝒫'=>1,'𝒬'=>1,'𝒮'=>1,'𝒯'=>1,'𝒰'=>1,'𝒱'=>1,'𝒲'=>1,'𝒳'=>1,'𝒴'=>1,'𝒵'=>1,'𝒶'=>1,'𝒷'=>1,'𝒸'=>1,'𝒹'=>1,'𝒻'=>1,'𝒽'=>1,'𝒾'=>1,'𝒿'=>1,'𝓀'=>1,'𝓁'=>1,'𝓂'=>1,'𝓃'=>1,'𝓅'=>1,'𝓆'=>1,'𝓇'=>1,'𝓈'=>1,'𝓉'=>1,'𝓊'=>1,'𝓋'=>1,'𝓌'=>1,'𝓍'=>1,'𝓎'=>1,'𝓏'=>1,'𝓐'=>1,'𝓑'=>1,'𝓒'=>1,'𝓓'=>1,'𝓔'=>1,'𝓕'=>1,'𝓖'=>1,'𝓗'=>1,'𝓘'=>1,'𝓙'=>1,'𝓚'=>1,'𝓛'=>1,'𝓜'=>1,'𝓝'=>1,'𝓞'=>1,'𝓟'=>1,'𝓠'=>1,'𝓡'=>1,'𝓢'=>1,'𝓣'=>1,'𝓤'=>1,'𝓥'=>1,'𝓦'=>1,'𝓧'=>1,'𝓨'=>1,'𝓩'=>1,'𝓪'=>1,'𝓫'=>1,'𝓬'=>1,'𝓭'=>1,'𝓮'=>1,'𝓯'=>1,'𝓰'=>1,'𝓱'=>1,'𝓲'=>1,'𝓳'=>1,'𝓴'=>1,'𝓵'=>1,'𝓶'=>1,'𝓷'=>1,'𝓸'=>1,'𝓹'=>1,'𝓺'=>1,'𝓻'=>1,'𝓼'=>1,'𝓽'=>1,'𝓾'=>1,'𝓿'=>1,'𝔀'=>1,'𝔁'=>1,'𝔂'=>1,'𝔃'=>1,'𝔄'=>1,'𝔅'=>1,'𝔇'=>1,'𝔈'=>1,'𝔉'=>1,'𝔊'=>1,'𝔍'=>1,'𝔎'=>1,'𝔏'=>1,'𝔐'=>1,'𝔑'=>1,'𝔒'=>1,'𝔓'=>1,'𝔔'=>1,'𝔖'=>1,'𝔗'=>1,'𝔘'=>1,'𝔙'=>1,'𝔚'=>1,'𝔛'=>1,'𝔜'=>1,'𝔞'=>1,'𝔟'=>1,'𝔠'=>1,'𝔡'=>1,'𝔢'=>1,'𝔣'=>1,'𝔤'=>1,'𝔥'=>1,'𝔦'=>1,'𝔧'=>1,'𝔨'=>1,'𝔩'=>1,'𝔪'=>1,'𝔫'=>1,'𝔬'=>1,'𝔭'=>1,'𝔮'=>1,'𝔯'=>1,'𝔰'=>1,'𝔱'=>1,'𝔲'=>1,'𝔳'=>1,'𝔴'=>1,'𝔵'=>1,'𝔶'=>1,'𝔷'=>1,'𝔸'=>1,'𝔹'=>1,'𝔻'=>1,'𝔼'=>1,'𝔽'=>1,'𝔾'=>1,'𝕀'=>1,'𝕁'=>1,'𝕂'=>1,'𝕃'=>1,'𝕄'=>1,'𝕆'=>1,'𝕊'=>1,'𝕋'=>1,'𝕌'=>1,'𝕍'=>1,'𝕎'=>1,'𝕏'=>1,'𝕐'=>1,'𝕒'=>1,'𝕓'=>1,'𝕔'=>1,'𝕕'=>1,'𝕖'=>1,'𝕗'=>1,'𝕘'=>1,'𝕙'=>1,'𝕚'=>1,'𝕛'=>1,'𝕜'=>1,'𝕝'=>1,'𝕞'=>1,'𝕟'=>1,'𝕠'=>1,'𝕡'=>1,'𝕢'=>1,'𝕣'=>1,'𝕤'=>1,'𝕥'=>1,'𝕦'=>1,'𝕧'=>1,'𝕨'=>1,'𝕩'=>1,'𝕪'=>1,'𝕫'=>1,'𝕬'=>1,'𝕭'=>1,'𝕮'=>1,'𝕯'=>1,'𝕰'=>1,'𝕱'=>1,'𝕲'=>1,'𝕳'=>1,'𝕴'=>1,'𝕵'=>1,'𝕶'=>1,'𝕷'=>1,'𝕸'=>1,'𝕹'=>1,'𝕺'=>1,'𝕻'=>1,'𝕼'=>1,'𝕽'=>1,'𝕾'=>1,'𝕿'=>1,'𝖀'=>1,'𝖁'=>1,'𝖂'=>1,'𝖃'=>1,'𝖄'=>1,'𝖅'=>1,'𝖆'=>1,'𝖇'=>1,'𝖈'=>1,'𝖉'=>1,'𝖊'=>1,'𝖋'=>1,'𝖌'=>1,'𝖍'=>1,'𝖎'=>1,'𝖏'=>1,'𝖐'=>1,'𝖑'=>1,'𝖒'=>1,'𝖓'=>1,'𝖔'=>1,'𝖕'=>1,'𝖖'=>1,'𝖗'=>1,'𝖘'=>1,'𝖙'=>1,'𝖚'=>1,'𝖛'=>1,'𝖜'=>1,'𝖝'=>1,'𝖞'=>1,'𝖟'=>1,'𝖠'=>1,'𝖡'=>1,'𝖢'=>1,'𝖣'=>1,'𝖤'=>1,'𝖥'=>1,'𝖦'=>1,'𝖧'=>1,'𝖨'=>1,'𝖩'=>1,'𝖪'=>1,'𝖫'=>1,'𝖬'=>1,'𝖭'=>1,'𝖮'=>1,'𝖯'=>1,'𝖰'=>1,'𝖱'=>1,'𝖲'=>1,'𝖳'=>1,'𝖴'=>1,'𝖵'=>1,'𝖶'=>1,'𝖷'=>1,'𝖸'=>1,'𝖹'=>1,'𝖺'=>1,'𝖻'=>1,'𝖼'=>1,'𝖽'=>1,'𝖾'=>1,'𝖿'=>1,'𝗀'=>1,'𝗁'=>1,'𝗂'=>1,'𝗃'=>1,'𝗄'=>1,'𝗅'=>1,'𝗆'=>1,'𝗇'=>1,'𝗈'=>1,'𝗉'=>1,'𝗊'=>1,'𝗋'=>1,'𝗌'=>1,'𝗍'=>1,'𝗎'=>1,'𝗏'=>1,'𝗐'=>1,'𝗑'=>1,'𝗒'=>1,'𝗓'=>1,'𝗔'=>1,'𝗕'=>1,'𝗖'=>1,'𝗗'=>1,'𝗘'=>1,'𝗙'=>1,'𝗚'=>1,'𝗛'=>1,'𝗜'=>1,'𝗝'=>1,'𝗞'=>1,'𝗟'=>1,'𝗠'=>1,'𝗡'=>1,'𝗢'=>1,'𝗣'=>1,'𝗤'=>1,'𝗥'=>1,'𝗦'=>1,'𝗧'=>1,'𝗨'=>1,'𝗩'=>1,'𝗪'=>1,'𝗫'=>1,'𝗬'=>1,'𝗭'=>1,'𝗮'=>1,'𝗯'=>1,'𝗰'=>1,'𝗱'=>1,'𝗲'=>1,'𝗳'=>1,'𝗴'=>1,'𝗵'=>1,'𝗶'=>1,'𝗷'=>1,'𝗸'=>1,'𝗹'=>1,'𝗺'=>1,'𝗻'=>1,'𝗼'=>1,'𝗽'=>1,'𝗾'=>1,'𝗿'=>1,'𝘀'=>1,'𝘁'=>1,'𝘂'=>1,'𝘃'=>1,'𝘄'=>1,'𝘅'=>1,'𝘆'=>1,'𝘇'=>1,'𝘈'=>1,'𝘉'=>1,'𝘊'=>1,'𝘋'=>1,'𝘌'=>1,'𝘍'=>1,'𝘎'=>1,'𝘏'=>1,'𝘐'=>1,'𝘑'=>1,'𝘒'=>1,'𝘓'=>1,'𝘔'=>1,'𝘕'=>1,'𝘖'=>1,'𝘗'=>1,'𝘘'=>1,'𝘙'=>1,'𝘚'=>1,'𝘛'=>1,'𝘜'=>1,'𝘝'=>1,'𝘞'=>1,'𝘟'=>1,'𝘠'=>1,'𝘡'=>1,'𝘢'=>1,'𝘣'=>1,'𝘤'=>1,'𝘥'=>1,'𝘦'=>1,'𝘧'=>1,'𝘨'=>1,'𝘩'=>1,'𝘪'=>1,'𝘫'=>1,'𝘬'=>1,'𝘭'=>1,'𝘮'=>1,'𝘯'=>1,'𝘰'=>1,'𝘱'=>1,'𝘲'=>1,'𝘳'=>1,'𝘴'=>1,'𝘵'=>1,'𝘶'=>1,'𝘷'=>1,'𝘸'=>1,'𝘹'=>1,'𝘺'=>1,'𝘻'=>1,'𝘼'=>1,'𝘽'=>1,'𝘾'=>1,'𝘿'=>1,'𝙀'=>1,'𝙁'=>1,'𝙂'=>1,'𝙃'=>1,'𝙄'=>1,'𝙅'=>1,'𝙆'=>1,'𝙇'=>1,'𝙈'=>1,'𝙉'=>1,'𝙊'=>1,'𝙋'=>1,'𝙌'=>1,'𝙍'=>1,'𝙎'=>1,'𝙏'=>1,'𝙐'=>1,'𝙑'=>1,'𝙒'=>1,'𝙓'=>1,'𝙔'=>1,'𝙕'=>1,'𝙖'=>1,'𝙗'=>1,'𝙘'=>1,'𝙙'=>1,'𝙚'=>1,'𝙛'=>1,'𝙜'=>1,'𝙝'=>1,'𝙞'=>1,'𝙟'=>1,'𝙠'=>1,'𝙡'=>1,'𝙢'=>1,'𝙣'=>1,'𝙤'=>1,'𝙥'=>1,'𝙦'=>1,'𝙧'=>1,'𝙨'=>1,'𝙩'=>1,'𝙪'=>1,'𝙫'=>1,'𝙬'=>1,'𝙭'=>1,'𝙮'=>1,'𝙯'=>1,'𝙰'=>1,'𝙱'=>1,'𝙲'=>1,'𝙳'=>1,'𝙴'=>1,'𝙵'=>1,'𝙶'=>1,'𝙷'=>1,'𝙸'=>1,'𝙹'=>1,'𝙺'=>1,'𝙻'=>1,'𝙼'=>1,'𝙽'=>1,'𝙾'=>1,'𝙿'=>1,'𝚀'=>1,'𝚁'=>1,'𝚂'=>1,'𝚃'=>1,'𝚄'=>1,'𝚅'=>1,'𝚆'=>1,'𝚇'=>1,'𝚈'=>1,'𝚉'=>1,'𝚊'=>1,'𝚋'=>1,'𝚌'=>1,'𝚍'=>1,'𝚎'=>1,'𝚏'=>1,'𝚐'=>1,'𝚑'=>1,'𝚒'=>1,'𝚓'=>1,'𝚔'=>1,'𝚕'=>1,'𝚖'=>1,'𝚗'=>1,'𝚘'=>1,'𝚙'=>1,'𝚚'=>1,'𝚛'=>1,'𝚜'=>1,'𝚝'=>1,'𝚞'=>1,'𝚟'=>1,'𝚠'=>1,'𝚡'=>1,'𝚢'=>1,'𝚣'=>1,'𝚤'=>1,'𝚥'=>1,'𝚨'=>1,'𝚩'=>1,'𝚪'=>1,'𝚫'=>1,'𝚬'=>1,'𝚭'=>1,'𝚮'=>1,'𝚯'=>1,'𝚰'=>1,'𝚱'=>1,'𝚲'=>1,'𝚳'=>1,'𝚴'=>1,'𝚵'=>1,'𝚶'=>1,'𝚷'=>1,'𝚸'=>1,'𝚹'=>1,'𝚺'=>1,'𝚻'=>1,'𝚼'=>1,'𝚽'=>1,'𝚾'=>1,'𝚿'=>1,'𝛀'=>1,'𝛁'=>1,'𝛂'=>1,'𝛃'=>1,'𝛄'=>1,'𝛅'=>1,'𝛆'=>1,'𝛇'=>1,'𝛈'=>1,'𝛉'=>1,'𝛊'=>1,'𝛋'=>1,'𝛌'=>1,'𝛍'=>1,'𝛎'=>1,'𝛏'=>1,'𝛐'=>1,'𝛑'=>1,'𝛒'=>1,'𝛓'=>1,'𝛔'=>1,'𝛕'=>1,'𝛖'=>1,'𝛗'=>1,'𝛘'=>1,'𝛙'=>1,'𝛚'=>1,'𝛛'=>1,'𝛜'=>1,'𝛝'=>1,'𝛞'=>1,'𝛟'=>1,'𝛠'=>1,'𝛡'=>1,'𝛢'=>1,'𝛣'=>1,'𝛤'=>1,'𝛥'=>1,'𝛦'=>1,'𝛧'=>1,'𝛨'=>1,'𝛩'=>1,'𝛪'=>1,'𝛫'=>1,'𝛬'=>1,'𝛭'=>1,'𝛮'=>1,'𝛯'=>1,'𝛰'=>1,'𝛱'=>1,'𝛲'=>1,'𝛳'=>1,'𝛴'=>1,'𝛵'=>1,'𝛶'=>1,'𝛷'=>1,'𝛸'=>1,'𝛹'=>1,'𝛺'=>1,'𝛻'=>1,'𝛼'=>1,'𝛽'=>1,'𝛾'=>1,'𝛿'=>1,'𝜀'=>1,'𝜁'=>1,'𝜂'=>1,'𝜃'=>1,'𝜄'=>1,'𝜅'=>1,'𝜆'=>1,'𝜇'=>1,'𝜈'=>1,'𝜉'=>1,'𝜊'=>1,'𝜋'=>1,'𝜌'=>1,'𝜍'=>1,'𝜎'=>1,'𝜏'=>1,'𝜐'=>1,'𝜑'=>1,'𝜒'=>1,'𝜓'=>1,'𝜔'=>1,'𝜕'=>1,'𝜖'=>1,'𝜗'=>1,'𝜘'=>1,'𝜙'=>1,'𝜚'=>1,'𝜛'=>1,'𝜜'=>1,'𝜝'=>1,'𝜞'=>1,'𝜟'=>1,'𝜠'=>1,'𝜡'=>1,'𝜢'=>1,'𝜣'=>1,'𝜤'=>1,'𝜥'=>1,'𝜦'=>1,'𝜧'=>1,'𝜨'=>1,'𝜩'=>1,'𝜪'=>1,'𝜫'=>1,'𝜬'=>1,'𝜭'=>1,'𝜮'=>1,'𝜯'=>1,'𝜰'=>1,'𝜱'=>1,'𝜲'=>1,'𝜳'=>1,'𝜴'=>1,'𝜵'=>1,'𝜶'=>1,'𝜷'=>1,'𝜸'=>1,'𝜹'=>1,'𝜺'=>1,'𝜻'=>1,'𝜼'=>1,'𝜽'=>1,'𝜾'=>1,'𝜿'=>1,'𝝀'=>1,'𝝁'=>1,'𝝂'=>1,'𝝃'=>1,'𝝄'=>1,'𝝅'=>1,'𝝆'=>1,'𝝇'=>1,'𝝈'=>1,'𝝉'=>1,'𝝊'=>1,'𝝋'=>1,'𝝌'=>1,'𝝍'=>1,'𝝎'=>1,'𝝏'=>1,'𝝐'=>1,'𝝑'=>1,'𝝒'=>1,'𝝓'=>1,'𝝔'=>1,'𝝕'=>1,'𝝖'=>1,'𝝗'=>1,'𝝘'=>1,'𝝙'=>1,'𝝚'=>1,'𝝛'=>1,'𝝜'=>1,'𝝝'=>1,'𝝞'=>1,'𝝟'=>1,'𝝠'=>1,'𝝡'=>1,'𝝢'=>1,'𝝣'=>1,'𝝤'=>1,'𝝥'=>1,'𝝦'=>1,'𝝧'=>1,'𝝨'=>1,'𝝩'=>1,'𝝪'=>1,'𝝫'=>1,'𝝬'=>1,'𝝭'=>1,'𝝮'=>1,'𝝯'=>1,'𝝰'=>1,'𝝱'=>1,'𝝲'=>1,'𝝳'=>1,'𝝴'=>1,'𝝵'=>1,'𝝶'=>1,'𝝷'=>1,'𝝸'=>1,'𝝹'=>1,'𝝺'=>1,'𝝻'=>1,'𝝼'=>1,'𝝽'=>1,'𝝾'=>1,'𝝿'=>1,'𝞀'=>1,'𝞁'=>1,'𝞂'=>1,'𝞃'=>1,'𝞄'=>1,'𝞅'=>1,'𝞆'=>1,'𝞇'=>1,'𝞈'=>1,'𝞉'=>1,'𝞊'=>1,'𝞋'=>1,'𝞌'=>1,'𝞍'=>1,'𝞎'=>1,'𝞏'=>1,'𝞐'=>1,'𝞑'=>1,'𝞒'=>1,'𝞓'=>1,'𝞔'=>1,'𝞕'=>1,'𝞖'=>1,'𝞗'=>1,'𝞘'=>1,'𝞙'=>1,'𝞚'=>1,'𝞛'=>1,'𝞜'=>1,'𝞝'=>1,'𝞞'=>1,'𝞟'=>1,'𝞠'=>1,'𝞡'=>1,'𝞢'=>1,'𝞣'=>1,'𝞤'=>1,'𝞥'=>1,'𝞦'=>1,'𝞧'=>1,'𝞨'=>1,'𝞩'=>1,'𝞪'=>1,'𝞫'=>1,'𝞬'=>1,'𝞭'=>1,'𝞮'=>1,'𝞯'=>1,'𝞰'=>1,'𝞱'=>1,'𝞲'=>1,'𝞳'=>1,'𝞴'=>1,'𝞵'=>1,'𝞶'=>1,'𝞷'=>1,'𝞸'=>1,'𝞹'=>1,'𝞺'=>1,'𝞻'=>1,'𝞼'=>1,'𝞽'=>1,'𝞾'=>1,'𝞿'=>1,'𝟀'=>1,'𝟁'=>1,'𝟂'=>1,'𝟃'=>1,'𝟄'=>1,'𝟅'=>1,'𝟆'=>1,'𝟇'=>1,'𝟈'=>1,'𝟉'=>1,'𝟊'=>1,'𝟋'=>1,'𝟎'=>1,'𝟏'=>1,'𝟐'=>1,'𝟑'=>1,'𝟒'=>1,'𝟓'=>1,'𝟔'=>1,'𝟕'=>1,'𝟖'=>1,'𝟗'=>1,'𝟘'=>1,'𝟙'=>1,'𝟚'=>1,'𝟛'=>1,'𝟜'=>1,'𝟝'=>1,'𝟞'=>1,'𝟟'=>1,'𝟠'=>1,'𝟡'=>1,'𝟢'=>1,'𝟣'=>1,'𝟤'=>1,'𝟥'=>1,'𝟦'=>1,'𝟧'=>1,'𝟨'=>1,'𝟩'=>1,'𝟪'=>1,'𝟫'=>1,'𝟬'=>1,'𝟭'=>1,'𝟮'=>1,'𝟯'=>1,'𝟰'=>1,'𝟱'=>1,'𝟲'=>1,'𝟳'=>1,'𝟴'=>1,'𝟵'=>1,'𝟶'=>1,'𝟷'=>1,'𝟸'=>1,'𝟹'=>1,'𝟺'=>1,'𝟻'=>1,'𝟼'=>1,'𝟽'=>1,'𝟾'=>1,'𝟿'=>1,'丽'=>1,'丸'=>1,'乁'=>1,'𠄢'=>1,'你'=>1,'侮'=>1,'侻'=>1,'倂'=>1,'偺'=>1,'備'=>1,'僧'=>1,'像'=>1,'㒞'=>1,'𠘺'=>1,'免'=>1,'兔'=>1,'兤'=>1,'具'=>1,'𠔜'=>1,'㒹'=>1,'內'=>1,'再'=>1,'𠕋'=>1,'冗'=>1,'冤'=>1,'仌'=>1,'冬'=>1,'况'=>1,'𩇟'=>1,'凵'=>1,'刃'=>1,'㓟'=>1,'刻'=>1,'剆'=>1,'割'=>1,'剷'=>1,'㔕'=>1,'勇'=>1,'勉'=>1,'勤'=>1,'勺'=>1,'包'=>1,'匆'=>1,'北'=>1,'卉'=>1,'卑'=>1,'博'=>1,'即'=>1,'卽'=>1,'卿'=>1,'卿'=>1,'卿'=>1,'𠨬'=>1,'灰'=>1,'及'=>1,'叟'=>1,'𠭣'=>1,'叫'=>1,'叱'=>1,'吆'=>1,'咞'=>1,'吸'=>1,'呈'=>1,'周'=>1,'咢'=>1,'哶'=>1,'唐'=>1,'啓'=>1,'啣'=>1,'善'=>1,'善'=>1,'喙'=>1,'喫'=>1,'喳'=>1,'嗂'=>1,'圖'=>1,'嘆'=>1,'圗'=>1,'噑'=>1,'噴'=>1,'切'=>1,'壮'=>1,'城'=>1,'埴'=>1,'堍'=>1,'型'=>1,'堲'=>1,'報'=>1,'墬'=>1,'𡓤'=>1,'売'=>1,'壷'=>1,'夆'=>1,'多'=>1,'夢'=>1,'奢'=>1,'𡚨'=>1,'𡛪'=>1,'姬'=>1,'娛'=>1,'娧'=>1,'姘'=>1,'婦'=>1,'㛮'=>1,'㛼'=>1,'嬈'=>1,'嬾'=>1,'嬾'=>1,'𡧈'=>1,'寃'=>1,'寘'=>1,'寧'=>1,'寳'=>1,'𡬘'=>1,'寿'=>1,'将'=>1,'当'=>1,'尢'=>1,'㞁'=>1,'屠'=>1,'屮'=>1,'峀'=>1,'岍'=>1,'𡷤'=>1,'嵃'=>1,'𡷦'=>1,'嵮'=>1,'嵫'=>1,'嵼'=>1,'巡'=>1,'巢'=>1,'㠯'=>1,'巽'=>1,'帨'=>1,'帽'=>1,'幩'=>1,'㡢'=>1,'𢆃'=>1,'㡼'=>1,'庰'=>1,'庳'=>1,'庶'=>1,'廊'=>1,'𪎒'=>1,'廾'=>1,'𢌱'=>1,'𢌱'=>1,'舁'=>1,'弢'=>1,'弢'=>1,'㣇'=>1,'𣊸'=>1,'𦇚'=>1,'形'=>1,'彫'=>1,'㣣'=>1,'徚'=>1,'忍'=>1,'志'=>1,'忹'=>1,'悁'=>1,'㤺'=>1,'㤜'=>1,'悔'=>1,'𢛔'=>1,'惇'=>1,'慈'=>1,'慌'=>1,'慎'=>1,'慌'=>1,'慺'=>1,'憎'=>1,'憲'=>1,'憤'=>1,'憯'=>1,'懞'=>1,'懲'=>1,'懶'=>1,'成'=>1,'戛'=>1,'扝'=>1,'抱'=>1,'拔'=>1,'捐'=>1,'𢬌'=>1,'挽'=>1,'拼'=>1,'捨'=>1,'掃'=>1,'揤'=>1,'𢯱'=>1,'搢'=>1,'揅'=>1,'掩'=>1,'㨮'=>1,'摩'=>1,'摾'=>1,'撝'=>1,'摷'=>1,'㩬'=>1,'敏'=>1,'敬'=>1,'𣀊'=>1,'旣'=>1,'書'=>1,'晉'=>1,'㬙'=>1,'暑'=>1,'㬈'=>1,'㫤'=>1,'冒'=>1,'冕'=>1,'最'=>1,'暜'=>1,'肭'=>1,'䏙'=>1,'朗'=>1,'望'=>1,'朡'=>1,'杞'=>1,'杓'=>1,'𣏃'=>1,'㭉'=>1,'柺'=>1,'枅'=>1,'桒'=>1,'梅'=>1,'𣑭'=>1,'梎'=>1,'栟'=>1,'椔'=>1,'㮝'=>1,'楂'=>1,'榣'=>1,'槪'=>1,'檨'=>1,'𣚣'=>1,'櫛'=>1,'㰘'=>1,'次'=>1,'𣢧'=>1,'歔'=>1,'㱎'=>1,'歲'=>1,'殟'=>1,'殺'=>1,'殻'=>1,'𣪍'=>1,'𡴋'=>1,'𣫺'=>1,'汎'=>1,'𣲼'=>1,'沿'=>1,'泍'=>1,'汧'=>1,'洖'=>1,'派'=>1,'海'=>1,'流'=>1,'浩'=>1,'浸'=>1,'涅'=>1,'𣴞'=>1,'洴'=>1,'港'=>1,'湮'=>1,'㴳'=>1,'滋'=>1,'滇'=>1,'𣻑'=>1,'淹'=>1,'潮'=>1,'𣽞'=>1,'𣾎'=>1,'濆'=>1,'瀹'=>1,'瀞'=>1,'瀛'=>1,'㶖'=>1,'灊'=>1,'災'=>1,'灷'=>1,'炭'=>1,'𠔥'=>1,'煅'=>1,'𤉣'=>1,'熜'=>1,'𤎫'=>1,'爨'=>1,'爵'=>1,'牐'=>1,'𤘈'=>1,'犀'=>1,'犕'=>1,'𤜵'=>1,'𤠔'=>1,'獺'=>1,'王'=>1,'㺬'=>1,'玥'=>1,'㺸'=>1,'㺸'=>1,'瑇'=>1,'瑜'=>1,'瑱'=>1,'璅'=>1,'瓊'=>1,'㼛'=>1,'甤'=>1,'𤰶'=>1,'甾'=>1,'𤲒'=>1,'異'=>1,'𢆟'=>1,'瘐'=>1,'𤾡'=>1,'𤾸'=>1,'𥁄'=>1,'㿼'=>1,'䀈'=>1,'直'=>1,'𥃳'=>1,'𥃲'=>1,'𥄙'=>1,'𥄳'=>1,'眞'=>1,'真'=>1,'真'=>1,'睊'=>1,'䀹'=>1,'瞋'=>1,'䁆'=>1,'䂖'=>1,'𥐝'=>1,'硎'=>1,'碌'=>1,'磌'=>1,'䃣'=>1,'𥘦'=>1,'祖'=>1,'𥚚'=>1,'𥛅'=>1,'福'=>1,'秫'=>1,'䄯'=>1,'穀'=>1,'穊'=>1,'穏'=>1,'𥥼'=>1,'𥪧'=>1,'𥪧'=>1,'竮'=>1,'䈂'=>1,'𥮫'=>1,'篆'=>1,'築'=>1,'䈧'=>1,'𥲀'=>1,'糒'=>1,'䊠'=>1,'糨'=>1,'糣'=>1,'紀'=>1,'𥾆'=>1,'絣'=>1,'䌁'=>1,'緇'=>1,'縂'=>1,'繅'=>1,'䌴'=>1,'𦈨'=>1,'𦉇'=>1,'䍙'=>1,'𦋙'=>1,'罺'=>1,'𦌾'=>1,'羕'=>1,'翺'=>1,'者'=>1,'𦓚'=>1,'𦔣'=>1,'聠'=>1,'𦖨'=>1,'聰'=>1,'𣍟'=>1,'䏕'=>1,'育'=>1,'脃'=>1,'䐋'=>1,'脾'=>1,'媵'=>1,'𦞧'=>1,'𦞵'=>1,'𣎓'=>1,'𣎜'=>1,'舁'=>1,'舄'=>1,'辞'=>1,'䑫'=>1,'芑'=>1,'芋'=>1,'芝'=>1,'劳'=>1,'花'=>1,'芳'=>1,'芽'=>1,'苦'=>1,'𦬼'=>1,'若'=>1,'茝'=>1,'荣'=>1,'莭'=>1,'茣'=>1,'莽'=>1,'菧'=>1,'著'=>1,'荓'=>1,'菊'=>1,'菌'=>1,'菜'=>1,'𦰶'=>1,'𦵫'=>1,'𦳕'=>1,'䔫'=>1,'蓱'=>1,'蓳'=>1,'蔖'=>1,'𧏊'=>1,'蕤'=>1,'𦼬'=>1,'䕝'=>1,'䕡'=>1,'𦾱'=>1,'𧃒'=>1,'䕫'=>1,'虐'=>1,'虜'=>1,'虧'=>1,'虩'=>1,'蚩'=>1,'蚈'=>1,'蜎'=>1,'蛢'=>1,'蝹'=>1,'蜨'=>1,'蝫'=>1,'螆'=>1,'䗗'=>1,'蟡'=>1,'蠁'=>1,'䗹'=>1,'衠'=>1,'衣'=>1,'𧙧'=>1,'裗'=>1,'裞'=>1,'䘵'=>1,'裺'=>1,'㒻'=>1,'𧢮'=>1,'𧥦'=>1,'䚾'=>1,'䛇'=>1,'誠'=>1,'諭'=>1,'變'=>1,'豕'=>1,'𧲨'=>1,'貫'=>1,'賁'=>1,'贛'=>1,'起'=>1,'𧼯'=>1,'𠠄'=>1,'跋'=>1,'趼'=>1,'跰'=>1,'𠣞'=>1,'軔'=>1,'輸'=>1,'𨗒'=>1,'𨗭'=>1,'邔'=>1,'郱'=>1,'鄑'=>1,'𨜮'=>1,'鄛'=>1,'鈸'=>1,'鋗'=>1,'鋘'=>1,'鉼'=>1,'鏹'=>1,'鐕'=>1,'𨯺'=>1,'開'=>1,'䦕'=>1,'閷'=>1,'𨵷'=>1,'䧦'=>1,'雃'=>1,'嶲'=>1,'霣'=>1,'𩅅'=>1,'𩈚'=>1,'䩮'=>1,'䩶'=>1,'韠'=>1,'𩐊'=>1,'䪲'=>1,'𩒖'=>1,'頋'=>1,'頋'=>1,'頩'=>1,'𩖶'=>1,'飢'=>1,'䬳'=>1,'餩'=>1,'馧'=>1,'駂'=>1,'駾'=>1,'䯎'=>1,'𩬰'=>1,'鬒'=>1,'鱀'=>1,'鳽'=>1,'䳎'=>1,'䳭'=>1,'鵧'=>1,'𪃎'=>1,'䳸'=>1,'𪄅'=>1,'𪈎'=>1,'𪊑'=>1,'麻'=>1,'䵖'=>1,'黹'=>1,'黾'=>1,'鼅'=>1,'鼏'=>1,'鼖'=>1,'鼻'=>1,'𪘀'=>1,'̀'=>0,'́'=>0,'̂'=>0,'̃'=>0,'̄'=>0,'̆'=>0,'̇'=>0,'̈'=>0,'̉'=>0,'̊'=>0,'̋'=>0,'̌'=>0,'̏'=>0,'̑'=>0,'̓'=>0,'̔'=>0,'̛'=>0,'̣'=>0,'̤'=>0,'̥'=>0,'̦'=>0,'̧'=>0,'̨'=>0,'̭'=>0,'̮'=>0,'̰'=>0,'̱'=>0,'̸'=>0,'͂'=>0,'ͅ'=>0,'ٓ'=>0,'ٔ'=>0,'ٕ'=>0,'़'=>0,'া'=>0,'ৗ'=>0,'ା'=>0,'ୖ'=>0,'ୗ'=>0,'ா'=>0,'ௗ'=>0,'ౖ'=>0,'ೂ'=>0,'ೕ'=>0,'ೖ'=>0,'ാ'=>0,'ൗ'=>0,'්'=>0,'ා'=>0,'ෟ'=>0,'ီ'=>0,'ᅡ'=>0,'ᅢ'=>0,'ᅣ'=>0,'ᅤ'=>0,'ᅥ'=>0,'ᅦ'=>0,'ᅧ'=>0,'ᅨ'=>0,'ᅩ'=>0,'ᅪ'=>0,'ᅫ'=>0,'ᅬ'=>0,'ᅭ'=>0,'ᅮ'=>0,'ᅯ'=>0,'ᅰ'=>0,'ᅱ'=>0,'ᅲ'=>0,'ᅳ'=>0,'ᅴ'=>0,'ᅵ'=>0,'ᆨ'=>0,'ᆩ'=>0,'ᆪ'=>0,'ᆫ'=>0,'ᆬ'=>0,'ᆭ'=>0,'ᆮ'=>0,'ᆯ'=>0,'ᆰ'=>0,'ᆱ'=>0,'ᆲ'=>0,'ᆳ'=>0,'ᆴ'=>0,'ᆵ'=>0,'ᆶ'=>0,'ᆷ'=>0,'ᆸ'=>0,'ᆹ'=>0,'ᆺ'=>0,'ᆻ'=>0,'ᆼ'=>0,'ᆽ'=>0,'ᆾ'=>0,'ᆿ'=>0,'ᇀ'=>0,'ᇁ'=>0,'ᇂ'=>0,'ᬵ'=>0,'゙'=>0,'゚'=>0); diff --git a/phpBB/includes/utf/data/utf_normalizer_common.php b/phpBB/includes/utf/data/utf_normalizer_common.php deleted file mode 100644 index 2eb7feac69..0000000000 --- a/phpBB/includes/utf/data/utf_normalizer_common.php +++ /dev/null @@ -1,4 +0,0 @@ -<?php -$GLOBALS['utf_jamo_index']=array('ᄀ'=>44032,'ᄁ'=>44620,'ᄂ'=>45208,'ᄃ'=>45796,'ᄄ'=>46384,'ᄅ'=>46972,'ᄆ'=>47560,'ᄇ'=>48148,'ᄈ'=>48736,'ᄉ'=>49324,'ᄊ'=>49912,'ᄋ'=>50500,'ᄌ'=>51088,'ᄍ'=>51676,'ᄎ'=>52264,'ᄏ'=>52852,'ᄐ'=>53440,'ᄑ'=>54028,'ᄒ'=>54616,'ᅡ'=>0,'ᅢ'=>28,'ᅣ'=>56,'ᅤ'=>84,'ᅥ'=>112,'ᅦ'=>140,'ᅧ'=>168,'ᅨ'=>196,'ᅩ'=>224,'ᅪ'=>252,'ᅫ'=>280,'ᅬ'=>308,'ᅭ'=>336,'ᅮ'=>364,'ᅯ'=>392,'ᅰ'=>420,'ᅱ'=>448,'ᅲ'=>476,'ᅳ'=>504,'ᅴ'=>532,'ᅵ'=>560,'ᆧ'=>0,'ᆨ'=>1,'ᆩ'=>2,'ᆪ'=>3,'ᆫ'=>4,'ᆬ'=>5,'ᆭ'=>6,'ᆮ'=>7,'ᆯ'=>8,'ᆰ'=>9,'ᆱ'=>10,'ᆲ'=>11,'ᆳ'=>12,'ᆴ'=>13,'ᆵ'=>14,'ᆶ'=>15,'ᆷ'=>16,'ᆸ'=>17,'ᆹ'=>18,'ᆺ'=>19,'ᆻ'=>20,'ᆼ'=>21,'ᆽ'=>22,'ᆾ'=>23,'ᆿ'=>24,'ᇀ'=>25,'ᇁ'=>26,'ᇂ'=>27); -$GLOBALS['utf_jamo_type']=array('ᄀ'=>0,'ᄁ'=>0,'ᄂ'=>0,'ᄃ'=>0,'ᄄ'=>0,'ᄅ'=>0,'ᄆ'=>0,'ᄇ'=>0,'ᄈ'=>0,'ᄉ'=>0,'ᄊ'=>0,'ᄋ'=>0,'ᄌ'=>0,'ᄍ'=>0,'ᄎ'=>0,'ᄏ'=>0,'ᄐ'=>0,'ᄑ'=>0,'ᄒ'=>0,'ᅡ'=>1,'ᅢ'=>1,'ᅣ'=>1,'ᅤ'=>1,'ᅥ'=>1,'ᅦ'=>1,'ᅧ'=>1,'ᅨ'=>1,'ᅩ'=>1,'ᅪ'=>1,'ᅫ'=>1,'ᅬ'=>1,'ᅭ'=>1,'ᅮ'=>1,'ᅯ'=>1,'ᅰ'=>1,'ᅱ'=>1,'ᅲ'=>1,'ᅳ'=>1,'ᅴ'=>1,'ᅵ'=>1,'ᆧ'=>2,'ᆨ'=>2,'ᆩ'=>2,'ᆪ'=>2,'ᆫ'=>2,'ᆬ'=>2,'ᆭ'=>2,'ᆮ'=>2,'ᆯ'=>2,'ᆰ'=>2,'ᆱ'=>2,'ᆲ'=>2,'ᆳ'=>2,'ᆴ'=>2,'ᆵ'=>2,'ᆶ'=>2,'ᆷ'=>2,'ᆸ'=>2,'ᆹ'=>2,'ᆺ'=>2,'ᆻ'=>2,'ᆼ'=>2,'ᆽ'=>2,'ᆾ'=>2,'ᆿ'=>2,'ᇀ'=>2,'ᇁ'=>2,'ᇂ'=>2); -$GLOBALS['utf_combining_class']=array('̀'=>230,'́'=>230,'̂'=>230,'̃'=>230,'̄'=>230,'̅'=>230,'̆'=>230,'̇'=>230,'̈'=>230,'̉'=>230,'̊'=>230,'̋'=>230,'̌'=>230,'̍'=>230,'̎'=>230,'̏'=>230,'̐'=>230,'̑'=>230,'̒'=>230,'̓'=>230,'̔'=>230,'̕'=>232,'̖'=>220,'̗'=>220,'̘'=>220,'̙'=>220,'̚'=>232,'̛'=>216,'̜'=>220,'̝'=>220,'̞'=>220,'̟'=>220,'̠'=>220,'̡'=>202,'̢'=>202,'̣'=>220,'̤'=>220,'̥'=>220,'̦'=>220,'̧'=>202,'̨'=>202,'̩'=>220,'̪'=>220,'̫'=>220,'̬'=>220,'̭'=>220,'̮'=>220,'̯'=>220,'̰'=>220,'̱'=>220,'̲'=>220,'̳'=>220,'̴'=>1,'̵'=>1,'̶'=>1,'̷'=>1,'̸'=>1,'̹'=>220,'̺'=>220,'̻'=>220,'̼'=>220,'̽'=>230,'̾'=>230,'̿'=>230,'̀'=>230,'́'=>230,'͂'=>230,'̓'=>230,'̈́'=>230,'ͅ'=>240,'͆'=>230,'͇'=>220,'͈'=>220,'͉'=>220,'͊'=>230,'͋'=>230,'͌'=>230,'͍'=>220,'͎'=>220,'͐'=>230,'͑'=>230,'͒'=>230,'͓'=>220,'͔'=>220,'͕'=>220,'͖'=>220,'͗'=>230,'͘'=>232,'͙'=>220,'͚'=>220,'͛'=>230,'͜'=>233,'͝'=>234,'͞'=>234,'͟'=>233,'͠'=>234,'͡'=>234,'͢'=>233,'ͣ'=>230,'ͤ'=>230,'ͥ'=>230,'ͦ'=>230,'ͧ'=>230,'ͨ'=>230,'ͩ'=>230,'ͪ'=>230,'ͫ'=>230,'ͬ'=>230,'ͭ'=>230,'ͮ'=>230,'ͯ'=>230,'҃'=>230,'҄'=>230,'҅'=>230,'҆'=>230,'֑'=>220,'֒'=>230,'֓'=>230,'֔'=>230,'֕'=>230,'֖'=>220,'֗'=>230,'֘'=>230,'֙'=>230,'֚'=>222,'֛'=>220,'֜'=>230,'֝'=>230,'֞'=>230,'֟'=>230,'֠'=>230,'֡'=>230,'֢'=>220,'֣'=>220,'֤'=>220,'֥'=>220,'֦'=>220,'֧'=>220,'֨'=>230,'֩'=>230,'֪'=>220,'֫'=>230,'֬'=>230,'֭'=>222,'֮'=>228,'֯'=>230,'ְ'=>10,'ֱ'=>11,'ֲ'=>12,'ֳ'=>13,'ִ'=>14,'ֵ'=>15,'ֶ'=>16,'ַ'=>17,'ָ'=>18,'ֹ'=>19,'ֺ'=>19,'ֻ'=>20,'ּ'=>21,'ֽ'=>22,'ֿ'=>23,'ׁ'=>24,'ׂ'=>25,'ׄ'=>230,'ׅ'=>220,'ׇ'=>18,'ؐ'=>230,'ؑ'=>230,'ؒ'=>230,'ؓ'=>230,'ؔ'=>230,'ؕ'=>230,'ً'=>27,'ٌ'=>28,'ٍ'=>29,'َ'=>30,'ُ'=>31,'ِ'=>32,'ّ'=>33,'ْ'=>34,'ٓ'=>230,'ٔ'=>230,'ٕ'=>220,'ٖ'=>220,'ٗ'=>230,'٘'=>230,'ٙ'=>230,'ٚ'=>230,'ٛ'=>230,'ٜ'=>220,'ٝ'=>230,'ٞ'=>230,'ٰ'=>35,'ۖ'=>230,'ۗ'=>230,'ۘ'=>230,'ۙ'=>230,'ۚ'=>230,'ۛ'=>230,'ۜ'=>230,'۟'=>230,'۠'=>230,'ۡ'=>230,'ۢ'=>230,'ۣ'=>220,'ۤ'=>230,'ۧ'=>230,'ۨ'=>230,'۪'=>220,'۫'=>230,'۬'=>230,'ۭ'=>220,'ܑ'=>36,'ܰ'=>230,'ܱ'=>220,'ܲ'=>230,'ܳ'=>230,'ܴ'=>220,'ܵ'=>230,'ܶ'=>230,'ܷ'=>220,'ܸ'=>220,'ܹ'=>220,'ܺ'=>230,'ܻ'=>220,'ܼ'=>220,'ܽ'=>230,'ܾ'=>220,'ܿ'=>230,'݀'=>230,'݁'=>230,'݂'=>220,'݃'=>230,'݄'=>220,'݅'=>230,'݆'=>220,'݇'=>230,'݈'=>220,'݉'=>230,'݊'=>230,'߫'=>230,'߬'=>230,'߭'=>230,'߮'=>230,'߯'=>230,'߰'=>230,'߱'=>230,'߲'=>220,'߳'=>230,'़'=>7,'्'=>9,'॑'=>230,'॒'=>220,'॓'=>230,'॔'=>230,'়'=>7,'্'=>9,'਼'=>7,'੍'=>9,'઼'=>7,'્'=>9,'଼'=>7,'୍'=>9,'்'=>9,'్'=>9,'ౕ'=>84,'ౖ'=>91,'಼'=>7,'್'=>9,'്'=>9,'්'=>9,'ุ'=>103,'ู'=>103,'ฺ'=>9,'่'=>107,'้'=>107,'๊'=>107,'๋'=>107,'ຸ'=>118,'ູ'=>118,'່'=>122,'້'=>122,'໊'=>122,'໋'=>122,'༘'=>220,'༙'=>220,'༵'=>220,'༷'=>220,'༹'=>216,'ཱ'=>129,'ི'=>130,'ུ'=>132,'ེ'=>130,'ཻ'=>130,'ོ'=>130,'ཽ'=>130,'ྀ'=>130,'ྂ'=>230,'ྃ'=>230,'྄'=>9,'྆'=>230,'྇'=>230,'࿆'=>220,'့'=>7,'္'=>9,'፟'=>230,'᜔'=>9,'᜴'=>9,'្'=>9,'៝'=>230,'ᢩ'=>228,'᤹'=>222,'᤺'=>230,'᤻'=>220,'ᨗ'=>230,'ᨘ'=>220,'᬴'=>7,'᭄'=>9,'᭫'=>230,'᭬'=>220,'᭭'=>230,'᭮'=>230,'᭯'=>230,'᭰'=>230,'᭱'=>230,'᭲'=>230,'᭳'=>230,'᷀'=>230,'᷁'=>230,'᷂'=>220,'᷃'=>230,'᷄'=>230,'᷅'=>230,'᷆'=>230,'᷇'=>230,'᷈'=>230,'᷉'=>230,'᷊'=>220,'᷾'=>230,'᷿'=>220,'⃐'=>230,'⃑'=>230,'⃒'=>1,'⃓'=>1,'⃔'=>230,'⃕'=>230,'⃖'=>230,'⃗'=>230,'⃘'=>1,'⃙'=>1,'⃚'=>1,'⃛'=>230,'⃜'=>230,'⃡'=>230,'⃥'=>1,'⃦'=>1,'⃧'=>230,'⃨'=>220,'⃩'=>230,'⃪'=>1,'⃫'=>1,'⃬'=>220,'⃭'=>220,'⃮'=>220,'⃯'=>220,'〪'=>218,'〫'=>228,'〬'=>232,'〭'=>222,'〮'=>224,'〯'=>224,'゙'=>8,'゚'=>8,'꠆'=>9,'ﬞ'=>26,'︠'=>230,'︡'=>230,'︢'=>230,'︣'=>230,'𐨍'=>220,'𐨏'=>230,'𐨸'=>230,'𐨹'=>1,'𐨺'=>220,'𐨿'=>9,'𝅥'=>216,'𝅦'=>216,'𝅧'=>1,'𝅨'=>1,'𝅩'=>1,'𝅭'=>226,'𝅮'=>216,'𝅯'=>216,'𝅰'=>216,'𝅱'=>216,'𝅲'=>216,'𝅻'=>220,'𝅼'=>220,'𝅽'=>220,'𝅾'=>220,'𝅿'=>220,'𝆀'=>220,'𝆁'=>220,'𝆂'=>220,'𝆅'=>230,'𝆆'=>230,'𝆇'=>230,'𝆈'=>230,'𝆉'=>230,'𝆊'=>220,'𝆋'=>220,'𝆪'=>230,'𝆫'=>230,'𝆬'=>230,'𝆭'=>230,'𝉂'=>230,'𝉃'=>230,'𝉄'=>230); diff --git a/phpBB/includes/utf/utf_normalizer.php b/phpBB/includes/utf/utf_normalizer.php deleted file mode 100644 index bbb23a6617..0000000000 --- a/phpBB/includes/utf/utf_normalizer.php +++ /dev/null @@ -1,1509 +0,0 @@ -<?php -/** -* -* This file is part of the phpBB Forum Software package. -* -* @copyright (c) phpBB Limited <https://www.phpbb.com> -* @license GNU General Public License, version 2 (GPL-2.0) -* -* For full copyright and license information, please see -* the docs/CREDITS.txt file. -* -*/ - -/** -*/ -if (!defined('IN_PHPBB')) -{ -	exit; -} - -/** -* Some Unicode characters encoded in UTF-8 -* -* Preserved for compatibility -*/ -define('UTF8_REPLACEMENT', "\xEF\xBF\xBD"); -define('UTF8_MAX', "\xF4\x8F\xBF\xBF"); -define('UTF8_FFFE', "\xEF\xBF\xBE"); -define('UTF8_FFFF', "\xEF\xBF\xBF"); -define('UTF8_SURROGATE_FIRST', "\xED\xA0\x80"); -define('UTF8_SURROGATE_LAST', "\xED\xBF\xBF"); -define('UTF8_HANGUL_FIRST', "\xEA\xB0\x80"); -define('UTF8_HANGUL_LAST', "\xED\x9E\xA3"); - -define('UTF8_CJK_FIRST', "\xE4\xB8\x80"); -define('UTF8_CJK_LAST', "\xE9\xBE\xBB"); -define('UTF8_CJK_B_FIRST', "\xF0\xA0\x80\x80"); -define('UTF8_CJK_B_LAST', "\xF0\xAA\x9B\x96"); - -// Unset global variables -unset($GLOBALS['utf_jamo_index'], $GLOBALS['utf_jamo_type'], $GLOBALS['utf_nfc_qc'], $GLOBALS['utf_combining_class'], $GLOBALS['utf_canonical_comp'], $GLOBALS['utf_canonical_decomp'], $GLOBALS['utf_nfkc_qc'], $GLOBALS['utf_compatibility_decomp']); - -// NFC_QC and NFKC_QC values -define('UNICODE_QC_MAYBE', 0); -define('UNICODE_QC_NO', 1); - -// Contains all the ASCII characters appearing in UTF-8, sorted by frequency -define('UTF8_ASCII_RANGE', "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"); - -// Contains all the tail bytes that can appear in the composition of a UTF-8 char -define('UTF8_TRAILING_BYTES', "\xA9\xA0\xA8\x80\xAA\x99\xA7\xBB\xAB\x89\x94\x82\xB4\xA2\xAE\x83\xB0\xB9\xB8\x93\xAF\xBC\xB3\x81\xA4\xB2\x9C\xA1\xB5\xBE\xBD\xBA\x98\xAD\xB1\x84\x95\xA6\xB6\x88\x8D\x90\xB7\xBF\x92\x85\xA5\x97\x8C\x86\xA3\x8E\x9F\x8F\x87\x91\x9D\xAC\x9E\x8B\x96\x9B\x8A\x9A"); - -// Constants used by the Hangul [de]composition algorithms -define('UNICODE_HANGUL_SBASE', 0xAC00); -define('UNICODE_HANGUL_LBASE', 0x1100); -define('UNICODE_HANGUL_VBASE', 0x1161); -define('UNICODE_HANGUL_TBASE', 0x11A7); -define('UNICODE_HANGUL_SCOUNT', 11172); -define('UNICODE_HANGUL_LCOUNT', 19); -define('UNICODE_HANGUL_VCOUNT', 21); -define('UNICODE_HANGUL_TCOUNT', 28); -define('UNICODE_HANGUL_NCOUNT', 588); -define('UNICODE_JAMO_L', 0); -define('UNICODE_JAMO_V', 1); -define('UNICODE_JAMO_T', 2); - -/** -* Unicode normalization routines -*/ -class utf_normalizer -{ -	/** -	* Validate, cleanup and normalize a string -	* -	* The ultimate convenience function! Clean up invalid UTF-8 sequences, -	* and convert to Normal Form C, canonical composition. -	* -	* @param	string	&$str	The dirty string -	* @return	string			The same string, all shiny and cleaned-up -	*/ -	static function cleanup(&$str) -	{ -		// The string below is the list of all autorized characters, sorted by frequency in latin text -		$pos = strspn($str, "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x0D"); -		$len = strlen($str); - -		if ($pos == $len) -		{ -			// ASCII strings with no special chars return immediately -			return; -		} - -		// Note: we do not check for $GLOBALS['utf_canonical_decomp']. It is assumed they are always loaded together -		if (!isset($GLOBALS['utf_nfc_qc'])) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/utf/data/utf_nfc_qc.' . $phpEx); -		} - -		if (!isset($GLOBALS['utf_canonical_decomp'])) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/utf/data/utf_canonical_decomp.' . $phpEx); -		} - -		// Replace any byte in the range 0x00..0x1F, except for \r, \n and \t -		// We replace those characters with a 0xFF byte, which is illegal in UTF-8 and will in turn be replaced with a UTF replacement char -		$str = strtr( -			$str, -			"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F", -			"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" -		); - -		$str = utf_normalizer::recompose($str, $pos, $len, $GLOBALS['utf_nfc_qc'], $GLOBALS['utf_canonical_decomp']); -	} - -	/** -	* Validate and normalize a UTF string to NFC -	* -	* @param	string	&$str	Unchecked UTF string -	* @return	string			The string, validated and in normal form -	*/ -	static function nfc(&$str) -	{ -		$pos = strspn($str, UTF8_ASCII_RANGE); -		$len = strlen($str); - -		if ($pos == $len) -		{ -			// ASCII strings return immediately -			return; -		} - -		if (!isset($GLOBALS['utf_nfc_qc'])) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/utf/data/utf_nfc_qc.' . $phpEx); -		} - -		if (!isset($GLOBALS['utf_canonical_decomp'])) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/utf/data/utf_canonical_decomp.' . $phpEx); -		} - -		$str = utf_normalizer::recompose($str, $pos, $len, $GLOBALS['utf_nfc_qc'], $GLOBALS['utf_canonical_decomp']); -	} - -	/** -	* Validate and normalize a UTF string to NFKC -	* -	* @param	string	&$str	Unchecked UTF string -	* @return	string			The string, validated and in normal form -	*/ -	static function nfkc(&$str) -	{ -		$pos = strspn($str, UTF8_ASCII_RANGE); -		$len = strlen($str); - -		if ($pos == $len) -		{ -			// ASCII strings return immediately -			return; -		} - -		if (!isset($GLOBALS['utf_nfkc_qc'])) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/utf/data/utf_nfkc_qc.' . $phpEx); -		} - -		if (!isset($GLOBALS['utf_compatibility_decomp'])) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/utf/data/utf_compatibility_decomp.' . $phpEx); -		} - -		$str = utf_normalizer::recompose($str, $pos, $len, $GLOBALS['utf_nfkc_qc'], $GLOBALS['utf_compatibility_decomp']); -	} - -	/** -	* Validate and normalize a UTF string to NFD -	* -	* @param	string	&$str	Unchecked UTF string -	* @return	string			The string, validated and in normal form -	*/ -	static function nfd(&$str) -	{ -		$pos = strspn($str, UTF8_ASCII_RANGE); -		$len = strlen($str); - -		if ($pos == $len) -		{ -			// ASCII strings return immediately -			return; -		} - -		if (!isset($GLOBALS['utf_canonical_decomp'])) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/utf/data/utf_canonical_decomp.' . $phpEx); -		} - -		$str = utf_normalizer::decompose($str, $pos, $len, $GLOBALS['utf_canonical_decomp']); -	} - -	/** -	* Validate and normalize a UTF string to NFKD -	* -	* @param	string	&$str	Unchecked UTF string -	* @return	string			The string, validated and in normal form -	*/ -	static function nfkd(&$str) -	{ -		$pos = strspn($str, UTF8_ASCII_RANGE); -		$len = strlen($str); - -		if ($pos == $len) -		{ -			// ASCII strings return immediately -			return; -		} - -		if (!isset($GLOBALS['utf_compatibility_decomp'])) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/utf/data/utf_compatibility_decomp.' . $phpEx); -		} - -		$str = utf_normalizer::decompose($str, $pos, $len, $GLOBALS['utf_compatibility_decomp']); -	} - - -	/** -	* Recompose a UTF string -	* -	* @param	string	$str			Unchecked UTF string -	* @param	integer	$pos			Position of the first UTF char (in bytes) -	* @param	integer	$len			Length of the string (in bytes) -	* @param	array	&$qc			Quick-check array, passed by reference but never modified -	* @param	array	&$decomp_map	Decomposition mapping, passed by reference but never modified -	* @return	string					The string, validated and recomposed -	* -	* @access	private -	*/ -	static function recompose($str, $pos, $len, &$qc, &$decomp_map) -	{ -		global $utf_combining_class, $utf_canonical_comp, $utf_jamo_type, $utf_jamo_index; - -		// Load some commonly-used tables -		if (!isset($utf_jamo_index, $utf_jamo_type, $utf_combining_class)) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/utf/data/utf_normalizer_common.' . $phpEx); -		} - -		// Load the canonical composition table -		if (!isset($utf_canonical_comp)) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/utf/data/utf_canonical_comp.' . $phpEx); -		} - -		// Buffer the last ASCII char before the UTF-8 stuff if applicable -		$tmp = ''; -		$i = $tmp_pos = $last_cc = 0; - -		$buffer = ($pos) ? array(++$i => $str[$pos - 1]) : array(); - -		// UTF char length array -		// This array is used to determine the length of a UTF character. -		// Be $c the result of ($str[$pos] & "\xF0") --where $str is the string we're operating on and $pos -		// the position of the cursor--, if $utf_len_mask[$c] does not exist, the byte is an ASCII char. -		// Otherwise, if $utf_len_mask[$c] is greater than 0, we have a the leading byte of a multibyte character -		// whose length is $utf_len_mask[$c] and if it is equal to 0, the byte is a trailing byte. -		$utf_len_mask = array( -			// Leading bytes masks -			"\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4, -			// Trailing bytes masks -			"\x80" => 0, "\x90" => 0, "\xA0" => 0, "\xB0" => 0 -		); - -		$extra_check = array( -			"\xED" => 1, "\xEF" => 1, "\xC0" => 1, "\xC1" => 1, "\xE0" => 1, "\xF0" => 1, -			"\xF4" => 1, "\xF5" => 1, "\xF6" => 1, "\xF7" => 1, "\xF8" => 1, "\xF9" => 1, -			"\xFA" => 1, "\xFB" => 1, "\xFC" => 1, "\xFD" => 1, "\xFE" => 1, "\xFF" => 1 -		); - -		$utf_validation_mask = array( -			2	=> "\xE0\xC0", -			3	=> "\xF0\xC0\xC0", -			4	=> "\xF8\xC0\xC0\xC0" -		); - -		$utf_validation_check = array( -			2	=> "\xC0\x80", -			3	=> "\xE0\x80\x80", -			4	=> "\xF0\x80\x80\x80" -		); - -		// Main loop -		do -		{ -			// STEP 0: Capture the current char and buffer it -			$c = $str[$pos]; -			$c_mask = $c & "\xF0"; - -			if (isset($utf_len_mask[$c_mask])) -			{ -				// Byte at $pos is either a leading byte or a missplaced trailing byte -				if ($utf_len = $utf_len_mask[$c_mask]) -				{ -					// Capture the char -					$buffer[++$i & 7] = $utf_char = substr($str, $pos, $utf_len); - -					// Let's find out if a thorough check is needed -					if (isset($qc[$utf_char])) -					{ -						// If the UTF char is in the qc array then it may not be in normal form. We do nothing here, the actual processing is below this "if" block -					} -					else if (isset($utf_combining_class[$utf_char])) -					{ -						if ($utf_combining_class[$utf_char] < $last_cc) -						{ -							// A combining character that is NOT canonically ordered -						} -						else -						{ -							// A combining character that IS canonically ordered, skip to the next char -							$last_cc = $utf_combining_class[$utf_char]; - -							$pos += $utf_len; -							continue; -						} -					} -					else -					{ -						// At this point, $utf_char holds a UTF char that we know is not a NF[K]C_QC and is not a combining character. -						// It can be a singleton, a canonical composite, a replacement char or an even an ill-formed bunch of bytes. Let's find out -						$last_cc = 0; - -						// Check that we have the correct number of trailing bytes -						if (($utf_char & $utf_validation_mask[$utf_len]) != $utf_validation_check[$utf_len]) -						{ -							// Current char isn't well-formed or legal: either one or several trailing bytes are missing, or the Unicode char -							// has been encoded in a five- or six- byte sequence -							if ($utf_char[0] >= "\xF8") -							{ -								if ($utf_char[0] < "\xFC") -								{ -									$trailing_bytes = 4; -								} -								else if ($utf_char[0] > "\xFD") -								{ -									$trailing_bytes = 0; -								} -								else -								{ -									$trailing_bytes = 5; -								} -							} -							else -							{ -								$trailing_bytes = $utf_len - 1; -							} - -							$tmp .= substr($str, $tmp_pos, $pos - $tmp_pos) . UTF8_REPLACEMENT; -							$pos += strspn($str, UTF8_TRAILING_BYTES, ++$pos, $trailing_bytes); -							$tmp_pos = $pos; - -							continue; -						} - -						if (isset($extra_check[$c])) -						{ -							switch ($c) -							{ -								// Note: 0xED is quite common in Korean -								case "\xED": -									if ($utf_char >= "\xED\xA0\x80") -									{ -										// Surrogates (U+D800..U+DFFF) are not allowed in UTF-8 (UTF sequence 0xEDA080..0xEDBFBF) -										$tmp .= substr($str, $tmp_pos, $pos - $tmp_pos) . UTF8_REPLACEMENT; -										$pos += $utf_len; -										$tmp_pos = $pos; -										continue 2; -									} -								break; - -								// Note: 0xEF is quite common in Japanese -								case "\xEF": -									if ($utf_char == "\xEF\xBF\xBE" || $utf_char == "\xEF\xBF\xBF") -									{ -										// U+FFFE and U+FFFF are explicitly disallowed (UTF sequence 0xEFBFBE..0xEFBFBF) -										$tmp .= substr($str, $tmp_pos, $pos - $tmp_pos) . UTF8_REPLACEMENT; -										$pos += $utf_len; -										$tmp_pos = $pos; -										continue 2; -									} -								break; - -								case "\xC0": -								case "\xC1": -									if ($utf_char <= "\xC1\xBF") -									{ -										// Overlong sequence: Unicode char U+0000..U+007F encoded as a double-byte UTF char -										$tmp .= substr($str, $tmp_pos, $pos - $tmp_pos) . UTF8_REPLACEMENT; -										$pos += $utf_len; -										$tmp_pos = $pos; -										continue 2; -									} -								break; - -								case "\xE0": -									if ($utf_char <= "\xE0\x9F\xBF") -									{ -										// Unicode char U+0000..U+07FF encoded in 3 bytes -										$tmp .= substr($str, $tmp_pos, $pos - $tmp_pos) . UTF8_REPLACEMENT; -										$pos += $utf_len; -										$tmp_pos = $pos; -										continue 2; -									} -								break; - -								case "\xF0": -									if ($utf_char <= "\xF0\x8F\xBF\xBF") -									{ -										// Unicode char U+0000..U+FFFF encoded in 4 bytes -										$tmp .= substr($str, $tmp_pos, $pos - $tmp_pos) . UTF8_REPLACEMENT; -										$pos += $utf_len; -										$tmp_pos = $pos; -										continue 2; -									} -								break; - -								default: -									// Five- and six- byte sequences do not need being checked for here anymore -									if ($utf_char > UTF8_MAX) -									{ -										// Out of the Unicode range -										if ($utf_char[0] < "\xF8") -										{ -											$trailing_bytes = 3; -										} -										else if ($utf_char[0] < "\xFC") -										{ -											$trailing_bytes = 4; -										} -										else if ($utf_char[0] > "\xFD") -										{ -											$trailing_bytes = 0; -										} -										else -										{ -											$trailing_bytes = 5; -										} - -										$tmp .= substr($str, $tmp_pos, $pos - $tmp_pos) . UTF8_REPLACEMENT; -										$pos += strspn($str, UTF8_TRAILING_BYTES, ++$pos, $trailing_bytes); -										$tmp_pos = $pos; -										continue 2; -									} -								break; -							} -						} - -						// The char is a valid starter, move the cursor and go on -						$pos += $utf_len; -						continue; -					} -				} -				else -				{ -					// A trailing byte came out of nowhere, we will advance the cursor and treat the this byte and all following trailing bytes as if -					// each of them was a Unicode replacement char -					$spn = strspn($str, UTF8_TRAILING_BYTES, $pos); -					$tmp .= substr($str, $tmp_pos, $pos - $tmp_pos) . str_repeat(UTF8_REPLACEMENT, $spn); - -					$pos += $spn; -					$tmp_pos = $pos; -					continue; -				} - -				// STEP 1: Decompose current char - -				// We have found a character that is either: -				//  - in the NFC_QC/NFKC_QC list -				//  - a non-starter char that is not canonically ordered -				// -				// We are going to capture the shortest UTF sequence that satisfies these two conditions: -				// -				//  1 - If the sequence does not start at the begginning of the string, it must begin with a starter, -				// and that starter must not have the NF[K]C_QC property equal to "MAYBE" -				// -				//  2 - If the sequence does not end at the end of the string, it must end with a non-starter and be -				// immediately followed by a starter that is not on the QC list -				// -				$utf_seq = array(); -				$last_cc = 0; -				$lpos = $pos; -				$pos += $utf_len; - -				if (isset($decomp_map[$utf_char])) -				{ -					$_pos = 0; -					$_len = strlen($decomp_map[$utf_char]); - -					do -					{ -						$_utf_len =& $utf_len_mask[$decomp_map[$utf_char][$_pos] & "\xF0"]; - -						if (isset($_utf_len)) -						{ -							$utf_seq[] = substr($decomp_map[$utf_char], $_pos, $_utf_len); -							$_pos += $_utf_len; -						} -						else -						{ -							$utf_seq[] = $decomp_map[$utf_char][$_pos]; -							++$_pos; -						} -					} -					while ($_pos < $_len); -				} -				else -				{ -					// The char is not decomposable -					$utf_seq = array($utf_char); -				} - -				// STEP 2: Capture the starter - -				// Check out the combining class of the first character of the UTF sequence -				$k = 0; -				if (isset($utf_combining_class[$utf_seq[0]]) || $qc[$utf_char] == UNICODE_QC_MAYBE) -				{ -					// Not a starter, inspect previous characters -					// The last 8 characters are kept in a buffer so that we don't have to capture them everytime. -					// This is enough for all real-life strings but even if it wasn't, we can capture characters in backward mode, -					// although it is slower than this method. -					// -					// In the following loop, $j starts at the previous buffered character ($i - 1, because current character is -					// at offset $i) and process them in backward mode until we find a starter. -					// -					// $k is the index on each UTF character inside of our UTF sequence. At this time, $utf_seq contains one or more -					// characters numbered 0 to n. $k starts at 0 and for each char we prepend we pre-decrement it and for numbering -					$starter_found = 0; -					$j_min = max(1, $i - 7); - -					for ($j = $i - 1; $j >= $j_min && $lpos > $tmp_pos; --$j) -					{ -						$utf_char = $buffer[$j & 7]; -						$lpos -= strlen($utf_char); - -						if (isset($decomp_map[$utf_char])) -						{ -							// The char is a composite, decompose for storage -							$decomp_seq = array(); -							$_pos = 0; -							$_len = strlen($decomp_map[$utf_char]); - -							do -							{ -								$c = $decomp_map[$utf_char][$_pos]; -								$_utf_len =& $utf_len_mask[$c & "\xF0"]; - -								if (isset($_utf_len)) -								{ -									$decomp_seq[] = substr($decomp_map[$utf_char], $_pos, $_utf_len); -									$_pos += $_utf_len; -								} -								else -								{ -									$decomp_seq[] = $c; -									++$_pos; -								} -							} -							while ($_pos < $_len); - -							// Prepend the UTF sequence with our decomposed sequence -							if (isset($decomp_seq[1])) -							{ -								// The char expanded into several chars -								$decomp_cnt = sizeof($decomp_seq); - -								foreach ($decomp_seq as $decomp_i => $decomp_char) -								{ -									$utf_seq[$k + $decomp_i - $decomp_cnt] = $decomp_char; -								} -								$k -= $decomp_cnt; -							} -							else -							{ -								// Decomposed to a single char, easier to prepend -								$utf_seq[--$k] = $decomp_seq[0]; -							} -						} -						else -						{ -							$utf_seq[--$k] = $utf_char; -						} - -						if (!isset($utf_combining_class[$utf_seq[$k]])) -						{ -							// We have found our starter -							$starter_found = 1; -							break; -						} -					} - -					if (!$starter_found && $lpos > $tmp_pos) -					{ -						// The starter was not found in the buffer, let's rewind some more -						do -						{ -							// $utf_len_mask contains the masks of both leading bytes and trailing bytes. If $utf_en > 0 then it's a leading byte, otherwise it's a trailing byte. -							$c = $str[--$lpos]; -							$c_mask = $c & "\xF0"; - -							if (isset($utf_len_mask[$c_mask])) -							{ -								// UTF byte -								if ($utf_len = $utf_len_mask[$c_mask]) -								{ -									// UTF *leading* byte -									$utf_char = substr($str, $lpos, $utf_len); - -									if (isset($decomp_map[$utf_char])) -									{ -										// Decompose the character -										$decomp_seq = array(); -										$_pos = 0; -										$_len = strlen($decomp_map[$utf_char]); - -										do -										{ -											$c = $decomp_map[$utf_char][$_pos]; -											$_utf_len =& $utf_len_mask[$c & "\xF0"]; - -											if (isset($_utf_len)) -											{ -												$decomp_seq[] = substr($decomp_map[$utf_char], $_pos, $_utf_len); -												$_pos += $_utf_len; -											} -											else -											{ -												$decomp_seq[] = $c; -												++$_pos; -											} -										} -										while ($_pos < $_len); - -										// Prepend the UTF sequence with our decomposed sequence -										if (isset($decomp_seq[1])) -										{ -											// The char expanded into several chars -											$decomp_cnt = sizeof($decomp_seq); -											foreach ($decomp_seq as $decomp_i => $utf_char) -											{ -												$utf_seq[$k + $decomp_i - $decomp_cnt] = $utf_char; -											} -											$k -= $decomp_cnt; -										} -										else -										{ -											// Decomposed to a single char, easier to prepend -											$utf_seq[--$k] = $decomp_seq[0]; -										} -									} -									else -									{ -										$utf_seq[--$k] = $utf_char; -									} -								} -							} -							else -							{ -								// ASCII char -								$utf_seq[--$k] = $c; -							} -						} -						while ($lpos > $tmp_pos); -					} -				} - -				// STEP 3: Capture following combining modifiers - -				while ($pos < $len) -				{ -					$c_mask = $str[$pos] & "\xF0"; - -					if (isset($utf_len_mask[$c_mask])) -					{ -						if ($utf_len = $utf_len_mask[$c_mask]) -						{ -							$utf_char = substr($str, $pos, $utf_len); -						} -						else -						{ -							// A trailing byte came out of nowhere -							// Trailing bytes are replaced with Unicode replacement chars, we will just ignore it for now, break out of the loop -							// as if it was a starter (replacement chars ARE starters) and let the next loop replace it -							break; -						} - -						if (isset($utf_combining_class[$utf_char]) || isset($qc[$utf_char])) -						{ -							// Combining character, add it to the sequence and move the cursor -							if (isset($decomp_map[$utf_char])) -							{ -								// Decompose the character -								$_pos = 0; -								$_len = strlen($decomp_map[$utf_char]); - -								do -								{ -									$c = $decomp_map[$utf_char][$_pos]; -									$_utf_len =& $utf_len_mask[$c & "\xF0"]; - -									if (isset($_utf_len)) -									{ -										$utf_seq[] = substr($decomp_map[$utf_char], $_pos, $_utf_len); -										$_pos += $_utf_len; -									} -									else -									{ -										$utf_seq[] = $c; -										++$_pos; -									} -								} -								while ($_pos < $_len); -							} -							else -							{ -								$utf_seq[] = $utf_char; -							} - -							$pos += $utf_len; -						} -						else -						{ -							// Combining class 0 and no QC, break out of the loop -							// Note: we do not know if that character is valid. If it's not, the next iteration will replace it -							break; -						} -					} -					else -					{ -						// ASCII chars are starters -						break; -					} -				} - -				// STEP 4: Sort and combine - -				// Here we sort... -				$k_max = $k + sizeof($utf_seq); - -				if (!$k && $k_max == 1) -				{ -					// There is only one char in the UTF sequence, add it then jump to the next iteration of main loop -						// Note: the two commented lines below can be enabled under PHP5 for a very small performance gain in most cases -//						if (substr_compare($str, $utf_seq[0], $lpos, $pos - $lpos)) -//						{ -						$tmp .= substr($str, $tmp_pos, $lpos - $tmp_pos) . $utf_seq[0]; -						$tmp_pos = $pos; -//						} - -					continue; -				} - -				// ...there we combine -				if (isset($utf_combining_class[$utf_seq[$k]])) -				{ -					$starter = $nf_seq = ''; -				} -				else -				{ -					$starter = $utf_seq[$k++]; -					$nf_seq = ''; -				} -				$utf_sort = array(); - -				// We add an empty char at the end of the UTF char sequence. It will act as a starter and trigger the sort/combine routine -				// at the end of the string without altering it -				$utf_seq[] = ''; - -				do -				{ -					$utf_char = $utf_seq[$k++]; - -					if (isset($utf_combining_class[$utf_char])) -					{ -						$utf_sort[$utf_combining_class[$utf_char]][] = $utf_char; -					} -					else -					{ -						if (empty($utf_sort)) -						{ -							// No combining characters... check for a composite of the two starters -							if (isset($utf_canonical_comp[$starter . $utf_char])) -							{ -								// Good ol' composite character -								$starter = $utf_canonical_comp[$starter . $utf_char]; -							} -							else if (isset($utf_jamo_type[$utf_char])) -							{ -								// Current char is a composable jamo -								if (isset($utf_jamo_type[$starter]) && $utf_jamo_type[$starter] == UNICODE_JAMO_L && $utf_jamo_type[$utf_char] == UNICODE_JAMO_V) -								{ -									// We have a L jamo followed by a V jamo, we are going to prefetch the next char to see if it's a T jamo -									if (isset($utf_jamo_type[$utf_seq[$k]]) && $utf_jamo_type[$utf_seq[$k]] == UNICODE_JAMO_T) -									{ -										// L+V+T jamos, combine to a LVT Hangul syllable ($k is incremented) -										$cp = $utf_jamo_index[$starter] + $utf_jamo_index[$utf_char] + $utf_jamo_index[$utf_seq[$k]]; -										++$k; -									} -									else -									{ -										// L+V jamos, combine to a LV Hangul syllable -										$cp = $utf_jamo_index[$starter] + $utf_jamo_index[$utf_char]; -									} - -									$starter = chr(0xE0 | ($cp >> 12)) . chr(0x80 | (($cp >> 6) & 0x3F)) . chr(0x80 | ($cp & 0x3F)); -								} -								else -								{ -									// Non-composable jamo, just add it to the sequence -									$nf_seq .= $starter; -									$starter = $utf_char; -								} -							} -							else -							{ -								// No composite, just add the first starter to the sequence then continue with the other one -								$nf_seq .= $starter; -								$starter = $utf_char; -							} -						} -						else -						{ -							ksort($utf_sort); - -							// For each class of combining characters -							foreach ($utf_sort as $cc => $utf_chars) -							{ -								$j = 0; - -								do -								{ -									// Look for a composite -									if (isset($utf_canonical_comp[$starter . $utf_chars[$j]])) -									{ -										// Found a composite, replace the starter -										$starter = $utf_canonical_comp[$starter . $utf_chars[$j]]; -										unset($utf_sort[$cc][$j]); -									} -									else -									{ -										// No composite, all following characters in that class are blocked -										break; -									} -								} -								while (isset($utf_sort[$cc][++$j])); -							} - -							// Add the starter to the normalized sequence, followed by non-starters in canonical order -							$nf_seq .= $starter; - -							foreach ($utf_sort as $utf_chars) -							{ -								if (!empty($utf_chars)) -								{ -									$nf_seq .= implode('', $utf_chars); -								} -							} - -							// Reset the array and go on -							$utf_sort = array(); -							$starter = $utf_char; -						} -					} -				} -				while ($k <= $k_max); - -				$tmp .= substr($str, $tmp_pos, $lpos - $tmp_pos) . $nf_seq; -				$tmp_pos = $pos; -			} -			else -			{ -				// Only a ASCII char can make the program get here -				// -				// First we skip the current byte with ++$pos, then we quickly skip following ASCII chars with strspn(). -				// -				// The first two "if"'s here can be removed, with the consequences of being faster on latin text (lots of ASCII) and slower on -				// multi-byte text (where the only ASCII chars are spaces and punctuation) -				if (++$pos != $len) -				{ -					if ($str[$pos] < "\x80") -					{ -						$pos += strspn($str, UTF8_ASCII_RANGE, ++$pos); -						$buffer[++$i & 7] = $str[$pos - 1]; -					} -					else -					{ -						$buffer[++$i & 7] = $c; -					} -				} -			} -		} -		while ($pos < $len); - -		// Now is time to return the string -		if ($tmp_pos) -		{ -			// If the $tmp_pos cursor is not at the beggining of the string then at least one character was not in normal form. Replace $str with the fixed version -			if ($tmp_pos == $len) -			{ -				// The $tmp_pos cursor is at the end of $str, therefore $tmp holds the whole $str -				return $tmp; -			} -			else -			{ -				// The rightmost chunk of $str has not been appended to $tmp yet -				return $tmp . substr($str, $tmp_pos); -			} -		} - -		// The string was already in normal form -		return $str; -	} - -	/** -	* Decompose a UTF string -	* -	* @param	string	$str			UTF string -	* @param	integer	$pos			Position of the first UTF char (in bytes) -	* @param	integer	$len			Length of the string (in bytes) -	* @param	array	&$decomp_map	Decomposition mapping, passed by reference but never modified -	* @return	string					The string, decomposed and sorted canonically -	* -	* @access	private -	*/ -	static function decompose($str, $pos, $len, &$decomp_map) -	{ -		global $utf_combining_class; - -		// Load some commonly-used tables -		if (!isset($utf_combining_class)) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/utf/data/utf_normalizer_common.' . $phpEx); -		} - -		// UTF char length array -		$utf_len_mask = array( -			// Leading bytes masks -			"\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4, -			// Trailing bytes masks -			"\x80" => 0, "\x90" => 0, "\xA0" => 0, "\xB0" => 0 -		); - -		// Some extra checks are triggered on the first byte of a UTF sequence -		$extra_check = array( -			"\xED" => 1, "\xEF" => 1, "\xC0" => 1, "\xC1" => 1, "\xE0" => 1, "\xF0" => 1, -			"\xF4" => 1, "\xF5" => 1, "\xF6" => 1, "\xF7" => 1, "\xF8" => 1, "\xF9" => 1, -			"\xFA" => 1, "\xFB" => 1, "\xFC" => 1, "\xFD" => 1, "\xFE" => 1, "\xFF" => 1 -		); - -		// These masks are used to check if a UTF sequence is well formed. Here are the only 3 lengths we acknowledge: -		//   - 2-byte: 110? ???? 10?? ???? -		//   - 3-byte: 1110 ???? 10?? ???? 10?? ???? -		//   - 4-byte: 1111 0??? 10?? ???? 10?? ???? 10?? ???? -		// Note that 5- and 6- byte sequences are automatically discarded -		$utf_validation_mask = array( -			2	=> "\xE0\xC0", -			3	=> "\xF0\xC0\xC0", -			4	=> "\xF8\xC0\xC0\xC0" -		); - -		$utf_validation_check = array( -			2	=> "\xC0\x80", -			3	=> "\xE0\x80\x80", -			4	=> "\xF0\x80\x80\x80" -		); - -		$tmp = ''; -		$starter_pos = $pos; -		$tmp_pos = $last_cc = $sort = $dump = 0; -		$utf_sort = array(); - -		// Main loop -		do -		{ -			// STEP 0: Capture the current char - -			$cur_mask = $str[$pos] & "\xF0"; -			if (isset($utf_len_mask[$cur_mask])) -			{ -				if ($utf_len = $utf_len_mask[$cur_mask]) -				{ -					// Multibyte char -					$utf_char = substr($str, $pos, $utf_len); -					$pos += $utf_len; -				} -				else -				{ -					// A trailing byte came out of nowhere, we will treat it and all following trailing bytes as if each of them was a Unicode -					// replacement char and we will advance the cursor -					$spn = strspn($str, UTF8_TRAILING_BYTES, $pos); - -					if ($dump) -					{ -						$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos); - -						// Dump combiners -						if (!empty($utf_sort)) -						{ -							if ($sort) -							{ -								ksort($utf_sort); -							} - -							foreach ($utf_sort as $utf_chars) -							{ -								$tmp .= implode('', $utf_chars); -							} -						} - -						$tmp .= str_repeat(UTF8_REPLACEMENT, $spn); -						$dump = $sort = 0; -					} -					else -					{ -						$tmp .= substr($str, $tmp_pos, $pos - $tmp_pos) . str_repeat(UTF8_REPLACEMENT, $spn); -					} - -					$pos += $spn; -					$tmp_pos = $starter_pos = $pos; - -					$utf_sort = array(); -					$last_cc = 0; - -					continue; -				} - -				// STEP 1: Decide what to do with current char - -				// Now, in that order: -				//  - check if that character is decomposable -				//  - check if that character is a non-starter -				//  - check if that character requires extra checks to be performed -				if (isset($decomp_map[$utf_char])) -				{ -					// Decompose the char -					$_pos = 0; -					$_len = strlen($decomp_map[$utf_char]); - -					do -					{ -						$c = $decomp_map[$utf_char][$_pos]; -						$_utf_len =& $utf_len_mask[$c & "\xF0"]; - -						if (isset($_utf_len)) -						{ -							$_utf_char = substr($decomp_map[$utf_char], $_pos, $_utf_len); -							$_pos += $_utf_len; - -							if (isset($utf_combining_class[$_utf_char])) -							{ -								// The character decomposed to a non-starter, buffer it for sorting -								$utf_sort[$utf_combining_class[$_utf_char]][] = $_utf_char; - -								if ($utf_combining_class[$_utf_char] < $last_cc) -								{ -									// Not canonically ordered, will require sorting -									$sort = $dump = 1; -								} -								else -								{ -									$dump = 1; -									$last_cc = $utf_combining_class[$_utf_char]; -								} -							} -							else -							{ -								// This character decomposition contains a starter, dump the buffer and continue -								if ($dump) -								{ -									$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos); - -									// Dump combiners -									if (!empty($utf_sort)) -									{ -										if ($sort) -										{ -											ksort($utf_sort); -										} - -										foreach ($utf_sort as $utf_chars) -										{ -											$tmp .= implode('', $utf_chars); -										} -									} - -									$tmp .= $_utf_char; -									$dump = $sort = 0; -								} -								else -								{ -									$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos) . $_utf_char; -								} - -								$tmp_pos = $starter_pos = $pos; -								$utf_sort = array(); -								$last_cc = 0; -							} -						} -						else -						{ -							// This character decomposition contains an ASCII char, which is a starter. Dump the buffer and continue -							++$_pos; - -							if ($dump) -							{ -								$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos); - -								// Dump combiners -								if (!empty($utf_sort)) -								{ -									if ($sort) -									{ -										ksort($utf_sort); -									} - -									foreach ($utf_sort as $utf_chars) -									{ -										$tmp .= implode('', $utf_chars); -									} -								} - -								$tmp .= $c; -								$dump = $sort = 0; -							} -							else -							{ -								$tmp .= substr($str, $tmp_pos, $pos - $utf_len - $tmp_pos) . $c; -							} - -							$tmp_pos = $starter_pos = $pos; -							$utf_sort = array(); -							$last_cc = 0; -						} -					} -					while ($_pos < $_len); -				} -				else if (isset($utf_combining_class[$utf_char])) -				{ -					// Combining character -					if ($utf_combining_class[$utf_char] < $last_cc) -					{ -						// Not in canonical order -						$sort = $dump = 1; -					} -					else -					{ -						$last_cc = $utf_combining_class[$utf_char]; -					} - -					$utf_sort[$utf_combining_class[$utf_char]][] = $utf_char; -				} -				else -				{ -					// Non-decomposable starter, check out if it's a Hangul syllable -					if ($utf_char < UTF8_HANGUL_FIRST || $utf_char > UTF8_HANGUL_LAST) -					{ -						// Nope, regular UTF char, check that we have the correct number of trailing bytes -						if (($utf_char & $utf_validation_mask[$utf_len]) != $utf_validation_check[$utf_len]) -						{ -							// Current char isn't well-formed or legal: either one or several trailing bytes are missing, or the Unicode char -							// has been encoded in a five- or six- byte sequence. -							// Move the cursor back to its original position then advance it to the position it should really be at -							$pos -= $utf_len; -							$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos); - -							if (!empty($utf_sort)) -							{ -								ksort($utf_sort); - -								foreach ($utf_sort as $utf_chars) -								{ -									$tmp .= implode('', $utf_chars); -								} -								$utf_sort = array(); -							} - -							// Add a replacement char then another replacement char for every trailing byte. -							// -							// @todo I'm not entirely sure that's how we're supposed to mark invalidated byte sequences, check this -							$spn = strspn($str, UTF8_TRAILING_BYTES, ++$pos); -							$tmp .= str_repeat(UTF8_REPLACEMENT, $spn + 1); - -							$dump = $sort = 0; - -							$pos += $spn; -							$tmp_pos = $pos; -							continue; -						} - -						if (isset($extra_check[$utf_char[0]])) -						{ -							switch ($utf_char[0]) -							{ -								// Note: 0xED is quite common in Korean -								case "\xED": -									if ($utf_char >= "\xED\xA0\x80") -									{ -										// Surrogates (U+D800..U+DFFF) are not allowed in UTF-8 (UTF sequence 0xEDA080..0xEDBFBF) -										$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos); - -										if (!empty($utf_sort)) -										{ -											ksort($utf_sort); - -											foreach ($utf_sort as $utf_chars) -											{ -												$tmp .= implode('', $utf_chars); -											} -											$utf_sort = array(); -										} - -										$tmp .= UTF8_REPLACEMENT; -										$dump = $sort = 0; - -										$tmp_pos = $starter_pos = $pos; -										continue 2; -									} -								break; - -								// Note: 0xEF is quite common in Japanese -								case "\xEF": -									if ($utf_char == "\xEF\xBF\xBE" || $utf_char == "\xEF\xBF\xBF") -									{ -										// U+FFFE and U+FFFF are explicitly disallowed (UTF sequence 0xEFBFBE..0xEFBFBF) -										$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos); - -										if (!empty($utf_sort)) -										{ -											ksort($utf_sort); - -											foreach ($utf_sort as $utf_chars) -											{ -												$tmp .= implode('', $utf_chars); -											} -											$utf_sort = array(); -										} - -										$tmp .= UTF8_REPLACEMENT; -										$dump = $sort = 0; - -										$tmp_pos = $starter_pos = $pos; -										continue 2; -									} -								break; - -								case "\xC0": -								case "\xC1": -									if ($utf_char <= "\xC1\xBF") -									{ -										// Overlong sequence: Unicode char U+0000..U+007F encoded as a double-byte UTF char -										$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos); - -										if (!empty($utf_sort)) -										{ -											ksort($utf_sort); - -											foreach ($utf_sort as $utf_chars) -											{ -												$tmp .= implode('', $utf_chars); -											} -											$utf_sort = array(); -										} - -										$tmp .= UTF8_REPLACEMENT; -										$dump = $sort = 0; - -										$tmp_pos = $starter_pos = $pos; -										continue 2; -									} -								break; - -								case "\xE0": -									if ($utf_char <= "\xE0\x9F\xBF") -									{ -										// Unicode char U+0000..U+07FF encoded in 3 bytes -										$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos); - -										if (!empty($utf_sort)) -										{ -											ksort($utf_sort); - -											foreach ($utf_sort as $utf_chars) -											{ -												$tmp .= implode('', $utf_chars); -											} -											$utf_sort = array(); -										} - -										$tmp .= UTF8_REPLACEMENT; -										$dump = $sort = 0; - -										$tmp_pos = $starter_pos = $pos; -										continue 2; -									} -								break; - -								case "\xF0": -									if ($utf_char <= "\xF0\x8F\xBF\xBF") -									{ -										// Unicode char U+0000..U+FFFF encoded in 4 bytes -										$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos); - -										if (!empty($utf_sort)) -										{ -											ksort($utf_sort); - -											foreach ($utf_sort as $utf_chars) -											{ -												$tmp .= implode('', $utf_chars); -											} -											$utf_sort = array(); -										} - -										$tmp .= UTF8_REPLACEMENT; -										$dump = $sort = 0; - -										$tmp_pos = $starter_pos = $pos; -										continue 2; -									} -								break; - -								default: -									if ($utf_char > UTF8_MAX) -									{ -										// Out of the Unicode range -										$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos); - -										if (!empty($utf_sort)) -										{ -											ksort($utf_sort); - -											foreach ($utf_sort as $utf_chars) -											{ -												$tmp .= implode('', $utf_chars); -											} -											$utf_sort = array(); -										} - -										$tmp .= UTF8_REPLACEMENT; -										$dump = $sort = 0; - -										$tmp_pos = $starter_pos = $pos; -										continue 2; -									} -								break; -							} -						} -					} -					else -					{ -						// Hangul syllable -						$idx = (((ord($utf_char[0]) & 0x0F) << 12) | ((ord($utf_char[1]) & 0x3F) << 6) | (ord($utf_char[2]) & 0x3F)) - UNICODE_HANGUL_SBASE; - -						// LIndex can only range from 0 to 18, therefore it cannot influence the first two bytes of the L Jamo, which allows us to hardcode them (based on LBase). -						// -						// The same goes for VIndex, but for TIndex there's a catch: the value of the third byte could exceed 0xBF and we would have to increment the second byte -						if ($t_index = $idx % UNICODE_HANGUL_TCOUNT) -						{ -							if ($t_index < 25) -							{ -								$utf_char = "\xE1\x84\x00\xE1\x85\x00\xE1\x86\x00"; -								$utf_char[8] = chr(0xA7 + $t_index); -							} -							else -							{ -								$utf_char = "\xE1\x84\x00\xE1\x85\x00\xE1\x87\x00"; -								$utf_char[8] = chr(0x67 + $t_index); -							} -						} -						else -						{ -							$utf_char = "\xE1\x84\x00\xE1\x85\x00"; -						} - -						$utf_char[2] = chr(0x80 + (int) ($idx / UNICODE_HANGUL_NCOUNT)); -						$utf_char[5] = chr(0xA1 + (int) (($idx % UNICODE_HANGUL_NCOUNT) / UNICODE_HANGUL_TCOUNT)); - -						// Just like other decompositions, the resulting Jamos must be dumped to the tmp string -						$dump = 1; -					} - -					// Do we need to dump stuff to the tmp string? -					if ($dump) -					{ -						$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos); - -						// Dump combiners -						if (!empty($utf_sort)) -						{ -							if ($sort) -							{ -								ksort($utf_sort); -							} - -							foreach ($utf_sort as $utf_chars) -							{ -								$tmp .= implode('', $utf_chars); -							} -						} - -						$tmp .= $utf_char; -						$dump = $sort = 0; -						$tmp_pos = $pos; -					} - -					$last_cc = 0; -					$utf_sort = array(); -					$starter_pos = $pos; -				} -			} -			else -			{ -				// ASCII char, which happens to be a starter (as any other ASCII char) -				if ($dump) -				{ -					$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos); - -					// Dump combiners -					if (!empty($utf_sort)) -					{ -						if ($sort) -						{ -							ksort($utf_sort); -						} - -						foreach ($utf_sort as $utf_chars) -						{ -							$tmp .= implode('', $utf_chars); -						} -					} - -					$tmp .= $str[$pos]; -					$dump = $sort = 0; -					$tmp_pos = ++$pos; - -					$pos += strspn($str, UTF8_ASCII_RANGE, $pos); -				} -				else -				{ -					$pos += strspn($str, UTF8_ASCII_RANGE, ++$pos); -				} - -				$last_cc = 0; -				$utf_sort = array(); -				$starter_pos = $pos; -			} -		} -		while ($pos < $len); - -		// Now is time to return the string -		if ($dump) -		{ -			$tmp .= substr($str, $tmp_pos, $starter_pos - $tmp_pos); - -			// Dump combiners -			if (!empty($utf_sort)) -			{ -				if ($sort) -				{ -					ksort($utf_sort); -				} - -				foreach ($utf_sort as $utf_chars) -				{ -					$tmp .= implode('', $utf_chars); -				} -			} - -			return $tmp; -		} -		else if ($tmp_pos) -		{ -			// If the $tmp_pos cursor was moved then at least one character was not in normal form. Replace $str with the fixed version -			if ($tmp_pos == $len) -			{ -				// The $tmp_pos cursor is at the end of $str, therefore $tmp holds the whole $str -				return $tmp; -			} -			else -			{ -				// The rightmost chunk of $str has not been appended to $tmp yet -				return $tmp . substr($str, $tmp_pos); -			} -		} - -		// The string was already in normal form -		return $str; -	} -} diff --git a/phpBB/includes/utf/utf_tools.php b/phpBB/includes/utf/utf_tools.php index e60a40a195..da241b2cbd 100644 --- a/phpBB/includes/utf/utf_tools.php +++ b/phpBB/includes/utf/utf_tools.php @@ -22,6 +22,13 @@ if (!defined('IN_PHPBB'))  setlocale(LC_CTYPE, 'C');  /** +* Setup the UTF-8 portability layer +*/ +Patchwork\Utf8\Bootup::initUtf8Encode(); +Patchwork\Utf8\Bootup::initMbstring(); +Patchwork\Utf8\Bootup::initIntl(); + +/**  * UTF-8 tools  *  * Whenever possible, these functions will try to use PHP's built-in functions or @@ -29,544 +36,85 @@ setlocale(LC_CTYPE, 'C');  *  */ -if (!extension_loaded('xml')) -{ -	/** -	* Implementation of PHP's native utf8_encode for people without XML support -	* This function exploits some nice things that ISO-8859-1 and UTF-8 have in common -	* -	* @param string $str ISO-8859-1 encoded data -	* @return string UTF-8 encoded data -	*/ -	function utf8_encode($str) -	{ -		$out = ''; -		for ($i = 0, $len = strlen($str); $i < $len; $i++) -		{ -			$letter = $str[$i]; -			$num = ord($letter); -			if ($num < 0x80) -			{ -				$out .= $letter; -			} -			else if ($num < 0xC0) -			{ -				$out .= "\xC2" . $letter; -			} -			else -			{ -				$out .= "\xC3" . chr($num - 64); -			} -		} -		return $out; -	} - -	/** -	* Implementation of PHP's native utf8_decode for people without XML support -	* -	* @param string $str UTF-8 encoded data -	* @return string ISO-8859-1 encoded data -	*/ -	function utf8_decode($str) -	{ -		$pos = 0; -		$len = strlen($str); -		$ret = ''; - -		while ($pos < $len) -		{ -			$ord = ord($str[$pos]) & 0xF0; -			if ($ord === 0xC0 || $ord === 0xD0) -			{ -				$charval = ((ord($str[$pos]) & 0x1F) << 6) | (ord($str[$pos + 1]) & 0x3F); -				$pos += 2; -				$ret .= (($charval < 256) ? chr($charval) : '?'); -			} -			else if ($ord === 0xE0) -			{ -				$ret .= '?'; -				$pos += 3; -			} -			else if ($ord === 0xF0) -			{ -				$ret .= '?'; -				$pos += 4; -			} -			else -			{ -				$ret .= $str[$pos]; -				++$pos; -			} -		} -		return $ret; -	} -} - -// mbstring is old and has it's functions around for older versions of PHP. -// if mbstring is not loaded, we go into native mode. -if (extension_loaded('mbstring')) +/** +* UTF-8 aware alternative to strrpos +* @ignore +*/ +function utf8_strrpos($str,	$needle, $offset = null)  { -	mb_internal_encoding('UTF-8'); - -	/** -	* UTF-8 aware alternative to strrpos -	* Find position of last occurrence of a char in a string -	*/ -	/** -	* UTF-8 aware alternative to strrpos -	* @ignore -	*/ -	function utf8_strrpos($str,	$needle, $offset = null) +	// Emulate behaviour of strrpos rather than raising warning +	if (empty($str))  	{ -		// Emulate behaviour of strrpos rather than raising warning -		if (empty($str)) -		{ -			return false; -		} - -		if (is_null($offset)) -		{ -			return mb_strrpos($str, $needle); -		} -		else -		{ -			return mb_strrpos($str, $needle, $offset); -		} -	} - -	/** -	* UTF-8 aware alternative to strpos -	* @ignore -	*/ -	function utf8_strpos($str, $needle, $offset = null) -	{ -		if (is_null($offset)) -		{ -			return mb_strpos($str, $needle); -		} -		else -		{ -			return mb_strpos($str, $needle, $offset); -		} +		return false;  	} -	/** -	* UTF-8 aware alternative to strtolower -	* @ignore -	*/ -	function utf8_strtolower($str) +	if (is_null($offset))  	{ -		return mb_strtolower($str); +		return mb_strrpos($str, $needle);  	} - -	/** -	* UTF-8 aware alternative to strtoupper -	* @ignore -	*/ -	function utf8_strtoupper($str) +	else  	{ -		return mb_strtoupper($str); +		return mb_strrpos($str, $needle, $offset);  	} +} -	/** -	* UTF-8 aware alternative to substr -	* @ignore -	*/ -	function utf8_substr($str, $offset, $length = null) +/** +* UTF-8 aware alternative to strpos +* @ignore +*/ +function utf8_strpos($str, $needle, $offset = null) +{ +	if (is_null($offset))  	{ -		if (is_null($length)) -		{ -			return mb_substr($str, $offset); -		} -		else -		{ -			return mb_substr($str, $offset, $length); -		} +		return mb_strpos($str, $needle);  	} - -	/** -	* Return the length (in characters) of a UTF-8 string -	* @ignore -	*/ -	function utf8_strlen($text) +	else  	{ -		return mb_strlen($text, 'utf-8'); +		return mb_strpos($str, $needle, $offset);  	}  } -else -{ -	/** -	* UTF-8 aware alternative to strrpos -	* Find position of last occurrence of a char in a string -	* -	* @author Harry Fuecks -	* @param string $str haystack -	* @param string $needle needle -	* @param integer $offset (optional) offset (from left) -	* @return mixed integer position or FALSE on failure -	*/ -	function utf8_strrpos($str,	$needle, $offset = null) -	{ -		if (is_null($offset)) -		{ -			$ar	= explode($needle, $str); - -			if (sizeof($ar) > 1) -			{ -				// Pop off the end of the string where the last	match was made -				array_pop($ar); -				$str = join($needle, $ar); - -				return utf8_strlen($str); -			} -			return false; -		} -		else -		{ -			if (!is_int($offset)) -			{ -				trigger_error('utf8_strrpos	expects	parameter 3	to be long', E_USER_ERROR); -				return false; -			} - -			$str = utf8_substr($str, $offset); - -			if (false !== ($pos = utf8_strrpos($str, $needle))) -			{ -				return $pos	+ $offset; -			} - -			return false; -		} -	} -	/** -	* UTF-8 aware alternative to strpos -	* Find position of first occurrence of a string -	* -	* @author Harry Fuecks -	* @param string $str haystack -	* @param string $needle needle -	* @param integer $offset offset in characters (from left) -	* @return mixed integer position or FALSE on failure -	*/ -	function utf8_strpos($str, $needle, $offset = null) -	{ -		if (is_null($offset)) -		{ -			$ar = explode($needle, $str); -			if (sizeof($ar) > 1) -			{ -				return utf8_strlen($ar[0]); -			} -			return false; -		} -		else -		{ -			if (!is_int($offset)) -			{ -				trigger_error('utf8_strpos:  Offset must  be an integer', E_USER_ERROR); -				return false; -			} - -			$str = utf8_substr($str, $offset); - -			if (false !== ($pos = utf8_strpos($str, $needle))) -			{ -				return $pos + $offset; -			} +/** +* UTF-8 aware alternative to strtolower +* @ignore +*/ +function utf8_strtolower($str) +{ +	return mb_strtolower($str); +} -			return false; -		} -	} +/** +* UTF-8 aware alternative to strtoupper +* @ignore +*/ +function utf8_strtoupper($str) +{ +	return mb_strtoupper($str); +} -	/** -	* UTF-8 aware alternative to strtolower -	* Make a string lowercase -	* Note: The concept of a characters "case" only exists is some alphabets -	* such as Latin, Greek, Cyrillic, Armenian and archaic Georgian - it does -	* not exist in the Chinese alphabet, for example. See Unicode Standard -	* Annex #21: Case Mappings -	* -	* @param string -	* @return string string in lowercase -	*/ -	function utf8_strtolower($string) +/** +* UTF-8 aware alternative to substr +* @ignore +*/ +function utf8_substr($str, $offset, $length = null) +{ +	if (is_null($length))  	{ -		static $utf8_upper_to_lower = array( -			"\xC3\x80" => "\xC3\xA0", "\xC3\x81" => "\xC3\xA1", -			"\xC3\x82" => "\xC3\xA2", "\xC3\x83" => "\xC3\xA3", "\xC3\x84" => "\xC3\xA4", "\xC3\x85" => "\xC3\xA5", -			"\xC3\x86" => "\xC3\xA6", "\xC3\x87" => "\xC3\xA7", "\xC3\x88" => "\xC3\xA8", "\xC3\x89" => "\xC3\xA9", -			"\xC3\x8A" => "\xC3\xAA", "\xC3\x8B" => "\xC3\xAB", "\xC3\x8C" => "\xC3\xAC", "\xC3\x8D" => "\xC3\xAD", -			"\xC3\x8E" => "\xC3\xAE", "\xC3\x8F" => "\xC3\xAF", "\xC3\x90" => "\xC3\xB0", "\xC3\x91" => "\xC3\xB1", -			"\xC3\x92" => "\xC3\xB2", "\xC3\x93" => "\xC3\xB3", "\xC3\x94" => "\xC3\xB4", "\xC3\x95" => "\xC3\xB5", -			"\xC3\x96" => "\xC3\xB6", "\xC3\x98" => "\xC3\xB8", "\xC3\x99" => "\xC3\xB9", "\xC3\x9A" => "\xC3\xBA", -			"\xC3\x9B" => "\xC3\xBB", "\xC3\x9C" => "\xC3\xBC", "\xC3\x9D" => "\xC3\xBD", "\xC3\x9E" => "\xC3\xBE", -			"\xC4\x80" => "\xC4\x81", "\xC4\x82" => "\xC4\x83", "\xC4\x84" => "\xC4\x85", "\xC4\x86" => "\xC4\x87", -			"\xC4\x88" => "\xC4\x89", "\xC4\x8A" => "\xC4\x8B", "\xC4\x8C" => "\xC4\x8D", "\xC4\x8E" => "\xC4\x8F", -			"\xC4\x90" => "\xC4\x91", "\xC4\x92" => "\xC4\x93", "\xC4\x96" => "\xC4\x97", "\xC4\x98" => "\xC4\x99", -			"\xC4\x9A" => "\xC4\x9B", "\xC4\x9C" => "\xC4\x9D", "\xC4\x9E" => "\xC4\x9F", "\xC4\xA0" => "\xC4\xA1", -			"\xC4\xA2" => "\xC4\xA3", "\xC4\xA4" => "\xC4\xA5", "\xC4\xA6" => "\xC4\xA7", "\xC4\xA8" => "\xC4\xA9", -			"\xC4\xAA" => "\xC4\xAB", "\xC4\xAE" => "\xC4\xAF", "\xC4\xB4" => "\xC4\xB5", "\xC4\xB6" => "\xC4\xB7", -			"\xC4\xB9" => "\xC4\xBA", "\xC4\xBB" => "\xC4\xBC", "\xC4\xBD" => "\xC4\xBE", "\xC5\x81" => "\xC5\x82", -			"\xC5\x83" => "\xC5\x84", "\xC5\x85" => "\xC5\x86", "\xC5\x87" => "\xC5\x88", "\xC5\x8A" => "\xC5\x8B", -			"\xC5\x8C" => "\xC5\x8D", "\xC5\x90" => "\xC5\x91", "\xC5\x94" => "\xC5\x95", "\xC5\x96" => "\xC5\x97", -			"\xC5\x98" => "\xC5\x99", "\xC5\x9A" => "\xC5\x9B", "\xC5\x9C" => "\xC5\x9D", "\xC5\x9E" => "\xC5\x9F", -			"\xC5\xA0" => "\xC5\xA1", "\xC5\xA2" => "\xC5\xA3", "\xC5\xA4" => "\xC5\xA5", "\xC5\xA6" => "\xC5\xA7", -			"\xC5\xA8" => "\xC5\xA9", "\xC5\xAA" => "\xC5\xAB", "\xC5\xAC" => "\xC5\xAD", "\xC5\xAE" => "\xC5\xAF", -			"\xC5\xB0" => "\xC5\xB1", "\xC5\xB2" => "\xC5\xB3", "\xC5\xB4" => "\xC5\xB5", "\xC5\xB6" => "\xC5\xB7", -			"\xC5\xB8" => "\xC3\xBF", "\xC5\xB9" => "\xC5\xBA", "\xC5\xBB" => "\xC5\xBC", "\xC5\xBD" => "\xC5\xBE", -			"\xC6\xA0" => "\xC6\xA1", "\xC6\xAF" => "\xC6\xB0", "\xC8\x98" => "\xC8\x99", "\xC8\x9A" => "\xC8\x9B", -			"\xCE\x86" => "\xCE\xAC", "\xCE\x88" => "\xCE\xAD", "\xCE\x89" => "\xCE\xAE", "\xCE\x8A" => "\xCE\xAF", -			"\xCE\x8C" => "\xCF\x8C", "\xCE\x8E" => "\xCF\x8D", "\xCE\x8F" => "\xCF\x8E", "\xCE\x91" => "\xCE\xB1", -			"\xCE\x92" => "\xCE\xB2", "\xCE\x93" => "\xCE\xB3", "\xCE\x94" => "\xCE\xB4", "\xCE\x95" => "\xCE\xB5", -			"\xCE\x96" => "\xCE\xB6", "\xCE\x97" => "\xCE\xB7", "\xCE\x98" => "\xCE\xB8", "\xCE\x99" => "\xCE\xB9", -			"\xCE\x9A" => "\xCE\xBA", "\xCE\x9B" => "\xCE\xBB", "\xCE\x9C" => "\xCE\xBC", "\xCE\x9D" => "\xCE\xBD", -			"\xCE\x9E" => "\xCE\xBE", "\xCE\x9F" => "\xCE\xBF", "\xCE\xA0" => "\xCF\x80", "\xCE\xA1" => "\xCF\x81", -			"\xCE\xA3" => "\xCF\x83", "\xCE\xA4" => "\xCF\x84", "\xCE\xA5" => "\xCF\x85", "\xCE\xA6" => "\xCF\x86", -			"\xCE\xA7" => "\xCF\x87", "\xCE\xA8" => "\xCF\x88", "\xCE\xA9" => "\xCF\x89", "\xCE\xAA" => "\xCF\x8A", -			"\xCE\xAB" => "\xCF\x8B", "\xD0\x81" => "\xD1\x91", "\xD0\x82" => "\xD1\x92", "\xD0\x83" => "\xD1\x93", -			"\xD0\x84" => "\xD1\x94", "\xD0\x85" => "\xD1\x95", "\xD0\x86" => "\xD1\x96", "\xD0\x87" => "\xD1\x97", -			"\xD0\x88" => "\xD1\x98", "\xD0\x89" => "\xD1\x99", "\xD0\x8A" => "\xD1\x9A", "\xD0\x8B" => "\xD1\x9B", -			"\xD0\x8C" => "\xD1\x9C", "\xD0\x8E" => "\xD1\x9E", "\xD0\x8F" => "\xD1\x9F", "\xD0\x90" => "\xD0\xB0", -			"\xD0\x91" => "\xD0\xB1", "\xD0\x92" => "\xD0\xB2", "\xD0\x93" => "\xD0\xB3", "\xD0\x94" => "\xD0\xB4", -			"\xD0\x95" => "\xD0\xB5", "\xD0\x96" => "\xD0\xB6", "\xD0\x97" => "\xD0\xB7", "\xD0\x98" => "\xD0\xB8", -			"\xD0\x99" => "\xD0\xB9", "\xD0\x9A" => "\xD0\xBA", "\xD0\x9B" => "\xD0\xBB", "\xD0\x9C" => "\xD0\xBC", -			"\xD0\x9D" => "\xD0\xBD", "\xD0\x9E" => "\xD0\xBE", "\xD0\x9F" => "\xD0\xBF", "\xD0\xA0" => "\xD1\x80", -			"\xD0\xA1" => "\xD1\x81", "\xD0\xA2" => "\xD1\x82", "\xD0\xA3" => "\xD1\x83", "\xD0\xA4" => "\xD1\x84", -			"\xD0\xA5" => "\xD1\x85", "\xD0\xA6" => "\xD1\x86", "\xD0\xA7" => "\xD1\x87", "\xD0\xA8" => "\xD1\x88", -			"\xD0\xA9" => "\xD1\x89", "\xD0\xAA" => "\xD1\x8A", "\xD0\xAB" => "\xD1\x8B", "\xD0\xAC" => "\xD1\x8C", -			"\xD0\xAD" => "\xD1\x8D", "\xD0\xAE" => "\xD1\x8E", "\xD0\xAF" => "\xD1\x8F", "\xD2\x90" => "\xD2\x91", -			"\xE1\xB8\x82" => "\xE1\xB8\x83", "\xE1\xB8\x8A" => "\xE1\xB8\x8B", "\xE1\xB8\x9E" => "\xE1\xB8\x9F", "\xE1\xB9\x80" => "\xE1\xB9\x81", -			"\xE1\xB9\x96" => "\xE1\xB9\x97", "\xE1\xB9\xA0" => "\xE1\xB9\xA1", "\xE1\xB9\xAA" => "\xE1\xB9\xAB", "\xE1\xBA\x80" => "\xE1\xBA\x81", -			"\xE1\xBA\x82" => "\xE1\xBA\x83", "\xE1\xBA\x84" => "\xE1\xBA\x85", "\xE1\xBB\xB2" => "\xE1\xBB\xB3" -		); - -		return strtr(strtolower($string), $utf8_upper_to_lower); +		return mb_substr($str, $offset);  	} - -	/** -	* UTF-8 aware alternative to strtoupper -	* Make a string uppercase -	* Note: The concept of a characters "case" only exists is some alphabets -	* such as Latin, Greek, Cyrillic, Armenian and archaic Georgian - it does -	* not exist in the Chinese alphabet, for example. See Unicode Standard -	* Annex #21: Case Mappings -	* -	* @param string -	* @return string string in uppercase -	*/ -	function utf8_strtoupper($string) +	else  	{ -		static $utf8_lower_to_upper = array( -			"\xC3\xA0" => "\xC3\x80", "\xC3\xA1" => "\xC3\x81", -			"\xC3\xA2" => "\xC3\x82", "\xC3\xA3" => "\xC3\x83", "\xC3\xA4" => "\xC3\x84", "\xC3\xA5" => "\xC3\x85", -			"\xC3\xA6" => "\xC3\x86", "\xC3\xA7" => "\xC3\x87", "\xC3\xA8" => "\xC3\x88", "\xC3\xA9" => "\xC3\x89", -			"\xC3\xAA" => "\xC3\x8A", "\xC3\xAB" => "\xC3\x8B", "\xC3\xAC" => "\xC3\x8C", "\xC3\xAD" => "\xC3\x8D", -			"\xC3\xAE" => "\xC3\x8E", "\xC3\xAF" => "\xC3\x8F", "\xC3\xB0" => "\xC3\x90", "\xC3\xB1" => "\xC3\x91", -			"\xC3\xB2" => "\xC3\x92", "\xC3\xB3" => "\xC3\x93", "\xC3\xB4" => "\xC3\x94", "\xC3\xB5" => "\xC3\x95", -			"\xC3\xB6" => "\xC3\x96", "\xC3\xB8" => "\xC3\x98", "\xC3\xB9" => "\xC3\x99", "\xC3\xBA" => "\xC3\x9A", -			"\xC3\xBB" => "\xC3\x9B", "\xC3\xBC" => "\xC3\x9C", "\xC3\xBD" => "\xC3\x9D", "\xC3\xBE" => "\xC3\x9E", -			"\xC3\xBF" => "\xC5\xB8", "\xC4\x81" => "\xC4\x80", "\xC4\x83" => "\xC4\x82", "\xC4\x85" => "\xC4\x84", -			"\xC4\x87" => "\xC4\x86", "\xC4\x89" => "\xC4\x88", "\xC4\x8B" => "\xC4\x8A", "\xC4\x8D" => "\xC4\x8C", -			"\xC4\x8F" => "\xC4\x8E", "\xC4\x91" => "\xC4\x90", "\xC4\x93" => "\xC4\x92", "\xC4\x97" => "\xC4\x96", -			"\xC4\x99" => "\xC4\x98", "\xC4\x9B" => "\xC4\x9A", "\xC4\x9D" => "\xC4\x9C", "\xC4\x9F" => "\xC4\x9E", -			"\xC4\xA1" => "\xC4\xA0", "\xC4\xA3" => "\xC4\xA2", "\xC4\xA5" => "\xC4\xA4", "\xC4\xA7" => "\xC4\xA6", -			"\xC4\xA9" => "\xC4\xA8", "\xC4\xAB" => "\xC4\xAA", "\xC4\xAF" => "\xC4\xAE", "\xC4\xB5" => "\xC4\xB4", -			"\xC4\xB7" => "\xC4\xB6", "\xC4\xBA" => "\xC4\xB9", "\xC4\xBC" => "\xC4\xBB", "\xC4\xBE" => "\xC4\xBD", -			"\xC5\x82" => "\xC5\x81", "\xC5\x84" => "\xC5\x83", "\xC5\x86" => "\xC5\x85", "\xC5\x88" => "\xC5\x87", -			"\xC5\x8B" => "\xC5\x8A", "\xC5\x8D" => "\xC5\x8C", "\xC5\x91" => "\xC5\x90", "\xC5\x95" => "\xC5\x94", -			"\xC5\x97" => "\xC5\x96", "\xC5\x99" => "\xC5\x98", "\xC5\x9B" => "\xC5\x9A", "\xC5\x9D" => "\xC5\x9C", -			"\xC5\x9F" => "\xC5\x9E", "\xC5\xA1" => "\xC5\xA0", "\xC5\xA3" => "\xC5\xA2", "\xC5\xA5" => "\xC5\xA4", -			"\xC5\xA7" => "\xC5\xA6", "\xC5\xA9" => "\xC5\xA8", "\xC5\xAB" => "\xC5\xAA", "\xC5\xAD" => "\xC5\xAC", -			"\xC5\xAF" => "\xC5\xAE", "\xC5\xB1" => "\xC5\xB0", "\xC5\xB3" => "\xC5\xB2", "\xC5\xB5" => "\xC5\xB4", -			"\xC5\xB7" => "\xC5\xB6", "\xC5\xBA" => "\xC5\xB9", "\xC5\xBC" => "\xC5\xBB", "\xC5\xBE" => "\xC5\xBD", -			"\xC6\xA1" => "\xC6\xA0", "\xC6\xB0" => "\xC6\xAF", "\xC8\x99" => "\xC8\x98", "\xC8\x9B" => "\xC8\x9A", -			"\xCE\xAC" => "\xCE\x86", "\xCE\xAD" => "\xCE\x88", "\xCE\xAE" => "\xCE\x89", "\xCE\xAF" => "\xCE\x8A", -			"\xCE\xB1" => "\xCE\x91", "\xCE\xB2" => "\xCE\x92", "\xCE\xB3" => "\xCE\x93", "\xCE\xB4" => "\xCE\x94", -			"\xCE\xB5" => "\xCE\x95", "\xCE\xB6" => "\xCE\x96", "\xCE\xB7" => "\xCE\x97", "\xCE\xB8" => "\xCE\x98", -			"\xCE\xB9" => "\xCE\x99", "\xCE\xBA" => "\xCE\x9A", "\xCE\xBB" => "\xCE\x9B", "\xCE\xBC" => "\xCE\x9C", -			"\xCE\xBD" => "\xCE\x9D", "\xCE\xBE" => "\xCE\x9E", "\xCE\xBF" => "\xCE\x9F", "\xCF\x80" => "\xCE\xA0", -			"\xCF\x81" => "\xCE\xA1", "\xCF\x83" => "\xCE\xA3", "\xCF\x84" => "\xCE\xA4", "\xCF\x85" => "\xCE\xA5", -			"\xCF\x86" => "\xCE\xA6", "\xCF\x87" => "\xCE\xA7", "\xCF\x88" => "\xCE\xA8", "\xCF\x89" => "\xCE\xA9", -			"\xCF\x8A" => "\xCE\xAA", "\xCF\x8B" => "\xCE\xAB", "\xCF\x8C" => "\xCE\x8C", "\xCF\x8D" => "\xCE\x8E", -			"\xCF\x8E" => "\xCE\x8F", "\xD0\xB0" => "\xD0\x90", "\xD0\xB1" => "\xD0\x91", "\xD0\xB2" => "\xD0\x92", -			"\xD0\xB3" => "\xD0\x93", "\xD0\xB4" => "\xD0\x94", "\xD0\xB5" => "\xD0\x95", "\xD0\xB6" => "\xD0\x96", -			"\xD0\xB7" => "\xD0\x97", "\xD0\xB8" => "\xD0\x98", "\xD0\xB9" => "\xD0\x99", "\xD0\xBA" => "\xD0\x9A", -			"\xD0\xBB" => "\xD0\x9B", "\xD0\xBC" => "\xD0\x9C", "\xD0\xBD" => "\xD0\x9D", "\xD0\xBE" => "\xD0\x9E", -			"\xD0\xBF" => "\xD0\x9F", "\xD1\x80" => "\xD0\xA0", "\xD1\x81" => "\xD0\xA1", "\xD1\x82" => "\xD0\xA2", -			"\xD1\x83" => "\xD0\xA3", "\xD1\x84" => "\xD0\xA4", "\xD1\x85" => "\xD0\xA5", "\xD1\x86" => "\xD0\xA6", -			"\xD1\x87" => "\xD0\xA7", "\xD1\x88" => "\xD0\xA8", "\xD1\x89" => "\xD0\xA9", "\xD1\x8A" => "\xD0\xAA", -			"\xD1\x8B" => "\xD0\xAB", "\xD1\x8C" => "\xD0\xAC", "\xD1\x8D" => "\xD0\xAD", "\xD1\x8E" => "\xD0\xAE", -			"\xD1\x8F" => "\xD0\xAF", "\xD1\x91" => "\xD0\x81", "\xD1\x92" => "\xD0\x82", "\xD1\x93" => "\xD0\x83", -			"\xD1\x94" => "\xD0\x84", "\xD1\x95" => "\xD0\x85", "\xD1\x96" => "\xD0\x86", "\xD1\x97" => "\xD0\x87", -			"\xD1\x98" => "\xD0\x88", "\xD1\x99" => "\xD0\x89", "\xD1\x9A" => "\xD0\x8A", "\xD1\x9B" => "\xD0\x8B", -			"\xD1\x9C" => "\xD0\x8C", "\xD1\x9E" => "\xD0\x8E", "\xD1\x9F" => "\xD0\x8F", "\xD2\x91" => "\xD2\x90", -			"\xE1\xB8\x83" => "\xE1\xB8\x82", "\xE1\xB8\x8B" => "\xE1\xB8\x8A", "\xE1\xB8\x9F" => "\xE1\xB8\x9E", "\xE1\xB9\x81" => "\xE1\xB9\x80", -			"\xE1\xB9\x97" => "\xE1\xB9\x96", "\xE1\xB9\xA1" => "\xE1\xB9\xA0", "\xE1\xB9\xAB" => "\xE1\xB9\xAA", "\xE1\xBA\x81" => "\xE1\xBA\x80", -			"\xE1\xBA\x83" => "\xE1\xBA\x82", "\xE1\xBA\x85" => "\xE1\xBA\x84", "\xE1\xBB\xB3" => "\xE1\xBB\xB2" -		); - -		return strtr(strtoupper($string), $utf8_lower_to_upper); -	} - -	/** -	* UTF-8 aware alternative to substr -	* Return part of a string given character offset (and optionally length) -	* -	* Note arguments: comparied to substr - if offset or length are -	* not integers, this version will not complain but rather massages them -	* into an integer. -	* -	* Note on returned values: substr documentation states false can be -	* returned in some cases (e.g. offset > string length) -	* mb_substr never returns false, it will return an empty string instead. -	* This adopts the mb_substr approach -	* -	* Note on implementation: PCRE only supports repetitions of less than -	* 65536, in order to accept up to MAXINT values for offset and length, -	* we'll repeat a group of 65535 characters when needed. -	* -	* Note on implementation: calculating the number of characters in the -	* string is a relatively expensive operation, so we only carry it out when -	* necessary. It isn't necessary for +ve offsets and no specified length -	* -	* @author Chris Smith<chris@jalakai.co.uk> -	* @param string $str -	* @param integer $offset number of UTF-8 characters offset (from left) -	* @param integer $length (optional) length in UTF-8 characters from offset -	* @return mixed string or FALSE if failure -	*/ -	function utf8_substr($str, $offset, $length = NULL) -	{ -		// generates E_NOTICE -		// for PHP4 objects, but not PHP5 objects -		$str = (string) $str; -		$offset = (int) $offset; -		if (!is_null($length)) -		{ -			$length = (int) $length; -		} - -		// handle trivial cases -		if ($length === 0 || ($offset < 0 && $length < 0 && $length < $offset)) -		{ -			return ''; -		} - -		// normalise negative offsets (we could use a tail -		// anchored pattern, but they are horribly slow!) -		if ($offset < 0) -		{ -			// see notes -			$strlen = utf8_strlen($str); -			$offset = $strlen + $offset; -			if ($offset < 0) -			{ -				$offset = 0; -			} -		} - -		$op = ''; -		$lp = ''; - -		// establish a pattern for offset, a -		// non-captured group equal in length to offset -		if ($offset > 0) -		{ -			$ox = (int) ($offset / 65535); -			$oy = $offset % 65535; - -			if ($ox) -			{ -				$op = '(?:.{65535}){' . $ox . '}'; -			} - -			$op = '^(?:' . $op . '.{' . $oy . '})'; -		} -		else -		{ -			// offset == 0; just anchor the pattern -			$op = '^'; -		} - -		// establish a pattern for length -		if (is_null($length)) -		{ -			// the rest of the string -			$lp = '(.*)$'; -		} -		else -		{ -			if (!isset($strlen)) -			{ -				// see notes -				$strlen = utf8_strlen($str); -			} - -			// another trivial case -			if ($offset > $strlen) -			{ -				return ''; -			} - -			if ($length > 0) -			{ -				// reduce any length that would -				// go passed the end of the string -				$length = min($strlen - $offset, $length); - -				$lx = (int) ($length / 65535); -				$ly = $length % 65535; - -				// negative length requires a captured group -				// of length characters -				if ($lx) -				{ -					$lp = '(?:.{65535}){' . $lx . '}'; -				} -				$lp = '(' . $lp . '.{'. $ly . '})'; -			} -			else if ($length < 0) -			{ -				if ($length < ($offset - $strlen)) -				{ -					return ''; -				} - -				$lx = (int) ((-$length) / 65535); -				$ly = (-$length) % 65535; - -				// negative length requires ... capture everything -				// except a group of  -length characters -				// anchored at the tail-end of the string -				if ($lx) -				{ -					$lp = '(?:.{65535}){' . $lx . '}'; -				} -				$lp = '(.*)(?:' . $lp . '.{' . $ly . '})$'; -			} -		} - -		if (!preg_match('#' . $op . $lp . '#us', $str, $match)) -		{ -			return ''; -		} - -		return $match[1]; +		return mb_substr($str, $offset, $length);  	} +} -	/** -	* Return the length (in characters) of a UTF-8 string -	* -	* @param	string	$text		UTF-8 string -	* @return	integer				Length (in chars) of given string -	*/ -	function utf8_strlen($text) -	{ -		// Since utf8_decode is replacing multibyte characters to ? strlen works fine -		return strlen(utf8_decode($text)); -	} +/** +* Return the length (in characters) of a UTF-8 string +* @ignore +*/ +function utf8_strlen($text) +{ +	return mb_strlen($text, 'utf-8');  }  /** @@ -867,7 +415,6 @@ function utf8_recode($string, $encoding)  	// Trigger an error?! Fow now just give bad data :-(  	trigger_error('Unknown encoding: ' . $encoding, E_USER_ERROR); -	//return $string; // use utf_normalizer::cleanup() ?  }  /** @@ -1611,14 +1158,8 @@ function utf8_case_fold_nfkc($text, $option = 'full')  	// do the case fold  	$text = utf8_case_fold($text, $option); -	if (!class_exists('utf_normalizer')) -	{ -		global $phpbb_root_path, $phpEx; -		include($phpbb_root_path . 'includes/utf/utf_normalizer.' . $phpEx); -	} -  	// convert to NFKC -	utf_normalizer::nfkc($text); +	Normalizer::normalize($text, Normalizer::NFKC);  	// FC_NFKC_Closure, http://www.unicode.org/Public/5.0.0/ucd/DerivedNormalizationProps.txt  	$text = strtr($text, $fc_nfkc_closure); @@ -1714,106 +1255,56 @@ function utf8_case_fold_nfc($text, $option = 'full')  	return $text;  } -if (extension_loaded('intl')) +/** +* wrapper around PHP's native normalizer from intl +* previously a PECL extension, included in the core since PHP 5.3.0 +* http://php.net/manual/en/normalizer.normalize.php +* +* @param	mixed	$strings	a string or an array of strings to normalize +* @return	mixed				the normalized content, preserving array keys if array given. +*/ +function utf8_normalize_nfc($strings)  { -	/** -	* wrapper around PHP's native normalizer from intl -	* previously a PECL extension, included in the core since PHP 5.3.0 -	* http://php.net/manual/en/normalizer.normalize.php -	* -	* @param	mixed	$strings	a string or an array of strings to normalize -	* @return	mixed				the normalized content, preserving array keys if array given. -	*/ -	function utf8_normalize_nfc($strings) +	if (empty($strings))  	{ -		if (empty($strings)) -		{ -			return $strings; -		} - -		if (!is_array($strings)) -		{ -			if (Normalizer::isNormalized($strings)) -			{ -				return $strings; -			} -			return (string) Normalizer::normalize($strings); -		} -		else -		{ -			foreach ($strings as $key => $string) -			{ -				if (is_array($string)) -				{ -					foreach ($string as $_key => $_string) -					{ -						if (Normalizer::isNormalized($strings[$key][$_key])) -						{ -							continue; -						} -						$strings[$key][$_key] = (string) Normalizer::normalize($strings[$key][$_key]); -					} -				} -				else -				{ -					if (Normalizer::isNormalized($strings[$key])) -					{ -						continue; -					} -					$strings[$key] = (string) Normalizer::normalize($strings[$key]); -				} -			} -		} -  		return $strings;  	} -} -else -{ -	/** -	* A wrapper function for the normalizer which takes care of including the class if -	* required and modifies the passed strings to be in NFC (Normalization Form Composition). -	* -	* @param	mixed	$strings	a string or an array of strings to normalize -	* @return	mixed				the normalized content, preserving array keys if array given. -	*/ -	function utf8_normalize_nfc($strings) + +	if (!is_array($strings))  	{ -		if (empty($strings)) +		if (Normalizer::isNormalized($strings))  		{  			return $strings;  		} - -		if (!class_exists('utf_normalizer')) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/utf/utf_normalizer.' . $phpEx); -		} - -		if (!is_array($strings)) -		{ -			utf_normalizer::nfc($strings); -		} -		else if (is_array($strings)) +		return (string) Normalizer::normalize($strings); +	} +	else +	{ +		foreach ($strings as $key => $string)  		{ -			foreach ($strings as $key => $string) +			if (is_array($string))  			{ -				if (is_array($string)) +				foreach ($string as $_key => $_string)  				{ -					foreach ($string as $_key => $_string) +					if (Normalizer::isNormalized($strings[$key][$_key]))  					{ -						utf_normalizer::nfc($strings[$key][$_key]); +						continue;  					} +					$strings[$key][$_key] = (string) Normalizer::normalize($strings[$key][$_key]);  				} -				else +			} +			else +			{ +				if (Normalizer::isNormalized($strings[$key]))  				{ -					utf_normalizer::nfc($strings[$key]); +					continue;  				} +				$strings[$key] = (string) Normalizer::normalize($strings[$key]);  			}  		} - -		return $strings;  	} + +	return $strings;  }  /** @@ -1959,50 +1450,3 @@ function utf8_basename($filename)  	return $filename;  } - -/** -* UTF8-safe str_replace() function -* -* @param string $search The value to search for -* @param string $replace The replacement string -* @param string $subject The target string -* @return string The resultant string -*/ -function utf8_str_replace($search, $replace, $subject) -{ -	if (!is_array($search)) -	{ -		$search = array($search); -		if (is_array($replace)) -		{ -			$replace = (string) $replace; -			trigger_error('Array to string conversion', E_USER_NOTICE); -		} -	} - -	$length = sizeof($search); - -	if (!is_array($replace)) -	{ -		$replace = array_fill(0, $length, $replace); -	} -	else -	{ -		$replace = array_pad($replace, $length, ''); -	} - -	for ($i = 0; $i < $length; $i++) -	{ -		$search_length = utf8_strlen($search[$i]); -		$replace_length = utf8_strlen($replace[$i]); - -		$offset = 0; -		while (($start = utf8_strpos($subject, $search[$i], $offset)) !== false) -		{ -			$subject = utf8_substr($subject, 0, $start) . $replace[$i] . utf8_substr($subject, $start + $search_length); -			$offset = $start + $replace_length; -		} -	} - -	return $subject; -} | 
