mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-31 14:00:31 +02:00
[ticket/11103] More work on the UCP Notifications page
PHPBB3-11103
This commit is contained in:
@@ -473,7 +473,26 @@ class phpbb_notifications_service
|
||||
*/
|
||||
public function get_subscription_methods()
|
||||
{
|
||||
return array_keys($this->get_subscription_files('notifications/method/'));
|
||||
$subscription_methods = array();
|
||||
|
||||
foreach ($this->get_subscription_files('notifications/method/') as $method_name => $file)
|
||||
{
|
||||
$class_name = 'phpbb_notifications_method_' . $method_name;
|
||||
|
||||
if (!class_exists($class_name))
|
||||
{
|
||||
include($file);
|
||||
}
|
||||
|
||||
$method = new $class_name($this->phpbb_container);
|
||||
|
||||
if ($method->is_available())
|
||||
{
|
||||
$subscription_methods[] = $method_name;
|
||||
}
|
||||
}
|
||||
|
||||
return $subscription_methods;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -17,10 +17,101 @@ if (!defined('IN_PHPBB'))
|
||||
|
||||
class ucp_notifications
|
||||
{
|
||||
var $u_action;
|
||||
public $u_action;
|
||||
|
||||
function main($id, $mode)
|
||||
public function main($id, $mode)
|
||||
{
|
||||
global $phpbb_container;
|
||||
|
||||
$phpbb_notifications = $phpbb_container->get('notifications');
|
||||
$template = $phpbb_container->get('template');
|
||||
$user = $phpbb_container->get('user');
|
||||
$request = $phpbb_container->get('request');
|
||||
|
||||
if ($request->is_set_post('submit'))
|
||||
{
|
||||
$notification_methods = $phpbb_notifications->get_subscription_methods();
|
||||
foreach($phpbb_notifications->get_subscription_types() as $type)
|
||||
{
|
||||
if ($request->is_set_post($type . '_notification'))
|
||||
{
|
||||
// add
|
||||
}
|
||||
else
|
||||
{
|
||||
// remove
|
||||
}
|
||||
|
||||
foreach($notification_methods as $method)
|
||||
{
|
||||
if ($request->is_set_post($type . '_' . $method))
|
||||
{
|
||||
// add
|
||||
}
|
||||
else
|
||||
{
|
||||
// remove
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// todo include language files for extensions?
|
||||
|
||||
$this->output_notification_methods('notification_methods', $phpbb_notifications, $template, $user);
|
||||
|
||||
$this->output_notification_types('notification_types', $phpbb_notifications, $template, $user);
|
||||
|
||||
$this->tpl_name = 'ucp_notifications';
|
||||
$this->page_title = 'UCP_NOTIFICATIONS';
|
||||
}
|
||||
|
||||
/**
|
||||
* Output all the notification types to the template
|
||||
*
|
||||
* @param string $block
|
||||
* @param phpbb_notifications_service $phpbb_notifications
|
||||
* @param phpbb_template $template
|
||||
* @param phpbb_user $user
|
||||
*/
|
||||
public function output_notification_types($block = 'notification_types', phpbb_notifications_service $phpbb_notifications, phpbb_template $template, phpbb_user $user)
|
||||
{
|
||||
foreach($phpbb_notifications->get_subscription_types() as $type)
|
||||
{
|
||||
$template->assign_block_vars($block, array(
|
||||
'TYPE' => $type,
|
||||
|
||||
'NAME' => $user->lang('NOTIFICATION_TYPE_' . strtoupper($type)),
|
||||
));
|
||||
|
||||
$this->output_notification_methods($block . '.notification_methods', $phpbb_notifications, $template, $user);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Output all the notification methods to the template
|
||||
*
|
||||
* @param string $block
|
||||
* @param phpbb_notifications_service $phpbb_notifications
|
||||
* @param phpbb_template $template
|
||||
* @param phpbb_user $user
|
||||
*/
|
||||
public function output_notification_methods($block = 'notification_methods', phpbb_notifications_service $phpbb_notifications, phpbb_template $template, phpbb_user $user)
|
||||
{
|
||||
static $notification_methods = false;
|
||||
|
||||
if ($notification_methods === false)
|
||||
{
|
||||
$notification_methods = $phpbb_notifications->get_subscription_methods();
|
||||
}
|
||||
|
||||
foreach($notification_methods as $method)
|
||||
{
|
||||
$template->assign_block_vars($block, array(
|
||||
'METHOD' => $method,
|
||||
|
||||
'NAME' => $user->lang('NOTIFICATION_METHOD_' . strtoupper($method)),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user