summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@status.net>2010-09-01 14:35:43 -0400
committerEvan Prodromou <evan@status.net>2010-09-01 14:35:43 -0400
commitc82b1cda825f3b84e3c3bef5474eccf8963b0475 (patch)
treee05b2c002a8a9a6a370b804afe663174b6cd43d6
parent8f06e3b2819936d1a9fe30b1bc44759bdcd56992 (diff)
send a salmon slap to mentioned person when we reply to a notice
-rw-r--r--plugins/OStatus/actions/usersalmon.php6
-rw-r--r--plugins/OStatus/lib/ostatusqueuehandler.php13
2 files changed, 16 insertions, 3 deletions
diff --git a/plugins/OStatus/actions/usersalmon.php b/plugins/OStatus/actions/usersalmon.php
index 641e131ab..54715cd65 100644
--- a/plugins/OStatus/actions/usersalmon.php
+++ b/plugins/OStatus/actions/usersalmon.php
@@ -71,6 +71,7 @@ class UsersalmonAction extends SalmonAction
// Notice must either be a) in reply to a notice by this user
// or b) to the attention of this user
+ // or c) in reply to a notice to the attention of this user
$context = $this->activity->context;
@@ -79,8 +80,9 @@ class UsersalmonAction extends SalmonAction
if (empty($notice)) {
throw new ClientException("In reply to unknown notice");
}
- if ($notice->profile_id != $this->user->id) {
- throw new ClientException("In reply to a notice not by this user");
+ if ($notice->profile_id != $this->user->id &&
+ !in_array($notice->getReplies(), $this->user->id)) {
+ throw new ClientException("In reply to a notice not by this user and not mentioning this user");
}
} else if (!empty($context->attention)) {
if (!in_array($this->user->uri, $context->attention) &&
diff --git a/plugins/OStatus/lib/ostatusqueuehandler.php b/plugins/OStatus/lib/ostatusqueuehandler.php
index 8905d2e21..5e318116a 100644
--- a/plugins/OStatus/lib/ostatusqueuehandler.php
+++ b/plugins/OStatus/lib/ostatusqueuehandler.php
@@ -67,6 +67,17 @@ class OStatusQueueHandler extends QueueHandler
}
}
+ if (!empty($this->notice->reply_to)) {
+ $replyTo = Notice::staticGet('id', $this->notice->reply_to);
+ if (!empty($replyTo)) {
+ foreach($replyTo->getReplies() as $profile_id) {
+ $oprofile = Ostatus_profile::staticGet('profile_id', $profile_id);
+ if ($oprofile) {
+ $this->pingReply($oprofile);
+ }
+ }
+ }
+ }
return true;
}
@@ -161,7 +172,7 @@ class OStatusQueueHandler extends QueueHandler
* Queue up direct feed update pushes to subscribers on our internal hub.
* If there are a large number of subscriber sites, intermediate bulk
* distribution triggers may be queued.
- *
+ *
* @param string $atom update feed, containing only new/changed items
* @param HubSub $sub open query of subscribers
*/