]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/OStatus/lib/ostatusqueuehandler.php
Merge branch 'people_tags_rebase' into 1.0.x
[quix0rs-gnu-social.git] / plugins / OStatus / lib / ostatusqueuehandler.php
index 5e318116a6e1a3d479d5ffd379cb655a71009be7..d7dc921ad678e08969c9badbe44a13b50247e11a 100644 (file)
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
 /**
  * Prepare PuSH and Salmon distributions for an outgoing message.
  *
@@ -60,13 +64,6 @@ class OStatusQueueHandler extends QueueHandler
             }
         }
 
-        foreach ($notice->getReplies() as $profile_id) {
-            $oprofile = Ostatus_profile::staticGet('profile_id', $profile_id);
-            if ($oprofile) {
-                $this->pingReply($oprofile);
-            }
-        }
-
         if (!empty($this->notice->reply_to)) {
             $replyTo = Notice::staticGet('id', $this->notice->reply_to);
             if (!empty($replyTo)) {
@@ -78,6 +75,14 @@ class OStatusQueueHandler extends QueueHandler
                 }
             }
         }
+
+        foreach ($notice->getProfileTags() as $ptag) {
+            $oprofile = Ostatus_profile::staticGet('peopletag_id', $ptag->id);
+            if (!$oprofile) {
+                $this->pushPeopletag($ptag);
+            }
+        }
+
         return true;
     }
 
@@ -103,6 +108,17 @@ class OStatusQueueHandler extends QueueHandler
         $this->pushFeed($feed, array($this, 'groupFeedForNotice'), $group_id);
     }
 
+    function pushPeopletag($ptag)
+    {
+        // For a local people tag, ping the PuSH hub to update its feed.
+        // Updates may come from either a local or a remote user.
+        $feed = common_local_url('ApiTimelineList',
+                                 array('id' => $ptag->id,
+                                       'user' => $ptag->tagger,
+                                       'format' => 'atom'));
+        $this->pushFeed($feed, array($this, 'peopletagFeedForNotice'), $ptag);
+    }
+
     function pingReply($oprofile)
     {
         if ($this->user) {
@@ -222,5 +238,12 @@ class OStatusQueueHandler extends QueueHandler
         return $feed;
     }
 
-}
+    function peopletagFeedForNotice($ptag)
+    {
+        $atom = new AtomListNoticeFeed($ptag);
+        $atom->addEntryFromNotice($this->notice);
+        $feed = $atom->getString();
 
+        return $feed;
+    }
+}