aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/includes/functions_posting.php43
-rw-r--r--phpBB/includes/notifications/type/quote.php8
-rw-r--r--phpBB/includes/notifications/type/topic.php2
3 files changed, 21 insertions, 32 deletions
diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php
index 4ae5989fed..41bdd9f598 100644
--- a/phpBB/includes/functions_posting.php
+++ b/phpBB/includes/functions_posting.php
@@ -2221,41 +2221,32 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
// Send Notifications
$phpbb_notifications = $phpbb_container->get('notifications');
+ $notification_data = array_merge($data, array(
+ 'topic_title' => (isset($data['topic_title'])) ? $data['topic_title'] : $subject,
+ 'post_username' => $username,
+ 'poster_id' => $poster_id,
+ 'post_text' => $data['message'],
+ 'post_time' => $current_time,
+ 'post_subject' => $subject,
+ ));
if ($post_approval)
{
switch ($mode)
{
case 'post' :
- $phpbb_notifications->add_notifications(array('topic', 'quote'), array_merge($data, array(
- 'post_username' => $username,
- 'poster_id' => (int) $user->data['user_id'],
- 'post_time' => $current_time,
- )));
+ $phpbb_notifications->add_notifications(array('topic', 'quote'), $notification_data);
break;
case 'reply' :
case 'quote' :
- $phpbb_notifications->add_notifications(array('quote', 'bookmark', 'post'), array_merge($data, array(
- 'post_username' => $username,
- 'poster_id' => (int) $user->data['user_id'],
- 'post_text' => $data['message'],
- 'post_time' => $current_time,
- )));
+ $phpbb_notifications->add_notifications(array('quote', 'bookmark', 'post'), $notification_data);
break;
case 'edit_topic' :
case 'edit_first_post' :
case 'edit' :
case 'edit_last_post' :
- $phpbb_notifications->update_notifications('topic', array_merge($data, array(
- 'post_username' => $username,
- 'topic_title' => $subject,
- )));
-
- $phpbb_notifications->update_notifications(array('quote', 'bookmark', 'post'), array_merge($data, array(
- 'post_username' => $username,
- 'post_text' => $data['message'],
- )));
+ $phpbb_notifications->update_notifications(array('quote', 'bookmark', 'topic', 'post'), $notification_data);
break;
}
}
@@ -2264,20 +2255,12 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
switch ($mode)
{
case 'post' :
- $phpbb_notifications->add_notifications(array('topic_in_queue'), array_merge($data, array(
- 'post_username' => $username,
- 'poster_id' => (int) $user->data['user_id'],
- 'post_time' => $current_time,
- )));
+ $phpbb_notifications->add_notifications(array('topic_in_queue'), $notification_data);
break;
case 'reply' :
case 'quote' :
- $phpbb_notifications->add_notifications(array('post_in_queue'), array_merge($data, array(
- 'post_username' => $username,
- 'poster_id' => (int) $user->data['user_id'],
- 'post_time' => $current_time,
- )));
+ $phpbb_notifications->add_notifications(array('post_in_queue'), $notification_data);
break;
case 'edit_topic' :
diff --git a/phpBB/includes/notifications/type/quote.php b/phpBB/includes/notifications/type/quote.php
index d116a40e4d..2079617510 100644
--- a/phpBB/includes/notifications/type/quote.php
+++ b/phpBB/includes/notifications/type/quote.php
@@ -37,7 +37,7 @@ class phpbb_notifications_type_quote extends phpbb_notifications_type_post
*
* @var string
*/
- protected static $regular_expression_match = '#\[quote="(.+?)":#';
+ protected static $regular_expression_match = '#\[quote="(.+?)"#';
/**
* Language key used to output the text
@@ -155,6 +155,12 @@ class phpbb_notifications_type_quote extends phpbb_notifications_type_post
$add_notifications[$user_id] = $notifications[$user_id];
}
+ // todo Adding notifications while editing a post can be funky.
+ // If the user has read the topic/post already, and the user is newly quoted it an edit,
+ // The notification will be stuck as unread until another post is made and the user visits
+ // the topic again because the posts will not be marked as read since the topic is already
+ // marked as read
+
// Add the necessary notifications
$service->add_notifications_for_users(self::get_item_type(), $post, $add_notifications);
diff --git a/phpBB/includes/notifications/type/topic.php b/phpBB/includes/notifications/type/topic.php
index cf56451214..733b2108cc 100644
--- a/phpBB/includes/notifications/type/topic.php
+++ b/phpBB/includes/notifications/type/topic.php
@@ -212,7 +212,7 @@ class phpbb_notifications_type_topic extends phpbb_notifications_type_base
$this->set_data('topic_title', $post['topic_title']);
- $this->set_data('post_username', (($post['post_username'] != $this->phpbb_container->get('user')->data['username']) ? $post['post_username'] : ''));
+ $this->set_data('post_username', (($post['poster_id'] == ANONYMOUS) ? $post['post_username'] : ''));
$this->set_data('forum_name', $post['forum_name']);