aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/phpbb')
-rw-r--r--phpBB/phpbb/captcha/plugins/qa.php14
-rw-r--r--phpBB/phpbb/console/command/command.php45
-rw-r--r--phpBB/phpbb/console/command/reparser/reparse.php40
-rw-r--r--phpBB/phpbb/console/command/thumbnail/delete.php27
-rw-r--r--phpBB/phpbb/console/command/thumbnail/generate.php27
-rw-r--r--phpBB/phpbb/console/command/user/reclean.php40
-rw-r--r--phpBB/phpbb/db/migration/data/v320/report_id_auto_increment.php45
-rw-r--r--phpBB/phpbb/db/migration/data/v320/v320b2.php40
-rw-r--r--phpBB/phpbb/install/console/command/install/install.php1
-rw-r--r--phpBB/phpbb/install/helper/database.php6
-rw-r--r--phpBB/phpbb/install/helper/iohandler/cli_iohandler.php9
-rw-r--r--phpBB/phpbb/install/installer_configuration.php3
-rw-r--r--phpBB/phpbb/install/module/install_database/task/add_config_settings.php4
-rw-r--r--phpBB/phpbb/install/module/obtain_data/task/obtain_email_data.php7
-rw-r--r--phpBB/phpbb/language/language_file_helper.php1
-rw-r--r--phpBB/phpbb/notification/manager.php9
-rw-r--r--phpBB/phpbb/notification/type/base.php39
17 files changed, 204 insertions, 153 deletions
diff --git a/phpBB/phpbb/captcha/plugins/qa.php b/phpBB/phpbb/captcha/plugins/qa.php
index 7f804850a4..9d481acc5d 100644
--- a/phpBB/phpbb/captcha/plugins/qa.php
+++ b/phpBB/phpbb/captcha/plugins/qa.php
@@ -222,7 +222,11 @@ class qa
{
global $phpbb_log, $template, $user;
- if ($this->is_solved() || empty($this->question_text) || !count($this->question_ids))
+ if ($this->is_solved())
+ {
+ return false;
+ }
+ else if (empty($this->question_text) || !count($this->question_ids))
{
/** @var \phpbb\log\log_interface $phpbb_log */
$phpbb_log->add('critical', $user->data['user_id'], $user->ip, 'LOG_ERROR_CAPTCHA', time(), array($user->lang('CONFIRM_QUESTION_MISSING')));
@@ -231,10 +235,10 @@ class qa
else
{
$template->assign_vars(array(
- 'QA_CONFIRM_QUESTION' => $this->question_text,
- 'QA_CONFIRM_ID' => $this->confirm_id,
- 'S_CONFIRM_CODE' => true,
- 'S_TYPE' => $this->type,
+ 'QA_CONFIRM_QUESTION' => $this->question_text,
+ 'QA_CONFIRM_ID' => $this->confirm_id,
+ 'S_CONFIRM_CODE' => true,
+ 'S_TYPE' => $this->type,
));
return 'captcha_qa.html';
diff --git a/phpBB/phpbb/console/command/command.php b/phpBB/phpbb/console/command/command.php
index 638c989da2..0124c00d22 100644
--- a/phpBB/phpbb/console/command/command.php
+++ b/phpBB/phpbb/console/command/command.php
@@ -13,6 +13,10 @@
namespace phpbb\console\command;
+use Symfony\Component\Console\Helper\ProgressBar;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Style\SymfonyStyle;
+
abstract class command extends \Symfony\Component\Console\Command\Command
{
/** @var \phpbb\user */
@@ -28,4 +32,45 @@ abstract class command extends \Symfony\Component\Console\Command\Command
$this->user = $user;
parent::__construct();
}
+
+ /**
+ * Create a styled progress bar
+ *
+ * @param int $max Max value for the progress bar
+ * @param SymfonyStyle $io Symfony style output decorator
+ * @param OutputInterface $output The output stream, used to print messages
+ * @param bool $message Should we display message output under the progress bar?
+ * @return ProgressBar
+ */
+ public function create_progress_bar($max, SymfonyStyle $io, OutputInterface $output, $message = false)
+ {
+ $progress = $io->createProgressBar($max);
+ if ($output->getVerbosity() === OutputInterface::VERBOSITY_VERBOSE)
+ {
+ $progress->setFormat('<info>[%percent:3s%%]</info> %message%');
+ $progress->setOverwrite(false);
+ }
+ else if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE)
+ {
+ $progress->setFormat('<info>[%current:s%/%max:s%]</info><comment>[%elapsed%/%estimated%][%memory%]</comment> %message%');
+ $progress->setOverwrite(false);
+ }
+ else
+ {
+ $io->newLine(2);
+ $progress->setFormat(
+ " %current:s%/%max:s% %bar% %percent:3s%%\n" .
+ " " . ($message ? '%message%' : ' ') . " %elapsed:6s%/%estimated:-6s% %memory:6s%\n");
+ $progress->setBarWidth(60);
+ }
+
+ if (!defined('PHP_WINDOWS_VERSION_BUILD'))
+ {
+ $progress->setEmptyBarCharacter('░'); // light shade character \u2591
+ $progress->setProgressCharacter('');
+ $progress->setBarCharacter('▓'); // dark shade character \u2593
+ }
+
+ return $progress;
+ }
}
diff --git a/phpBB/phpbb/console/command/reparser/reparse.php b/phpBB/phpbb/console/command/reparser/reparse.php
index ddc97a1d1d..b10bd56a58 100644
--- a/phpBB/phpbb/console/command/reparser/reparse.php
+++ b/phpBB/phpbb/console/command/reparser/reparse.php
@@ -122,44 +122,6 @@ class reparse extends \phpbb\console\command\command
}
/**
- * Create a styled progress bar
- *
- * @param integer $max Max value for the progress bar
- * @return \Symfony\Component\Console\Helper\ProgressBar
- */
- protected function create_progress_bar($max)
- {
- $progress = $this->io->createProgressBar($max);
- if ($this->output->getVerbosity() === OutputInterface::VERBOSITY_VERBOSE)
- {
- $progress->setFormat('<info>[%percent:3s%%]</info> %message%');
- $progress->setOverwrite(false);
- }
- else if ($this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE)
- {
- $progress->setFormat('<info>[%current:s%/%max:s%]</info><comment>[%elapsed%/%estimated%][%memory%]</comment> %message%');
- $progress->setOverwrite(false);
- }
- else
- {
- $this->io->newLine(2);
- $progress->setFormat(
- " %current:s%/%max:s% %bar% %percent:3s%%\n" .
- " %message% %elapsed:6s%/%estimated:-6s% %memory:6s%\n");
- $progress->setBarWidth(60);
- }
-
- if (!defined('PHP_WINDOWS_VERSION_BUILD'))
- {
- $progress->setEmptyBarCharacter('░'); // light shade character \u2591
- $progress->setProgressCharacter('');
- $progress->setBarCharacter('▓'); // dark shade character \u2593
- }
-
- return $progress;
- }
-
- /**
* Executes the command reparser:reparse
*
* @param InputInterface $input
@@ -258,7 +220,7 @@ class reparse extends \phpbb\console\command\command
$this->io->section($this->user->lang('CLI_REPARSER_REPARSE_REPARSING', preg_replace('(^text_reparser\\.)', '', $name), $min, $max));
- $progress = $this->create_progress_bar($max);
+ $progress = $this->create_progress_bar($max, $this->io, $this->output, true);
$progress->setMessage($this->user->lang('CLI_REPARSER_REPARSE_REPARSING_START', preg_replace('(^text_reparser\\.)', '', $name)));
$progress->start();
diff --git a/phpBB/phpbb/console/command/thumbnail/delete.php b/phpBB/phpbb/console/command/thumbnail/delete.php
index e8e4cf568e..cfa9891fbc 100644
--- a/phpBB/phpbb/console/command/thumbnail/delete.php
+++ b/phpBB/phpbb/console/command/thumbnail/delete.php
@@ -91,32 +91,7 @@ class delete extends \phpbb\console\command\command
WHERE thumbnail = 1';
$result = $this->db->sql_query($sql);
- $progress = $io->createProgressBar($nb_missing_thumbnails);
- if ($output->getVerbosity() === OutputInterface::VERBOSITY_VERBOSE)
- {
- $progress->setFormat('<info>[%percent:3s%%]</info> %message%');
- $progress->setOverwrite(false);
- }
- else if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE)
- {
- $progress->setFormat('<info>[%current:s%/%max:s%]</info><comment>[%elapsed%/%estimated%][%memory%]</comment> %message%');
- $progress->setOverwrite(false);
- }
- else
- {
- $io->newLine(2);
- $progress->setFormat(
- " %current:s%/%max:s% %bar% %percent:3s%%\n" .
- " %elapsed:6s%/%estimated:-6s% %memory:6s%\n");
- $progress->setBarWidth(60);
- }
-
- if (!defined('PHP_WINDOWS_VERSION_BUILD'))
- {
- $progress->setEmptyBarCharacter('░'); // light shade character \u2591
- $progress->setProgressCharacter('');
- $progress->setBarCharacter('▓'); // dark shade character \u2593
- }
+ $progress = $this->create_progress_bar($nb_missing_thumbnails, $io, $output);
$progress->setMessage($this->user->lang('CLI_THUMBNAIL_DELETING'));
diff --git a/phpBB/phpbb/console/command/thumbnail/generate.php b/phpBB/phpbb/console/command/thumbnail/generate.php
index e677db3a97..64f7555336 100644
--- a/phpBB/phpbb/console/command/thumbnail/generate.php
+++ b/phpBB/phpbb/console/command/thumbnail/generate.php
@@ -115,32 +115,7 @@ class generate extends \phpbb\console\command\command
require($this->phpbb_root_path . 'includes/functions_posting.' . $this->php_ext);
}
- $progress = $io->createProgressBar($nb_missing_thumbnails);
- if ($output->getVerbosity() === OutputInterface::VERBOSITY_VERBOSE)
- {
- $progress->setFormat('<info>[%percent:3s%%]</info> %message%');
- $progress->setOverwrite(false);
- }
- else if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE)
- {
- $progress->setFormat('<info>[%current:s%/%max:s%]</info><comment>[%elapsed%/%estimated%][%memory%]</comment> %message%');
- $progress->setOverwrite(false);
- }
- else
- {
- $io->newLine(2);
- $progress->setFormat(
- " %current:s%/%max:s% %bar% %percent:3s%%\n" .
- " %elapsed:6s%/%estimated:-6s% %memory:6s%\n");
- $progress->setBarWidth(60);
- }
-
- if (!defined('PHP_WINDOWS_VERSION_BUILD'))
- {
- $progress->setEmptyBarCharacter('░'); // light shade character \u2591
- $progress->setProgressCharacter('');
- $progress->setBarCharacter('▓'); // dark shade character \u2593
- }
+ $progress = $this->create_progress_bar($nb_missing_thumbnails, $io, $output);
$progress->setMessage($this->user->lang('CLI_THUMBNAIL_GENERATING'));
diff --git a/phpBB/phpbb/console/command/user/reclean.php b/phpBB/phpbb/console/command/user/reclean.php
index e298c285be..1a89f13382 100644
--- a/phpBB/phpbb/console/command/user/reclean.php
+++ b/phpBB/phpbb/console/command/user/reclean.php
@@ -142,46 +142,6 @@ class reclean extends command
}
/**
- * Create a styled progress bar
- *
- * @param integer $max Max value for the progress bar
- * @param SymfonyStyle $io
- * @param OutputInterface $output The output stream, used to print messages
- * @return ProgressBar
- */
- protected function create_progress_bar($max, SymfonyStyle $io, OutputInterface $output)
- {
- $progress = $io->createProgressBar($max);
- if ($output->getVerbosity() === OutputInterface::VERBOSITY_VERBOSE)
- {
- $progress->setFormat('<info>[%percent:3s%%]</info> %message%');
- $progress->setOverwrite(false);
- }
- else if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE)
- {
- $progress->setFormat('<info>[%current:s%/%max:s%]</info><comment>[%elapsed%/%estimated%][%memory%]</comment> %message%');
- $progress->setOverwrite(false);
- }
- else
- {
- $io->newLine(2);
- $progress->setFormat(
- " %current:s%/%max:s% %bar% %percent:3s%%\n" .
- " %elapsed:6s%/%estimated:-6s% %memory:6s%\n");
- $progress->setBarWidth(60);
- }
-
- if (!defined('PHP_WINDOWS_VERSION_BUILD'))
- {
- $progress->setEmptyBarCharacter('░'); // light shade character \u2591
- $progress->setProgressCharacter('');
- $progress->setBarCharacter('▓'); // dark shade character \u2593
- }
-
- return $progress;
- }
-
- /**
* Get the count of users in the database
*
* @return int
diff --git a/phpBB/phpbb/db/migration/data/v320/report_id_auto_increment.php b/phpBB/phpbb/db/migration/data/v320/report_id_auto_increment.php
new file mode 100644
index 0000000000..c40504051e
--- /dev/null
+++ b/phpBB/phpbb/db/migration/data/v320/report_id_auto_increment.php
@@ -0,0 +1,45 @@
+<?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.
+*
+*/
+
+namespace phpbb\db\migration\data\v320;
+
+class report_id_auto_increment extends \phpbb\db\migration\migration
+{
+ static public function depends_on()
+ {
+ return array(
+ '\phpbb\db\migration\data\v320\default_data_type_ids',
+ );
+ }
+
+ public function update_schema()
+ {
+ return array(
+ 'change_columns' => array(
+ $this->table_prefix . 'reports' => array(
+ 'report_id' => array('ULINT', null, 'auto_increment'),
+ ),
+ ),
+ );
+ }
+
+ public function revert_schema()
+ {
+ return array(
+ 'change_columns' => array(
+ $this->table_prefix . 'reports' => array(
+ 'report_id' => array('ULINT', 0), 0),
+ ),
+ );
+ }
+}
diff --git a/phpBB/phpbb/db/migration/data/v320/v320b2.php b/phpBB/phpbb/db/migration/data/v320/v320b2.php
new file mode 100644
index 0000000000..007f7588e6
--- /dev/null
+++ b/phpBB/phpbb/db/migration/data/v320/v320b2.php
@@ -0,0 +1,40 @@
+<?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.
+*
+*/
+
+namespace phpbb\db\migration\data\v320;
+
+use phpbb\db\migration\migration;
+
+class v320b2 extends migration
+{
+ public function effectively_installed()
+ {
+ return version_compare($this->config['version'], '3.2.0-b2', '>=');
+ }
+
+ static public function depends_on()
+ {
+ return array(
+ '\phpbb\db\migration\data\v31x\v318',
+ '\phpbb\db\migration\data\v320\v320b1',
+ '\phpbb\db\migration\data\v320\remote_upload_validation',
+ );
+ }
+
+ public function update_data()
+ {
+ return array(
+ array('config.update', array('version', '3.2.0-b2')),
+ );
+ }
+}
diff --git a/phpBB/phpbb/install/console/command/install/install.php b/phpBB/phpbb/install/console/command/install/install.php
index 50c23f6877..de3a2e2d61 100644
--- a/phpBB/phpbb/install/console/command/install/install.php
+++ b/phpBB/phpbb/install/console/command/install/install.php
@@ -190,6 +190,7 @@ class install extends \phpbb\console\command\command
$iohandler->set_input('email_enable', $config['email']['enabled']);
$iohandler->set_input('smtp_delivery', $config['email']['smtp_delivery']);
$iohandler->set_input('smtp_host', $config['email']['smtp_host']);
+ $iohandler->set_input('smtp_port', $config['email']['smtp_port']);
$iohandler->set_input('smtp_auth', $config['email']['smtp_auth']);
$iohandler->set_input('smtp_user', $config['email']['smtp_user']);
$iohandler->set_input('smtp_pass', $config['email']['smtp_pass']);
diff --git a/phpBB/phpbb/install/helper/database.php b/phpBB/phpbb/install/helper/database.php
index c4c90a01a4..b8422fc1ed 100644
--- a/phpBB/phpbb/install/helper/database.php
+++ b/phpBB/phpbb/install/helper/database.php
@@ -58,7 +58,7 @@ class database
'LABEL' => 'MS SQL Server 2000+',
'SCHEMA' => 'mssql',
'MODULE' => 'mssql',
- 'DELIM' => 'GO',
+ 'DELIM' => ';',
'DRIVER' => 'phpbb\db\driver\mssql',
'AVAILABLE' => true,
'2.0.x' => true,
@@ -67,7 +67,7 @@ class database
'LABEL' => 'MS SQL Server [ ODBC ]',
'SCHEMA' => 'mssql',
'MODULE' => 'odbc',
- 'DELIM' => 'GO',
+ 'DELIM' => ';',
'DRIVER' => 'phpbb\db\driver\mssql_odbc',
'AVAILABLE' => true,
'2.0.x' => true,
@@ -76,7 +76,7 @@ class database
'LABEL' => 'MS SQL Server 2005+ [ Native ]',
'SCHEMA' => 'mssql',
'MODULE' => 'sqlsrv',
- 'DELIM' => 'GO',
+ 'DELIM' => ';',
'DRIVER' => 'phpbb\db\driver\mssqlnative',
'AVAILABLE' => true,
'2.0.x' => false,
diff --git a/phpBB/phpbb/install/helper/iohandler/cli_iohandler.php b/phpBB/phpbb/install/helper/iohandler/cli_iohandler.php
index 94550d2db0..2a41cb10ba 100644
--- a/phpBB/phpbb/install/helper/iohandler/cli_iohandler.php
+++ b/phpBB/phpbb/install/helper/iohandler/cli_iohandler.php
@@ -124,13 +124,14 @@ class cli_iohandler extends iohandler_base
public function add_error_message($error_title, $error_description = false)
{
$this->io->newLine();
+ $message = $this->translate_message($error_title, $error_description);
+ $message_string = $message['title'] . (!empty($message['description']) ? "\n" . $message['description'] : '');
- if (strpos($error_title, '<br />') !== false)
+ if (strpos($message_string, '<br />') !== false)
{
- $error_title = strip_tags(str_replace('<br />', "\n", $error_title));
+ $message_string = strip_tags(str_replace('<br />', "\n", $message_string));
}
- $message = $this->translate_message($error_title, $error_description);
- $message_string = $message['title'] . (!empty($message['description']) ? "\n" . $message['description'] : '');
+
$this->io->error($message_string);
if ($this->progress_bar !== null)
diff --git a/phpBB/phpbb/install/installer_configuration.php b/phpBB/phpbb/install/installer_configuration.php
index ab02da8686..c660c99d0f 100644
--- a/phpBB/phpbb/install/installer_configuration.php
+++ b/phpBB/phpbb/install/installer_configuration.php
@@ -93,6 +93,9 @@ class installer_configuration implements ConfigurationInterface
->scalarNode('smtp_host')
->defaultValue(null)
->end()
+ ->scalarNode('smtp_port')
+ ->defaultValue(null)
+ ->end()
->scalarNode('smtp_auth')
->defaultValue(null)
->end()
diff --git a/phpBB/phpbb/install/module/install_database/task/add_config_settings.php b/phpBB/phpbb/install/module/install_database/task/add_config_settings.php
index 7a2df01de6..8002e3ed97 100644
--- a/phpBB/phpbb/install/module/install_database/task/add_config_settings.php
+++ b/phpBB/phpbb/install/module/install_database/task/add_config_settings.php
@@ -191,6 +191,10 @@ class add_config_settings extends \phpbb\install\task_base
WHERE config_name = 'smtp_host'",
'UPDATE ' . $this->config_table . "
+ SET config_value = '" . $this->db->sql_escape($this->install_config->get('smtp_port')) . "'
+ WHERE config_name = 'smtp_port'",
+
+ 'UPDATE ' . $this->config_table . "
SET config_value = '" . $this->db->sql_escape($this->install_config->get('smtp_auth')) . "'
WHERE config_name = 'smtp_auth_method'",
diff --git a/phpBB/phpbb/install/module/obtain_data/task/obtain_email_data.php b/phpBB/phpbb/install/module/obtain_data/task/obtain_email_data.php
index 606e4a2ddd..1cb4f04297 100644
--- a/phpBB/phpbb/install/module/obtain_data/task/obtain_email_data.php
+++ b/phpBB/phpbb/install/module/obtain_data/task/obtain_email_data.php
@@ -51,6 +51,7 @@ class obtain_email_data extends \phpbb\install\task_base implements \phpbb\insta
$email_enable = $this->io_handler->get_input('email_enable', true);
$smtp_delivery = $this->io_handler->get_input('smtp_delivery', '');
$smtp_host = $this->io_handler->get_input('smtp_host', '');
+ $smtp_port = $this->io_handler->get_input('smtp_port', '');
$smtp_auth = $this->io_handler->get_input('smtp_auth', '');
$smtp_user = $this->io_handler->get_input('smtp_user', '');
$smtp_passwd = $this->io_handler->get_input('smtp_pass', '');
@@ -63,6 +64,7 @@ class obtain_email_data extends \phpbb\install\task_base implements \phpbb\insta
$this->install_config->set('email_enable', $email_enable);
$this->install_config->set('smtp_delivery', $smtp_delivery);
$this->install_config->set('smtp_host', $smtp_host);
+ $this->install_config->set('smtp_port', $smtp_port);
$this->install_config->set('smtp_auth', $smtp_auth);
$this->install_config->set('smtp_user', $smtp_user);
$this->install_config->set('smtp_pass', $smtp_passwd);
@@ -119,6 +121,11 @@ class obtain_email_data extends \phpbb\install\task_base implements \phpbb\insta
'type' => 'text',
'default' => $smtp_host,
),
+ 'smtp_port' => array(
+ 'label' => 'SMTP_PORT',
+ 'type' => 'text',
+ 'default' => $smtp_port,
+ ),
'smtp_auth' => array(
'label' => 'SMTP_AUTH_METHOD',
'description' => 'SMTP_AUTH_METHOD_EXPLAIN',
diff --git a/phpBB/phpbb/language/language_file_helper.php b/phpBB/phpbb/language/language_file_helper.php
index 18d7b62e21..85de034fb8 100644
--- a/phpBB/phpbb/language/language_file_helper.php
+++ b/phpBB/phpbb/language/language_file_helper.php
@@ -47,6 +47,7 @@ class language_file_helper
$finder->files()
->name('iso.txt')
->depth('== 1')
+ ->followLinks()
->in($this->phpbb_root_path . 'language');
$available_languages = array();
diff --git a/phpBB/phpbb/notification/manager.php b/phpBB/phpbb/notification/manager.php
index 3265bcb629..023e1610f0 100644
--- a/phpBB/phpbb/notification/manager.php
+++ b/phpBB/phpbb/notification/manager.php
@@ -943,11 +943,16 @@ class manager
/**
* Get notification type ids (as an array)
*
- * @param array $notification_type_names Array of strings
+ * @param string|array $notification_type_names Notification type names
* @return array Array of integers
*/
- public function get_notification_type_ids(array $notification_type_names)
+ public function get_notification_type_ids($notification_type_names)
{
+ if (!is_array($notification_type_names))
+ {
+ $notification_type_names = array($notification_type_names);
+ }
+
$notification_type_ids = array();
foreach ($notification_type_names as $name)
diff --git a/phpBB/phpbb/notification/type/base.php b/phpBB/phpbb/notification/type/base.php
index 4aacb1c99e..77ed7f2b09 100644
--- a/phpBB/phpbb/notification/type/base.php
+++ b/phpBB/phpbb/notification/type/base.php
@@ -449,7 +449,7 @@ abstract class base implements \phpbb\notification\type\type_interface
return array();
}
- $rowset = $resulting_user_ids = array();
+ $rowset = $output = array();
$sql = 'SELECT user_id, method, notify
FROM ' . $this->user_notifications_table . '
@@ -460,9 +460,7 @@ abstract class base implements \phpbb\notification\type\type_interface
while ($row = $this->db->sql_fetchrow($result))
{
- $resulting_user_ids[] = $row['user_id'];
-
- if (!$row['notify'] || (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']])))
+ if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']]))
{
continue;
}
@@ -471,22 +469,47 @@ abstract class base implements \phpbb\notification\type\type_interface
{
$rowset[$row['user_id']] = array();
}
+ $rowset[$row['user_id']][$row['method']] = $row['notify'];
- $rowset[$row['user_id']][] = $row['method'];
+ if (!isset($output[$row['user_id']]))
+ {
+ $output[$row['user_id']] = array();
+ }
+ if ($row['notify'])
+ {
+ $output[$row['user_id']][] = $row['method'];
+ }
}
$this->db->sql_freeresult($result);
+ $default_methods = $this->notification_manager->get_default_methods();
+
foreach ($user_ids as $user_id)
{
- if (!in_array($user_id, $resulting_user_ids) && !isset($options['ignore_users'][$user_id]))
+ if (isset($options['ignore_users'][$user_id]))
+ {
+ continue;
+ }
+ if (!array_key_exists($user_id, $rowset))
{
// No rows at all for this user, use the default methods
- $rowset[$user_id] = $this->notification_manager->get_default_methods();
+ $output[$user_id] = $default_methods;
+ }
+ else
+ {
+ foreach ($default_methods as $default_method)
+ {
+ if (!array_key_exists($default_method, $rowset[$user_id]))
+ {
+ // No user preference for this type recorded, but it should be enabled by default.
+ $output[$user_id][] = $default_method;
+ }
+ }
}
}
- return $rowset;
+ return $output;
}
/**