diff options
Diffstat (limited to 'phpBB/feed.php')
-rw-r--r-- | phpBB/feed.php | 116 |
1 files changed, 7 insertions, 109 deletions
diff --git a/phpBB/feed.php b/phpBB/feed.php index 676dd45c5a..c1940a5eb6 100644 --- a/phpBB/feed.php +++ b/phpBB/feed.php @@ -59,7 +59,8 @@ if ($forum_id || $topic_id || $mode) } // This boards URL -$board_url = generate_board_url(); +$phpbb_feed_helper = $phpbb_container->get('feed.helper'); +$board_url = $phpbb_feed_helper->get_board_url(); // Get correct feed object $feed = phpbb_feed_factory::init($mode, $forum_id, $topic_id); @@ -99,13 +100,13 @@ while ($row = $feed->get_item()) $item_row = array( 'author' => ($feed->get('creator') !== NULL) ? $row[$feed->get('creator')] : '', - 'published' => ($published > 0) ? feed_format_date($published) : '', - 'updated' => ($updated > 0) ? feed_format_date($updated) : '', + 'published' => ($published > 0) ? $phpbb_feed_helper->format_date($published) : '', + 'updated' => ($updated > 0) ? $phpbb_feed_helper->format_date($updated) : '', 'link' => '', 'title' => censor_text($title), 'category' => ($config['feed_item_statistics'] && !empty($row['forum_id'])) ? $board_url . '/viewforum.' . $phpEx . '?f=' . $row['forum_id'] : '', 'category_name' => ($config['feed_item_statistics'] && isset($row['forum_name'])) ? $row['forum_name'] : '', - 'description' => censor_text(feed_generate_content($row[$feed->get('text')], $row[$feed->get('bbcode_uid')], $row[$feed->get('bitfield')], $options)), + 'description' => censor_text($phpbb_feed_helper->generate_content($row[$feed->get('text')], $row[$feed->get('bbcode_uid')], $row[$feed->get('bitfield')], $options)), 'statistics' => '', ); @@ -127,11 +128,11 @@ if (!$feed_updated_time) // FEED_IMAGE is not used (atom) $global_vars = array_merge($global_vars, array( 'FEED_IMAGE' => '', - 'SELF_LINK' => feed_append_sid('/feed.' . $phpEx, $params), + 'SELF_LINK' => $phpbb_feed_helper->append_sid('/feed.' . $phpEx, $params), 'FEED_LINK' => $board_url . '/index.' . $phpEx, 'FEED_TITLE' => $config['sitename'], 'FEED_SUBTITLE' => $config['site_desc'], - 'FEED_UPDATED' => feed_format_date($feed_updated_time), + 'FEED_UPDATED' => $phpbb_feed_helper->format_date($feed_updated_time), 'FEED_LANG' => $user->lang['USER_LANG'], 'FEED_AUTHOR' => $config['sitename'], )); @@ -231,106 +232,3 @@ echo '</feed>'; garbage_collection(); exit_handler(); - -/** -* Run links through append_sid(), prepend generate_board_url() and remove session id -**/ -function feed_append_sid($url, $params) -{ - global $board_url; - - return append_sid($board_url . $url, $params, true, ''); -} - -/** -* Generate ISO 8601 date string (RFC 3339) -**/ -function feed_format_date($time) -{ - static $zone_offset; - static $offset_string; - - if (empty($offset_string)) - { - global $user; - - $zone_offset = $user->create_datetime()->getOffset(); - $offset_string = phpbb_format_timezone_offset($zone_offset); - } - - return gmdate("Y-m-d\TH:i:s", $time + $zone_offset) . $offset_string; -} - -/** -* Generate text content -**/ -function feed_generate_content($content, $uid, $bitfield, $options) -{ - global $user, $config, $phpbb_root_path, $phpEx, $board_url; - - if (empty($content)) - { - return ''; - } - - // Prepare some bbcodes for better parsing - $content = preg_replace("#\[quote(=".*?")?:$uid\]\s*(.*?)\s*\[/quote:$uid\]#si", "[quote$1:$uid]<br />$2<br />[/quote:$uid]", $content); - - $content = generate_text_for_display($content, $uid, $bitfield, $options); - - // Add newlines - $content = str_replace('<br />', '<br />' . "\n", $content); - - // Convert smiley Relative paths to Absolute path, Windows style - $content = str_replace($phpbb_root_path . $config['smilies_path'], $board_url . '/' . $config['smilies_path'], $content); - - // Remove "Select all" link and mouse events - $content = str_replace('<a href="#" onclick="selectCode(this); return false;">' . $user->lang['SELECT_ALL_CODE'] . '</a>', '', $content); - $content = preg_replace('#(onkeypress|onclick)="(.*?)"#si', '', $content); - - // Firefox does not support CSS for feeds, though - - // Remove font sizes -// $content = preg_replace('#<span style="font-size: [0-9]+%; line-height: [0-9]+%;">([^>]+)</span>#iU', '\1', $content); - - // Make text strong :P -// $content = preg_replace('#<span style="font-weight: bold?">(.*?)</span>#iU', '<strong>\1</strong>', $content); - - // Italic -// $content = preg_replace('#<span style="font-style: italic?">([^<]+)</span>#iU', '<em>\1</em>', $content); - - // Underline -// $content = preg_replace('#<span style="text-decoration: underline?">([^<]+)</span>#iU', '<u>\1</u>', $content); - - // Remove embed Windows Media Streams - $content = preg_replace( '#<\!--\[if \!IE\]>-->([^[]+)<\!--<!\[endif\]-->#si', '', $content); - - // Do not use < and >, because we want to retain code contained in [code][/code] - - // Remove embed and objects - $content = preg_replace( '#<(object|embed)(.*?) (value|src)=(.*?) ([^[]+)(object|embed)>#si',' <a href=$4 target="_blank"><strong>$1</strong></a> ',$content); - - // Remove some specials html tag, because somewhere there are a mod to allow html tags ;) - $content = preg_replace( '#<(script|iframe)([^[]+)\1>#siU', ' <strong>$1</strong> ', $content); - - // Remove Comments from inline attachments [ia] - $content = preg_replace('#<div class="(inline-attachment|attachtitle)">(.*?)<!-- ia(.*?) -->(.*?)<!-- ia(.*?) -->(.*?)</div>#si','$4',$content); - - // Replace some entities with their unicode counterpart - $entities = array( - ' ' => "\xC2\xA0", - '•' => "\xE2\x80\xA2", - '·' => "\xC2\xB7", - '©' => "\xC2\xA9", - ); - - $content = str_replace(array_keys($entities), array_values($entities), $content); - - // Remove CDATA blocks. ;) - $content = preg_replace('#\<\!\[CDATA\[(.*?)\]\]\>#s', '', $content); - - // Other control characters - $content = preg_replace('#(?:[\x00-\x1F\x7F]+|(?:\xC2[\x80-\x9F])+)#', '', $content); - - return $content; -} |