From dbccebb14bbc46ea0e53e5bd0e3681c77692a40a Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Wed, 20 Jan 2010 15:43:24 -0500 Subject: update friends, not user, timeline for recipients of notice in PuSH plugin --- plugins/PubSubHubBub/PubSubHubBubPlugin.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'plugins') diff --git a/plugins/PubSubHubBub/PubSubHubBubPlugin.php b/plugins/PubSubHubBub/PubSubHubBubPlugin.php index 367b35403..d3ff3882f 100644 --- a/plugins/PubSubHubBub/PubSubHubBubPlugin.php +++ b/plugins/PubSubHubBub/PubSubHubBubPlugin.php @@ -103,8 +103,8 @@ class PubSubHubBubPlugin extends Plugin if (empty($user)) { continue; } - $feeds[]=common_local_url('ApiTimelineUser',array('id' => $user->nickname, 'format'=>'rss')); - $feeds[]=common_local_url('ApiTimelineUser',array('id' => $user->nickname, 'format'=>'atom')); + $feeds[]=common_local_url('ApiTimelineFriends', array('id' => $user->nickname, 'format'=>'rss')); + $feeds[]=common_local_url('ApiTimelineFriends', array('id' => $user->nickname, 'format'=>'atom')); } //feed of user replied to -- cgit v1.2.3-54-g00ecf From 365b0b1e14a34ed433ac169d5cfb6066f11919ba Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Wed, 20 Jan 2010 16:13:52 -0500 Subject: use standard plugin configuration for PubSubHubBub --- plugins/PubSubHubBub/PubSubHubBubPlugin.php | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'plugins') diff --git a/plugins/PubSubHubBub/PubSubHubBubPlugin.php b/plugins/PubSubHubBub/PubSubHubBubPlugin.php index d3ff3882f..f13408629 100644 --- a/plugins/PubSubHubBub/PubSubHubBubPlugin.php +++ b/plugins/PubSubHubBub/PubSubHubBubPlugin.php @@ -37,20 +37,13 @@ require_once(INSTALLDIR.'/plugins/PubSubHubBub/publisher.php'); class PubSubHubBubPlugin extends Plugin { - private $hub; + public $hub = DEFAULT_HUB; function __construct() { parent::__construct(); } - function onInitializePlugin(){ - $this->hub = common_config('PubSubHubBub', 'hub'); - if(empty($this->hub)){ - $this->hub = DEFAULT_HUB; - } - } - function onStartApiAtom($action){ $action->element('link',array('rel'=>'hub','href'=>$this->hub),null); } -- cgit v1.2.3-54-g00ecf From 1d37a6c428ac2d89b0fa01f73a9e6e05a412b605 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Wed, 20 Jan 2010 16:16:22 -0500 Subject: correctly get replies for a notice in PuSH plugin --- plugins/PubSubHubBub/PubSubHubBubPlugin.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'plugins') diff --git a/plugins/PubSubHubBub/PubSubHubBubPlugin.php b/plugins/PubSubHubBub/PubSubHubBubPlugin.php index f13408629..96500404b 100644 --- a/plugins/PubSubHubBub/PubSubHubBubPlugin.php +++ b/plugins/PubSubHubBub/PubSubHubBubPlugin.php @@ -100,11 +100,15 @@ class PubSubHubBubPlugin extends Plugin $feeds[]=common_local_url('ApiTimelineFriends', array('id' => $user->nickname, 'format'=>'atom')); } + $replies = $notice->getReplies(); + //feed of user replied to - if($notice->reply_to){ - $user = User::staticGet('id',$notice->reply_to); + foreach ($replies as $recipient) { + $user = User::staticGet('id',$recipient); + if (!empty($user)) { $feeds[]=common_local_url('ApiTimelineMentions',array('id' => $user->nickname,'format'=>'rss')); $feeds[]=common_local_url('ApiTimelineMentions',array('id' => $user->nickname,'format'=>'atom')); + } } foreach(array_unique($feeds) as $feed){ -- cgit v1.2.3-54-g00ecf From 0167ff6d2702f90c46aa311a6a7ca17db222780f Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Wed, 20 Jan 2010 16:29:11 -0500 Subject: whitespace changes to make phpcs happy for PuSH plugin --- plugins/PubSubHubBub/PubSubHubBubPlugin.php | 89 ++++++++++++++++++++--------- 1 file changed, 62 insertions(+), 27 deletions(-) (limited to 'plugins') diff --git a/plugins/PubSubHubBub/PubSubHubBubPlugin.php b/plugins/PubSubHubBub/PubSubHubBubPlugin.php index 96500404b..c4af2c854 100644 --- a/plugins/PubSubHubBub/PubSubHubBubPlugin.php +++ b/plugins/PubSubHubBub/PubSubHubBubPlugin.php @@ -31,9 +31,9 @@ if (!defined('STATUSNET')) { exit(1); } -define('DEFAULT_HUB','http://pubsubhubbub.appspot.com'); +define('DEFAULT_HUB', 'http://pubsubhubbub.appspot.com'); -require_once(INSTALLDIR.'/plugins/PubSubHubBub/publisher.php'); +require_once INSTALLDIR.'/plugins/PubSubHubBub/publisher.php'; class PubSubHubBubPlugin extends Plugin { @@ -44,46 +44,67 @@ class PubSubHubBubPlugin extends Plugin parent::__construct(); } - function onStartApiAtom($action){ - $action->element('link',array('rel'=>'hub','href'=>$this->hub),null); + function onStartApiAtom($action) + { + $action->element('link', array('rel' => 'hub', 'href' => $this->hub), null); } - function onStartApiRss($action){ - $action->element('atom:link',array('rel'=>'hub','href'=>$this->hub),null); + function onStartApiRss($action) + { + $action->element('atom:link', array('rel' => 'hub', + 'href' => $this->hub), + null); } - function onHandleQueuedNotice($notice){ + function onHandleQueuedNotice($notice) + { $publisher = new Publisher($this->hub); $feeds = array(); //public timeline feeds - $feeds[]=common_local_url('ApiTimelinePublic',array('format' => 'rss')); - $feeds[]=common_local_url('ApiTimelinePublic',array('format' => 'atom')); + $feeds[] = common_local_url('ApiTimelinePublic', array('format' => 'rss')); + $feeds[] = common_local_url('ApiTimelinePublic', array('format' => 'atom')); //author's own feeds - $user = User::staticGet('id',$notice->profile_id); - $feeds[]=common_local_url('ApiTimelineUser',array('id' => $user->nickname, 'format'=>'rss')); - $feeds[]=common_local_url('ApiTimelineUser',array('id' => $user->nickname, 'format'=>'atom')); + $user = User::staticGet('id', $notice->profile_id); + + $feeds[] = common_local_url('ApiTimelineUser', + array('id' => $user->nickname, + 'format' => 'rss')); + $feeds[] = common_local_url('ApiTimelineUser', + array('id' => $user->nickname, + 'format' => 'atom')); //tag feeds $tag = new Notice_tag(); + $tag->notice_id = $notice->id; if ($tag->find()) { while ($tag->fetch()) { - $feeds[]=common_local_url('ApiTimelineTag',array('tag'=>$tag->tag, 'format'=>'rss')); - $feeds[]=common_local_url('ApiTimelineTag',array('tag'=>$tag->tag, 'format'=>'atom')); + $feeds[] = common_local_url('ApiTimelineTag', + array('tag' => $tag->tag, + 'format' => 'rss')); + $feeds[] = common_local_url('ApiTimelineTag', + array('tag' => $tag->tag, + 'format' => 'atom')); } } //group feeds $group_inbox = new Group_inbox(); + $group_inbox->notice_id = $notice->id; if ($group_inbox->find()) { while ($group_inbox->fetch()) { - $group = User_group::staticGet('id',$group_inbox->group_id); - $feeds[]=common_local_url('ApiTimelineGroup',array('id' => $group->nickname,'format'=>'rss')); - $feeds[]=common_local_url('ApiTimelineGroup',array('id' => $group->nickname,'format'=>'atom')); + $group = User_group::staticGet('id', $group_inbox->group_id); + + $feeds[] = common_local_url('ApiTimelineGroup', + array('id' => $group->nickname, + 'format' => 'rss')); + $feeds[] = common_local_url('ApiTimelineGroup', + array('id' => $group->nickname, + 'format' => 'atom')); } } @@ -96,24 +117,34 @@ class PubSubHubBubPlugin extends Plugin if (empty($user)) { continue; } - $feeds[]=common_local_url('ApiTimelineFriends', array('id' => $user->nickname, 'format'=>'rss')); - $feeds[]=common_local_url('ApiTimelineFriends', array('id' => $user->nickname, 'format'=>'atom')); + $feeds[] = common_local_url('ApiTimelineFriends', + array('id' => $user->nickname, + 'format' => 'rss')); + $feeds[] = common_local_url('ApiTimelineFriends', + array('id' => $user->nickname, + 'format' => 'atom')); } $replies = $notice->getReplies(); //feed of user replied to foreach ($replies as $recipient) { - $user = User::staticGet('id',$recipient); + $user = User::staticGet('id', $recipient); if (!empty($user)) { - $feeds[]=common_local_url('ApiTimelineMentions',array('id' => $user->nickname,'format'=>'rss')); - $feeds[]=common_local_url('ApiTimelineMentions',array('id' => $user->nickname,'format'=>'atom')); + $feeds[] = common_local_url('ApiTimelineMentions', + array('id' => $user->nickname, + 'format' => 'rss')); + $feeds[] = common_local_url('ApiTimelineMentions', + array('id' => $user->nickname, + 'format' => 'atom')); } } - foreach(array_unique($feeds) as $feed){ - if(! $publisher->publish_update($feed)){ - common_log_line(LOG_WARNING,$feed.' was not published to hub at '.$this->hub.':'.$publisher->last_response()); + foreach (array_unique($feeds) as $feed) { + if (!$publisher->publish_update($feed)) { + common_log_line(LOG_WARNING, + $feed.' was not published to hub at '. + $this->hub.':'.$publisher->last_response()); } } } @@ -123,9 +154,13 @@ class PubSubHubBubPlugin extends Plugin $versions[] = array('name' => 'PubSubHubBub', 'version' => STATUSNET_VERSION, 'author' => 'Craig Andrews', - 'homepage' => 'http://status.net/wiki/Plugin:PubSubHubBub', + 'homepage' => + 'http://status.net/wiki/Plugin:PubSubHubBub', 'rawdescription' => - _m('The PubSubHubBub plugin pushes RSS/Atom updates to a PubSubHubBub hub.')); + _m('The PubSubHubBub plugin pushes RSS/Atom updates '. + 'to a PubSubHubBub hub.')); return true; } -- cgit v1.2.3-54-g00ecf From 10f21e1f414dfd9a369df8b1c71aa2e099fca9f2 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Wed, 20 Jan 2010 16:37:41 -0500 Subject: add class and function doc comments to PuSH plugin --- plugins/PubSubHubBub/PubSubHubBubPlugin.php | 85 +++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) (limited to 'plugins') diff --git a/plugins/PubSubHubBub/PubSubHubBubPlugin.php b/plugins/PubSubHubBub/PubSubHubBubPlugin.php index c4af2c854..8286cd548 100644 --- a/plugins/PubSubHubBub/PubSubHubBubPlugin.php +++ b/plugins/PubSubHubBub/PubSubHubBubPlugin.php @@ -35,27 +35,99 @@ define('DEFAULT_HUB', 'http://pubsubhubbub.appspot.com'); require_once INSTALLDIR.'/plugins/PubSubHubBub/publisher.php'; +/** + * Plugin to provide publisher side of PubSubHubBub (PuSH) + * relationship. + * + * PuSH is a real-time or near-real-time protocol for Atom + * and RSS feeds. More information here: + * + * http://code.google.com/p/pubsubhubbub/ + * + * To enable, add the following line to your config.php: + * + * addPlugin('PubSubHubBub'); + * + * This will use the Google default hub. If you'd like to use + * another, try: + * + * addPlugin('PubSubHubBub', + * array('hub' => 'http://yourhub.example.net/')); + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews + * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 + * @link http://status.net/ + */ + class PubSubHubBubPlugin extends Plugin { + /** + * URL of the hub to advertise and publish to. + */ + public $hub = DEFAULT_HUB; + /** + * Default constructor. + */ + function __construct() { parent::__construct(); } + /** + * Hooks the StartApiAtom event + * + * Adds the necessary bits to advertise PubSubHubBub + * for the Atom feed. + * + * @param Action $action The API action being shown. + * + * @return boolean hook value + */ + function onStartApiAtom($action) { $action->element('link', array('rel' => 'hub', 'href' => $this->hub), null); + + return true; } + /** + * Hooks the StartApiRss event + * + * Adds the necessary bits to advertise PubSubHubBub + * for the RSS 2.0 feeds. + * + * @param Action $action The API action being shown. + * + * @return boolean hook value + */ + function onStartApiRss($action) { $action->element('atom:link', array('rel' => 'hub', 'href' => $this->hub), null); + return true; } + /** + * Hook for a queued notice. + * + * When a notice has been queued, will ping the + * PuSH hub for each Atom and RSS feed in which + * the notice appears. + * + * @param Notice $notice The notice that's been queued + * + * @return boolean hook value + */ + function onHandleQueuedNotice($notice) { $publisher = new Publisher($this->hub); @@ -147,8 +219,21 @@ class PubSubHubBubPlugin extends Plugin $this->hub.':'.$publisher->last_response()); } } + + return true; } + /** + * Provide version information + * + * Adds this plugin's version data to the global + * version array, for e.g. displaying on the version page. + * + * @param array &$versions array of array of versions + * + * @return boolean hook value + */ + function onPluginVersion(&$versions) { $versions[] = array('name' => 'PubSubHubBub', -- cgit v1.2.3-54-g00ecf