mirror of
https://github.com/friendica/friendica
synced 2025-04-27 06:30:12 +00:00
User-Item table is replaced
This commit is contained in:
parent
b26157e6e3
commit
df24c0daeb
8 changed files with 367 additions and 418 deletions
|
@ -32,7 +32,6 @@ use Friendica\Model\Item;
|
|||
use Friendica\Model\Notification;
|
||||
use Friendica\Model\Post;
|
||||
use Friendica\Model\User;
|
||||
use Friendica\Model\UserItem;
|
||||
use Friendica\Protocol\Activity;
|
||||
|
||||
/**
|
||||
|
@ -592,32 +591,39 @@ function notification($params)
|
|||
/**
|
||||
* Checks for users who should be notified
|
||||
*
|
||||
* @param int $itemid ID of the item for which the check should be done
|
||||
* @param int $uri_id URI ID of the item for which the check should be done
|
||||
* @param int $uid User ID of the item
|
||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||
*/
|
||||
function check_user_notification($itemid) {
|
||||
// fetch all users with notifications
|
||||
$useritems = DBA::select('user-item', ['uid', 'notification-type'], ['iid' => $itemid]);
|
||||
while ($useritem = DBA::fetch($useritems)) {
|
||||
check_item_notification($itemid, $useritem['uid'], $useritem['notification-type']);
|
||||
function check_user_notification(int $uri_id, int $uid) {
|
||||
$condition = ['uri-id' => $uri_id];
|
||||
|
||||
// fetch all users with notifications on public posts
|
||||
if ($uid != 0) {
|
||||
$condition['uid'] = $uid;
|
||||
}
|
||||
DBA::close($useritems);
|
||||
|
||||
$usernotifications = DBA::select('post-user-notification', ['uri-id', 'uid', 'notification-type'], $condition);
|
||||
while ($usernotification = DBA::fetch($usernotifications)) {
|
||||
check_item_notification($usernotification['uri-id'], $usernotification['uid'], $usernotification['notification-type']);
|
||||
}
|
||||
DBA::close($usernotifications);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks for item related notifications and sends them
|
||||
*
|
||||
* @param int $itemid ID of the item for which the check should be done
|
||||
* @param int $uri_id URI ID of the item for which the check should be done
|
||||
* @param int $uid User ID
|
||||
* @param int $notification_type Notification bits
|
||||
* @return bool
|
||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||
*/
|
||||
function check_item_notification($itemid, $uid, $notification_type) {
|
||||
function check_item_notification(int $uri_id, int $uid, int $notification_type) {
|
||||
$fields = ['id', 'uri-id', 'mention', 'parent', 'parent-uri-id', 'thr-parent-id',
|
||||
'title', 'body', 'author-link', 'author-name', 'author-avatar', 'author-id',
|
||||
'gravity', 'guid', 'parent-uri', 'uri', 'contact-id', 'network'];
|
||||
$condition = ['id' => $itemid, 'deleted' => false];
|
||||
$condition = ['uri-id' => $uri_id, 'uid' => $uid, 'deleted' => false];
|
||||
$item = Post::selectFirstForUser($uid, $fields, $condition);
|
||||
if (!DBA::isResult($item)) {
|
||||
return false;
|
||||
|
@ -637,19 +643,19 @@ function check_item_notification($itemid, $uid, $notification_type) {
|
|||
$params['link'] = DI::baseUrl() . '/display/' . urlencode($item['guid']);
|
||||
|
||||
// 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);
|
||||
$params['activity']['explicit_tagged'] = ($notification_type & Post\UserNotification::NOTIF_EXPLICIT_TAGGED);
|
||||
$params['activity']['implicit_tagged'] = ($notification_type & Post\UserNotification::NOTIF_IMPLICIT_TAGGED);
|
||||
$params['activity']['origin_comment'] = ($notification_type & Post\UserNotification::NOTIF_DIRECT_COMMENT);
|
||||
$params['activity']['origin_thread'] = ($notification_type & Post\UserNotification::NOTIF_THREAD_COMMENT);
|
||||
$params['activity']['thread_comment'] = ($notification_type & Post\UserNotification::NOTIF_COMMENT_PARTICIPATION);
|
||||
$params['activity']['thread_activity'] = ($notification_type & Post\UserNotification::NOTIF_ACTIVITY_PARTICIPATION);
|
||||
|
||||
// Tagging a user in a direct post (first comment level) means a direct comment
|
||||
if ($params['activity']['explicit_tagged'] && ($notification_type & UserItem::NOTIF_DIRECT_THREAD_COMMENT)) {
|
||||
if ($params['activity']['explicit_tagged'] && ($notification_type & Post\UserNotification::NOTIF_DIRECT_THREAD_COMMENT)) {
|
||||
$params['activity']['origin_comment'] = true;
|
||||
}
|
||||
|
||||
if ($notification_type & UserItem::NOTIF_SHARED) {
|
||||
if ($notification_type & Post\UserNotification::NOTIF_SHARED) {
|
||||
$params['type'] = Notification\Type::SHARE;
|
||||
$params['verb'] = Activity::POST;
|
||||
|
||||
|
@ -666,22 +672,22 @@ function check_item_notification($itemid, $uid, $notification_type) {
|
|||
$params['item'] = $parent_item;
|
||||
}
|
||||
}
|
||||
} elseif ($notification_type & UserItem::NOTIF_EXPLICIT_TAGGED) {
|
||||
} elseif ($notification_type & Post\UserNotification::NOTIF_EXPLICIT_TAGGED) {
|
||||
$params['type'] = Notification\Type::TAG_SELF;
|
||||
$params['verb'] = Activity::TAG;
|
||||
} elseif ($notification_type & UserItem::NOTIF_IMPLICIT_TAGGED) {
|
||||
} elseif ($notification_type & Post\UserNotification::NOTIF_IMPLICIT_TAGGED) {
|
||||
$params['type'] = Notification\Type::COMMENT;
|
||||
$params['verb'] = Activity::POST;
|
||||
} elseif ($notification_type & UserItem::NOTIF_THREAD_COMMENT) {
|
||||
} elseif ($notification_type & Post\UserNotification::NOTIF_THREAD_COMMENT) {
|
||||
$params['type'] = Notification\Type::COMMENT;
|
||||
$params['verb'] = Activity::POST;
|
||||
} elseif ($notification_type & UserItem::NOTIF_DIRECT_COMMENT) {
|
||||
} elseif ($notification_type & Post\UserNotification::NOTIF_DIRECT_COMMENT) {
|
||||
$params['type'] = Notification\Type::COMMENT;
|
||||
$params['verb'] = Activity::POST;
|
||||
} elseif ($notification_type & UserItem::NOTIF_COMMENT_PARTICIPATION) {
|
||||
} elseif ($notification_type & Post\UserNotification::NOTIF_COMMENT_PARTICIPATION) {
|
||||
$params['type'] = Notification\Type::COMMENT;
|
||||
$params['verb'] = Activity::POST;
|
||||
} elseif ($notification_type & UserItem::NOTIF_ACTIVITY_PARTICIPATION) {
|
||||
} elseif ($notification_type & Post\UserNotification::NOTIF_ACTIVITY_PARTICIPATION) {
|
||||
$params['type'] = Notification\Type::COMMENT;
|
||||
$params['verb'] = Activity::POST;
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue