$item['inform'] = trim($item['inform'] ?? '');
$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 ...
if ($item['created'] > DateTimeFormat::utcNow()) {
$item['created'] = DateTimeFormat::utcNow();
$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'] ?? '');
$this->logger->info('Diaspora: Dispatching.');
} elseif (($contact["rel"] == Contact::SHARING) || ($contact["rel"] == Contact::FRIEND)) {
// Yes, then it is fine.
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?
} elseif (($importer["uid"] == 0) || $is_comment) {
// Messages for the global users and comments are always accepted
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'])
- && $profile['contact-type'] != Contact::TYPE_COMMUNITY
&& !strstr($body, $profile['addr'])
&& !strstr($body, $profile_url)
) {
}
// 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
$public_message = true;