use Friendica\BaseFactory;
use Friendica\Database\DBA;
use Friendica\DI;
+use Friendica\Model\Contact;
use Friendica\Model\Post;
use Friendica\Model\Verb;
use Friendica\Protocol\Activity;
status = Someone you enabled notifications for has posted a status
*/
- if (($notification['vid'] == Verb::getID(Activity::ANNOUNCE)) &&
+ if (($notification['vid'] == Verb::getID(Activity::FOLLOW)) && ($notification['type'] == Post\UserNotification::NOTIF_NONE)) {
+ $contact = Contact::getById($notification['actor-id'], ['pending']);
+ $type = $contact['pending'] ? $type = 'follow_request' : 'follow';
+ } elseif (($notification['vid'] == Verb::getID(Activity::ANNOUNCE)) &&
in_array($notification['type'], [Post\UserNotification::NOTIF_DIRECT_COMMENT, Post\UserNotification::NOTIF_DIRECT_THREAD_COMMENT])) {
$type = 'reblog';
} elseif (in_array($notification['vid'], [Verb::getID(Activity::LIKE), Verb::getID(Activity::DISLIKE)]) &&
if (self::checkShared($item, $uid)) {
$notification_type = $notification_type | self::NOTIF_SHARED;
- self::insertNotication(self::NOTIF_SHARED, $uid, $item);
+ self::insertNoticationByItem(self::NOTIF_SHARED, $uid, $item);
$notified = true;
} else {
$notified = false;
if (self::checkExplicitMention($item, $profiles)) {
$notification_type = $notification_type | self::NOTIF_EXPLICIT_TAGGED;
if (!$notified) {
- self::insertNotication( self::NOTIF_EXPLICIT_TAGGED, $uid, $item);
+ self::insertNoticationByItem( self::NOTIF_EXPLICIT_TAGGED, $uid, $item);
$notified = true;
}
}
if (self::checkImplicitMention($item, $profiles)) {
$notification_type = $notification_type | self::NOTIF_IMPLICIT_TAGGED;
if (!$notified) {
- self::insertNotication(self::NOTIF_IMPLICIT_TAGGED, $uid, $item);
+ self::insertNoticationByItem(self::NOTIF_IMPLICIT_TAGGED, $uid, $item);
$notified = true;
}
}
if (self::checkDirectComment($item, $contacts)) {
$notification_type = $notification_type | self::NOTIF_DIRECT_COMMENT;
if (!$notified) {
- self::insertNotication(self::NOTIF_DIRECT_COMMENT, $uid, $item);
+ self::insertNoticationByItem(self::NOTIF_DIRECT_COMMENT, $uid, $item);
$notified = true;
}
}
if (self::checkDirectCommentedThread($item, $contacts)) {
$notification_type = $notification_type | self::NOTIF_DIRECT_THREAD_COMMENT;
if (!$notified) {
- self::insertNotication(self::NOTIF_DIRECT_THREAD_COMMENT, $uid, $item);
+ self::insertNoticationByItem(self::NOTIF_DIRECT_THREAD_COMMENT, $uid, $item);
$notified = true;
}
}
if (self::checkCommentedThread($item, $contacts)) {
$notification_type = $notification_type | self::NOTIF_THREAD_COMMENT;
if (!$notified) {
- self::insertNotication(self::NOTIF_THREAD_COMMENT, $uid, $item);
+ self::insertNoticationByItem(self::NOTIF_THREAD_COMMENT, $uid, $item);
$notified = true;
}
}
if (self::checkCommentedParticipation($item, $contacts)) {
$notification_type = $notification_type | self::NOTIF_COMMENT_PARTICIPATION;
if (!$notified) {
- self::insertNotication(self::NOTIF_COMMENT_PARTICIPATION, $uid, $item);
+ self::insertNoticationByItem(self::NOTIF_COMMENT_PARTICIPATION, $uid, $item);
$notified = true;
}
}
if (self::checkActivityParticipation($item, $contacts)) {
$notification_type = $notification_type | self::NOTIF_ACTIVITY_PARTICIPATION;
if (!$notified) {
- self::insertNotication(self::NOTIF_ACTIVITY_PARTICIPATION, $uid, $item);
+ self::insertNoticationByItem(self::NOTIF_ACTIVITY_PARTICIPATION, $uid, $item);
$notified = true;
}
}
self::update($item['uri-id'], $uid, $fields, true);
}
- private static function insertNotication(int $type, int $uid, array $item)
+ /**
+ * Add a notification entry for a given item array
+ *
+ * @param int $type User notification type
+ * @param int $uid User ID
+ * @param array $item Item array
+ * @return boolean
+ */
+ private static function insertNoticationByItem(int $type, int $uid, array $item)
{
if (($item['gravity'] == GRAVITY_ACTIVITY) &&
!in_array($type, [self::NOTIF_DIRECT_COMMENT, self::NOTIF_DIRECT_THREAD_COMMENT])) {
}
$fields = [
- 'uid' => $uid,
- 'vid' => $item['vid'],
+ 'uid' => $uid,
+ 'vid' => $item['vid'],
'type' => $type,
- 'actor-id' => $item['author-id'],
+ 'actor-id' => $item['author-id'],
'parent-uri-id' => $item['parent-uri-id'],
'created' => DateTimeFormat::utcNow(),
];
$fields['target-uri-id'] = $item['uri-id'];
}
- DBA::insert('notification', $fields);
+ return DBA::insert('notification', $fields);
+ }
+
+ /**
+ * Add a notification entry
+ *
+ * @param int $actor Contact ID of the actor
+ * @param int $vid Verb ID
+ * @param int $uid User ID
+ * @return boolean
+ */
+ public static function insertNotication(int $actor, int $vid, int $uid)
+ {
+ $fields = [
+ 'uid' => $uid,
+ 'vid' => $vid,
+ 'type' => self::NOTIF_NONE,
+ 'actor-id' => $actor,
+ 'created' => DateTimeFormat::utcNow(),
+ ];
+
+ return DBA::insert('notification', $fields);
}
/**