Merge pull request #9174 from annando/issue-9167
Issue 9167 - messages from non-followers
This commit is contained in:
commit
fb0fa342be
4 changed files with 33 additions and 25 deletions
|
@ -741,13 +741,16 @@ function conversation_fetch_comments($thread_items, $pinned) {
|
||||||
$direction = ['direction' => 5, 'title' => DI::l10n()->t('%s commented on this.', $row['author-name'])];
|
$direction = ['direction' => 5, 'title' => DI::l10n()->t('%s commented on this.', $row['author-name'])];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($row['gravity'] == GRAVITY_PARENT) && !$row['origin'] && ($row['author-id'] == $row['owner-id'])
|
if (($row['gravity'] == GRAVITY_PARENT) && !$row['origin'] && ($row['author-id'] == $row['owner-id'])) {
|
||||||
&& !Contact::isSharing($row['author-id'], $row['uid'])) {
|
if (Contact::isSharing($row['author-id'], $row['uid'])) {
|
||||||
|
$row['direction'] = ['direction' => 6, 'title' => DI::l10n()->t('You are following %s.', $row['author-name'])];
|
||||||
|
} else {
|
||||||
if ($row['post-type'] == Item::PT_TAG) {
|
if ($row['post-type'] == Item::PT_TAG) {
|
||||||
$row['direction'] = ['direction' => 4, 'title' => DI::l10n()->t('Tagged')];
|
$row['direction'] = ['direction' => 4, 'title' => DI::l10n()->t('Tagged')];
|
||||||
}
|
}
|
||||||
|
|
||||||
$parentlines[] = $lineno;
|
$parentlines[] = $lineno;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($row['gravity'] == GRAVITY_PARENT) {
|
if ($row['gravity'] == GRAVITY_PARENT) {
|
||||||
|
|
|
@ -207,8 +207,6 @@ class Receiver
|
||||||
$uid = self::getFirstUserFromReceivers($receivers);
|
$uid = self::getFirstUserFromReceivers($receivers);
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::log('Receivers: ' . $uid . ' - ' . json_encode($receivers), Logger::DEBUG);
|
|
||||||
|
|
||||||
$object_id = JsonLD::fetchElement($activity, 'as:object', '@id');
|
$object_id = JsonLD::fetchElement($activity, 'as:object', '@id');
|
||||||
if (empty($object_id)) {
|
if (empty($object_id)) {
|
||||||
Logger::log('No object found', Logger::DEBUG);
|
Logger::log('No object found', Logger::DEBUG);
|
||||||
|
@ -539,19 +537,7 @@ class Receiver
|
||||||
$receivers['uid:-1'] = -1;
|
$receivers['uid:-1'] = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($receiver == self::PUBLIC_COLLECTION) && !empty($actor)) {
|
// Fetch the receivers for the public and the followers collection
|
||||||
// This will most likely catch all OStatus connections to Mastodon
|
|
||||||
$condition = ['alias' => [$actor, Strings::normaliseLink($actor)], 'rel' => [Contact::SHARING, Contact::FRIEND]
|
|
||||||
, 'archive' => false, 'pending' => false];
|
|
||||||
$contacts = DBA::select('contact', ['uid'], $condition);
|
|
||||||
while ($contact = DBA::fetch($contacts)) {
|
|
||||||
if ($contact['uid'] != 0) {
|
|
||||||
$receivers['uid:' . $contact['uid']] = $contact['uid'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
DBA::close($contacts);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (in_array($receiver, [$followers, self::PUBLIC_COLLECTION]) && !empty($actor)) {
|
if (in_array($receiver, [$followers, self::PUBLIC_COLLECTION]) && !empty($actor)) {
|
||||||
$receivers = array_merge($receivers, self::getReceiverForActor($actor, $tags));
|
$receivers = array_merge($receivers, self::getReceiverForActor($actor, $tags));
|
||||||
continue;
|
continue;
|
||||||
|
@ -599,12 +585,23 @@ class Receiver
|
||||||
* @return array with receivers (user id)
|
* @return array with receivers (user id)
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function getReceiverForActor($actor, $tags)
|
private static function getReceiverForActor($actor, $tags)
|
||||||
{
|
{
|
||||||
$receivers = [];
|
$receivers = [];
|
||||||
$networks = Protocol::FEDERATED;
|
$basecondition = ['rel' => [Contact::SHARING, Contact::FRIEND, Contact::FOLLOWER],
|
||||||
$condition = ['nurl' => Strings::normaliseLink($actor), 'rel' => [Contact::SHARING, Contact::FRIEND, Contact::FOLLOWER],
|
'network' => Protocol::FEDERATED, 'archive' => false, 'pending' => false];
|
||||||
'network' => $networks, 'archive' => false, 'pending' => false];
|
|
||||||
|
$condition = DBA::mergeConditions($basecondition, ['nurl' => Strings::normaliseLink($actor)]);
|
||||||
|
$contacts = DBA::select('contact', ['uid', 'rel'], $condition);
|
||||||
|
while ($contact = DBA::fetch($contacts)) {
|
||||||
|
if (self::isValidReceiverForActor($contact, $actor, $tags)) {
|
||||||
|
$receivers['uid:' . $contact['uid']] = $contact['uid'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DBA::close($contacts);
|
||||||
|
|
||||||
|
// The queries are split because of performance issues
|
||||||
|
$condition = DBA::mergeConditions($basecondition, ["`alias` IN (?, ?)", Strings::normaliseLink($actor), $actor]);
|
||||||
$contacts = DBA::select('contact', ['uid', 'rel'], $condition);
|
$contacts = DBA::select('contact', ['uid', 'rel'], $condition);
|
||||||
while ($contact = DBA::fetch($contacts)) {
|
while ($contact = DBA::fetch($contacts)) {
|
||||||
if (self::isValidReceiverForActor($contact, $actor, $tags)) {
|
if (self::isValidReceiverForActor($contact, $actor, $tags)) {
|
||||||
|
|
|
@ -11,6 +11,10 @@
|
||||||
<i class="fa fa-hashtag" aria-hidden="true" title="{{$direction.title}}"></i>
|
<i class="fa fa-hashtag" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
{{elseif $direction.direction == 5}}
|
{{elseif $direction.direction == 5}}
|
||||||
<i class="fa fa-comment-o" aria-hidden="true" title="{{$direction.title}}"></i>
|
<i class="fa fa-comment-o" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
|
{{elseif $direction.direction == 6}}
|
||||||
|
<i class="fa fa-check" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
|
{{elseif $direction.direction == 7}}
|
||||||
|
<i class="fa fa-at" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
|
@ -11,6 +11,10 @@
|
||||||
<i class="icon-tag" aria-hidden="true" title="{{$direction.title}}"></i>
|
<i class="icon-tag" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
{{elseif $direction.direction == 5}}
|
{{elseif $direction.direction == 5}}
|
||||||
<i class="icon-commenting" aria-hidden="true" title="{{$direction.title}}"></i>
|
<i class="icon-commenting" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
|
{{elseif $direction.direction == 6}}
|
||||||
|
<i class="icon-ok-sign" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
|
{{elseif $direction.direction == 7}}
|
||||||
|
<i class="icon-forward" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
Loading…
Reference in a new issue