$item_id = Item::insert($item);
Logger::log('Storing for user ' . $item['uid'] . ': ' . $item_id);
}
+
+ if (!$item['private'] && ($item['gravity'] == GRAVITY_PARENT) && ($item['author-link'] != $item['owner-link'])) {
+ $author = APContact::getByURL($item['owner-link'], false);
+ // We send automatic follow requests for reshared messages. (We don't need though for forum posts)
+ if ($author['type'] != 'Group') {
+ Logger::log('Send follow request for ' . $item['uri'] . ' to ' . $item['author-link'], Logger::DEBUG);
+ ActivityPub\Transmitter::sendFollowObject($item['uri'], $item['author-link']);
+ }
+ }
}
/**
use Friendica\BaseObject;
use Friendica\Database\DBA;
+use Friendica\Core\Config;
use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Util\HTTPSignature;
* @throws \ImagickException
* @throws \Exception
*/
- public static function sendFollowObject($object, $target, $uid)
+ public static function sendFollowObject($object, $target, $uid = 0)
{
$profile = APContact::getByURL($target);
+ if (empty($uid)) {
+ // Fetch the list of administrators
+ $admin_mail = explode(',', str_replace(' ', '', Config::get('config', 'admin_email')));
+
+ // We need to use some user as a sender. It doesn't care who it will send. We will use an administrator account.
+ $condition = ['verified' => true, 'blocked' => false, 'account_removed' => false, 'account_expired' => false, 'email' => $admin_mail];
+ $first_user = DBA::selectFirst('user', ['uid'], $condition);
+ $uid = $first_user['uid'];
+ }
+
$owner = User::getOwnerDataById($uid);
$data = ['@context' => ActivityPub::CONTEXT,