X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FNotification.php;h=880fa784a61ff1b2acde436be14cb815772fe870;hb=c0d187f2818bcdcb12bbde239f7ce213adaedd02;hp=2a5a780f7076909130f3118f2e9d72f991117843;hpb=38196aec674ca9acc5db7e72898b52906f0d9070;p=friendica.git diff --git a/src/Model/Notification.php b/src/Model/Notification.php index 2a5a780f70..880fa784a6 100644 --- a/src/Model/Notification.php +++ b/src/Model/Notification.php @@ -1,6 +1,6 @@ $notification['uid']]); + return $message; + } + + $contact = Contact::getById($notification['actor-id']); + 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])) { + $item = Post::selectFirst([], ['uri-id' => $notification['parent-uri-id'], 'uid' => [0, $notification['uid']]]); + if (empty($item)) { + 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']]]); + 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']]]); + if (empty($item)) { + Logger::info('Thread parent post not found', ['uri-id' => $item['thr-parent-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 = ''; + } + + $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: + $msg = $l10n->t('%1$s commented in the thread %2$s'); + break; + + case Post\UserNotification::NOTIF_ACTIVITY_PARTICIPATION: + // Unhandled + 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 ($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'] = $contact['name']; + // Format for the "ping" mechanism + $message['notification'] = sprintf($msg, '{0}', $title); + // Plain text for the web push api + $message['plain'] = sprintf($msg, $contact['name'], $title); + // Rich text for other purposes + $message['rich'] = sprintf($msg, + '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]', + '[url=' . $link . ']' . $title . '[/url]'); + } + + return $message; + } }