From c0b4cf2f6e6e0953071fbdea189d58bf60c4f862 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Tue, 23 Jun 2009 17:15:53 +0000 Subject: [PATCH] fix feed generation git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9663 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/feed.php | 66 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/phpBB/feed.php b/phpBB/feed.php index 1d4e26aaab..9d9bf145b1 100644 --- a/phpBB/feed.php +++ b/phpBB/feed.php @@ -158,38 +158,40 @@ else exit_handler(); } +$namespace = 'phpbb'; + echo '' . "\n"; -echo '' . "\n"; -echo '' . "\n\n"; +echo '<' . $namespace . ':feed xmlns:' . $namespace . '="http://www.w3.org/2005/Atom" xmlns="http://www.w3.org/1999/xhtml" xml:lang="' . $global_vars['FEED_LANG'] . '">' . "\n"; +echo '<' . $namespace . ':link rel="self" type="application/atom+xml" href="' . $global_vars['SELF_LINK'] . '" />' . "\n\n"; -echo (!empty($global_vars['FEED_TITLE'])) ? '' . $global_vars['FEED_TITLE'] . '' . "\n" : ''; -echo (!empty($global_vars['FEED_SUBTITLE'])) ? '' . $global_vars['FEED_SUBTITLE'] . '' . "\n" : ''; -echo (!empty($global_vars['FEED_LINK'])) ? '' . "\n" : ''; -echo '' . $global_vars['FEED_UPDATED'] . '' . "\n\n"; +echo (!empty($global_vars['FEED_TITLE'])) ? '<' . $namespace . ':title>' . $global_vars['FEED_TITLE'] . '' . "\n" : ''; +echo (!empty($global_vars['FEED_SUBTITLE'])) ? '<' . $namespace . ':subtitle>' . $global_vars['FEED_SUBTITLE'] . '' . "\n" : ''; +echo (!empty($global_vars['FEED_LINK'])) ? '<' . $namespace . ':link href="' . $global_vars['FEED_LINK'] .'" />' . "\n" : ''; +echo '<' . $namespace . ':updated>' . $global_vars['FEED_UPDATED'] . '' . "\n\n"; -echo '' . $global_vars['FEED_AUTHOR'] . '' . "\n"; -echo '' . $global_vars['SELF_LINK'] . '' . "\n"; +echo '<' . $namespace . ':author><' . $namespace . ':name>' . $global_vars['FEED_AUTHOR'] . '' . "\n"; +echo '<' . $namespace . ':id>' . $global_vars['SELF_LINK'] . '' . "\n"; foreach ($item_vars as $row) { - echo '' . "\n"; + echo '<' . $namespace . ':entry>' . "\n"; if (!empty($row['author'])) { - echo '' . $row['author'] . '' . "\n"; + echo '<' . $namespace . ':author><' . $namespace . ':name>' . $row['author'] . '' . "\n"; } - echo '' . $row['pubdate'] . '' . "\n"; - echo '' . $row['link'] . '' . "\n"; - echo '' . "\n"; - echo '' . $row['title'] . '' . "\n\n"; + echo '<' . $namespace . ':updated>' . $row['pubdate'] . '' . "\n"; + echo '<' . $namespace . ':id>' . $row['link'] . '' . "\n"; + echo '<' . $namespace . ':link href="' . $row['link'] . '"/>' . "\n"; + echo '<' . $namespace . ':title type="xhtml">
' . $row['title'] . '
' . "\n\n"; if (!empty($row['category'])) { - echo '' . "\n"; + echo '<' . $namespace . ':category term="' . $row['category_name'] . '" scheme="' . $row['category'] . '" label="' . $row['category_name'] . '"/>' . "\n"; } - echo '' . "\n"; + echo '<' . $namespace . ':content type="xhtml" xml:base="' . $row['link'] . '">' . "\n"; echo '
' . "\n"; echo $row['description']; @@ -198,11 +200,11 @@ foreach ($item_vars as $row) echo '

' . $user->lang['STATISTICS'] . ': ' . $row['statistics'] . '

'; } - echo '
' . "\n" . '
' . "\n"; - echo '
' . "\n"; + echo '
' . "\n" . '' . "\n"; + echo '' . "\n"; } -echo '
'; +echo ''; garbage_collection(); exit_handler(); @@ -217,7 +219,15 @@ function feed_append_sid($url, $params) $link = append_sid($board_url . $url, $params); // Remove added sid - not as easy as it sounds. ;) - return (strpos($link, 'sid=') !== false) ? trim(preg_replace('/(&|&|\?)sid=[a-z0-9]+(&|&)?/', '\1', $link), '?& ') : $link; + $link = (strpos($link, 'sid=') !== false) ? trim(preg_replace('/(&|&|\?)sid=[a-z0-9]+(&|&)?/', '\1', $link), '?& ') : $link; + + // Now the only thing remaining could be an empty & + if (substr($link, -5) === '&') + { + $link = substr($link, 0, -5); + } + + return $link; } /** @@ -237,6 +247,9 @@ function feed_generate_content($content, $uid, $bitfield, $options) $content = generate_text_for_display($content, $uid, $bitfield, $options); + // Add newlines + $content = str_replace('
', '
' . "\n", $content); + // Relative Path to Absolute path, Windows style $content = str_replace('./', $board_url . '/', $content); @@ -409,6 +422,11 @@ class phpbb_feed */ var $cache_time = 300; + /** + * Separator for title elements to separate items (for example forum / topic) + */ + var $separator = '•'; + /** * Constructor. Set standard keys. */ @@ -672,7 +690,7 @@ class phpbb_feed 'SELECT' => 'f.forum_id, f.forum_name, f.forum_desc_options, ' . 't.topic_last_post_time, t.topic_id, t.topic_title, t.topic_time, t.topic_replies, t.topic_views, ' . 'p.post_id, p.post_time, p.post_subject, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, ' . - 'u.username, u.user_id, u.user_email', + 'u.username, u.user_id, u.user_email, u.user_colour', 'FROM' => array( POSTS_TABLE => 'p', TOPICS_TABLE => 't', @@ -748,7 +766,7 @@ class phpbb_feed { global $phpEx, $config; - $item_row['title'] = (!$this->topic_id) ? $row['forum_name'] . ' | ' . $item_row['title'] : $item_row['title']; + $item_row['title'] = (!$this->topic_id) ? $row['forum_name'] . ' ' . $this->separator . ' ' . $item_row['title'] : $item_row['title']; $item_row['link'] = feed_append_sid('/viewtopic.' . $phpEx, "t={$row['topic_id']}&p={$row['post_id']}#p{$row['post_id']}"); if ($config['feed_item_statistics']) @@ -865,7 +883,7 @@ class phpbb_feed_news extends phpbb_feed 'SELECT' => 'f.forum_id, f.forum_password, f.forum_name, f.forum_topics, f.forum_posts, f.parent_id, f.left_id, f.right_id, t.topic_id, t.topic_title, t.topic_poster, t.topic_first_poster_name, t.topic_replies, t.topic_views, t.topic_time, p.post_id, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, - u.username, u.user_id, u.user_email', + u.username, u.user_id, u.user_email, u.user_colour', 'FROM' => array( TOPICS_TABLE => 't', FORUMS_TABLE => 'f', @@ -963,7 +981,7 @@ class phpbb_feed_topics extends phpbb_feed 'SELECT' => 'f.forum_id, f.forum_password, f.forum_name, f.forum_topics, f.forum_posts, f.parent_id, f.left_id, f.right_id, t.topic_id, t.topic_title, t.topic_poster, t.topic_first_poster_name, t.topic_replies, t.topic_views, t.topic_time, p.post_id, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, - u.username, u.user_id, u.user_email', + u.username, u.user_id, u.user_email, u.user_colour', 'FROM' => array( TOPICS_TABLE => 't', FORUMS_TABLE => 'f',