Block communication with Diaspora for communities
This commit is contained in:
parent
2b0518ac04
commit
29d83c0ffb
4 changed files with 17 additions and 7 deletions
|
@ -818,6 +818,15 @@ class Item
|
||||||
$item['inform'] = trim($item['inform'] ?? '');
|
$item['inform'] = trim($item['inform'] ?? '');
|
||||||
$item['file'] = trim($item['file'] ?? '');
|
$item['file'] = trim($item['file'] ?? '');
|
||||||
|
|
||||||
|
// Communities aren't working with the Diaspora protoccol
|
||||||
|
if (($uid != 0) && ($item['network'] == Protocol::DIASPORA)) {
|
||||||
|
$user = User::getById($uid, ['account-type']);
|
||||||
|
if ($user['account-type'] == Contact::TYPE_COMMUNITY) {
|
||||||
|
Logger::info('Community posts are not supported via Diaspora');
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Items cannot be stored before they happen ...
|
// Items cannot be stored before they happen ...
|
||||||
if ($item['created'] > DateTimeFormat::utcNow()) {
|
if ($item['created'] > DateTimeFormat::utcNow()) {
|
||||||
$item['created'] = DateTimeFormat::utcNow();
|
$item['created'] = DateTimeFormat::utcNow();
|
||||||
|
|
|
@ -93,6 +93,12 @@ class Receive extends BaseModule
|
||||||
|
|
||||||
$importer = User::getByGuid($this->parameters['guid']);
|
$importer = User::getByGuid($this->parameters['guid']);
|
||||||
|
|
||||||
|
if ($importer['account-type'] == User::ACCOUNT_TYPE_COMMUNITY) {
|
||||||
|
// Communities aren't working with the Diaspora protoccol
|
||||||
|
// We throw an "accepted" here, so that the sender doesn't repeat the delivery
|
||||||
|
throw new HTTPException\AcceptedException();
|
||||||
|
}
|
||||||
|
|
||||||
$msg = $this->decodePost(false, $importer['prvkey'] ?? '');
|
$msg = $this->decodePost(false, $importer['prvkey'] ?? '');
|
||||||
|
|
||||||
$this->logger->info('Diaspora: Dispatching.');
|
$this->logger->info('Diaspora: Dispatching.');
|
||||||
|
|
|
@ -858,10 +858,6 @@ class Diaspora
|
||||||
} elseif (($contact["rel"] == Contact::SHARING) || ($contact["rel"] == Contact::FRIEND)) {
|
} elseif (($contact["rel"] == Contact::SHARING) || ($contact["rel"] == Contact::FRIEND)) {
|
||||||
// Yes, then it is fine.
|
// Yes, then it is fine.
|
||||||
return true;
|
return true;
|
||||||
// Is it a post to a community?
|
|
||||||
} elseif (($contact["rel"] == Contact::FOLLOWER) && ($importer['account-type'] == User::ACCOUNT_TYPE_COMMUNITY)) {
|
|
||||||
// That's good
|
|
||||||
return true;
|
|
||||||
// Is the message a global user or a comment?
|
// Is the message a global user or a comment?
|
||||||
} elseif (($importer["uid"] == 0) || $is_comment) {
|
} elseif (($importer["uid"] == 0) || $is_comment) {
|
||||||
// Messages for the global users and comments are always accepted
|
// Messages for the global users and comments are always accepted
|
||||||
|
@ -3473,9 +3469,8 @@ class Diaspora
|
||||||
|
|
||||||
private static function prependParentAuthorMention($body, $profile_url)
|
private static function prependParentAuthorMention($body, $profile_url)
|
||||||
{
|
{
|
||||||
$profile = Contact::getByURL($profile_url, false, ['addr', 'name', 'contact-type']);
|
$profile = Contact::getByURL($profile_url, false, ['addr', 'name']);
|
||||||
if (!empty($profile['addr'])
|
if (!empty($profile['addr'])
|
||||||
&& $profile['contact-type'] != Contact::TYPE_COMMUNITY
|
|
||||||
&& !strstr($body, $profile['addr'])
|
&& !strstr($body, $profile['addr'])
|
||||||
&& !strstr($body, $profile_url)
|
&& !strstr($body, $profile_url)
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -153,7 +153,7 @@ class Notifier
|
||||||
}
|
}
|
||||||
|
|
||||||
// Should the post be transmitted to Diaspora?
|
// Should the post be transmitted to Diaspora?
|
||||||
$diaspora_delivery = true;
|
$diaspora_delivery = ($owner['account-type'] != User::ACCOUNT_TYPE_COMMUNITY);
|
||||||
|
|
||||||
// If this is a public conversation, notify the feed hub
|
// If this is a public conversation, notify the feed hub
|
||||||
$public_message = true;
|
$public_message = true;
|
||||||
|
|
Loading…
Reference in a new issue