diff options
author | Máté Bartus <CHItA@users.noreply.github.com> | 2017-09-07 14:31:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-07 14:31:04 +0200 |
commit | 6e7593a5db7f8a8cb151882cb649362c85ad8732 (patch) | |
tree | b98581f60d82b1bb3983c5b6abc5002de2835c66 /phpBB/phpbb | |
parent | c1b00896b4d5d0b62798de7630686365b7aa8c05 (diff) | |
parent | edd1ce74436c399f407e667b0b81b329a57a6f15 (diff) | |
download | forums-6e7593a5db7f8a8cb151882cb649362c85ad8732.tar forums-6e7593a5db7f8a8cb151882cb649362c85ad8732.tar.gz forums-6e7593a5db7f8a8cb151882cb649362c85ad8732.tar.bz2 forums-6e7593a5db7f8a8cb151882cb649362c85ad8732.tar.xz forums-6e7593a5db7f8a8cb151882cb649362c85ad8732.zip |
Merge pull request #4918 from kasimi/ticket/15328
[ticket/15328] Disable checkbox if notification method isn't supported
Diffstat (limited to 'phpBB/phpbb')
-rw-r--r-- | phpBB/phpbb/notification/manager.php | 8 | ||||
-rw-r--r-- | phpBB/phpbb/notification/method/email.php | 10 | ||||
-rw-r--r-- | phpBB/phpbb/notification/method/jabber.php | 10 | ||||
-rw-r--r-- | phpBB/phpbb/notification/method/messenger_base.php | 15 |
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) |