]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-includes/feed-atom-comments.php
Wordpress 3.7
[autoinstalls/wordpress.git] / wp-includes / feed-atom-comments.php
index ee9a73b401fd6e6cfa9754fc1efa599803210195..a7777f198a9a226b752311bfffca480bced0f663 100644 (file)
@@ -1,42 +1,58 @@
 <?php
 <?php
-header('Content-Type: application/atom+xml; charset=' . get_option('blog_charset'), true);
+/**
+ * Atom Feed Template for displaying Atom Comments feed.
+ *
+ * @package WordPress
+ */
+
+header('Content-Type: ' . feed_content_type('atom') . '; charset=' . get_option('blog_charset'), true);
 echo '<?xml version="1.0" encoding="' . get_option('blog_charset') . '" ?' . '>';
 ?>
 <feed
        xmlns="http://www.w3.org/2005/Atom"
 echo '<?xml version="1.0" encoding="' . get_option('blog_charset') . '" ?' . '>';
 ?>
 <feed
        xmlns="http://www.w3.org/2005/Atom"
-       xml:lang="<?php echo get_option('rss_language'); ?>"
-       <?php do_action('atom_ns'); ?>
+       xml:lang="<?php bloginfo_rss( 'language' ); ?>"
+       xmlns:thr="http://purl.org/syndication/thread/1.0"
+       <?php do_action('atom_ns'); do_action('atom_comments_ns'); ?>
 >
        <title type="text"><?php
                if ( is_singular() )
 >
        <title type="text"><?php
                if ( is_singular() )
-                       printf(__('Comments on: %s'), get_the_title_rss());
+                       printf( ent2ncr( __( 'Comments on %s' ) ), get_the_title_rss() );
                elseif ( is_search() )
                elseif ( is_search() )
-                       printf(__('Comments for %s searching on %s'), get_bloginfo_rss( 'name' ), attribute_escape($wp_query->query_vars['s']));
+                       printf( ent2ncr( __( 'Comments for %1$s searching on %2$s' ) ), get_bloginfo_rss( 'name' ), get_search_query() );
                else
                else
-                       printf(__('Comments for %s'), get_bloginfo_rss( 'name' ) . get_wp_title_rss());
+                       printf( ent2ncr( __( 'Comments for %s' ) ), get_bloginfo_rss( 'name' ) . get_wp_title_rss() );
        ?></title>
        <subtitle type="text"><?php bloginfo_rss('description'); ?></subtitle>
 
        ?></title>
        <subtitle type="text"><?php bloginfo_rss('description'); ?></subtitle>
 
-       <updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastcommentmodified('GMT')); ?></updated>
-       <generator uri="http://wordpress.org/" version="<?php bloginfo('version'); ?>">WordPress</generator>
+       <updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastcommentmodified('GMT'), false); ?></updated>
 
 
-       <link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php bloginfo_rss('home'); ?>" />
+<?php if ( is_singular() ) { ?>
+       <link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php comments_link_feed(); ?>" />
+       <link rel="self" type="application/atom+xml" href="<?php echo esc_url( get_post_comments_feed_link('', 'atom') ); ?>" />
+       <id><?php echo esc_url( get_post_comments_feed_link('', 'atom') ); ?></id>
+<?php } elseif(is_search()) { ?>
+       <link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php echo home_url() . '?s=' . get_search_query(); ?>" />
+       <link rel="self" type="application/atom+xml" href="<?php echo get_search_comments_feed_link('', 'atom'); ?>" />
+       <id><?php echo get_search_comments_feed_link('', 'atom'); ?></id>
+<?php } else { ?>
+       <link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php bloginfo_rss('url'); ?>" />
        <link rel="self" type="application/atom+xml" href="<?php bloginfo_rss('comments_atom_url'); ?>" />
        <id><?php bloginfo_rss('comments_atom_url'); ?></id>
        <link rel="self" type="application/atom+xml" href="<?php bloginfo_rss('comments_atom_url'); ?>" />
        <id><?php bloginfo_rss('comments_atom_url'); ?></id>
-
+<?php } ?>
+<?php do_action('comments_atom_head'); ?>
 <?php
 if ( have_comments() ) : while ( have_comments() ) : the_comment();
 <?php
 if ( have_comments() ) : while ( have_comments() ) : the_comment();
-       $comment_post = get_post($comment->comment_post_ID);
-       get_post_custom($comment_post->ID);
+       $comment_post = $GLOBALS['post'] = get_post( $comment->comment_post_ID );
 ?>
        <entry>
                <title><?php
                        if ( !is_singular() ) {
                                $title = get_the_title($comment_post->ID);
 ?>
        <entry>
                <title><?php
                        if ( !is_singular() ) {
                                $title = get_the_title($comment_post->ID);
-                               $title = apply_filters('the_title_rss', $title);
-                               printf(__('Comment on %1$s by %2$s'), $title, get_comment_author_rss());
+                               /** This filter is documented in wp-includes/feed.php */
+                               $title = apply_filters( 'the_title_rss', $title );
+                               printf(ent2ncr(__('Comment on %1$s by %2$s')), $title, get_comment_author_rss());
                        } else {
                        } else {
-                               printf(__('By: %s'), get_comment_author_rss());
+                               printf(ent2ncr(__('By: %s')), get_comment_author_rss());
                        }
                ?></title>
                <link rel="alternate" href="<?php comment_link(); ?>" type="<?php bloginfo_rss('html_type'); ?>" />
                        }
                ?></title>
                <link rel="alternate" href="<?php comment_link(); ?>" type="<?php bloginfo_rss('html_type'); ?>" />
@@ -47,14 +63,23 @@ if ( have_comments() ) : while ( have_comments() ) : the_comment();
 
                </author>
 
 
                </author>
 
-               <id><?php comment_link(); ?></id>
-               <updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_comment_time('Y-m-d H:i:s', true), false); ?></updated>
-               <published><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_comment_time('Y-m-d H:i:s', true), false); ?></published>
-<?php if (!empty($comment_post->post_password) && $_COOKIE['wp-postpass'] != $comment_post->post_password) : ?>
+               <id><?php comment_guid(); ?></id>
+               <updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_comment_time('Y-m-d H:i:s', true, false), false); ?></updated>
+               <published><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_comment_time('Y-m-d H:i:s', true, false), false); ?></published>
+<?php if ( post_password_required($comment_post) ) : ?>
                <content type="html" xml:base="<?php comment_link(); ?>"><![CDATA[<?php echo get_the_password_form(); ?>]]></content>
 <?php else : // post pass ?>
                <content type="html" xml:base="<?php comment_link(); ?>"><![CDATA[<?php comment_text(); ?>]]></content>
 <?php endif; // post pass
                <content type="html" xml:base="<?php comment_link(); ?>"><![CDATA[<?php echo get_the_password_form(); ?>]]></content>
 <?php else : // post pass ?>
                <content type="html" xml:base="<?php comment_link(); ?>"><![CDATA[<?php comment_text(); ?>]]></content>
 <?php endif; // post pass
+       // Return comment threading information (http://www.ietf.org/rfc/rfc4685.txt)
+       if ( $comment->comment_parent == 0 ) : // This comment is top level ?>
+               <thr:in-reply-to ref="<?php the_guid(); ?>" href="<?php the_permalink_rss() ?>" type="<?php bloginfo_rss('html_type'); ?>" />
+<?php else : // This comment is in reply to another comment
+       $parent_comment = get_comment($comment->comment_parent);
+       // The rel attribute below and the id tag above should be GUIDs, but WP doesn't create them for comments (unlike posts). Either way, it's more important that they both use the same system
+?>
+               <thr:in-reply-to ref="<?php comment_guid($parent_comment) ?>" href="<?php echo get_comment_link($parent_comment) ?>" type="<?php bloginfo_rss('html_type'); ?>" />
+<?php endif;
        do_action('comment_atom_entry', $comment->comment_ID, $comment_post->ID);
 ?>
        </entry>
        do_action('comment_atom_entry', $comment->comment_ID, $comment_post->ID);
 ?>
        </entry>