]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Queue notices for rssCloud
authorZach Copley <zach@status.net>
Wed, 4 Nov 2009 01:53:17 +0000 (17:53 -0800)
committerZach Copley <zach@status.net>
Wed, 6 Jan 2010 06:59:42 +0000 (22:59 -0800)
plugins/RSSCloud/RSSCloudPlugin.php

index a86c153f14ff3d4ed62472a1eae81560459b94d6..816739889d105cba82d7ebb580618b3538aac5bd 100644 (file)
@@ -130,21 +130,52 @@ class RSSCloudPlugin extends Plugin
         }
     }
 
-    function onEndNoticeSave($notice){
-
-        common_debug("RSSCloudPlugin oneEndNoticeSave()");
-
-        $user = User::staticGet('id', $notice->profile_id);
-        $feed  = common_local_url('api', array('apiaction' => 'statuses',
-                                              'method'    => 'user_timeline',
-                                              'argument'  => $user->nickname . '.rss'));
-
-        // XXX: Dave's hub for testing
-        // $endpoint = 'http://rpc.rsscloud.org:5337/rsscloud/ping';
+    /**
+     * Add an RSSCloud queue item for each notice
+     *
+     * @param Notice $notice      the notice
+     * @param array  &$transports the list of transports (queues)
+     *
+     * @return boolean hook return
+     */
+    function onStartEnqueueNotice($notice, &$transports)
+    {
+        array_push($transports, 'rsscloud');
+        return true;
+    }
 
-        // $notifier = new RSSCloudNotifier();
-        // $notifier->postUpdate($endpoint, $feed);
+    /**
+     * broadcast the message when not using queuehandler
+     *
+     * @param Notice &$notice the notice
+     * @param array  $queue   destination queue
+     *
+     * @return boolean hook return
+     */
+    function onUnqueueHandleNotice(&$notice, $queue)
+    {
+        if (($queue == 'rsscloud') && ($this->_isLocal($notice))) {
+            
+            // broadcast the notice here
+            common_debug('broadcasting rssCloud bound notice ' . $notice->id);
+            
+            return false;
+        }
+        return true;
     }
 
+    /**
+     * Determine whether the notice was locally created
+     *
+     * @param Notice $notice
+     *
+     * @return boolean locality
+     */
+    function _isLocal($notice)
+    {
+        return ($notice->is_local == Notice::LOCAL_PUBLIC ||
+                $notice->is_local == Notice::LOCAL_NONPUBLIC);
+    }
+    
 }