[ticket/11103] Use the language system, topic notifications

PHPBB3-11103
This commit is contained in:
Nathan Guse 2012-09-09 14:20:14 -05:00
parent 74e2a8f893
commit 3624d2c50a
5 changed files with 200 additions and 8 deletions

View file

@ -50,7 +50,7 @@ class phpbb_notifications_method_email extends phpbb_notifications_method_base
// We do not send emails to banned users // We do not send emails to banned users
if (!function_exists('phpbb_get_banned_user_ids')) if (!function_exists('phpbb_get_banned_user_ids'))
{ {
include($phpbb_container->getParameter('core.root_path') . 'includes/functions_user.' . $phpbb_container->getParameter('core.php_ext')); include($this->phpbb_container->getParameter('core.root_path') . 'includes/functions_user.' . $this->phpbb_container->getParameter('core.php_ext'));
} }
$banned_users = phpbb_get_banned_user_ids($user_ids); $banned_users = phpbb_get_banned_user_ids($user_ids);
@ -68,13 +68,13 @@ class phpbb_notifications_method_email extends phpbb_notifications_method_base
// Time to go through the queue and send emails // Time to go through the queue and send emails
foreach ($this->queue as $notification) foreach ($this->queue as $notification)
{ {
if (in_array($notification->user_id, $banned_users)) $user = $this->service->get_user($notification->user_id);
if ($user['user_type'] == USER_IGNORE || in_array($notification->user_id, $banned_users))
{ {
continue; continue;
} }
$user = $this->service->get_user($notification->user_id);
$messenger->template('notification', $user['user_lang']); $messenger->template('notification', $user['user_lang']);
$messenger->to($user['user_email'], $user['username']); $messenger->to($user['user_email'], $user['username']);

View file

@ -101,7 +101,7 @@ class phpbb_notifications_type_pm extends phpbb_notifications_type_base
$username = get_username_string('no_profile', $user_data['user_id'], $user_data['username'], $user_data['user_colour']); $username = get_username_string('no_profile', $user_data['user_id'], $user_data['username'], $user_data['user_colour']);
return $username . ' sent you a private message titled: ' . $this->get_data('message_subject'); return $this->phpbb_container->get('user')->lang('NOTIFICATION_PM', $username, $this->get_data('message_subject'));
} }
/** /**
@ -113,7 +113,7 @@ class phpbb_notifications_type_pm extends phpbb_notifications_type_base
{ {
$user_data = $this->service->get_user($this->get_data('from_user_id')); $user_data = $this->service->get_user($this->get_data('from_user_id'));
return $user_data['username'] . ' sent you a private message titled: ' . $this->get_data('message_subject'); return $this->phpbb_container->get('user')->lang('NOTIFICATION_PM', $user_data['username'], $this->get_data('message_subject'));
} }
/** /**

View file

@ -96,7 +96,7 @@ class phpbb_notifications_type_post extends phpbb_notifications_type_base
$username = get_username_string('no_profile', $user_data['user_id'], $user_data['username'], $user_data['user_colour']); $username = get_username_string('no_profile', $user_data['user_id'], $user_data['username'], $user_data['user_colour']);
} }
return $username . ' posted in the topic ' . censor_text($this->get_data('topic_title')); return $this->phpbb_container->get('user')->lang('NOTIFICATION_POST', $username, censor_text($this->get_data('topic_title')));
} }
/** /**
@ -112,10 +112,12 @@ class phpbb_notifications_type_post extends phpbb_notifications_type_base
} }
else else
{ {
$user_data = $this->service->get_user($this->get_data('poster_id'));
$username = $user_data['username']; $username = $user_data['username'];
} }
return $username . ' posted in the topic ' . censor_text($this->get_data('topic_title')); return $this->phpbb_container->get('user')->lang('NOTIFICATION_POST', $username, censor_text($this->get_data('topic_title')));
} }
/** /**
@ -166,6 +168,8 @@ class phpbb_notifications_type_post extends phpbb_notifications_type_base
$this->set_data('post_username', $post['post_username']); $this->set_data('post_username', $post['post_username']);
$this->set_data('forum_name', $post['forum_name']);
return parent::create_insert_array($post); return parent::create_insert_array($post);
} }
} }

View file

@ -0,0 +1,185 @@
<?php
/**
*
* @package notifications
* @copyright (c) 2012 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
use Symfony\Component\DependencyInjection\ContainerBuilder;
/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
}
/**
* Topic notifications class
* This class handles notifications for new topics
*
* @package notifications
*/
class phpbb_notifications_type_topic extends phpbb_notifications_type_base
{
/**
* Get the type of notification this is
* phpbb_notifications_type_
*/
public static function get_item_type()
{
return 'topic';
}
/**
* Get the id of the
*
* @param array $post The data from the post
*/
public static function get_item_id($post)
{
return $post['topic_id'];
}
/**
* Find the users who want to receive notifications
*
* @param ContainerBuilder $phpbb_container
* @param array $post Data from
*
* @return array
*/
public static function find_users_for_notification(ContainerBuilder $phpbb_container, $topic)
{
$users = parent::_find_users_for_notification($phpbb_container, $topic['forum_id']);
if (!sizeof($users))
{
return array();
}
$auth_read = $phpbb_container->get('auth')->acl_get_list(array_keys($users), 'f_read', $topic['forum_id']);
if (empty($auth_read))
{
return array();
}
$notify_users = array();
foreach ($auth_read[$topic['forum_id']]['f_read'] as $user_id)
{
$notify_users[$user_id] = $users[$user_id];
}
return $notify_users;
}
/**
* Get the HTML formatted title of this notification
*
* @return string
*/
public function get_formatted_title()
{
if ($this->get_data('post_username'))
{
$username = $this->get_data('post_username');
}
else
{
$user_data = $this->service->get_user($this->get_data('poster_id'));
$username = get_username_string('no_profile', $user_data['user_id'], $user_data['username'], $user_data['user_colour']);
}
return $this->phpbb_container->get('user')->lang(
'NOTIFICATION_TOPIC',
$username,
censor_text($this->get_data('topic_title')),
$this->get_data('forum_name')
);
}
/**
* Get the title of this notification
*
* @return string
*/
public function get_title()
{
if ($this->get_data('post_username'))
{
$username = $this->get_data('post_username');
}
else
{
$user_data = $this->service->get_user($this->get_data('poster_id'));
$username = $user_data['username'];
}
return $this->phpbb_container->get('user')->lang(
'NOTIFICATION_TOPIC',
$username,
censor_text($this->get_data('topic_title')),
$this->get_data('forum_name')
);
}
/**
* Get the url to this item
*
* @return string URL
*/
public function get_url()
{
return append_sid($this->phpbb_root_path . 'viewtopic.' . $this->php_ext, "t{$this->item_id}");
}
/**
* Get the full url to this item
*
* @return string URL
*/
public function get_full_url()
{
return generate_board_url() . "/viewtopic.{$this->php_ext}?t{$this->item_id}";
}
/**
* Users needed to query before this notification can be displayed
*
* @return array Array of user_ids
*/
public function users_to_query()
{
return array($this->data['poster_id']);
}
/**
* Function for preparing the data for insertion in an SQL query
* (The service handles insertion)
*
* @param array $post Data from submit_post
*
* @return array Array of data ready to be inserted into the database
*/
public function create_insert_array($post)
{
$this->item_id = $post['post_id'];
$this->set_data('poster_id', $post['poster_id']);
$this->set_data('topic_title', $post['topic_title']);
$this->set_data('post_username', $post['post_username']);
$this->set_data('forum_name', $post['forum_name']);
return parent::create_insert_array($post);
}
}

View file

@ -385,6 +385,9 @@ $lang = array_merge($lang, array(
'NOT_AUTHORISED' => 'You are not authorised to access this area.', 'NOT_AUTHORISED' => 'You are not authorised to access this area.',
'NOT_WATCHING_FORUM' => 'You are no longer subscribed to updates on this forum.', 'NOT_WATCHING_FORUM' => 'You are no longer subscribed to updates on this forum.',
'NOT_WATCHING_TOPIC' => 'You are no longer subscribed to this topic.', 'NOT_WATCHING_TOPIC' => 'You are no longer subscribed to this topic.',
'NOTIFICATION_PM' => '%1$s sent you a Private Message titled: %2$s.',
'NOTIFICATION_POST' => '%1$s replied to the topic "%2$s".',
'NOTIFICATION_TOPIC' => '%1$s posted a new topic "%2$s" in the forum "%3$s".',
'NOTIFY_ADMIN' => 'Please notify the board administrator or webmaster.', 'NOTIFY_ADMIN' => 'Please notify the board administrator or webmaster.',
'NOTIFY_ADMIN_EMAIL' => 'Please notify the board administrator or webmaster: <a href="mailto:%1$s">%1$s</a>', 'NOTIFY_ADMIN_EMAIL' => 'Please notify the board administrator or webmaster: <a href="mailto:%1$s">%1$s</a>',
'NO_ACCESS_ATTACHMENT' => 'You are not allowed to access this file.', 'NO_ACCESS_ATTACHMENT' => 'You are not allowed to access this file.',