[ticket/16411] Add vars to notification core events

PHPBB3-16411
This commit is contained in:
Dark❶ 2020-03-22 03:40:37 +05:30
parent 443b931b36
commit 2c0509a5c7
No known key found for this signature in database
GPG key ID: FAE32A15F9132DE8

View file

@ -62,6 +62,7 @@ class ucp_notifications
foreach ($notification_methods as $method => $method_data) foreach ($notification_methods as $method => $method_data)
{ {
$is_set_notify = $request->is_set_post(str_replace('.', '_', $type . '_' . $method_data['id'])); $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 * Event to perform additional actions before ucp_notifications is submitted
@ -70,6 +71,7 @@ class ucp_notifications
* @var array type_data The notification type data * @var array type_data The notification type data
* @var array method_data The notification method data * @var array method_data The notification method data
* @var bool is_set_notify The notification is set or not * @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 * @var array subscriptions The subscriptions data
* *
* @since 3.2.10-RC1 * @since 3.2.10-RC1
@ -78,15 +80,16 @@ class ucp_notifications
'type_data', 'type_data',
'method_data', 'method_data',
'is_set_notify', 'is_set_notify',
'is_available',
'subscriptions', 'subscriptions',
]; ];
extract($phpbb_dispatcher->trigger_event('core.ucp_notifications_submit_notification_is_set', compact($vars))); 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']); $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']); $phpbb_notifications->delete_subscription($type, 0, $method_data['id']);
} }