Merge pull request #6567 from annando/ap-auto-follow
Automatically follow every incoming reshared item
This commit is contained in:
commit
bc5646092e
3 changed files with 25 additions and 1 deletions
|
@ -775,6 +775,10 @@ class Post extends BaseObject
|
|||
*/
|
||||
private function getDefaultText()
|
||||
{
|
||||
if (!local_user()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$a = self::getApp();
|
||||
|
||||
$item = Item::selectFirst(['author-addr'], ['id' => $this->getId()]);
|
||||
|
|
|
@ -329,6 +329,15 @@ class Processor
|
|||
$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']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -6,6 +6,7 @@ namespace Friendica\Protocol\ActivityPub;
|
|||
|
||||
use Friendica\BaseObject;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Core\Config;
|
||||
use Friendica\Core\Logger;
|
||||
use Friendica\Core\System;
|
||||
use Friendica\Util\HTTPSignature;
|
||||
|
@ -1295,10 +1296,20 @@ class Transmitter
|
|||
* @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,
|
||||
|
|
Loading…
Reference in a new issue