aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/notification
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/phpbb/notification')
-rw-r--r--phpBB/phpbb/notification/manager.php8
-rw-r--r--phpBB/phpbb/notification/method/email.php10
-rw-r--r--phpBB/phpbb/notification/method/jabber.php10
-rw-r--r--phpBB/phpbb/notification/method/messenger_base.php15
4 files changed, 36 insertions, 7 deletions
diff --git a/phpBB/phpbb/notification/manager.php b/phpBB/phpbb/notification/manager.php
index 6923d96392..1cd7e5bc9a 100644
--- a/phpBB/phpbb/notification/manager.php
+++ b/phpBB/phpbb/notification/manager.php
@@ -475,9 +475,10 @@ class manager
if ($type instanceof \phpbb\notification\type\type_interface && $type->is_available())
{
$options = array_merge(array(
- 'id' => $type->get_type(),
- 'lang' => 'NOTIFICATION_TYPE_' . strtoupper($type->get_type()),
- 'group' => 'NOTIFICATION_GROUP_MISCELLANEOUS',
+ 'type' => $type,
+ 'id' => $type->get_type(),
+ 'lang' => 'NOTIFICATION_TYPE_' . strtoupper($type->get_type()),
+ 'group' => 'NOTIFICATION_GROUP_MISCELLANEOUS',
), (($type::$notification_option !== false) ? $type::$notification_option : array()));
$this->subscription_types[$options['group']][$options['id']] = $options;
@@ -509,6 +510,7 @@ class manager
foreach ($this->get_available_subscription_methods() as $method_name => $method)
{
$subscription_methods[$method_name] = array(
+ 'method' => $method,
'id' => $method->get_type(),
'lang' => str_replace('.', '_', strtoupper($method->get_type())),
);
diff --git a/phpBB/phpbb/notification/method/email.php b/phpBB/phpbb/notification/method/email.php
index 21a6559012..56dd1e9367 100644
--- a/phpBB/phpbb/notification/method/email.php
+++ b/phpBB/phpbb/notification/method/email.php
@@ -13,6 +13,8 @@
namespace phpbb\notification\method;
+use phpbb\notification\type\type_interface;
+
/**
* Email notification method class
* This class handles sending emails for notifications
@@ -56,10 +58,14 @@ class email extends \phpbb\notification\method\messenger_base
/**
* Is this method available for the user?
* This is checked on the notifications options
+ *
+ * @param type_interface $notification_type An optional instance of a notification type. If provided, this
+ * method additionally checks if the type provides an email template.
+ * @return bool
*/
- public function is_available()
+ public function is_available(type_interface $notification_type = null)
{
- return $this->config['email_enable'] && $this->user->data['user_email'];
+ return parent::is_available($notification_type) && $this->config['email_enable'] && $this->user->data['user_email'];
}
/**
diff --git a/phpBB/phpbb/notification/method/jabber.php b/phpBB/phpbb/notification/method/jabber.php
index 509c6b432c..81fdb378e2 100644
--- a/phpBB/phpbb/notification/method/jabber.php
+++ b/phpBB/phpbb/notification/method/jabber.php
@@ -13,6 +13,8 @@
namespace phpbb\notification\method;
+use phpbb\notification\type\type_interface;
+
/**
* Jabber notification method class
* This class handles sending Jabber messages for notifications
@@ -56,10 +58,14 @@ class jabber extends \phpbb\notification\method\messenger_base
/**
* Is this method available for the user?
* This is checked on the notifications options
+ *
+ * @param type_interface $notification_type An optional instance of a notification type. If provided, this
+ * method additionally checks if the type provides an email template.
+ * @return bool
*/
- public function is_available()
+ public function is_available(type_interface $notification_type = null)
{
- return ($this->global_available() && $this->user->data['user_jabber']);
+ return parent::is_available($notification_type) && $this->global_available() && $this->user->data['user_jabber'];
}
/**
diff --git a/phpBB/phpbb/notification/method/messenger_base.php b/phpBB/phpbb/notification/method/messenger_base.php
index 1f5525accc..32e79aa936 100644
--- a/phpBB/phpbb/notification/method/messenger_base.php
+++ b/phpBB/phpbb/notification/method/messenger_base.php
@@ -13,6 +13,8 @@
namespace phpbb\notification\method;
+use phpbb\notification\type\type_interface;
+
/**
* Abstract notification method handling email and jabber notifications
* using the phpBB messenger.
@@ -43,6 +45,19 @@ abstract class messenger_base extends \phpbb\notification\method\base
}
/**
+ * Is this method available for the user?
+ * This is checked on the notifications options
+ *
+ * @param type_interface $notification_type An optional instance of a notification type. This method returns false
+ * only if the type is provided and if it doesn't provide an email template.
+ * @return bool
+ */
+ public function is_available(type_interface $notification_type = null)
+ {
+ return $notification_type === null || $notification_type->get_email_template() !== false;
+ }
+
+ /**
* Notify using phpBB messenger
*
* @param int $notify_method Notify method for messenger (e.g. NOTIFY_IM)