diff --git a/src/Model/Notification.php b/src/Model/Notification.php index b0294aa8a..2a730c5db 100644 --- a/src/Model/Notification.php +++ b/src/Model/Notification.php @@ -168,159 +168,165 @@ class Notification extends BaseModel { $message = []; - if ($notification['type'] == Post\UserNotification::NOTIF_NONE) { - return $message; - } - - if (empty($notification['target-uri-id'])) { - return $message; - } - $user = User::getById($notification['uid']); if (empty($user)) { Logger::info('User not found', ['application' => $notification['uid']]); return $message; } - $causer = $contact = Contact::getById($notification['actor-id'], ['id', 'name', 'url']); + $l10n = DI::l10n()->withLang($user['language']); + + $causer = $contact = Contact::getById($notification['actor-id'], ['id', 'name', 'url', 'pending']); if (empty($contact)) { Logger::info('Contact not found', ['contact' => $notification['actor-id']]); return $message; } - $like = Verb::getID(Activity::LIKE); - $dislike = Verb::getID(Activity::DISLIKE); - $announce = Verb::getID(Activity::ANNOUNCE); - $post = Verb::getID(Activity::POST); - - if (in_array($notification['type'], [Post\UserNotification::NOTIF_THREAD_COMMENT, Post\UserNotification::NOTIF_COMMENT_PARTICIPATION, Post\UserNotification::NOTIF_ACTIVITY_PARTICIPATION, Post\UserNotification::NOTIF_EXPLICIT_TAGGED])) { - $item = Post::selectFirst([], ['uri-id' => $notification['parent-uri-id'], 'uid' => [0, $notification['uid']]], ['order' => ['uid' => true]]); - if (empty($item)) { - Logger::info('Parent post not found', ['uri-id' => $notification['parent-uri-id']]); - return $message; + if ($notification['type'] == Post\UserNotification::NOTIF_NONE) { + if ($contact['pending']) { + $msg = $l10n->t('%1$s wants to follow you'); + } else { + $msg = $l10n->t('%1$s had started following you'); } + $title = $contact['name']; + $link = DI::baseUrl() . '/contact/' . $contact['id']; } else { - $item = Post::selectFirst([], ['uri-id' => $notification['target-uri-id'], 'uid' => [0, $notification['uid']]], ['order' => ['uid' => true]]); - if (empty($item)) { - Logger::info('Post not found', ['uri-id' => $notification['target-uri-id']]); + if (empty($notification['target-uri-id'])) { return $message; } - if ($notification['vid'] == $post) { - $item = Post::selectFirst([], ['uri-id' => $item['thr-parent-id'], 'uid' => [0, $notification['uid']]], ['order' => ['uid' => true]]); + $like = Verb::getID(Activity::LIKE); + $dislike = Verb::getID(Activity::DISLIKE); + $announce = Verb::getID(Activity::ANNOUNCE); + $post = Verb::getID(Activity::POST); + + if (in_array($notification['type'], [Post\UserNotification::NOTIF_THREAD_COMMENT, Post\UserNotification::NOTIF_COMMENT_PARTICIPATION, Post\UserNotification::NOTIF_ACTIVITY_PARTICIPATION, Post\UserNotification::NOTIF_EXPLICIT_TAGGED])) { + $item = Post::selectFirst([], ['uri-id' => $notification['parent-uri-id'], 'uid' => [0, $notification['uid']]], ['order' => ['uid' => true]]); if (empty($item)) { - Logger::info('Thread parent post not found', ['uri-id' => $item['thr-parent-id']]); + Logger::info('Parent post not found', ['uri-id' => $notification['parent-uri-id']]); + return $message; + } + } else { + $item = Post::selectFirst([], ['uri-id' => $notification['target-uri-id'], 'uid' => [0, $notification['uid']]], ['order' => ['uid' => true]]); + if (empty($item)) { + Logger::info('Post not found', ['uri-id' => $notification['target-uri-id']]); + return $message; + } + + if ($notification['vid'] == $post) { + $item = Post::selectFirst([], ['uri-id' => $item['thr-parent-id'], 'uid' => [0, $notification['uid']]], ['order' => ['uid' => true]]); + if (empty($item)) { + Logger::info('Thread parent post not found', ['uri-id' => $item['thr-parent-id']]); + return $message; + } + } + } + + if (($notification['type'] == Post\UserNotification::NOTIF_SHARED) && !empty($item['causer-id'])) { + $causer = Contact::getById($item['causer-id'], ['id', 'name', 'url']); + if (empty($contact)) { + Logger::info('Causer not found', ['causer' => $item['causer-id']]); + return $message; + } + } elseif (in_array($notification['type'], [Post\UserNotification::NOTIF_COMMENT_PARTICIPATION, Post\UserNotification::NOTIF_ACTIVITY_PARTICIPATION])) { + $contact = Contact::getById($item['author-id'], ['id', 'name', 'url']); + if (empty($contact)) { + Logger::info('Author not found', ['author' => $item['author-id']]); return $message; } } - } - if (($notification['type'] == Post\UserNotification::NOTIF_SHARED) && !empty($item['causer-id'])) { - $causer = Contact::getById($item['causer-id'], ['id', 'name', 'url']); - if (empty($contact)) { - Logger::info('Causer not found', ['causer' => $item['causer-id']]); - return $message; + $link = DI::baseUrl() . '/display/' . urlencode($item['guid']); + + $content = Plaintext::getPost($item, 70); + if (!empty($content['text'])) { + $title = '"' . trim(str_replace("\n", " ", $content['text'])) . '"'; + } else { + $title = ''; } - } elseif (in_array($notification['type'], [Post\UserNotification::NOTIF_COMMENT_PARTICIPATION, Post\UserNotification::NOTIF_ACTIVITY_PARTICIPATION])) { - $contact = Contact::getById($item['author-id'], ['id', 'name', 'url']); - if (empty($contact)) { - Logger::info('Author not found', ['author' => $item['author-id']]); - return $message; + + switch ($notification['vid']) { + case $like: + switch ($notification['type']) { + case Post\UserNotification::NOTIF_DIRECT_COMMENT: + $msg = $l10n->t('%1$s liked your comment %2$s'); + break; + case Post\UserNotification::NOTIF_DIRECT_THREAD_COMMENT: + $msg = $l10n->t('%1$s liked your post %2$s'); + break; + } + break; + case $dislike: + switch ($notification['type']) { + case Post\UserNotification::NOTIF_DIRECT_COMMENT: + $msg = $l10n->t('%1$s disliked your comment %2$s'); + break; + case Post\UserNotification::NOTIF_DIRECT_THREAD_COMMENT: + $msg = $l10n->t('%1$s disliked your post %2$s'); + break; + } + break; + case $announce: + switch ($notification['type']) { + case Post\UserNotification::NOTIF_DIRECT_COMMENT: + $msg = $l10n->t('%1$s shared your comment %2$s'); + break; + case Post\UserNotification::NOTIF_DIRECT_THREAD_COMMENT: + $msg = $l10n->t('%1$s shared your post %2$s'); + break; + } + break; + case $post: + switch ($notification['type']) { + case Post\UserNotification::NOTIF_EXPLICIT_TAGGED: + $msg = $l10n->t('%1$s tagged you on %2$s'); + break; + + case Post\UserNotification::NOTIF_IMPLICIT_TAGGED: + $msg = $l10n->t('%1$s replied to you on %2$s'); + break; + + case Post\UserNotification::NOTIF_THREAD_COMMENT: + $msg = $l10n->t('%1$s commented in your thread %2$s'); + break; + + case Post\UserNotification::NOTIF_DIRECT_COMMENT: + $msg = $l10n->t('%1$s commented on your comment %2$s'); + break; + + case Post\UserNotification::NOTIF_COMMENT_PARTICIPATION: + case Post\UserNotification::NOTIF_ACTIVITY_PARTICIPATION: + if (($causer['id'] == $contact['id']) && ($title != '')) { + $msg = $l10n->t('%1$s commented in their thread %2$s'); + } elseif ($causer['id'] == $contact['id']) { + $msg = $l10n->t('%1$s commented in their thread'); + } elseif ($title != '') { + $msg = $l10n->t('%1$s commented in the thread %2$s from %3$s'); + } else { + $msg = $l10n->t('%1$s commented in the thread from %3$s'); + } + break; + + case Post\UserNotification::NOTIF_DIRECT_THREAD_COMMENT: + $msg = $l10n->t('%1$s commented on your thread %2$s'); + break; + + case Post\UserNotification::NOTIF_SHARED: + if (($causer['id'] != $contact['id']) && ($title != '')) { + $msg = $l10n->t('%1$s shared the post %2$s from %3$s'); + } elseif ($causer['id'] != $contact['id']) { + $msg = $l10n->t('%1$s shared a post from %3$s'); + } elseif ($title != '') { + $msg = $l10n->t('%1$s shared the post %2$s'); + } else { + $msg = $l10n->t('%1$s shared a post'); + } + break; + } + break; } } - $link = DI::baseUrl() . '/display/' . urlencode($item['guid']); - - $content = Plaintext::getPost($item, 70); - if (!empty($content['text'])) { - $title = '"' . trim(str_replace("\n", " ", $content['text'])) . '"'; - } else { - $title = ''; - } - - $l10n = DI::l10n()->withLang($user['language']); - - switch ($notification['vid']) { - case $like: - switch ($notification['type']) { - case Post\UserNotification::NOTIF_DIRECT_COMMENT: - $msg = $l10n->t('%1$s liked your comment %2$s'); - break; - case Post\UserNotification::NOTIF_DIRECT_THREAD_COMMENT: - $msg = $l10n->t('%1$s liked your post %2$s'); - break; - } - break; - case $dislike: - switch ($notification['type']) { - case Post\UserNotification::NOTIF_DIRECT_COMMENT: - $msg = $l10n->t('%1$s disliked your comment %2$s'); - break; - case Post\UserNotification::NOTIF_DIRECT_THREAD_COMMENT: - $msg = $l10n->t('%1$s disliked your post %2$s'); - break; - } - break; - case $announce: - switch ($notification['type']) { - case Post\UserNotification::NOTIF_DIRECT_COMMENT: - $msg = $l10n->t('%1$s shared your comment %2$s'); - break; - case Post\UserNotification::NOTIF_DIRECT_THREAD_COMMENT: - $msg = $l10n->t('%1$s shared your post %2$s'); - break; - } - break; - case $post: - switch ($notification['type']) { - case Post\UserNotification::NOTIF_EXPLICIT_TAGGED: - $msg = $l10n->t('%1$s tagged you on %2$s'); - break; - - case Post\UserNotification::NOTIF_IMPLICIT_TAGGED: - $msg = $l10n->t('%1$s replied to you on %2$s'); - break; - - case Post\UserNotification::NOTIF_THREAD_COMMENT: - $msg = $l10n->t('%1$s commented in your thread %2$s'); - break; - - case Post\UserNotification::NOTIF_DIRECT_COMMENT: - $msg = $l10n->t('%1$s commented on your comment %2$s'); - break; - - case Post\UserNotification::NOTIF_COMMENT_PARTICIPATION: - case Post\UserNotification::NOTIF_ACTIVITY_PARTICIPATION: - if (($causer['id'] == $contact['id']) && ($title != '')) { - $msg = $l10n->t('%1$s commented in their thread %2$s'); - } elseif ($causer['id'] == $contact['id']) { - $msg = $l10n->t('%1$s commented in their thread'); - } elseif ($title != '') { - $msg = $l10n->t('%1$s commented in the thread %2$s from %3$s'); - } else { - $msg = $l10n->t('%1$s commented in the thread from %3$s'); - } - break; - - case Post\UserNotification::NOTIF_DIRECT_THREAD_COMMENT: - $msg = $l10n->t('%1$s commented on your thread %2$s'); - break; - - case Post\UserNotification::NOTIF_SHARED: - if (($causer['id'] != $contact['id']) && ($title != '')) { - $msg = $l10n->t('%1$s shared the post %2$s from %3$s'); - } elseif ($causer['id'] != $contact['id']) { - $msg = $l10n->t('%1$s shared a post from %3$s'); - } elseif ($title != '') { - $msg = $l10n->t('%1$s shared the post %2$s'); - } else { - $msg = $l10n->t('%1$s shared a post'); - } - break; - } - break; - } - if (!empty($msg)) { // Name of the notification's causer $message['causer'] = $causer['name']; @@ -328,7 +334,7 @@ class Notification extends BaseModel $message['notification'] = sprintf($msg, '{0}', $title, $contact['name']); // Plain text for the web push api $message['plain'] = sprintf($msg, $causer['name'], $title, $contact['name']); - // Rich text for other purposes + // Rich text for other purposes $message['rich'] = sprintf($msg, '[url=' . $causer['url'] . ']' . $causer['name'] . '[/url]', '[url=' . $link . ']' . $title . '[/url]', diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index 203680c3d..a5fe06bb5 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2021.09-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-22 03:57+0000\n" +"POT-Creation-Date: 2021-08-22 08:26+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -4665,97 +4665,107 @@ msgstr "" msgid "[no subject]" msgstr "" -#: src/Model/Notification.php:247 +#: src/Model/Notification.php:187 +#, php-format +msgid "%1$s wants to follow you" +msgstr "" + +#: src/Model/Notification.php:189 +#, php-format +msgid "%1$s had started following you" +msgstr "" + +#: src/Model/Notification.php:252 #, php-format msgid "%1$s liked your comment %2$s" msgstr "" -#: src/Model/Notification.php:250 +#: src/Model/Notification.php:255 #, php-format msgid "%1$s liked your post %2$s" msgstr "" -#: src/Model/Notification.php:257 +#: src/Model/Notification.php:262 #, php-format msgid "%1$s disliked your comment %2$s" msgstr "" -#: src/Model/Notification.php:260 +#: src/Model/Notification.php:265 #, php-format msgid "%1$s disliked your post %2$s" msgstr "" -#: src/Model/Notification.php:267 +#: src/Model/Notification.php:272 #, php-format msgid "%1$s shared your comment %2$s" msgstr "" -#: src/Model/Notification.php:270 +#: src/Model/Notification.php:275 #, php-format msgid "%1$s shared your post %2$s" msgstr "" -#: src/Model/Notification.php:277 +#: src/Model/Notification.php:282 #, php-format msgid "%1$s tagged you on %2$s" msgstr "" -#: src/Model/Notification.php:281 +#: src/Model/Notification.php:286 #, php-format msgid "%1$s replied to you on %2$s" msgstr "" -#: src/Model/Notification.php:285 +#: src/Model/Notification.php:290 #, php-format msgid "%1$s commented in your thread %2$s" msgstr "" -#: src/Model/Notification.php:289 +#: src/Model/Notification.php:294 #, php-format msgid "%1$s commented on your comment %2$s" msgstr "" -#: src/Model/Notification.php:295 +#: src/Model/Notification.php:300 #, php-format msgid "%1$s commented in their thread %2$s" msgstr "" -#: src/Model/Notification.php:297 +#: src/Model/Notification.php:302 #, php-format msgid "%1$s commented in their thread" msgstr "" -#: src/Model/Notification.php:299 +#: src/Model/Notification.php:304 #, php-format msgid "%1$s commented in the thread %2$s from %3$s" msgstr "" -#: src/Model/Notification.php:301 +#: src/Model/Notification.php:306 #, php-format msgid "%1$s commented in the thread from %3$s" msgstr "" -#: src/Model/Notification.php:306 +#: src/Model/Notification.php:311 #, php-format msgid "%1$s commented on your thread %2$s" msgstr "" -#: src/Model/Notification.php:311 +#: src/Model/Notification.php:316 #, php-format msgid "%1$s shared the post %2$s from %3$s" msgstr "" -#: src/Model/Notification.php:313 +#: src/Model/Notification.php:318 #, php-format msgid "%1$s shared a post from %3$s" msgstr "" -#: src/Model/Notification.php:315 +#: src/Model/Notification.php:320 #, php-format msgid "%1$s shared the post %2$s" msgstr "" -#: src/Model/Notification.php:317 +#: src/Model/Notification.php:322 #, php-format msgid "%1$s shared a post" msgstr ""