diff --git a/include/enotify.php b/include/enotify.php
index ced0a285e..9206e32aa 100644
--- a/include/enotify.php
+++ b/include/enotify.php
@@ -154,6 +154,7 @@ function notification($params)
// Check to see if there was already a tag notify or comment notify for this post.
// If so don't create a second notification
+ /// @todo In the future we should store the notification with the highest "value" and replace notifications
$condition = ['type' => [NOTIFY_TAGSELF, NOTIFY_COMMENT, NOTIFY_SHARE],
'link' => $params['link'], 'uid' => $params['uid']];
if (DBA::exists('notify', $condition)) {
@@ -166,16 +167,68 @@ function notification($params)
$item = Item::selectFirstForUser($params['uid'], Item::ITEM_FIELDLIST, ['id' => $parent_id, 'deleted' => false]);
}
+ if (empty($item)) {
+ return false;
+ }
+
$item_post_type = Item::postType($item);
$itemlink = $item['plink'];
+ // "their post"
+ if ($item['author-link'] == $params['source_link']) {
+ if ($params['activity']['explicit_tagged']) {
+ $dest_str = $l10n->t('%1$s tagged you on [url=%2$s]their %3$s[/url]',
+ '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
+ $itemlink,
+ $item_post_type
+ );
+ } elseif ($params['activity']['origin_comment']) {
+ $dest_str = $l10n->t('%1$s answered you on [url=%2$s]their %3$s[/url]',
+ '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
+ $itemlink,
+ $item_post_type
+ );
+ } else {
+ $dest_str = $l10n->t('%1$s commented on [url=%2$s]their %3$s[/url]',
+ '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
+ $itemlink,
+ $item_post_type
+ );
+ }
+ // "your post"
+ } elseif ($params['activity']['origin_thread']) {
+ if ($params['activity']['explicit_tagged']) {
+ $dest_str = $l10n->t('%1$s tagged you on [url=%2$s]your %3$s[/url]',
+ '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
+ $itemlink,
+ $item_post_type
+ );
+ } elseif ($params['activity']['origin_comment']) {
+ $dest_str = $l10n->t('%1$s answered you on [url=%2$s]your %3$s[/url]',
+ '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
+ $itemlink,
+ $item_post_type
+ );
+ } else {
+ $dest_str = $l10n->t('%1$s commented on [url=%2$s]your %3$s[/url]',
+ '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
+ $itemlink,
+ $item_post_type
+ );
+ }
// "a post"
- if ($params['type'] == NOTIFY_TAGSELF) {
+ } elseif ($params['activity']['explicit_tagged']) {
$dest_str = $l10n->t('%1$s tagged you on [url=%2$s]a %3$s[/url]',
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
$itemlink,
$item_post_type
);
+ } elseif ($params['activity']['origin_comment']) {
+ $dest_str = $l10n->t('%1$s answered you on [url=%2$s]a %3$s[/url]',
+ '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
+ $itemlink,
+ $item_post_type
+ );
} else {
$dest_str = $l10n->t('%1$s commented on [url=%2$s]a %3$s[/url]',
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
@@ -184,64 +237,11 @@ function notification($params)
);
}
- // "George Bull's post"
- if (DBA::isResult($item)) {
- if ($params['type'] == NOTIFY_TAGSELF) {
- $dest_str = $l10n->t('%1$s tagged you on [url=%2$s]%3$s\'s %4$s[/url]',
- '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
- $itemlink,
- $item['author-name'],
- $item_post_type
- );
- } else {
- $dest_str = $l10n->t('%1$s commented on [url=%2$s]%3$s\'s %4$s[/url]',
- '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
- $itemlink,
- $item['author-name'],
- $item_post_type
- );
- }
- }
-
- // "your post"
- if (DBA::isResult($item) && $item['owner-id'] == $item['author-id'] && $item['wall']) {
- if ($params['type'] == NOTIFY_TAGSELF) {
- $dest_str = $l10n->t('%1$s tagged you on [url=%2$s]your %3$s[/url]',
- '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
- $itemlink,
- $item_post_type
- );
- } else {
- $dest_str = $l10n->t('%1$s commented on [url=%2$s]your %3$s[/url]',
- '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
- $itemlink,
- $item_post_type
- );
- }
- }
-
- // "their post"
- if (DBA::isResult($item) && $item['author-link'] == $params['source_link']) {
- if ($params['type'] == NOTIFY_TAGSELF) {
- $dest_str = $l10n->t('%1$s tagged you on [url=%2$s]their %3$s[/url]',
- '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
- $itemlink,
- $item_post_type
- );
- } else {
- $dest_str = $l10n->t('%1$s commented on [url=%2$s]their %3$s[/url]',
- '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
- $itemlink,
- $item_post_type
- );
- }
- }
-
// Some mail software relies on subject field for threading.
// So, we cannot have different subjects for notifications of the same thread.
// Before this we have the name of the replier on the subject rendering
// different subjects for messages on the same thread.
- if ($params['type'] == NOTIFY_TAGSELF) {
+ if ($params['activity']['explicit_tagged']) {
$subject = $l10n->t('[Friendica:Notify] %s tagged you', $params['source_name']);
$preamble = $l10n->t('%1$s tagged you at %2$s', $params['source_name'], $sitename);
@@ -713,6 +713,14 @@ function check_item_notification($itemid, $uid, $notification_type) {
$params['source_link'] = $item['author-link'];
$params['source_photo'] = $item['author-avatar'];
+ // Set the activity flags
+ $params['activity']['explicit_tagged'] = ($notification_type & UserItem::NOTIF_EXPLICIT_TAGGED);
+ $params['activity']['implicit_tagged'] = ($notification_type & UserItem::NOTIF_IMPLICIT_TAGGED);
+ $params['activity']['origin_comment'] = ($notification_type & UserItem::NOTIF_DIRECT_COMMENT);
+ $params['activity']['origin_thread'] = ($notification_type & UserItem::NOTIF_THREAD_COMMENT);
+ $params['activity']['thread_comment'] = ($notification_type & UserItem::NOTIF_COMMENT_PARTICIPATION);
+ $params['activity']['thread_activity'] = ($notification_type & UserItem::NOTIF_ACTIVITY_PARTICIPATION);
+
if ($notification_type & UserItem::NOTIF_SHARED) {
$params['type'] = NOTIFY_SHARE;
$params['verb'] = Activity::TAG;
@@ -720,8 +728,8 @@ function check_item_notification($itemid, $uid, $notification_type) {
$params['type'] = NOTIFY_TAGSELF;
$params['verb'] = Activity::TAG;
} elseif ($notification_type & UserItem::NOTIF_IMPLICIT_TAGGED) {
- $params['type'] = NOTIFY_TAGSELF;
- $params['verb'] = Activity::TAG;
+ $params['type'] = NOTIFY_COMMENT;
+ $params['verb'] = Activity::POST;
} elseif ($notification_type & UserItem::NOTIF_THREAD_COMMENT) {
$params['type'] = NOTIFY_COMMENT;
$params['verb'] = Activity::POST;
diff --git a/tests/src/Content/Text/HTMLTest.php b/tests/src/Content/Text/HTMLTest.php
index 027f6ddb1..8ddb83c44 100644
--- a/tests/src/Content/Text/HTMLTest.php
+++ b/tests/src/Content/Text/HTMLTest.php
@@ -59,8 +59,8 @@ class HTMLTest extends MockedTest
'html' => '',
],
'bug-8075-html-tags' => [
- 'expectedBBCode' => " I don't understand tests",
- 'html' => " I don't understand tests",
+ 'expectedBBCode' => " I don't understand tests",
+ 'html' => " I don't understand tests",
],
];
}