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()
|
private function getDefaultText()
|
||||||
{
|
{
|
||||||
|
if (!local_user()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$a = self::getApp();
|
$a = self::getApp();
|
||||||
|
|
||||||
$item = Item::selectFirst(['author-addr'], ['id' => $this->getId()]);
|
$item = Item::selectFirst(['author-addr'], ['id' => $this->getId()]);
|
||||||
|
|
|
@ -329,6 +329,15 @@ class Processor
|
||||||
$item_id = Item::insert($item);
|
$item_id = Item::insert($item);
|
||||||
Logger::log('Storing for user ' . $item['uid'] . ': ' . $item_id);
|
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\BaseObject;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
|
use Friendica\Core\Config;
|
||||||
use Friendica\Core\Logger;
|
use Friendica\Core\Logger;
|
||||||
use Friendica\Core\System;
|
use Friendica\Core\System;
|
||||||
use Friendica\Util\HTTPSignature;
|
use Friendica\Util\HTTPSignature;
|
||||||
|
@ -1295,10 +1296,20 @@ class Transmitter
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function sendFollowObject($object, $target, $uid)
|
public static function sendFollowObject($object, $target, $uid = 0)
|
||||||
{
|
{
|
||||||
$profile = APContact::getByURL($target);
|
$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);
|
$owner = User::getOwnerDataById($uid);
|
||||||
|
|
||||||
$data = ['@context' => ActivityPub::CONTEXT,
|
$data = ['@context' => ActivityPub::CONTEXT,
|
||||||
|
|
Loading…
Reference in a new issue