From 4e631d671fd7cbb5ca8d5e32a45662ae3e909ce3 Mon Sep 17 00:00:00 2001 From: garvinhicking Date: Sun, 1 Apr 2007 11:55:46 +0000 Subject: [PATCH] Make plugins be able to emit custom RSS feeds, see http://board.s9y.org/viewtopic.php?p=53320#53320 --- docs/NEWS | 6 +++++- include/admin/category.inc.php | 13 +++++++++++-- rss.php | 25 +++++++++++++------------ 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/docs/NEWS b/docs/NEWS index 32539ef..f8e29d0 100644 --- a/docs/NEWS +++ b/docs/NEWS @@ -3,6 +3,10 @@ Version 1.2 () ------------------------------------------------------------------------ + * Make plugins be able to emit their own RSS-Feeds using + $eventData['template_file'] on the 'frontend_rss' event hook + (garvinhicking) + * Fix missing %username% permalink pattern in single entry view. Patch by cress_cc @@ -11,7 +15,7 @@ Version 1.2 () * Show current captcha look in the plugin configuration menu (garvinhicking) - + * Add new category property to hide blog postings made into sub- categories from the frontend view, per category. Thanks to netmorix from the forums! (garvinhicking) diff --git a/include/admin/category.inc.php b/include/admin/category.inc.php index 1cb81ad..e9c25a5 100644 --- a/include/admin/category.inc.php +++ b/include/admin/category.inc.php @@ -50,12 +50,12 @@ if (isset($_POST['SAVE']) && serendipity_checkFormToken()) { $r = serendipity_db_query("SELECT categoryid FROM {$serendipity['dbPrefix']}category c WHERE c.categoryid = ". (int)$parentid ." AND c.category_left BETWEEN " . implode(' AND ', serendipity_fetchCategoryRange((int)$serendipity['GET']['cid']))); - if ( is_array($r) ) { + if (is_array($r)) { $r = serendipity_db_query("SELECT category_name FROM {$serendipity['dbPrefix']}category WHERE categoryid = ". (int)$parentid); echo sprintf(ALREADY_SUBCATEGORY, htmlspecialchars($r[0]['category_name']), htmlspecialchars($name)); } else { - serendipity_updateCategory($serendipity['GET']['cid'], $name, $desc, $authorid, $icon, $parentid); + serendipity_updateCategory($serendipity['GET']['cid'], $name, $desc, $authorid, $icon, $parentid, $serendipity['POST']['cat']['sort_order'], $serendipity['POST']['cat']['hide_sub']); serendipity_ACLGrant($serendipity['GET']['cid'], 'category', 'read', $serendipity['POST']['cat']['read_authors']); serendipity_ACLGrant($serendipity['GET']['cid'], 'category', 'write', $serendipity['POST']['cat']['write_authors']); echo '
'. CATEGORY_SAVED .'
'; @@ -234,6 +234,15 @@ if ($serendipity['GET']['adminAction'] == 'doDelete' && serendipity_checkFormTok + + +
+ + id="hide_sub_no" /> + id="hide_sub_yes" /> + + +
diff --git a/rss.php b/rss.php index 973fd98..83d5db1 100644 --- a/rss.php +++ b/rss.php @@ -30,7 +30,7 @@ if (!isset($_GET['type'])) { } if (!empty($_SERVER['HTTP_USER_AGENT']) && stristr($_SERVER['HTTP_USER_AGENT'], 'feedburner')) { - $_GET['nocache'] = true; + $_GET['nocache'] = true; } $serendipity['view'] = 'feed'; @@ -164,10 +164,10 @@ if (is_array($plugins)) { } } - if ($_GET['type'] == 'content' && - !isset($_GET['category']) && - !isset($serendipity['GET']['tag']) && - $plugin->get_config('show_feedburner') === 'force' && + if ($_GET['type'] == 'content' && + !isset($_GET['category']) && + !isset($serendipity['GET']['tag']) && + $plugin->get_config('show_feedburner') === 'force' && !preg_match('@FeedBurn@i', $_SERVER['HTTP_USER_AGENT']) && !(serendipity_userLoggedIn() && isset($_GET['forceLocal'])) ) { @@ -181,9 +181,16 @@ if (is_array($plugins)) { } } +$file_version = preg_replace('@[^0-9a-z\.-_]@i', '', $version); +$metadata['template_file'] = serendipity_getTemplateFile('feed_' . $file_version . '.tpl', 'serendipityPath'); + serendipity_smarty_init(); serendipity_plugin_api::hook_event('frontend_rss', $metadata); +if (!$metadata['template_file'] || $metadata['template_file'] == 'feed_' . $file_version . '.tpl') { + die("Invalid RSS version specified or RSS-template file not found\n"); +} + $self_url = 'http://' . $_SERVER['HTTP_HOST'] . htmlspecialchars($_SERVER['REQUEST_URI']); if (!is_array($entries)) { $entries = array(); @@ -195,12 +202,6 @@ if ($entries[0]['last_modified']) { $gm_modified = gmdate('Y-m-d\TH:i:s\Z', serendipity_serverOffsetHour()); } -$file_version = preg_replace('@[^0-9a-z\.-_]@i', '', $version); -$template_file = serendipity_getTemplateFile('feed_' . $file_version . '.tpl', 'serendipityPath'); -if (!$template_file) { - die("Invalid RSS version specified\n"); -} - serendipity_printEntries_rss($entries, $version, $comments, $metadata['fullFeed'], $metadata['showMail']); $namespace_hook = 'frontend_display:unknown:namespace'; @@ -252,6 +253,6 @@ $serendipity['smarty']->assign( 'self_url' => $self_url, ) ); -$serendipity['smarty']->display($template_file); +$serendipity['smarty']->display($metadata['template_file']); /* vim: set sts=4 ts=4 expandtab : */ -- 2.39.5