# HG changeset patch # User Dan # Date 1217335699 21600 # Node ID 421242ebbece63db19ffd9c93fb10350cec43c72 # Parent f0ddbf48c978c33f9fad578a63c4aaa4049f50e8 Added backend RSS2 support, as long as Feed Me is there somewhere diff -r f0ddbf48c978 -r 421242ebbece plugins/nuggie/planet.php --- a/plugins/nuggie/planet.php Thu Jul 17 00:37:09 2008 -0400 +++ b/plugins/nuggie/planet.php Tue Jul 29 06:48:19 2008 -0600 @@ -108,16 +108,45 @@ $db->free_result($sql); + // RSS check - do we have support for Feed Me and did the user request an RSS feed? + $do_rss = defined('ENANO_FEEDBURNER_INCLUDED') && ( isset($_GET['feed']) && $_GET['feed'] === 'rss2' ); + $query_limit = $do_rss ? 50 : 10; + if ( $do_rss ) + { + $offset = 0; + } + // pass 2: production run $columns = 'p.post_id, p.post_title, p.post_title_clean, p.post_author, p.post_timestamp, p.post_text, b.blog_name, b.blog_subtitle, b.blog_type, b.allowed_users, u.username, u.user_level, COUNT(c.comment_id) AS num_comments, \'' . $db->escape($planet_id) . '\' AS referring_planet'; $sql = str_replace('', $columns, $sql_base); - $sql = str_replace('', "LIMIT $offset, 10", $sql); + $sql = str_replace('', "LIMIT $offset, $query_limit", $sql); // yea. that was one query. $q = $db->sql_query($sql); if ( !$q ) $db->_die(); + // RSS feed? + if ( $do_rss ) + { + header('Content-type: text/xml; charset=utf-8'); + global $aggressive_optimize_html; + $aggressive_optimize_html = false; + $rss = new RSS( + getConfig('site_name') . ': ' . $planet_data['planet_name'], + $planet_data['planet_subtitle'], + makeUrlComplete('Planet', $planet_id) + ); + while ( $row = $db->fetchrow($q) ) + { + $permalink = makeUrlNS('Blog', sanitize_page_id($row['username']) . date('/Y/n/j/', intval($row['post_timestamp'])) . $row['post_title_clean'], false, true); + $post = RenderMan::render($row['post_text']); + $rss->add_item($row['post_title'], $permalink, $post, intval($row['post_timestamp'])); + } + echo $rss->render(); + return; + } + // just let the paginator do the rest $postbit = new NuggiePostbit(); // $q, $tpl_text, $num_results, $result_url, $start = 0, $perpage = 10, $callers = Array(), $header = '', $footer = '' diff -r f0ddbf48c978 -r 421242ebbece plugins/nuggie/postbit.php --- a/plugins/nuggie/postbit.php Thu Jul 17 00:37:09 2008 -0400 +++ b/plugins/nuggie/postbit.php Tue Jul 29 06:48:19 2008 -0600 @@ -174,7 +174,7 @@ } else { - $strings['USER_LINK'] = '' . htmlspecialchars($this->post_author) . ''; + $strings['USER_LINK'] = '' . htmlspecialchars($this->post_author) . ''; } if ( $this->num_comments == 0 ) @@ -348,6 +348,8 @@ return $page->err_page_not_existent(); } + $template->add_header(''); + // using page_id is SAFE. It's checked with a regex above. $q = $db->sql_query("SELECT p.post_id, p.post_title, p.post_title_clean, p.post_author, p.post_timestamp, p.post_text, b.blog_name,\n" . " b.blog_subtitle, b.blog_type, b.allowed_users, u.username, u.user_level, COUNT(c.comment_id) AS num_comments\n" @@ -502,6 +504,30 @@ return false; } + // RSS check - do we have support for Feed Me and did the user request an RSS feed? + $do_rss = defined('ENANO_FEEDBURNER_INCLUDED') && ( isset($_GET['feed']) && $_GET['feed'] === 'rss2' ); + + // RSS feed? + if ( $do_rss ) + { + header('Content-type: text/xml; charset=utf-8'); + global $aggressive_optimize_html; + $aggressive_optimize_html = false; + $rss = new RSS( + $blog_name, + $blog_subtitle, + makeUrlComplete('Blog', $username) + ); + while ( $row = $db->fetchrow($q) ) + { + $permalink = makeUrlNS('Blog', sanitize_page_id($row['username']) . date('/Y/n/j/', intval($row['post_timestamp'])) . $row['post_title_clean'], false, true); + $post = RenderMan::render($row['post_text']); + $rss->add_item($row['post_title'], $permalink, $post, intval($row['post_timestamp'])); + } + echo $rss->render(); + return; + } + $page_name = htmlspecialchars($blog_name) . ' » ' . htmlspecialchars($blog_subtitle); if ( method_exists($template, 'assign_vars') ) {