mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-06 08:47:45 +02:00
Merge pull request #4918 from kasimi/ticket/15328
[ticket/15328] Disable checkbox if notification method isn't supported
This commit is contained in:
@@ -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())),
|
||||
);
|
||||
|
@@ -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'];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -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'];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -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.
|
||||
@@ -42,6 +44,19 @@ abstract class messenger_base extends \phpbb\notification\method\base
|
||||
$this->php_ext = $php_ext;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*
|
||||
|
Reference in New Issue
Block a user