X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/3f5685912e89eb3b0534acd85aa0946b1ca2bbe3..61343b82c4f0da4c68e4c6373daafff4a81efdd1:/wp-includes/feed.php diff --git a/wp-includes/feed.php b/wp-includes/feed.php index ebd392b1..e6b9ae0e 100644 --- a/wp-includes/feed.php +++ b/wp-includes/feed.php @@ -63,7 +63,8 @@ function bloginfo_rss($show = '') { * @return string Default feed, or for example 'rss2', 'atom', etc. */ function get_default_feed() { - return apply_filters('default_feed', 'rss2'); + $default_feed = apply_filters('default_feed', 'rss2'); + return 'rss' == $default_feed ? 'rss2' : $default_feed; } /** @@ -139,6 +140,7 @@ function the_title_rss() { * @see get_the_content() * * @param string $feed_type The type of feed. rss2 | atom | rss | rdf + * @return string The filtered content. */ function get_the_content_feed($feed_type = null) { if ( !$feed_type ) @@ -161,7 +163,7 @@ function get_the_content_feed($feed_type = null) { * @param string $feed_type The type of feed. rss2 | atom | rss | rdf */ function the_content_feed($feed_type = null) { - echo get_the_content_feed(); + echo get_the_content_feed($feed_type); } /** @@ -186,7 +188,17 @@ function the_excerpt_rss() { * @uses apply_filters() Call 'the_permalink_rss' on the post permalink */ function the_permalink_rss() { - echo apply_filters('the_permalink_rss', get_permalink()); + echo esc_url( apply_filters('the_permalink_rss', get_permalink() )); +} + +/** + * Outputs the link to the comments for the current post in an xml safe way + * + * @since 3.0.0 + * @return none + */ +function comments_link_feed() { + echo esc_url( apply_filters( 'comments_link_feed', get_comments_link() ) ); } /** @@ -194,12 +206,12 @@ function the_permalink_rss() { * * @package WordPress * @subpackage Feed - * @since unknown + * @since 2.5.0 * * @param int|object $comment_id Optional comment object or id. Defaults to global comment object. */ function comment_guid($comment_id = null) { - echo get_comment_guid($comment_id); + echo esc_url( get_comment_guid($comment_id) ); } /** @@ -207,7 +219,7 @@ function comment_guid($comment_id = null) { * * @package WordPress * @subpackage Feed - * @since unknown + * @since 2.5.0 * * @param int|object $comment_id Optional comment object or id. Defaults to global comment object. * @return bool|string false on failure or guid for comment on success. @@ -227,7 +239,7 @@ function get_comment_guid($comment_id = null) { * @since 1.5.0 */ function comment_link() { - echo esc_url( get_comment_link() ); + echo esc_url( apply_filters( 'comment_link', get_comment_link() ) ); } /** @@ -379,7 +391,7 @@ function rss_enclosure() { foreach ( (array) $val as $enc ) { $enclosure = explode("\n", $enc); - //only get the the first element eg, audio/mpeg from 'audio/mpeg mpga mp2 mp3' + // only get the first element, e.g. audio/mpeg from 'audio/mpeg mpga mp2 mp3' $t = preg_split('/[ \t]/', trim($enclosure[2]) ); $type = $t[0]; @@ -413,7 +425,7 @@ function atom_enclosure() { foreach ( (array) get_post_custom() as $key => $val ) { if ($key == 'enclosure') { foreach ( (array) $val as $enc ) { - $enclosure = split("\n", $enc); + $enclosure = explode("\n", $enc); echo apply_filters('atom_enclosure', '' . "\n"); } } @@ -475,14 +487,8 @@ function prep_atom_text_construct($data) { * @since 2.5 */ function self_link() { - $host = @parse_url(get_option('home')); - $host = $host['host']; - echo esc_url( - 'http' - . ( (isset($_SERVER['https']) && $_SERVER['https'] == 'on') ? 's' : '' ) . '://' - . $host - . stripslashes($_SERVER['REQUEST_URI']) - ); + $host = @parse_url(home_url()); + echo esc_url( apply_filters( 'self_link', set_url_scheme( 'http://' . $host['host'] . wp_unslash( $_SERVER['REQUEST_URI'] ) ) ) ); } /** @@ -514,22 +520,33 @@ function feed_content_type( $type = '' ) { * * @since 2.8 * - * @param string $url URL to retrieve feed + * @param mixed $url URL of feed to retrieve. If an array of URLs, the feeds are merged + * using SimplePie's multifeed feature. + * See also {@link ​http://simplepie.org/wiki/faq/typical_multifeed_gotchas} + * * @return WP_Error|SimplePie WP_Error object on failure or SimplePie object on success */ -function fetch_feed($url) { - require_once (ABSPATH . WPINC . '/class-feed.php'); +function fetch_feed( $url ) { + require_once ( ABSPATH . WPINC . '/class-feed.php' ); $feed = new SimplePie(); - $feed->set_feed_url($url); - $feed->set_cache_class('WP_Feed_Cache'); - $feed->set_file_class('WP_SimplePie_File'); - $feed->set_cache_duration(apply_filters('wp_feed_cache_transient_lifetime', 43200)); + + $feed->set_sanitize_class( 'WP_SimplePie_Sanitize_KSES' ); + // We must manually overwrite $feed->sanitize because SimplePie's + // constructor sets it before we have a chance to set the sanitization class + $feed->sanitize = new WP_SimplePie_Sanitize_KSES(); + + $feed->set_cache_class( 'WP_Feed_Cache' ); + $feed->set_file_class( 'WP_SimplePie_File' ); + + $feed->set_feed_url( $url ); + $feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $url ) ); + do_action_ref_array( 'wp_feed_options', array( &$feed, $url ) ); $feed->init(); $feed->handle_content_type(); if ( $feed->error() ) - return new WP_Error('simplepie-error', $feed->error()); + return new WP_Error( 'simplepie-error', $feed->error() ); return $feed; }