*/
public static function markForDeletionById($item_id, $priority = PRIORITY_HIGH)
{
- Logger::notice('Mark item for deletion by id', ['id' => $item_id, 'callstack' => System::callstack()]);
+ Logger::info('Mark item for deletion by id', ['id' => $item_id, 'callstack' => System::callstack()]);
// locate item to be deleted
$fields = ['id', 'uri', 'uid', 'parent', 'parent-uri', 'origin',
'deleted', 'file', 'resource-id', 'event-id', 'attach',
'icid', 'iaid', 'psid'];
$item = self::selectFirst($fields, ['id' => $item_id]);
if (!DBA::isResult($item)) {
- Logger::debug('Item not found.', ['id' => $item_id]);
+ Logger::info('Item not found.', ['id' => $item_id]);
return false;
}
if ($item['deleted']) {
- Logger::debug('Item has already been marked for deletion.', ['id' => $item_id]);
+ Logger::info('Item has already been marked for deletion.', ['id' => $item_id]);
return false;
}
}
}
- Logger::debug('Item has been marked for deletion.', ['id' => $item_id]);
+ Logger::info('Item has been marked for deletion.', ['id' => $item_id]);
return true;
}
$fields = ['uri', 'parent-uri', 'id', 'deleted',
'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid',
- 'wall', 'private', 'forum_mode', 'origin'];
+ 'wall', 'private', 'forum_mode', 'origin', 'author-id'];
$condition = ['uri' => $item['parent-uri'], 'uid' => $item['uid']];
$params = ['order' => ['id' => false]];
$parent = self::selectFirst($fields, $condition, $params);
DBA::update('thread', ['mention' => true], ['iid' => $parent_id]);
Logger::log('tagged thread ' . $parent_id . ' as mention for user ' . $item['uid'], Logger::DEBUG);
}
+
+ // Update the contact relations
+ if ($item['author-id'] != $parent['author-id']) {
+ DBA::update('contact-relation', ['last-interaction' => $item['created']], ['cid' => $parent['author-id'], 'relation-cid' => $item['author-id']], true);
+ }
} else {
/*
* Allow one to see reply tweets from status.net even when
if ($entries > 1) {
// There are duplicates. We delete our just created entry.
- Logger::notice('Delete duplicated item', ['id' => $current_post, 'uri' => $item['uri'], 'uid' => $item['uid'], 'guid' => $item['guid']]);
+ Logger::info('Delete duplicated item', ['id' => $current_post, 'uri' => $item['uri'], 'uid' => $item['uid'], 'guid' => $item['guid']]);
// Yes, we could do a rollback here - but we are having many users with MyISAM.
DBA::delete('item', ['id' => $current_post]);
if (!$mention) {
if (($community_page || $prvgroup) &&
!$item['wall'] && !$item['origin'] && ($item['id'] == $item['parent'])) {
- Logger::notice('Delete private group/communiy top-level item without mention', ['id' => $item_id, 'guid'=> $item['guid']]);
+ Logger::info('Delete private group/communiy top-level item without mention', ['id' => $item_id, 'guid'=> $item['guid']]);
DBA::delete('item', ['id' => $item_id]);
return true;
}
* array $arr
* 'post_id' => ID of posted item
*/
- public static function performLike($item_id, $verb)
+ public static function performActivity($item_id, $verb)
{
if (!Session::isAuthenticated()) {
return false;
case 'unattendmaybe':
$activity = Activity::ATTENDMAYBE;
break;
+ case 'follow':
+ case 'unfollow':
+ $activity = Activity::FOLLOW;
+ break;
default:
Logger::log('like: unknown verb ' . $verb . ' for item ' . $item_id);
return false;
// first try to fetch the item via the GUID. This will work for all reshares that had been created on this system
$shared_item = self::selectFirst(['title', 'body', 'attach'], ['guid' => $shared['guid'], 'uid' => [0, $uid]]);
if (!DBA::isResult($shared_item)) {
+ if (empty($shared['link'])) {
+ return $item;
+ }
+
// Otherwhise try to find (and possibly fetch) the item via the link. This should work for Diaspora and ActivityPub posts
$id = self::fetchByLink($shared['link'], $uid);
if (empty($id)) {