diff --git a/phpBB/includes/ucp/ucp_notifications.php b/phpBB/includes/ucp/ucp_notifications.php index b0eeb915ec..7a46d3e5aa 100644 --- a/phpBB/includes/ucp/ucp_notifications.php +++ b/phpBB/includes/ucp/ucp_notifications.php @@ -62,6 +62,7 @@ class ucp_notifications foreach ($notification_methods as $method => $method_data) { $is_set_notify = $request->is_set_post(str_replace('.', '_', $type . '_' . $method_data['id'])); + $is_available = $method_data['method']->is_available($type_data['type']); /** * Event to perform additional actions before ucp_notifications is submitted @@ -70,21 +71,26 @@ class ucp_notifications * @var array type_data The notification type data * @var array method_data The notification method data * @var bool is_set_notify The notification is set or not + * @var bool is_available The notification is available or not + * @var array subscriptions The subscriptions data * * @since 3.2.10-RC1 + * @since 3.3.1-RC1 */ $vars = [ 'type_data', 'method_data', 'is_set_notify', + 'is_available', + 'subscriptions', ]; extract($phpbb_dispatcher->trigger_event('core.ucp_notifications_submit_notification_is_set', compact($vars))); - if ($is_set_notify && (!isset($subscriptions[$type]) || !in_array($method_data['id'], $subscriptions[$type]))) + if ($is_set_notify && $is_available && (!isset($subscriptions[$type]) || !in_array($method_data['id'], $subscriptions[$type]))) { $phpbb_notifications->add_subscription($type, 0, $method_data['id']); } - else if (!$is_set_notify && isset($subscriptions[$type]) && in_array($method_data['id'], $subscriptions[$type])) + else if ((!$is_set_notify || !$is_available) && isset($subscriptions[$type]) && in_array($method_data['id'], $subscriptions[$type])) { $phpbb_notifications->delete_subscription($type, 0, $method_data['id']); } @@ -225,13 +231,16 @@ class ucp_notifications * @var array type_data The notification type data * @var array method_data The notification method data * @var array tpl_ary The template variables + * @var array subscriptions The subscriptions data * * @since 3.2.10-RC1 + * @since 3.3.1-RC1 */ $vars = [ 'type_data', 'method_data', 'tpl_ary', + 'subscriptions', ]; extract($phpbb_dispatcher->trigger_event('core.ucp_notifications_output_notification_types_modify_template_vars', compact($vars))); diff --git a/phpBB/phpbb/notification/manager.php b/phpBB/phpbb/notification/manager.php index 2d6d081d33..ace08e6cf6 100644 --- a/phpBB/phpbb/notification/manager.php +++ b/phpBB/phpbb/notification/manager.php @@ -350,6 +350,7 @@ class manager * @var array notify_users User list to notify * * @since 3.2.10-RC1 + * @since 3.3.1-RC1 */ $vars = [ 'notification_type_name', diff --git a/phpBB/styles/prosilver/template/ucp_notifications.html b/phpBB/styles/prosilver/template/ucp_notifications.html index 8be157c933..7ebe6d431a 100644 --- a/phpBB/styles/prosilver/template/ucp_notifications.html +++ b/phpBB/styles/prosilver/template/ucp_notifications.html @@ -31,7 +31,7 @@
   {notification_types.EXPLAIN} - checked="checked" disabled="disabled" /> + checked="checked" disabled="disabled" /> diff --git a/phpBB/ucp.php b/phpBB/ucp.php index f11a542703..817ea72111 100644 --- a/phpBB/ucp.php +++ b/phpBB/ucp.php @@ -365,6 +365,7 @@ if ($module->is_active('zebra', 'friends')) * @var array sql_ary SQL query array for listing of friends * * @since 3.2.10-RC1 + * @since 3.3.1-RC1 */ $vars = [ 'sql_ary', @@ -395,6 +396,7 @@ if ($module->is_active('zebra', 'friends')) * @var string which friend is 'online' or 'offline' * * @since 3.2.10-RC1 + * @since 3.3.1-RC1 */ $vars = [ 'row', diff --git a/phpBB/viewforum.php b/phpBB/viewforum.php index 14c3ba1409..db88faabb0 100644 --- a/phpBB/viewforum.php +++ b/phpBB/viewforum.php @@ -723,6 +723,7 @@ if (count($topic_list)) * @var array sql_array SQL query array for obtaining topics/stickies * * @since 3.2.10-RC1 + * @since 3.3.1-RC1 */ $vars = [ 'forum_id',