mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-24 19:08:53 +00:00
[ticket/11103] Use appropriate email templates to send notifications
Fixing a number of bugs PHPBB3-11103
This commit is contained in:
parent
8e977544fb
commit
959c81d00e
13 changed files with 156 additions and 59 deletions
|
@ -2229,6 +2229,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||||
case 'post' :
|
case 'post' :
|
||||||
$phpbb_notifications->add_notifications(array('topic', 'quote'), array_merge($data, array(
|
$phpbb_notifications->add_notifications(array('topic', 'quote'), array_merge($data, array(
|
||||||
'post_username' => $username,
|
'post_username' => $username,
|
||||||
|
'poster_id' => (int) $user->data['user_id'],
|
||||||
)));
|
)));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -2236,6 +2237,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
|
||||||
case 'quote' :
|
case 'quote' :
|
||||||
$phpbb_notifications->add_notifications(array('quote', 'bookmark', 'post'), array_merge($data, array(
|
$phpbb_notifications->add_notifications(array('quote', 'bookmark', 'post'), array_merge($data, array(
|
||||||
'post_username' => $username,
|
'post_username' => $username,
|
||||||
|
'poster_id' => (int) $user->data['user_id'],
|
||||||
)));
|
)));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -82,19 +82,15 @@ class phpbb_notifications_method_email extends phpbb_notifications_method_base
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$messenger->template('notification', $user['user_lang']);
|
$messenger->template($notification->email_template, $user['user_lang']);
|
||||||
|
|
||||||
$messenger->to($user['user_email'], $user['username']);
|
$messenger->to($user['user_email'], $user['username']);
|
||||||
|
|
||||||
$messenger->assign_vars(array(
|
$messenger->assign_vars(array_merge(array(
|
||||||
'USERNAME' => $user['username'],
|
'USERNAME' => $user['username'],
|
||||||
|
|
||||||
'MESSAGE' => htmlspecialchars_decode($notification->get_title()),
|
'U_NOTIFICATION_SETTINGS' => generate_board_url() . '/ucp.' . $this->php_ext . '?i=notifications', // todo Update URL
|
||||||
|
), $notification->get_email_template_variables()));
|
||||||
'U_VIEW_MESSAGE' => $notification->get_full_url(),
|
|
||||||
|
|
||||||
'U_UNSUBSCRIBE' => $notification->get_unsubscribe_url(),
|
|
||||||
));
|
|
||||||
|
|
||||||
$messenger->send($this->notify_method);
|
$messenger->send($this->notify_method);
|
||||||
}
|
}
|
||||||
|
|
|
@ -153,7 +153,7 @@ class phpbb_notifications_service
|
||||||
{
|
{
|
||||||
foreach ($item_type as $type)
|
foreach ($item_type as $type)
|
||||||
{
|
{
|
||||||
$this->mark_notifications_read($type, $item_id, $user_id, $time);
|
$this->mark_notifications_read_by_parent($type, $item_parent_id, $user_id, $time);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -157,7 +157,7 @@ abstract class phpbb_notifications_type_base implements phpbb_notifications_type
|
||||||
public function create_insert_array($type_data)
|
public function create_insert_array($type_data)
|
||||||
{
|
{
|
||||||
// Defaults
|
// Defaults
|
||||||
$data = array_merge(array(
|
$this->data = array_merge(array(
|
||||||
'item_id' => static::get_item_id($type_data),
|
'item_id' => static::get_item_id($type_data),
|
||||||
'item_type' => $this->get_item_type(),
|
'item_type' => $this->get_item_type(),
|
||||||
'item_parent_id' => static::get_item_parent_id($type_data),
|
'item_parent_id' => static::get_item_parent_id($type_data),
|
||||||
|
@ -168,6 +168,8 @@ abstract class phpbb_notifications_type_base implements phpbb_notifications_type
|
||||||
'data' => array(),
|
'data' => array(),
|
||||||
), $this->data);
|
), $this->data);
|
||||||
|
|
||||||
|
$data = $this->data;
|
||||||
|
|
||||||
$data['data'] = serialize($data['data']);
|
$data['data'] = serialize($data['data']);
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
|
|
|
@ -25,6 +25,13 @@ if (!defined('IN_PHPBB'))
|
||||||
*/
|
*/
|
||||||
class phpbb_notifications_type_bookmark extends phpbb_notifications_type_post
|
class phpbb_notifications_type_bookmark extends phpbb_notifications_type_post
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Email template to use to send notifications
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $email_template = 'notifications/bookmark';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Language key used to output the text
|
* Language key used to output the text
|
||||||
*
|
*
|
||||||
|
|
|
@ -31,9 +31,9 @@ interface phpbb_notifications_type_interface
|
||||||
|
|
||||||
public function get_formatted_title();
|
public function get_formatted_title();
|
||||||
|
|
||||||
public function get_url();
|
public function get_email_template_variables();
|
||||||
|
|
||||||
public function get_full_url();
|
public function get_url();
|
||||||
|
|
||||||
public function get_unsubscribe_url($method);
|
public function get_unsubscribe_url($method);
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,13 @@ if (!defined('IN_PHPBB'))
|
||||||
*/
|
*/
|
||||||
class phpbb_notifications_type_pm extends phpbb_notifications_type_base
|
class phpbb_notifications_type_pm extends phpbb_notifications_type_base
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Email template to use to send notifications
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $email_template = 'privmsg_notify';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the type of notification this is
|
* Get the type of notification this is
|
||||||
* phpbb_notifications_type_
|
* phpbb_notifications_type_
|
||||||
|
@ -135,6 +142,23 @@ class phpbb_notifications_type_pm extends phpbb_notifications_type_base
|
||||||
return $this->phpbb_container->get('user')->lang('NOTIFICATION_PM', $user_data['username'], $this->get_data('message_subject'));
|
return $this->phpbb_container->get('user')->lang('NOTIFICATION_PM', $user_data['username'], $this->get_data('message_subject'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get email template variables
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function get_email_template_variables()
|
||||||
|
{
|
||||||
|
$user_data = $this->service->get_user($this->get_data('from_user_id'));
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'AUTHOR_NAME' => htmlspecialchars_decode($user_data['username']),
|
||||||
|
'SUBJECT' => htmlspecialchars_decode(censor_text($this->get_data('message_subject'))),
|
||||||
|
|
||||||
|
'U_VIEW_MESSAGE' => generate_board_url() . '/ucp.' . $this->php_ext . "?i=pm&mode=view&p={$this->item_id}",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the url to this item
|
* Get the url to this item
|
||||||
*
|
*
|
||||||
|
@ -145,16 +169,6 @@ class phpbb_notifications_type_pm extends phpbb_notifications_type_base
|
||||||
return append_sid($this->phpbb_root_path . 'ucp.' . $this->php_ext, "i=pm&mode=view&p={$this->item_id}");
|
return append_sid($this->phpbb_root_path . 'ucp.' . $this->php_ext, "i=pm&mode=view&p={$this->item_id}");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the full url to this item
|
|
||||||
*
|
|
||||||
* @return string URL
|
|
||||||
*/
|
|
||||||
public function get_full_url()
|
|
||||||
{
|
|
||||||
return generate_board_url() . "/ucp.{$this->php_ext}?i=pm&mode=view&p={$this->item_id}";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Users needed to query before this notification can be displayed
|
* Users needed to query before this notification can be displayed
|
||||||
*
|
*
|
||||||
|
|
|
@ -25,6 +25,13 @@ if (!defined('IN_PHPBB'))
|
||||||
*/
|
*/
|
||||||
class phpbb_notifications_type_post extends phpbb_notifications_type_base
|
class phpbb_notifications_type_post extends phpbb_notifications_type_base
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Email template to use to send notifications
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $email_template = 'topic_notify';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Language key used to output the text
|
* Language key used to output the text
|
||||||
*
|
*
|
||||||
|
@ -174,6 +181,23 @@ class phpbb_notifications_type_post extends phpbb_notifications_type_base
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get email template variables
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function get_email_template_variables()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'TOPIC_TITLE' => htmlspecialchars_decode(censor_text($this->get_data('topic_title'))),
|
||||||
|
|
||||||
|
'U_NEWEST_POST' => generate_board_url() . "/viewtopic.{$this->php_ext}?f={$this->get_data('forum_id')}&t={$this->item_parent_id}&view=unread#unread",
|
||||||
|
'U_TOPIC' => generate_board_url() . "/viewtopic.{$this->php_ext}?f={$this->get_data('forum_id')}&t={$this->item_parent_id}",
|
||||||
|
'U_FORUM' => generate_board_url() . "/viewforum.{$this->php_ext}?f={$this->get_data('forum_id')}",
|
||||||
|
'U_STOP_WATCHING_TOPIC' => generate_board_url() . "/viewtopic.{$this->php_ext}?uid={$this->user_id}&f={$this->get_data('forum_id')}&t={$this->item_parent_id}&unwatch=topic",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the url to this item
|
* Get the url to this item
|
||||||
*
|
*
|
||||||
|
@ -184,16 +208,6 @@ class phpbb_notifications_type_post extends phpbb_notifications_type_base
|
||||||
return append_sid($this->phpbb_root_path . 'viewtopic.' . $this->php_ext, "p={$this->item_id}#p{$this->item_id}");
|
return append_sid($this->phpbb_root_path . 'viewtopic.' . $this->php_ext, "p={$this->item_id}#p{$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}?p={$this->item_id}#p{$this->item_id}";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Users needed to query before this notification can be displayed
|
* Users needed to query before this notification can be displayed
|
||||||
*
|
*
|
||||||
|
@ -220,6 +234,8 @@ class phpbb_notifications_type_post extends phpbb_notifications_type_base
|
||||||
|
|
||||||
$this->set_data('post_username', (($post['post_username'] != $this->phpbb_container->get('user')->data['username']) ? $post['post_username'] : ''));
|
$this->set_data('post_username', (($post['post_username'] != $this->phpbb_container->get('user')->data['username']) ? $post['post_username'] : ''));
|
||||||
|
|
||||||
|
$this->set_data('forum_id', $post['forum_id']);
|
||||||
|
|
||||||
$this->set_data('forum_name', $post['forum_name']);
|
$this->set_data('forum_name', $post['forum_name']);
|
||||||
|
|
||||||
return parent::create_insert_array($post);
|
return parent::create_insert_array($post);
|
||||||
|
|
|
@ -25,6 +25,13 @@ if (!defined('IN_PHPBB'))
|
||||||
*/
|
*/
|
||||||
class phpbb_notifications_type_quote extends phpbb_notifications_type_post
|
class phpbb_notifications_type_quote extends phpbb_notifications_type_post
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Email template to use to send notifications
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $email_template = 'notifications/quote';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* regular expression to match to find usernames
|
* regular expression to match to find usernames
|
||||||
*
|
*
|
||||||
|
@ -161,4 +168,20 @@ class phpbb_notifications_type_quote extends phpbb_notifications_type_post
|
||||||
// return true to continue with the update code in the notifications service (this will update the rest of the notifications)
|
// return true to continue with the update code in the notifications service (this will update the rest of the notifications)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get email template variables
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function get_email_template_variables()
|
||||||
|
{
|
||||||
|
$user_data = $this->service->get_user($this->get_data('poster_id'));
|
||||||
|
|
||||||
|
return array_merge(parent::get_email_template_variables(), array(
|
||||||
|
'AUTHOR_NAME' => htmlspecialchars_decode($user_data['username']),
|
||||||
|
|
||||||
|
'U_QUOTED_POST' => generate_board_url() . "/viewtopic.{$this->php_ext}?p={$this->item_id}#p{$this->item_id}",
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,13 @@ if (!defined('IN_PHPBB'))
|
||||||
*/
|
*/
|
||||||
class phpbb_notifications_type_topic extends phpbb_notifications_type_base
|
class phpbb_notifications_type_topic extends phpbb_notifications_type_base
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Email template to use to send notifications
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $email_template = 'newtopic_notify';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the type of notification this is
|
* Get the type of notification this is
|
||||||
* phpbb_notifications_type_
|
* phpbb_notifications_type_
|
||||||
|
@ -169,6 +176,22 @@ class phpbb_notifications_type_topic extends phpbb_notifications_type_base
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get email template variables
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function get_email_template_variables()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'FORUM_NAME' => htmlspecialchars_decode($this->get_data('forum_name')),
|
||||||
|
'TOPIC_TITLE' => htmlspecialchars_decode(censor_text($this->get_data('topic_title'))),
|
||||||
|
|
||||||
|
'U_FORUM' => generate_board_url() . "/viewforum.{$this->php_ext}?f={$this->item_parent_id}",
|
||||||
|
'U_STOP_WATCHING_FORUM' => generate_board_url() . "/viewforum.{$this->php_ext}?uid={$this->user_id}&f={$this->item_parent_id}&unwatch=forum",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the url to this item
|
* Get the url to this item
|
||||||
*
|
*
|
||||||
|
@ -179,16 +202,6 @@ class phpbb_notifications_type_topic extends phpbb_notifications_type_base
|
||||||
return append_sid($this->phpbb_root_path . 'viewtopic.' . $this->php_ext, "f={$this->item_parent_id}&t={$this->item_id}");
|
return append_sid($this->phpbb_root_path . 'viewtopic.' . $this->php_ext, "f={$this->item_parent_id}&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}?f={$this->item_parent_id}&t={$this->item_id}";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Users needed to query before this notification can be displayed
|
* Users needed to query before this notification can be displayed
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
Subject: Notification from {SITENAME}
|
|
||||||
|
|
||||||
Hello {USERNAME},
|
|
||||||
|
|
||||||
{MESSAGE}
|
|
||||||
|
|
||||||
You can view this by clicking on the following link:
|
|
||||||
|
|
||||||
{U_VIEW_MESSAGE}
|
|
||||||
|
|
||||||
<!-- IF U_UNSUBSCRIBE -->
|
|
||||||
You may unsubscribe by clicking on the following link:
|
|
||||||
{U_UNSUBSCRIBE}
|
|
||||||
<!-- ENDIF -->
|
|
||||||
|
|
||||||
{EMAIL_SIG}
|
|
20
phpBB/language/en/email/notifications/bookmark.txt
Normal file
20
phpBB/language/en/email/notifications/bookmark.txt
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
Subject: Topic reply notification - "{TOPIC_TITLE}"
|
||||||
|
|
||||||
|
Hello {USERNAME},
|
||||||
|
|
||||||
|
You are receiving this notification because the topic you bookmarked, "{TOPIC_TITLE}" at "{SITENAME}" has received a reply since your last visit. You can use the following link to view the replies made, no more notifications will be sent until you visit the topic.
|
||||||
|
|
||||||
|
If you want to view the newest post made since your last visit, click the following link:
|
||||||
|
{U_NEWEST_POST}
|
||||||
|
|
||||||
|
If you want to view the topic, click the following link:
|
||||||
|
{U_TOPIC}
|
||||||
|
|
||||||
|
If you want to view the forum, click the following link:
|
||||||
|
{U_FORUM}
|
||||||
|
|
||||||
|
If you no longer wish to receive updates about replies to bookmarks, please update your notification settings here:
|
||||||
|
|
||||||
|
{U_NOTIFICATION_SETTINGS}
|
||||||
|
|
||||||
|
{EMAIL_SIG}
|
20
phpBB/language/en/email/notifications/quote.txt
Normal file
20
phpBB/language/en/email/notifications/quote.txt
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
Subject: Topic reply notification - "{TOPIC_TITLE}"
|
||||||
|
|
||||||
|
Hello {USERNAME},
|
||||||
|
|
||||||
|
You are receiving this notification because "{AUTHOR_NAME}" quoted you in the topic, "{TOPIC_TITLE}" at "{SITENAME}". You can use the following link to view the reply made.
|
||||||
|
|
||||||
|
If you want to view the quoted post, click the following link:
|
||||||
|
{U_QUOTED_POST}
|
||||||
|
|
||||||
|
If you want to view the topic, click the following link:
|
||||||
|
{U_TOPIC}
|
||||||
|
|
||||||
|
If you want to view the forum, click the following link:
|
||||||
|
{U_FORUM}
|
||||||
|
|
||||||
|
If you no longer wish to receive updates about replies quoting you, please update your notification settings here:
|
||||||
|
|
||||||
|
{U_NOTIFICATION_SETTINGS}
|
||||||
|
|
||||||
|
{EMAIL_SIG}
|
Loading…
Add table
Reference in a new issue