diff options
Diffstat (limited to 'phpBB/includes')
| -rw-r--r-- | phpBB/includes/acp/acp_ban.php | 55 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_main.php | 10 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_styles.php | 4 | ||||
| -rw-r--r-- | phpBB/includes/constants.php | 2 | ||||
| -rw-r--r-- | phpBB/includes/functions.php | 64 | ||||
| -rw-r--r-- | phpBB/includes/functions_acp.php | 1 | ||||
| -rw-r--r-- | phpBB/includes/functions_container.php | 297 | ||||
| -rw-r--r-- | phpBB/includes/functions_display.php | 15 | ||||
| -rw-r--r-- | phpBB/includes/functions_install.php | 3 | ||||
| -rw-r--r-- | phpBB/includes/functions_module.php | 34 | ||||
| -rw-r--r-- | phpBB/includes/functions_posting.php | 61 | ||||
| -rw-r--r-- | phpBB/includes/functions_privmsgs.php | 2 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_logs.php | 4 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_post.php | 1 | ||||
| -rw-r--r-- | phpBB/includes/questionnaire/questionnaire.php | 7 | ||||
| -rw-r--r-- | phpBB/includes/ucp/ucp_prefs.php | 36 | 
16 files changed, 168 insertions, 428 deletions
| diff --git a/phpBB/includes/acp/acp_ban.php b/phpBB/includes/acp/acp_ban.php index 7cc6741e23..361ef2666c 100644 --- a/phpBB/includes/acp/acp_ban.php +++ b/phpBB/includes/acp/acp_ban.php @@ -176,8 +176,6 @@ class acp_ban  		$result = $db->sql_query($sql);  		$banned_options = $excluded_options = array(); -		$ban_length = $ban_reasons = $ban_give_reasons = array(); -  		while ($row = $db->sql_fetchrow($result))  		{  			$option = '<option value="' . $row['ban_id'] . '">' . $row[$field] . '</option>'; @@ -196,60 +194,31 @@ class acp_ban  			if ($time_length == 0)  			{  				// Banned permanently -				$ban_length[$row['ban_id']] = $user->lang['PERMANENT']; +				$ban_length = $user->lang['PERMANENT'];  			}  			else if (isset($ban_end_text[$time_length]))  			{  				// Banned for a given duration -				$ban_length[$row['ban_id']] = sprintf($user->lang['BANNED_UNTIL_DURATION'], $ban_end_text[$time_length], $user->format_date($row['ban_end'], false, true)); +				$ban_length = $user->lang('BANNED_UNTIL_DURATION', $ban_end_text[$time_length], $user->format_date($row['ban_end'], false, true));  			}  			else  			{  				// Banned until given date -				$ban_length[$row['ban_id']] = sprintf($user->lang['BANNED_UNTIL_DATE'], $user->format_date($row['ban_end'], false, true)); +				$ban_length = $user->lang('BANNED_UNTIL_DATE', $user->format_date($row['ban_end'], false, true));  			} -			$ban_reasons[$row['ban_id']] = $row['ban_reason']; -			$ban_give_reasons[$row['ban_id']] = $row['ban_give_reason']; +			$template->assign_block_vars('bans', array( +				'BAN_ID'		=> (int) $row['ban_id'], +				'LENGTH'		=> $ban_length, +				'A_LENGTH'		=> addslashes($ban_length), +				'REASON'		=> $row['ban_reason'], +				'A_REASON'		=> addslashes($row['ban_reason']), +				'GIVE_REASON'	=> $row['ban_give_reason'], +				'A_GIVE_REASON'	=> addslashes($row['ban_give_reason']), +			));  		}  		$db->sql_freeresult($result); -		if (sizeof($ban_length)) -		{ -			foreach ($ban_length as $ban_id => $length) -			{ -				$template->assign_block_vars('ban_length', array( -					'BAN_ID'	=> (int) $ban_id, -					'LENGTH'	=> $length, -					'A_LENGTH'	=> addslashes($length), -				)); -			} -		} - -		if (sizeof($ban_reasons)) -		{ -			foreach ($ban_reasons as $ban_id => $reason) -			{ -				$template->assign_block_vars('ban_reason', array( -					'BAN_ID'	=> $ban_id, -					'REASON'	=> $reason, -					'A_REASON'	=> addslashes($reason), -				)); -			} -		} - -		if (sizeof($ban_give_reasons)) -		{ -			foreach ($ban_give_reasons as $ban_id => $reason) -			{ -				$template->assign_block_vars('ban_give_reason', array( -					'BAN_ID'	=> $ban_id, -					'REASON'	=> $reason, -					'A_REASON'	=> addslashes($reason), -				)); -			} -		} -  		$options = '';  		if ($excluded_options)  		{ diff --git a/phpBB/includes/acp/acp_main.php b/phpBB/includes/acp/acp_main.php index 0d0d49774c..2a28226d6c 100644 --- a/phpBB/includes/acp/acp_main.php +++ b/phpBB/includes/acp/acp_main.php @@ -26,7 +26,7 @@ class acp_main  	function main($id, $mode)  	{  		global $config, $db, $cache, $user, $auth, $template, $request; -		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_container; +		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_container, $phpbb_dispatcher;  		// Show restore permissions notice  		if ($user->data['user_perm_from'] && $auth->acl_get('a_switchperm')) @@ -445,6 +445,14 @@ class acp_main  			));  		} +		/** +		* Notice admin +		* +		* @event core.acp_main_notice +		* @since 3.1.0-RC3 +		*/ +		$phpbb_dispatcher->dispatch('core.acp_main_notice'); +  		// Get forum statistics  		$total_posts = $config['num_posts'];  		$total_topics = $config['num_topics']; diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php index 4cc93e5670..2a02e3e845 100644 --- a/phpBB/includes/acp/acp_styles.php +++ b/phpBB/includes/acp/acp_styles.php @@ -804,7 +804,7 @@ class acp_styles  	*  	* @param array $styles Styles list, passed as reference  	* @param string $name Name of parent style -	* @param string $level Styles tree level +	* @param int $level Styles tree level  	*/  	protected function show_available_child_styles(&$styles, $name, $level)  	{ @@ -888,7 +888,7 @@ class acp_styles  	* Show item in styles list  	*  	* @param array $style style row -	* @param array $level style inheritance level +	* @param int $level style inheritance level  	*/  	protected function list_style(&$style, $level)  	{ diff --git a/phpBB/includes/constants.php b/phpBB/includes/constants.php index 2287639aee..cd4e19bf1d 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.0-RC2-dev'); +define('PHPBB_VERSION', '3.1.0-RC3-dev');  // QA-related  // define('PHPBB_QA', 1); diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index df1a9a58b9..d7b1b56532 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -1067,7 +1067,7 @@ function phpbb_timezone_select($user, $default = '', $truncate = false)  			$offset_string = phpbb_format_timezone_offset($offset);  			$timezones['GMT' . $offset_string . ' - ' . $timezone] = array(  				'tz'		=> $timezone, -				'offest'	=> 'GMT' . $offset_string, +				'offset'	=> 'GMT' . $offset_string,  				'current'	=> $current_time,  			);  			if ($timezone === $default) @@ -1084,14 +1084,14 @@ function phpbb_timezone_select($user, $default = '', $truncate = false)  	foreach ($timezones as $timezone)  	{ -		if ($opt_group != $timezone['offest']) +		if ($opt_group != $timezone['offset'])  		{  			$tz_select .= ($opt_group) ? '</optgroup>' : ''; -			$tz_select .= '<optgroup label="' . $timezone['offest'] . ' - ' . $timezone['current'] . '">'; -			$opt_group = $timezone['offest']; +			$tz_select .= '<optgroup label="' . $timezone['offset'] . ' - ' . $timezone['current'] . '">'; +			$opt_group = $timezone['offset']; -			$selected = ($default_offset == $timezone['offest']) ? ' selected="selected"' : ''; -			$tz_dates .= '<option value="' . $timezone['offest'] . ' - ' . $timezone['current'] . '"' . $selected . '>' . $timezone['offest'] . ' - ' . $timezone['current'] . '</option>'; +			$selected = ($default_offset == $timezone['offset']) ? ' selected="selected"' : ''; +			$tz_dates .= '<option value="' . $timezone['offset'] . ' - ' . $timezone['current'] . '"' . $selected . '>' . $timezone['offset'] . ' - ' . $timezone['current'] . '</option>';  		}  		$label = $timezone['tz']; @@ -1099,7 +1099,7 @@ function phpbb_timezone_select($user, $default = '', $truncate = false)  		{  			$label = $user->lang['timezones'][$label];  		} -		$title = $timezone['offest'] . ' - ' . $label; +		$title = $timezone['offset'] . ' - ' . $label;  		if ($truncate)  		{ @@ -4966,7 +4966,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id =  		'U_SEARCH_UNREAD'		=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=unreadposts'),  		'U_SEARCH_ACTIVE_TOPICS'=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=active_topics'),  		'U_DELETE_COOKIES'		=> append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=delete_cookies'), -		'U_CONTACT_US'			=> ($config['contact_admin_form_enable']) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contactadmin') : '', +		'U_CONTACT_US'			=> ($config['contact_admin_form_enable'] && $config['email_enable']) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contactadmin') : '',  		'U_TEAM'				=> ($user->data['user_id'] != ANONYMOUS && !$auth->acl_get('u_viewprofile')) ? '' : append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=team'),  		'U_TERMS_USE'			=> append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=terms'),  		'U_PRIVACY'				=> append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=privacy'), @@ -5338,52 +5338,6 @@ function phpbb_to_numeric($input)  }  /** -* Convert either 3.0 dbms or 3.1 db driver class name to 3.1 db driver class name. -* -* If $dbms is a valid 3.1 db driver class name, returns it unchanged. -* Otherwise prepends phpbb\db\driver\ to the dbms to convert a 3.0 dbms -* to 3.1 db driver class name. -* -* @param string $dbms dbms parameter -* @return db driver class -*/ -function phpbb_convert_30_dbms_to_31($dbms) -{ -	// Note: this check is done first because mysqli extension -	// supplies a mysqli class, and class_exists($dbms) would return -	// true for mysqli class. -	// However, per the docblock any valid 3.1 driver name should be -	// recognized by this function, and have priority over 3.0 dbms. -	if (strpos($dbms, 'phpbb\db\driver') === false && class_exists('phpbb\db\driver\\' . $dbms)) -	{ -		return 'phpbb\db\driver\\' . $dbms; -	} - -	if (class_exists($dbms)) -	{ -		// Additionally we could check that $dbms extends phpbb\db\driver\driver. -		// http://php.net/manual/en/class.reflectionclass.php -		// Beware of possible performance issues: -		// http://stackoverflow.com/questions/294582/php-5-reflection-api-performance -		// We could check for interface implementation in all paths or -		// only when we do not prepend phpbb\db\driver\. - -		/* -		$reflection = new \ReflectionClass($dbms); - -		if ($reflection->isSubclassOf('phpbb\db\driver\driver')) -		{ -			return $dbms; -		} -		*/ - -		return $dbms; -	} - -	throw new \RuntimeException("You have specified an invalid dbms driver: $dbms"); -} - -/**  * Get the board contact details (e.g. for emails)  *  * @param \phpbb\config\config	$config @@ -5412,7 +5366,7 @@ function phpbb_get_board_contact(\phpbb\config\config $config, $phpEx)  */  function phpbb_get_board_contact_link(\phpbb\config\config $config, $phpbb_root_path, $phpEx)  { -	if ($config['contact_admin_form_enable']) +	if ($config['contact_admin_form_enable'] && $config['email_enable'])  	{  		return append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contactadmin');  	} diff --git a/phpBB/includes/functions_acp.php b/phpBB/includes/functions_acp.php index 8453da6e6e..ad5a359710 100644 --- a/phpBB/includes/functions_acp.php +++ b/phpBB/includes/functions_acp.php @@ -240,7 +240,6 @@ function build_cfg_template($tpl_type, $key, &$new, $config_key, $vars)  		case 'range':  		case 'search':  		case 'tel': -		case 'url':  		case 'week':  			$size = (int) $tpl_type[1];  			$maxlength = (int) $tpl_type[2]; diff --git a/phpBB/includes/functions_container.php b/phpBB/includes/functions_container.php deleted file mode 100644 index a00613c26b..0000000000 --- a/phpBB/includes/functions_container.php +++ /dev/null @@ -1,297 +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\Config\FileLocator; -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\DependencyInjection\Dumper\PhpDumper; -use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ -	exit; -} - -/** -* Get DB connection from config.php. -* -* Used to bootstrap the container. -* -* @param string $config_file -* @return \phpbb\db\driver\driver_interface -*/ -function phpbb_bootstrap_db_connection($config_file) -{ -	require($config_file); -	$dbal_driver_class = phpbb_convert_30_dbms_to_31($dbms); - -	$db = new $dbal_driver_class(); -	$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, defined('PHPBB_DB_NEW_LINK')); - -	return $db; -} - -/** -* Get table prefix from config.php. -* -* Used to bootstrap the container. -* -* @param string $config_file -* @return string table prefix -*/ -function phpbb_bootstrap_table_prefix($config_file) -{ -	require($config_file); -	return $table_prefix; -} - -/** -* Get enabled extensions. -* -* Used to bootstrap the container. -* -* @param string $config_file -* @param string $phpbb_root_path -* @param \phpbb\db\driver\driver_interface $db The generated connection -* @return array enabled extensions -*/ -function phpbb_bootstrap_enabled_exts($config_file, $phpbb_root_path, &$db) -{ -	$db = phpbb_bootstrap_db_connection($config_file); -	$table_prefix = phpbb_bootstrap_table_prefix($config_file); -	$extension_table = $table_prefix.'ext'; - -	$sql = 'SELECT * -			FROM ' . $extension_table . ' -			WHERE ext_active = 1'; - -	$result = $db->sql_query($sql); -	$rows = $db->sql_fetchrowset($result); -	$db->sql_freeresult($result); - -	$exts = array(); -	foreach ($rows as $row) -	{ -		$exts[$row['ext_name']] = $phpbb_root_path . 'ext/' . $row['ext_name'] . '/'; -	} - -	return $exts; -} - -/** -* Create the ContainerBuilder object -* -* @param array $extensions Array of Container extension objects -* @param string $phpbb_root_path Root path -* @param string $php_ext PHP Extension -* @return ContainerBuilder object -*/ -function phpbb_create_container(array $extensions, $phpbb_root_path, $php_ext) -{ -	$container = new ContainerBuilder(); - -	foreach ($extensions as $extension) -	{ -		$container->registerExtension($extension); -		$container->loadFromExtension($extension->getAlias()); -	} - -	$container->setParameter('core.root_path', $phpbb_root_path); -	$container->setParameter('core.php_ext', $php_ext); - -	return $container; -} - -/** -* Create installer container -* -* @param string $phpbb_root_path Root path -* @param string $php_ext PHP Extension -* @return ContainerBuilder object -*/ -function phpbb_create_install_container($phpbb_root_path, $php_ext) -{ -	$other_config_path = $phpbb_root_path . 'install/update/new/config/'; -	$config_path = file_exists($other_config_path . 'services.yml') ? $other_config_path : $phpbb_root_path . 'config/'; - -	$core = new \phpbb\di\extension\core($config_path); -	$container = phpbb_create_container(array($core), $phpbb_root_path, $php_ext); - -	$container->setParameter('core.root_path', $phpbb_root_path); -	$container->setParameter('core.adm_relative_path', $phpbb_adm_relative_path); -	$container->setParameter('core.php_ext', $php_ext); -	$container->setParameter('core.table_prefix', ''); - -	$container->register('dbal.conn.driver')->setSynthetic(true); - -	$container->setAlias('cache.driver', 'cache.driver.install'); - -	$container->compile(); - -	return $container; -} - -/** -* Create updater container -* -* @param string $phpbb_root_path Root path -* @param string $php_ext PHP Extension -* @param array $config_path Path to config directory -* @return ContainerBuilder object (compiled) -*/ -function phpbb_create_update_container($phpbb_root_path, $php_ext, $config_path) -{ -	$config_file = $phpbb_root_path . 'config.' . $php_ext; -	return phpbb_create_compiled_container( -		$config_file, -		array( -			new phpbb\di\extension\config($config_file), -			new phpbb\di\extension\core($config_path), -		), -		array( -			new phpbb\di\pass\collection_pass(), -			new phpbb\di\pass\kernel_pass(), -		), -		$phpbb_root_path, -		$php_ext -	); -} - -/** -* Create a compiled ContainerBuilder object -* -* @param array $extensions Array of Container extension objects -* @param array $passes Array of Compiler Pass objects -* @param string $phpbb_root_path Root path -* @param string $php_ext PHP Extension -* @return ContainerBuilder object (compiled) -*/ -function phpbb_create_compiled_container($config_file, array $extensions, array $passes, $phpbb_root_path, $php_ext) -{ -	// Create the final container to be compiled and cached -	$container = phpbb_create_container($extensions, $phpbb_root_path, $php_ext); - -	// Compile the container -	foreach ($passes as $pass) -	{ -		$container->addCompilerPass($pass); -	} -	$container->compile(); - -	return $container; -} - -/** -* Create a compiled and dumped ContainerBuilder object -* -* @param array $extensions Array of Container extension objects -* @param array $passes Array of Compiler Pass objects -* @param string $phpbb_root_path Root path -* @param string $php_ext PHP Extension -* @return ContainerBuilder object (compiled) -*/ -function phpbb_create_dumped_container($config_file, array $extensions, array $passes, $phpbb_root_path, $php_ext) -{ -	// Check for our cached container; if it exists, use it -	$container_filename = phpbb_container_filename($phpbb_root_path, $php_ext); -	if (file_exists($container_filename)) -	{ -		require($container_filename); -		return new phpbb_cache_container(); -	} - -	$container = phpbb_create_compiled_container($config_file, $extensions, $passes, $phpbb_root_path, $php_ext); - -	// Lastly, we create our cached container class -	$dumper = new PhpDumper($container); -	$cached_container_dump = $dumper->dump(array( -		'class'         => 'phpbb_cache_container', -		'base_class'    => 'Symfony\\Component\\DependencyInjection\\ContainerBuilder', -	)); - -	file_put_contents($container_filename, $cached_container_dump); - -	return $container; -} - -/** -* Create an environment-specific ContainerBuilder object -* -* If debug is enabled, the container is re-compiled every time. -* This ensures that the latest changes will always be reflected -* during development. -* -* Otherwise it will get the existing dumped container and use -* that one instead. -* -* @param array $extensions Array of Container extension objects -* @param array $passes Array of Compiler Pass objects -* @param string $phpbb_root_path Root path -* @param string $php_ext PHP Extension -* @return ContainerBuilder object (compiled) -*/ -function phpbb_create_dumped_container_unless_debug($config_file, array $extensions, array $passes, $phpbb_root_path, $php_ext) -{ -	$container_factory = defined('DEBUG_CONTAINER') ? 'phpbb_create_compiled_container' : 'phpbb_create_dumped_container'; -	return $container_factory($config_file, $extensions, $passes, $phpbb_root_path, $php_ext); -} - -/** -* Create a default ContainerBuilder object -* -* Contains the default configuration of the phpBB container. -* -* @param array $extensions Array of Container extension objects -* @param array $passes Array of Compiler Pass objects -* @return ContainerBuilder object (compiled) -*/ -function phpbb_create_default_container($phpbb_root_path, $php_ext) -{ -	$config_file = $phpbb_root_path . 'config.' . $php_ext; -	$db = null; -	$installed_exts = phpbb_bootstrap_enabled_exts($config_file, $phpbb_root_path, $db); - -	$container = phpbb_create_dumped_container_unless_debug( -		$config_file, -		array( -			new \phpbb\di\extension\config($config_file), -			new \phpbb\di\extension\core($phpbb_root_path . 'config'), -			new \phpbb\di\extension\ext($installed_exts), -		), -		array( -			new \phpbb\di\pass\collection_pass(), -			new \phpbb\di\pass\kernel_pass(), -		), -		$phpbb_root_path, -		$php_ext -	); - -	$container->get('dbal.conn')->set_driver($db); - -	return $container; -} - -/** -* Get the filename under which the dumped container will be stored. -* -* @param string $phpbb_root_path Root path -* @param string $php_ext PHP Extension -* @return Path for dumped container -*/ -function phpbb_container_filename($phpbb_root_path, $php_ext) -{ -	$filename = str_replace(array('/', '.'), array('slash', 'dot'), $phpbb_root_path); -	return $phpbb_root_path . 'cache/container_' . $filename . '.' . $php_ext; -} diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php index 68b1356297..bfe9c0b055 100644 --- a/phpBB/includes/functions_display.php +++ b/phpBB/includes/functions_display.php @@ -1063,7 +1063,8 @@ function display_reasons($reason_id = 0)  function display_user_activity(&$userdata)  {  	global $auth, $template, $db, $user; -	global $phpbb_root_path, $phpEx, $phpbb_container; +	global $phpbb_root_path, $phpEx; +	global $phpbb_container, $phpbb_dispatcher;  	// Do not display user activity for users having more than 5000 posts...  	if ($userdata['user_posts'] > 5000) @@ -1134,6 +1135,18 @@ function display_user_activity(&$userdata)  		}  	} +	/** +	* Alter list of forums and topics to display as active +	* +	* @event core.display_user_activity_modify_actives +	* @var	array	userdata						User's data +	* @var	array	active_f_row					List of active forums +	* @var	array	active_t_row					List of active posts +	* @since 3.1.0-RC3 +	*/ +	$vars = array('userdata', 'active_f_row', 'active_t_row'); +	extract($phpbb_dispatcher->trigger_event('core.display_user_activity_modify_actives', compact($vars))); +  	$userdata['active_t_row'] = $active_t_row;  	$userdata['active_f_row'] = $active_f_row; diff --git a/phpBB/includes/functions_install.php b/phpBB/includes/functions_install.php index 06f49e4b50..28cc603bdb 100644 --- a/phpBB/includes/functions_install.php +++ b/phpBB/includes/functions_install.php @@ -266,7 +266,7 @@ function connect_check_db($error_connect, &$error, $dbms_details, $table_prefix,  	if (is_array($db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, true)))  	{  		$db_error = $db->sql_error(); -		$error[] = $lang['INST_ERR_DB_CONNECT'] . '<br />' . (($db_error['message']) ? $db_error['message'] : $lang['INST_ERR_DB_NO_ERROR']); +		$error[] = $lang['INST_ERR_DB_CONNECT'] . '<br />' . (($db_error['message']) ? utf8_convert_message($db_error['message']) : $lang['INST_ERR_DB_NO_ERROR']);  	}  	else  	{ @@ -449,6 +449,7 @@ 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)  	{ diff --git a/phpBB/includes/functions_module.php b/phpBB/includes/functions_module.php index 86439ea03f..f17333edda 100644 --- a/phpBB/includes/functions_module.php +++ b/phpBB/includes/functions_module.php @@ -1040,19 +1040,45 @@ class p_master  	*/  	function add_mod_info($module_class)  	{ -		global $user, $phpEx; - -		global $phpbb_extension_manager; +		global $config, $user, $phpEx, $phpbb_extension_manager;  		$finder = $phpbb_extension_manager->get_finder(); -		$lang_files = $finder +		// We grab the language files from the default, English and user's language. +		// So we can fall back to the other files like we do when using add_lang() +		$default_lang_files = $english_lang_files = $user_lang_files = array(); + +		// Search for board default language if it's not the user language +		if ($config['default_lang'] != $user->lang_name) +		{ +			$default_lang_files = $finder +				->prefix('info_' . strtolower($module_class) . '_') +				->suffix(".$phpEx") +				->extension_directory('/language/' . basename($config['default_lang'])) +				->core_path('language/' . basename($config['default_lang']) . '/mods/') +				->find(); +		} + +		// Search for english, if its not the default or user language +		if ($config['default_lang'] != 'en' && $user->lang_name != 'en') +		{ +			$english_lang_files = $finder +				->prefix('info_' . strtolower($module_class) . '_') +				->suffix(".$phpEx") +				->extension_directory('/language/en') +				->core_path('language/en/mods/') +				->find(); +		} + +		// Find files in the user's language +		$user_lang_files = $finder  			->prefix('info_' . strtolower($module_class) . '_')  			->suffix(".$phpEx")  			->extension_directory('/language/' . $user->lang_name)  			->core_path('language/' . $user->lang_name . '/mods/')  			->find(); +		$lang_files = array_unique(array_merge($user_lang_files, $english_lang_files, $default_lang_files));  		foreach ($lang_files as $lang_file => $ext_name)  		{  			$user->add_lang_ext($ext_name, $lang_file); diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 0b37af0ee0..b3f164a84d 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -405,7 +405,7 @@ function posting_gen_topic_types($forum_id, $cur_topic_type = POST_NORMAL)  function upload_attachment($form_name, $forum_id, $local = false, $local_storage = '', $is_message = false, $local_filedata = false, \phpbb\plupload\plupload $plupload = null)  {  	global $auth, $user, $config, $db, $cache; -	global $phpbb_root_path, $phpEx; +	global $phpbb_root_path, $phpEx, $phpbb_dispatcher;  	$filedata = array(  		'error'	=> array() @@ -506,6 +506,20 @@ function upload_attachment($form_name, $forum_id, $local = false, $local_storage  	$filedata['real_filename'] = $file->get('uploadname');  	$filedata['filetime'] = time(); +	/** +	* Event to modify uploaded file before submit to the post +	* +	* @event core.modify_uploaded_file +	* @var	array	filedata	Array containing uploaded file data +	* @var	bool	is_image	Flag indicating if the file is an image +	* @since 3.1.0-RC3 +	*/ +	$vars = array( +		'filedata', +		'is_image', +	); +	extract($phpbb_dispatcher->trigger_event('core.modify_uploaded_file', compact($vars))); +  	// Check our complete quota  	if ($config['attachment_quota'])  	{ @@ -893,7 +907,7 @@ function posting_gen_attachment_entry($attachment_data, &$filename_data, $show_a  function load_drafts($topic_id = 0, $forum_id = 0, $id = 0, $pm_action = '', $msg_id = 0)  {  	global $user, $db, $template, $auth; -	global $phpbb_root_path, $phpEx; +	global $phpbb_root_path, $phpbb_dispatcher, $phpEx;  	$topic_ids = $forum_ids = $draft_rows = array(); @@ -936,7 +950,7 @@ function load_drafts($topic_id = 0, $forum_id = 0, $id = 0, $pm_action = '', $ms  	$topic_rows = array();  	if (sizeof($topic_ids))  	{ -		$sql = 'SELECT topic_id, forum_id, topic_title +		$sql = 'SELECT topic_id, forum_id, topic_title, topic_poster  			FROM ' . TOPICS_TABLE . '  			WHERE ' . $db->sql_in_set('topic_id', array_unique($topic_ids));  		$result = $db->sql_query($sql); @@ -947,6 +961,20 @@ function load_drafts($topic_id = 0, $forum_id = 0, $id = 0, $pm_action = '', $ms  		}  		$db->sql_freeresult($result);  	} + +	/** +	* Drafts found and their topics +	* Edit $draft_rows in order to add or remove drafts loaded +	* +	* @event core.load_drafts_draft_list_result +	* @var	array	draft_rows			The drafts query result. Includes its forum id and everything about the draft +	* @var	array	topic_ids			The list of topics got from the topics table +	* @var	array	topic_rows			The topics that draft_rows references +	* @since 3.1.0-RC3 +	*/ +	$vars = array('draft_rows', 'topic_ids', 'topic_rows'); +	extract($phpbb_dispatcher->trigger_event('core.load_drafts_draft_list_result', compact($vars))); +  	unset($topic_ids);  	$template->assign_var('S_SHOW_DRAFTS', true); @@ -2373,12 +2401,31 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u  	* event is to modify the return URL ($url).  	*  	* @event core.submit_post_end -	* @var	string		url						The "Return to topic" URL -	* @var	array		data					Array of post data about the -	*											submitted post +	* @var	string	mode				Variable containing posting mode value +	* @var	string	subject				Variable containing post subject value +	* @var	string	username			Variable containing post author name +	* @var	int		topic_type			Variable containing topic type value +	* @var	array	poll				Array with the poll data for the post +	* @var	array	data				Array with the data for the post +	* @var	bool	update_message		Flag indicating if the post will be updated +	* @var	bool	update_search_index	Flag indicating if the search index will be updated +	* @var	string	url					The "Return to topic" URL +	*  	* @since 3.1.0-a3 +	* @change 3.1.0-RC3 Added vars mode, subject, username, topic_type, +	*		poll, update_message, update_search_index  	*/ -	$vars = array('url', 'data'); +	$vars = array( +		'mode', +		'subject', +		'username', +		'topic_type', +		'poll', +		'data', +		'update_message', +		'update_search_index', +		'url', +	);  	extract($phpbb_dispatcher->trigger_event('core.submit_post_end', compact($vars)));  	return $url; diff --git a/phpBB/includes/functions_privmsgs.php b/phpBB/includes/functions_privmsgs.php index e60311f8ab..488f46a398 100644 --- a/phpBB/includes/functions_privmsgs.php +++ b/phpBB/includes/functions_privmsgs.php @@ -212,7 +212,7 @@ function get_folder($user_id, $folder_id = false)  		);  	} -	if ($folder_id !== false && !isset($folder[$folder_id])) +	if ($folder_id !== false && $folder_id !== PRIVMSGS_HOLD_BOX && !isset($folder[$folder_id]))  	{  		trigger_error('UNKNOWN_FOLDER');  	} diff --git a/phpBB/includes/mcp/mcp_logs.php b/phpBB/includes/mcp/mcp_logs.php index 2945e1ec8a..92dcdb5499 100644 --- a/phpBB/includes/mcp/mcp_logs.php +++ b/phpBB/includes/mcp/mcp_logs.php @@ -115,7 +115,7 @@ class mcp_logs  				if ($deletemark && sizeof($marked))  				{  					$conditions = array( -						'forum_id'	=> $forum_list, +						'forum_id'	=> array('IN' => $forum_list),  						'log_id'	=> array('IN' => $marked),  					); @@ -126,7 +126,7 @@ class mcp_logs  					$keywords = utf8_normalize_nfc(request_var('keywords', '', true));  					$conditions = array( -						'forum_id'	=> $forum_list, +						'forum_id'	=> array('IN' => $forum_list),  						'keywords'	=> $keywords,  					); diff --git a/phpBB/includes/mcp/mcp_post.php b/phpBB/includes/mcp/mcp_post.php index e81abd0c8e..1687409198 100644 --- a/phpBB/includes/mcp/mcp_post.php +++ b/phpBB/includes/mcp/mcp_post.php @@ -151,6 +151,7 @@ function mcp_post_details($id, $mode, $action)  		if (sizeof($attachments))  		{ +			$user->add_lang('viewtopic');  			$update_count = array();  			parse_attachments($post_info['forum_id'], $message, $attachments, $update_count);  		} diff --git a/phpBB/includes/questionnaire/questionnaire.php b/phpBB/includes/questionnaire/questionnaire.php index b4b01a74bf..63ea432863 100644 --- a/phpBB/includes/questionnaire/questionnaire.php +++ b/phpBB/includes/questionnaire/questionnaire.php @@ -257,11 +257,12 @@ class phpbb_questionnaire_phpbb_data_provider  	*/  	function get_data()  	{ -		global $phpbb_root_path, $phpEx; -		include("{$phpbb_root_path}config.$phpEx"); +		global $phpbb_root_path, $phpEx, $phpbb_config_php_file; + +		extract($phpbb_config_php_file->get_all());  		unset($dbhost, $dbport, $dbname, $dbuser, $dbpasswd); // Just a precaution -		$dbms = phpbb_convert_30_dbms_to_31($dbms); +		$dbms = $phpbb_config_php_file->convert_30_dbms_to_31($dbms);  		// Only send certain config vars  		$config_vars = array( diff --git a/phpBB/includes/ucp/ucp_prefs.php b/phpBB/includes/ucp/ucp_prefs.php index 35bb844170..a8c8920a7d 100644 --- a/phpBB/includes/ucp/ucp_prefs.php +++ b/phpBB/includes/ucp/ucp_prefs.php @@ -43,7 +43,7 @@ class ucp_prefs  					'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'])), -					'style'			=> request_var('style', (int) $user->data['user_style']), +					'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']), @@ -76,11 +76,11 @@ class ucp_prefs  				{  					if ($config['override_user_style'])  					{ -						$data['style'] = (int) $config['default_style']; +						$data['user_style'] = (int) $config['default_style'];  					} -					else if (!phpbb_style_is_active($data['style'])) +					else if (!phpbb_style_is_active($data['user_style']))  					{ -						$data['style'] = (int) $user->data['user_style']; +						$data['user_style'] = (int) $user->data['user_style'];  					}  					$error = validate_data($data, array( @@ -107,7 +107,7 @@ class ucp_prefs  							'user_dateformat'		=> $data['dateformat'],  							'user_lang'				=> $data['lang'],  							'user_timezone'			=> $data['tz'], -							'user_style'			=> $data['style'], +							'user_style'			=> $data['user_style'],  						);  						/** @@ -115,7 +115,7 @@ class ucp_prefs  						*  						* @event core.ucp_prefs_personal_update_data  						* @var	array	data		Submitted display options data -						* @var	array	sql_ary		Display options data we udpate +						* @var	array	sql_ary		Display options data we update  						* @since 3.1.0-a1  						*/  						$vars = array('data', 'sql_ary'); @@ -207,7 +207,7 @@ class ucp_prefs  					'S_MORE_STYLES'			=> $s_more_styles,  					'S_LANG_OPTIONS'		=> language_select($data['lang']), -					'S_STYLE_OPTIONS'		=> ($config['override_user_style']) ? '' : style_select($data['style']), +					'S_STYLE_OPTIONS'		=> ($config['override_user_style']) ? '' : style_select($data['user_style']),  					'S_TZ_OPTIONS'			=> $timezone_selects['tz_select'],  					'S_TZ_DATE_OPTIONS'		=> $timezone_selects['tz_dates'],  					'S_CAN_HIDE_ONLINE'		=> ($auth->acl_get('u_hideonline')) ? true : false, @@ -294,7 +294,7 @@ class ucp_prefs  						*  						* @event core.ucp_prefs_view_update_data  						* @var	array	data		Submitted display options data -						* @var	array	sql_ary		Display options data we udpate +						* @var	array	sql_ary		Display options data we update  						* @since 3.1.0-a1  						*/  						$vars = array('data', 'sql_ary'); @@ -420,7 +420,7 @@ class ucp_prefs  						*  						* @event core.ucp_prefs_post_update_data  						* @var	array	data		Submitted display options data -						* @var	array	sql_ary		Display options data we udpate +						* @var	array	sql_ary		Display options data we update  						* @since 3.1.0-a1  						*/  						$vars = array('data', 'sql_ary'); @@ -451,6 +451,24 @@ class ucp_prefs  			break;  		} +		/** +		* Modify UCP preferences data before the page load +		* +		* @event core.ucp_prefs_modify_common +		* @var	array	data		Array with current/submitted UCP options data +		* @var	array	error		Errors data +		* @var	string	mode		UCP prefs operation mode +		* @var	string	s_hidden_fields		Hidden fields data +		* @since 3.1.0-RC3 +		*/ +		$vars = array( +			'data', +			'error', +			'mode', +			's_hidden_fields', +		); +		extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_modify_common', compact($vars))); +  		$template->assign_vars(array(  			'L_TITLE'			=> $user->lang['UCP_PREFS_' . strtoupper($mode)], | 
