aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/acp/acp_ban.php55
-rw-r--r--phpBB/includes/acp/acp_main.php10
-rw-r--r--phpBB/includes/acp/acp_styles.php4
-rw-r--r--phpBB/includes/constants.php2
-rw-r--r--phpBB/includes/functions.php64
-rw-r--r--phpBB/includes/functions_acp.php1
-rw-r--r--phpBB/includes/functions_container.php297
-rw-r--r--phpBB/includes/functions_display.php15
-rw-r--r--phpBB/includes/functions_install.php3
-rw-r--r--phpBB/includes/functions_module.php34
-rw-r--r--phpBB/includes/functions_posting.php61
-rw-r--r--phpBB/includes/functions_privmsgs.php2
-rw-r--r--phpBB/includes/mcp/mcp_logs.php4
-rw-r--r--phpBB/includes/mcp/mcp_post.php1
-rw-r--r--phpBB/includes/questionnaire/questionnaire.php7
-rw-r--r--phpBB/includes/ucp/ucp_prefs.php36
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)],