Changeset 3171
- Timestamp:
- 05/18/2011 12:08:18 PM (14 years ago)
- Location:
- branches/plugin/bbp-includes
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/plugin/bbp-includes/bbp-core-hooks.php
r3169 r3171 209 209 210 210 /** FILTERS *******************************************************************/ 211 212 // Feeds 213 add_filter( 'request', 'bbp_request_feed_trap' ); 211 214 212 215 // Links -
branches/plugin/bbp-includes/bbp-general-functions.php
r3151 r3171 1023 1023 } 1024 1024 1025 /** Feeds *********************************************************************/ 1026 1027 /** 1028 * This function is hooked into the WordPress 'request' action and is 1029 * responsible for sniffing out the query vars and serving up RSS2 feeds if 1030 * the stars align and the user has requested a feed of any bbPress type. 1031 * 1032 * @since bbPress (r3171) 1033 * 1034 * @global WP_Query $wp_query 1035 * @global bbPress $bbp 1036 * @param array $query_vars 1037 * @return array 1038 */ 1039 function bbp_request_feed_trap( $query_vars ) { 1040 global $wp_query, $bbp; 1041 1042 // Looking at a feed 1043 if ( isset( $query_vars['feed'] ) ) { 1044 1045 // Forum Feed 1046 if ( isset( $query_vars['post_type'] ) ) { 1047 1048 // What bbPress post type are we looking for feeds on? 1049 switch ( $query_vars['post_type'] ) { 1050 1051 // Forum 1052 case bbp_get_forum_post_type() : 1053 1054 // Single forum 1055 if ( isset( $query_vars[bbp_get_forum_post_type()] ) ) { 1056 1057 // Load up our own query 1058 $wp_query = new WP_Query( array( 1059 'post_type' => bbp_get_forum_post_type(), 1060 'name' => $query_vars[bbp_get_forum_post_type()] 1061 ) ); 1062 1063 // Forum replies 1064 if ( !empty( $_GET['type'] ) && ( bbp_get_reply_post_type() == $_GET['type'] ) ) { 1065 1066 // The query 1067 $the_query = array( 1068 'author' => 0, 1069 'post_type' => bbp_get_reply_post_type(), 1070 'post_parent' => 'any', 1071 'post_status' => join( ',', array( 'publish', $bbp->closed_status_id ) ), 1072 'posts_per_page' => get_option( '_bbp_replies_per_rss_page', 25 ), 1073 'order' => 'DESC', 1074 'meta_query' => array( array( 1075 'key' => '_bbp_forum_id', 1076 'value' => bbp_get_forum_id(), 1077 'compare' => '=' 1078 ) ) 1079 ); 1080 1081 // Output the feed 1082 bbp_display_replies_feed_rss2( $the_query ); 1083 1084 // Forum topics 1085 } else { 1086 1087 // The query 1088 $the_query = array( 1089 'author' => 0, 1090 'post_type' => bbp_get_topic_post_type(), 1091 'post_parent' => bbp_get_forum_id(), 1092 'post_status' => join( ',', array( 'publish', $bbp->closed_status_id ) ), 1093 'posts_per_page' => get_option( '_bbp_topics_per_rss_page', 25 ), 1094 'order' => 'DESC', 1095 'meta_query' => array( array( 1096 'key' => '_bbp_forum_id', 1097 'value' => bbp_get_forum_id(), 1098 'compare' => '=' 1099 ) ) 1100 ); 1101 1102 // Output the feed 1103 bbp_display_topics_feed_rss2( $the_query ); 1104 } 1105 } 1106 1107 break; 1108 1109 // Topic - Show replies 1110 case bbp_get_topic_post_type() : 1111 1112 // Single topic 1113 if ( isset( $query_vars[bbp_get_topic_post_type()] ) ) { 1114 1115 // Load up our own query 1116 $wp_query = new WP_Query( array( 1117 'post_type' => bbp_get_topic_post_type(), 1118 'name' => $query_vars[bbp_get_topic_post_type()] 1119 ) ); 1120 1121 // Output the feed 1122 bbp_display_replies_feed_rss2(); 1123 1124 // All topics 1125 } else { 1126 1127 // The query 1128 $the_query = array( 1129 'author' => 0, 1130 'post_parent' => 'any', 1131 'posts_per_page' => get_option( '_bbp_topics_per_rss_page', 25 ), 1132 'show_stickies' => false, 1133 ); 1134 1135 // Output the feed 1136 bbp_display_topics_feed_rss2( $the_query ); 1137 } 1138 1139 break; 1140 1141 // Replies 1142 case bbp_get_reply_post_type() : 1143 1144 // The query 1145 $the_query = array( 1146 'posts_per_page' => get_option( '_bbp_replies_per_rss_page', 25 ), 1147 'meta_query' => array( array( ) ) 1148 ); 1149 1150 // All replies 1151 if ( !isset( $query_vars[bbp_get_reply_post_type()] ) ) { 1152 bbp_display_replies_feed_rss2( $the_query ); 1153 } 1154 1155 break; 1156 } 1157 } 1158 } 1159 1160 // No feed so continue on 1161 return $query_vars; 1162 } 1163 1025 1164 ?> -
branches/plugin/bbp-includes/bbp-reply-functions.php
r3125 r3171 937 937 } 938 938 939 /** Feeds *********************************************************************/ 940 941 /** 942 * Output an RSS2 feed of replies, based on the query passed. 943 * 944 * @since bbPress (r3171) 945 * 946 * @global bbPress $bbp 947 * 948 * @uses bbp_exclude_forum_ids() 949 * @uses bbp_is_topic() 950 * @uses bbp_user_can_view_forum() 951 * @uses bbp_get_topic_forum_id() 952 * @uses bbp_show_load_topic() 953 * @uses bbp_topic_permalink() 954 * @uses bbp_topic_title() 955 * @uses bbp_get_topic_reply_count() 956 * @uses bbp_topic_content() 957 * @uses bbp_has_replies() 958 * @uses bbp_replies() 959 * @uses bbp_the_reply() 960 * @uses bbp_reply_url() 961 * @uses bbp_reply_title() 962 * @uses bbp_reply_content() 963 * @uses get_wp_title_rss() 964 * @uses get_option() 965 * @uses bloginfo_rss 966 * @uses self_link() 967 * @uses the_author() 968 * @uses get_post_time() 969 * @uses rss_enclosure() 970 * @uses do_action() 971 * @uses apply_filters() 972 * 973 * @param array $replies_query 974 */ 975 function bbp_display_replies_feed_rss2( $replies_query = array() ) { 976 global $bbp; 977 978 // User cannot access forum this topic is in 979 if ( bbp_is_topic() && !bbp_user_can_view_forum( array( 'forum_id' => bbp_get_topic_forum_id() ) ) ) 980 return; 981 982 // Remove any replies from hidden forums 983 $replies_query = bbp_exclude_forum_ids( $replies_query ); 984 985 // Adjust the title based on context 986 if ( bbp_is_topic() && bbp_user_can_view_forum( array( 'forum_id' => bbp_get_topic_forum_id() ) ) ) 987 $title = apply_filters( 'wp_title_rss', get_wp_title_rss( ' » ' ) ); 988 elseif ( !bbp_show_lead_topic() ) 989 $title = ' » ' . __( 'All Posts', 'bbpress' ); 990 else 991 $title = ' » ' . __( 'All Replies', 'bbpress' ); 992 993 // Display the feed 994 header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ), true ); 995 header( 'Status: 200 OK' ); 996 echo '<?xml version="1.0" encoding="' . get_option( 'blog_charset' ) . '"?' . '>'; ?> 997 998 <rss version="2.0" 999 xmlns:content="http://purl.org/rss/1.0/modules/content/" 1000 xmlns:wfw="http://wellformedweb.org/CommentAPI/" 1001 xmlns:dc="http://purl.org/dc/elements/1.1/" 1002 xmlns:atom="http://www.w3.org/2005/Atom" 1003 1004 <?php do_action( 'bbp_feed' ); ?> 1005 > 1006 1007 <channel> 1008 <title><?php bloginfo_rss('name'); echo $title; ?></title> 1009 <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" /> 1010 <link><?php self_link(); ?></link> 1011 <description><?php //?></description> 1012 <pubDate><?php echo mysql2date( 'D, d M Y H:i:s O', '', false ); ?></pubDate> 1013 <generator>http://bbpress.org/?v=<?php echo BBP_VERSION; ?></generator> 1014 <language><?php echo get_option( 'rss_language' ); ?></language> 1015 1016 <?php do_action( 'bbp_feed_head' ); ?> 1017 1018 <?php if ( bbp_is_topic() ) : ?> 1019 <?php if ( bbp_user_can_view_forum( array( 'forum_id' => bbp_get_topic_forum_id() ) ) ) : ?> 1020 <?php if ( bbp_show_lead_topic() ) : ?> 1021 1022 <item> 1023 <guid><?php bbp_topic_permalink(); ?></guid> 1024 <title><![CDATA[<?php bbp_topic_title(); ?>]]></title> 1025 <link><?php bbp_topic_permalink(); ?></link> 1026 <pubDate><?php echo mysql2date( 'D, d M Y H:i:s +0000', get_post_time( 'Y-m-d H:i:s', true ), false ); ?></pubDate> 1027 <dc:creator><?php the_author(); ?></dc:creator> 1028 1029 <description> 1030 <![CDATA[ 1031 <p><?php printf( __( 'Replies: %s', 'bbpress' ), bbp_get_topic_reply_count() ); ?></p> 1032 <?php bbp_topic_content(); ?> 1033 ]]> 1034 </description> 1035 1036 <?php rss_enclosure(); ?> 1037 1038 <?php do_action( 'bbp_feed_item' ); ?> 1039 1040 </item> 1041 1042 <?php endif; ?> 1043 <?php endif; ?> 1044 <?php endif; ?> 1045 1046 <?php if ( bbp_has_replies( $replies_query ) ) : ?> 1047 <?php while ( bbp_replies() ) : bbp_the_reply(); ?> 1048 1049 <item> 1050 <guid><?php bbp_reply_url(); ?></guid> 1051 <title><![CDATA[<?php bbp_reply_title(); ?>]]></title> 1052 <link><?php bbp_reply_url(); ?></link> 1053 <pubDate><?php echo mysql2date( 'D, d M Y H:i:s +0000', get_post_time( 'Y-m-d H:i:s', true ), false ); ?></pubDate> 1054 <dc:creator><?php the_author() ?></dc:creator> 1055 1056 <description> 1057 <![CDATA[ 1058 <?php bbp_reply_content(); ?> 1059 ]]> 1060 </description> 1061 1062 <?php rss_enclosure(); ?> 1063 1064 <?php do_action( 'bbp_feed_item' ); ?> 1065 1066 </item> 1067 1068 <?php endwhile; ?> 1069 <?php endif; ?> 1070 1071 <?php do_action( 'bbp_feed_footer' ); ?> 1072 1073 </channel> 1074 </rss> 1075 1076 <?php 1077 1078 // We're done here 1079 exit(); 1080 } 939 1081 940 1082 ?> -
branches/plugin/bbp-includes/bbp-topic-functions.php
r3141 r3171 2512 2512 } 2513 2513 2514 /** Feeds *********************************************************************/ 2515 2516 /** 2517 * Output an RSS2 feed of topics, based on the query passed. 2518 * 2519 * @since bbPress (r3171) 2520 * 2521 * @global bbPress $bbp 2522 * 2523 * @uses bbp_exclude_forum_ids() 2524 * @uses bbp_is_topic() 2525 * @uses bbp_user_can_view_forum() 2526 * @uses bbp_get_topic_forum_id() 2527 * @uses bbp_show_load_topic() 2528 * @uses bbp_topic_permalink() 2529 * @uses bbp_topic_title() 2530 * @uses bbp_get_topic_reply_count() 2531 * @uses bbp_topic_content() 2532 * @uses bbp_has_topics() 2533 * @uses bbp_topics() 2534 * @uses bbp_the_topic() 2535 * @uses get_wp_title_rss() 2536 * @uses get_option() 2537 * @uses bloginfo_rss 2538 * @uses self_link() 2539 * @uses the_author() 2540 * @uses get_post_time() 2541 * @uses rss_enclosure() 2542 * @uses do_action() 2543 * @uses apply_filters() 2544 * 2545 * @param array $topics_query 2546 */ 2547 function bbp_display_topics_feed_rss2( $topics_query = array() ) { 2548 global $bbp; 2549 2550 // User cannot access forum this topic is in 2551 if ( bbp_is_topic() && !bbp_user_can_view_forum( array( 'forum_id' => bbp_get_topic_forum_id() ) ) ) 2552 return; 2553 2554 // Remove any topics from hidden forums 2555 $topics_query = bbp_exclude_forum_ids( $topics_query ); 2556 2557 // Display the feed 2558 header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ), true ); 2559 header( 'Status: 200 OK' ); 2560 echo '<?xml version="1.0" encoding="' . get_option( 'blog_charset' ) . '"?' . '>'; ?> 2561 2562 <rss version="2.0" 2563 xmlns:content="http://purl.org/rss/1.0/modules/content/" 2564 xmlns:wfw="http://wellformedweb.org/CommentAPI/" 2565 xmlns:dc="http://purl.org/dc/elements/1.1/" 2566 xmlns:atom="http://www.w3.org/2005/Atom" 2567 2568 <?php do_action( 'bbp_feed' ); ?> 2569 > 2570 2571 <channel> 2572 2573 <title><?php bloginfo_rss( 'name' ); ?> » <?php _e( 'All Topics', 'bbpress' ); ?></title> 2574 <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" /> 2575 <link><?php self_link(); ?></link> 2576 <description><?php //?></description> 2577 <pubDate><?php echo mysql2date( 'D, d M Y H:i:s O', '', false ); ?></pubDate> 2578 <generator>http://bbpress.org/?v=<?php echo BBP_VERSION; ?></generator> 2579 <language><?php echo get_option( 'rss_language' ); ?></language> 2580 2581 <?php do_action( 'bbp_feed_head' ); ?> 2582 2583 <?php if ( bbp_has_topics( $topics_query ) ) : ?> 2584 2585 <?php while ( bbp_topics() ) : bbp_the_topic(); ?> 2586 2587 <item> 2588 <guid><?php bbp_topic_permalink(); ?></guid> 2589 <title><![CDATA[<?php bbp_topic_title(); ?>]]></title> 2590 <link><?php bbp_topic_permalink(); ?></link> 2591 <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_meta( bbp_get_topic_id(), '_bbp_last_active_time', true ) ); ?></pubDate> 2592 <dc:creator><?php the_author() ?></dc:creator> 2593 2594 <?php if ( !post_password_required() ) : ?> 2595 2596 <description> 2597 <![CDATA[ 2598 <p><?php printf( __( 'Replies: %s', 'bbpress' ), bbp_get_topic_reply_count() ); ?></p> 2599 <?php bbp_topic_content(); ?> 2600 ]]> 2601 </description> 2602 2603 <?php rss_enclosure(); ?> 2604 2605 <?php endif; ?> 2606 2607 <?php do_action( 'bbp_feed_item' ); ?> 2608 2609 </item> 2610 2611 <?php endwhile; ?> 2612 <?php endif; ?> 2613 2614 <?php do_action( 'bbp_feed_footer' ); ?> 2615 2616 </channel> 2617 </rss> 2618 2619 <?php 2620 exit(); 2621 } 2622 2514 2623 ?>
Note: See TracChangeset
for help on using the changeset viewer.