From aa9f81193e9f623dec136c6c5b7ddd6ebb948ab0 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Tue, 3 Nov 2009 17:53:17 -0800 Subject: [PATCH] Queue notices for rssCloud --- plugins/RSSCloud/RSSCloudPlugin.php | 59 ++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 14 deletions(-) diff --git a/plugins/RSSCloud/RSSCloudPlugin.php b/plugins/RSSCloud/RSSCloudPlugin.php index a86c153f14..816739889d 100644 --- a/plugins/RSSCloud/RSSCloudPlugin.php +++ b/plugins/RSSCloud/RSSCloudPlugin.php @@ -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'; - - // $notifier = new RSSCloudNotifier(); - // $notifier->postUpdate($endpoint, $feed); + /** + * 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; } + /** + * 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); + } + }