From d2ef0cf233e7e3f4567aff6ff7c94e666da5ee95 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Wed, 29 Sep 2010 19:23:46 +0200 Subject: [PATCH] add hooks to the feedlist widget to give fine-grained control over feed links --- EVENTS.txt | 16 ++++++++++++ lib/feedlist.php | 66 +++++++++++++++++++++++++++--------------------- 2 files changed, 53 insertions(+), 29 deletions(-) diff --git a/EVENTS.txt b/EVENTS.txt index fd2bdb9d56..cad93a7121 100644 --- a/EVENTS.txt +++ b/EVENTS.txt @@ -1086,3 +1086,19 @@ StartDeleteOwnNotice: when a user starts to delete their own notice EndDeleteOwnNotice: when a user has deleted their own notice - $user: the user doing the delete - $notice: the notice being deleted + +StartShowFeedLinkList: before showing the feed list in the sidebar +- $action: action being executed +- $feeds: list of feeds to show + +EndShowFeedLinkList: after showing the feed list in the sidebar +- $action: action being executed +- $feeds: list of feeds shown + +StartShowFeedLink: before showing an individual feed item +- $action: action being executed +- $feed: feed to show + +EndShowFeedLink: after showing an individual feed +- $action: action being executed +- $feed: feed to show diff --git a/lib/feedlist.php b/lib/feedlist.php index 7493e3575e..4aacf0b3d8 100644 --- a/lib/feedlist.php +++ b/lib/feedlist.php @@ -59,42 +59,50 @@ class FeedList extends Widget function show($feeds) { - $this->out->elementStart('div', array('id' => 'export_data', - 'class' => 'section')); - $this->out->element('h2', null, _('Feeds')); - $this->out->elementStart('ul', array('class' => 'xoxo')); + if (Event::handle('StartShowFeedLinkList', array($this->action, &$feeds))) { + if (!empty($feeds)) { + $this->out->elementStart('div', array('id' => 'export_data', + 'class' => 'section')); + $this->out->element('h2', null, _('Feeds')); + $this->out->elementStart('ul', array('class' => 'xoxo')); - foreach ($feeds as $feed) { - $this->feedItem($feed); + foreach ($feeds as $feed) { + $this->feedItem($feed); + } + + $this->out->elementEnd('ul'); + $this->out->elementEnd('div'); + } + Event::handle('EndShowFeedLinkList', array($this->action, &$feeds)); } - - $this->out->elementEnd('ul'); - $this->out->elementEnd('div'); } function feedItem($feed) { - $classname = null; + if (Event::handle('StartShowFeedLink', array($this->action, &$feed))) { + $classname = null; - switch ($feed->type) { - case Feed::RSS1: - case Feed::RSS2: - $classname = 'rss'; - break; - case Feed::ATOM: - $classname = 'atom'; - break; - case Feed::FOAF: - $classname = 'foaf'; - break; + switch ($feed->type) { + case Feed::RSS1: + case Feed::RSS2: + $classname = 'rss'; + break; + case Feed::ATOM: + $classname = 'atom'; + break; + case Feed::FOAF: + $classname = 'foaf'; + break; + } + + $this->out->elementStart('li'); + $this->out->element('a', array('href' => $feed->url, + 'class' => $classname, + 'type' => $feed->mimeType(), + 'title' => $feed->title), + $feed->typeName()); + $this->out->elementEnd('li'); + Event::handle('EndShowFeedLink', array($this->action, $feed)); } - - $this->out->elementStart('li'); - $this->out->element('a', array('href' => $feed->url, - 'class' => $classname, - 'type' => $feed->mimeType(), - 'title' => $feed->title), - $feed->typeName()); - $this->out->elementEnd('li'); } }