mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-09 04:48:53 +00:00
Merge pull request #4918 from kasimi/ticket/15328
[ticket/15328] Disable checkbox if notification method isn't supported
This commit is contained in:
commit
6e7593a5db
6 changed files with 42 additions and 11 deletions
|
@ -180,13 +180,13 @@ class ucp_notifications
|
||||||
'GROUP_NAME' => $user->lang($group),
|
'GROUP_NAME' => $user->lang($group),
|
||||||
));
|
));
|
||||||
|
|
||||||
foreach ($subscription_types as $type => $data)
|
foreach ($subscription_types as $type => $type_data)
|
||||||
{
|
{
|
||||||
$template->assign_block_vars($block, array(
|
$template->assign_block_vars($block, array(
|
||||||
'TYPE' => $type,
|
'TYPE' => $type,
|
||||||
|
|
||||||
'NAME' => $user->lang($data['lang']),
|
'NAME' => $user->lang($type_data['lang']),
|
||||||
'EXPLAIN' => (isset($user->lang[$data['lang'] . '_EXPLAIN'])) ? $user->lang($data['lang'] . '_EXPLAIN') : '',
|
'EXPLAIN' => (isset($user->lang[$type_data['lang'] . '_EXPLAIN'])) ? $user->lang($type_data['lang'] . '_EXPLAIN') : '',
|
||||||
));
|
));
|
||||||
|
|
||||||
foreach ($notification_methods as $method => $method_data)
|
foreach ($notification_methods as $method => $method_data)
|
||||||
|
@ -196,6 +196,8 @@ class ucp_notifications
|
||||||
|
|
||||||
'NAME' => $user->lang($method_data['lang']),
|
'NAME' => $user->lang($method_data['lang']),
|
||||||
|
|
||||||
|
'AVAILABLE' => $method_data['method']->is_available($type_data['type']),
|
||||||
|
|
||||||
'SUBSCRIBED' => (isset($subscriptions[$type]) && in_array($method_data['id'], $subscriptions[$type])) ? true : false,
|
'SUBSCRIBED' => (isset($subscriptions[$type]) && in_array($method_data['id'], $subscriptions[$type])) ? true : false,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
|
@ -475,9 +475,10 @@ class manager
|
||||||
if ($type instanceof \phpbb\notification\type\type_interface && $type->is_available())
|
if ($type instanceof \phpbb\notification\type\type_interface && $type->is_available())
|
||||||
{
|
{
|
||||||
$options = array_merge(array(
|
$options = array_merge(array(
|
||||||
'id' => $type->get_type(),
|
'type' => $type,
|
||||||
'lang' => 'NOTIFICATION_TYPE_' . strtoupper($type->get_type()),
|
'id' => $type->get_type(),
|
||||||
'group' => 'NOTIFICATION_GROUP_MISCELLANEOUS',
|
'lang' => 'NOTIFICATION_TYPE_' . strtoupper($type->get_type()),
|
||||||
|
'group' => 'NOTIFICATION_GROUP_MISCELLANEOUS',
|
||||||
), (($type::$notification_option !== false) ? $type::$notification_option : array()));
|
), (($type::$notification_option !== false) ? $type::$notification_option : array()));
|
||||||
|
|
||||||
$this->subscription_types[$options['group']][$options['id']] = $options;
|
$this->subscription_types[$options['group']][$options['id']] = $options;
|
||||||
|
@ -509,6 +510,7 @@ class manager
|
||||||
foreach ($this->get_available_subscription_methods() as $method_name => $method)
|
foreach ($this->get_available_subscription_methods() as $method_name => $method)
|
||||||
{
|
{
|
||||||
$subscription_methods[$method_name] = array(
|
$subscription_methods[$method_name] = array(
|
||||||
|
'method' => $method,
|
||||||
'id' => $method->get_type(),
|
'id' => $method->get_type(),
|
||||||
'lang' => str_replace('.', '_', strtoupper($method->get_type())),
|
'lang' => str_replace('.', '_', strtoupper($method->get_type())),
|
||||||
);
|
);
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
|
|
||||||
namespace phpbb\notification\method;
|
namespace phpbb\notification\method;
|
||||||
|
|
||||||
|
use phpbb\notification\type\type_interface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Email notification method class
|
* Email notification method class
|
||||||
* This class handles sending emails for notifications
|
* 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?
|
* Is this method available for the user?
|
||||||
* This is checked on the notifications options
|
* 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;
|
namespace phpbb\notification\method;
|
||||||
|
|
||||||
|
use phpbb\notification\type\type_interface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Jabber notification method class
|
* Jabber notification method class
|
||||||
* This class handles sending Jabber messages for notifications
|
* 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?
|
* Is this method available for the user?
|
||||||
* This is checked on the notifications options
|
* 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;
|
namespace phpbb\notification\method;
|
||||||
|
|
||||||
|
use phpbb\notification\type\type_interface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract notification method handling email and jabber notifications
|
* Abstract notification method handling email and jabber notifications
|
||||||
* using the phpBB messenger.
|
* using the phpBB messenger.
|
||||||
|
@ -42,6 +44,19 @@ abstract class messenger_base extends \phpbb\notification\method\base
|
||||||
$this->php_ext = $php_ext;
|
$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
|
* Notify using phpBB messenger
|
||||||
*
|
*
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
<!-- IF notification_types.EXPLAIN --><br /> {notification_types.EXPLAIN}<!-- ENDIF -->
|
<!-- IF notification_types.EXPLAIN --><br /> {notification_types.EXPLAIN}<!-- ENDIF -->
|
||||||
</td>
|
</td>
|
||||||
<!-- BEGIN notification_methods -->
|
<!-- BEGIN notification_methods -->
|
||||||
<td class="mark"><input type="checkbox" name="{notification_types.TYPE}_{notification_methods.METHOD}"<!-- IF notification_methods.SUBSCRIBED --> checked="checked"<!-- ENDIF --> /></td>
|
<td class="mark"><input type="checkbox" name="{notification_types.TYPE}_{notification_types.notification_methods.METHOD}"<!-- IF notification_types.notification_methods.AVAILABLE and notification_types.notification_methods.SUBSCRIBED --> checked="checked"<!-- ENDIF --><!-- IF not notification_types.notification_methods.AVAILABLE --> disabled="disabled"<!-- ENDIF --> /></td>
|
||||||
<!-- END notification_methods -->
|
<!-- END notification_methods -->
|
||||||
</tr>
|
</tr>
|
||||||
<!-- ENDIF -->
|
<!-- ENDIF -->
|
||||||
|
|
Loading…
Add table
Reference in a new issue