mirror of
https://github.com/Rushilwiz/dear-anon.git
synced 2025-04-21 20:39:51 -04:00
255 lines
8.7 KiB
PHP
255 lines
8.7 KiB
PHP
<?php
|
|
/**
|
|
* RSS2 Podcast Feed Template for displaying RSS2 Podcast Posts feed.
|
|
*
|
|
* @package WordPress
|
|
*/
|
|
|
|
function powerpress_get_the_content_feed($feed_type, $no_filters = false)
|
|
{
|
|
if( $no_filters == false )
|
|
return get_the_content_feed($feed_type);
|
|
|
|
if ( post_password_required() ) {
|
|
return __( 'There is no content because this is a protected post.' );
|
|
}
|
|
|
|
global $post;
|
|
$content = $post->post_content;
|
|
if( function_exists('do_blocks') )
|
|
$content = do_blocks($content);
|
|
$content = wptexturize($content);
|
|
$content = wpautop($content);
|
|
$content = shortcode_unautop($content); // Why do we do this?
|
|
$content = prepend_attachment($content);
|
|
if( function_exists('wp_make_content_images_responsive') )
|
|
$content = wp_make_content_images_responsive($content);
|
|
|
|
$shortcodesTemp = $GLOBALS['shortcode_tags'];
|
|
$GLOBALS['shortcode_tags']['skipto'] = 'powerpress_shortcode_skipto';
|
|
$content = do_shortcode($content);
|
|
$GLOBALS['shortcode_tags'] = $shortcodesTemp;
|
|
|
|
$content = capital_P_dangit($content);
|
|
|
|
$content = convert_smilies($content);
|
|
|
|
$content = strip_shortcodes( $content );
|
|
$content = str_replace(']]>', ']]>', $content);
|
|
|
|
if( function_exists('_oembed_filter_feed_content') ) // WP 4.4+
|
|
return ( _oembed_filter_feed_content( $content ) );
|
|
|
|
//if( function_exists('wp_encode_emoji') ) { // WP 4.2+
|
|
// return wp_encode_emoji( $content );
|
|
//}
|
|
|
|
return $content;
|
|
}
|
|
|
|
function powerpress_get_the_excerpt_rss($no_filters = true)
|
|
{
|
|
if( $no_filters == false ) {
|
|
$output = get_the_excerpt();
|
|
return apply_filters( 'the_excerpt_rss', $output );
|
|
}
|
|
|
|
global $post;
|
|
|
|
if ( post_password_required() ) {
|
|
return __( 'There is no excerpt because this is a protected post.' );
|
|
}
|
|
$output = strip_tags($post->post_excerpt);
|
|
if ( $output == '') {
|
|
$output = $post->post_content;
|
|
$shortcodesTemp = $GLOBALS['shortcode_tags'];
|
|
$GLOBALS['shortcode_tags']['skipto'] = 'powerpress_shortcode_skipto';
|
|
$output = do_shortcode($output);
|
|
$GLOBALS['shortcode_tags'] = $shortcodesTemp;
|
|
$output = strip_shortcodes( $output );
|
|
$output = str_replace(']]>', ']]>', $output);
|
|
$output = strip_tags($output);
|
|
}
|
|
|
|
return convert_chars( ent2ncr( $output ) );
|
|
}
|
|
|
|
function powerpress_the_generator() {
|
|
echo '<generator>https://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '</generator>';
|
|
}
|
|
|
|
|
|
$GeneralSettings = get_option('powerpress_general');
|
|
$iTunesOrderNumber = 0;
|
|
$FeaturedPodcastID = 0;
|
|
|
|
if( !empty($GeneralSettings['new_episode_box_feature_in_itunes']) ) {
|
|
$iTunesFeatured = get_option('powerpress_itunes_featured');
|
|
$feed_slug = get_query_var('feed');
|
|
if( !empty($iTunesFeatured[ $feed_slug ]) )
|
|
{
|
|
if( get_post_type() == 'post' )
|
|
{
|
|
$FeaturedPodcastID = $iTunesFeatured[ $feed_slug ];
|
|
$GLOBALS['powerpress_feed']['itunes_feature'] = true; // So any custom order value is not used when looping through the feeds.
|
|
$iTunesOrderNumber = 2; // One reserved for featured episode
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
header('Content-Type: application/rss+xml; charset=' . get_option('blog_charset'), true);
|
|
$more = 1;
|
|
|
|
|
|
$FeedActionHook = '';
|
|
if( !empty($GeneralSettings['feed_action_hook']) )
|
|
$FeedActionHook = '_powerpress';
|
|
|
|
echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'."\n"; ?>
|
|
<rss version="2.0"
|
|
xmlns:content="http://purl.org/rss/1.0/modules/content/"
|
|
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
|
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
xmlns:atom="http://www.w3.org/2005/Atom"
|
|
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
|
|
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
|
|
<?php do_action('rss2_ns'.$FeedActionHook); ?>
|
|
>
|
|
<channel>
|
|
<title><?php if( version_compare($GLOBALS['wp_version'], 4.4, '<' ) ) { bloginfo_rss('name'); } wp_title_rss(); ?></title>
|
|
<atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
|
|
<link><?php bloginfo_rss('url') ?></link>
|
|
<description><?php bloginfo_rss("description") ?></description>
|
|
<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
|
|
<language><?php bloginfo_rss( 'language' ); ?></language>
|
|
<sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
|
|
<sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
|
|
<?php if( !empty($FeedActionHook) ) { echo '<generator>https://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '</generator>'. PHP_EOL; } ?>
|
|
<?php do_action('rss2_head'.$FeedActionHook); ?>
|
|
<?php
|
|
|
|
$ItemCount = 0;
|
|
?>
|
|
<?php while( have_posts()) :
|
|
|
|
//if( empty($GeneralSettings['feed_accel']) )
|
|
the_post();
|
|
//else
|
|
// $GLOBALS['post'] = $GLOBALS['wp_query']->next_post(); // Use this rather than the_post() that way we do not add additional queries to the database
|
|
?>
|
|
<item>
|
|
<title><?php the_title_rss() ?></title>
|
|
<link><?php the_permalink_rss() ?></link>
|
|
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
|
|
<guid isPermaLink="false"><?php the_guid(); ?></guid>
|
|
<?php
|
|
if( empty($GLOBALS['powerpress_feed']['feed_maximizer_on']) ) // If feed maximizer off
|
|
{
|
|
|
|
if( empty($GeneralSettings['feed_accel']) ) {
|
|
?>
|
|
<comments><?php comments_link_feed(); ?></comments>
|
|
<wfw:commentRss><?php echo esc_url( get_post_comments_feed_link(null, 'rss2') ); ?></wfw:commentRss>
|
|
<slash:comments><?php echo get_comments_number(); ?></slash:comments>
|
|
<?php } // end powerpress feed comments
|
|
|
|
if( empty($GeneralSettings['feed_accel']) ) {
|
|
the_category_rss('rss2');
|
|
}
|
|
if (get_option('rss_use_excerpt')) { ?>
|
|
<description><?php echo powerpress_format_itunes_value( powerpress_get_the_excerpt_rss( !empty($GeneralSettings['feed_action_hook']) ), 'description' ); ?></description>
|
|
<?php } else { // else no rss_use_excerpt ?>
|
|
<description><?php echo powerpress_format_itunes_value( powerpress_get_the_excerpt_rss( !empty($GeneralSettings['feed_action_hook']) ), 'description' ); ?></description>
|
|
<?php $content = powerpress_get_the_content_feed('rss2', !empty($GeneralSettings['feed_action_hook']) ); ?>
|
|
<?php if ( strlen( $content ) > 0 ) { ?>
|
|
<content:encoded><![CDATA[<?php echo $content; ?>]]></content:encoded>
|
|
<?php } else { // else strlen( $post->post_content ) <= 0 ?>
|
|
<content:encoded><![CDATA[<?php echo powerpress_get_the_excerpt_rss( !empty($GeneralSettings['feed_action_hook']) ); ?>]]></content:encoded>
|
|
<?php } // end else strlen( $post->post_content ) <= 0 ?>
|
|
<?php } // end else no rss_use_excerpt ?>
|
|
<?php
|
|
} // feed maximizer off
|
|
else // If feed maximizer on
|
|
{
|
|
?>
|
|
<description><?php echo powerpress_format_itunes_value( powerpress_get_the_excerpt_rss( !empty($GeneralSettings['feed_action_hook']) ), 'description' ); ?></description>
|
|
<?php
|
|
}
|
|
?>
|
|
<?php rss_enclosure(); ?>
|
|
<?php do_action('rss2_item'.$FeedActionHook); ?>
|
|
<?php
|
|
if( $iTunesOrderNumber > 0 )
|
|
{
|
|
echo "\t<itunes:order>";
|
|
if( $FeaturedPodcastID == get_the_ID() )
|
|
{
|
|
echo '1';
|
|
$FeaturedPodcastID = 0;
|
|
}
|
|
else // Print of 2, 3, ...
|
|
{
|
|
echo $iTunesOrderNumber;
|
|
$iTunesOrderNumber++;
|
|
}
|
|
echo "</itunes:order>\n";
|
|
}
|
|
|
|
// Decide based on count if we want to flip on the feed maximizer...
|
|
$ItemCount++;
|
|
|
|
if( empty($GLOBALS['powerpress_feed']['feed_maximizer_on']) && $ItemCount >= 10 && !empty($GLOBALS['powerpress_feed']['maximize_feed']) )
|
|
{
|
|
$GLOBALS['powerpress_feed']['feed_maximizer_on'] = true; // All future items will be minimized in order to maximize episode count
|
|
}
|
|
|
|
?>
|
|
</item>
|
|
<?php endwhile; ?>
|
|
<?php
|
|
|
|
if( !empty($FeaturedPodcastID) )
|
|
{
|
|
query_posts( array('p'=>$FeaturedPodcastID) );
|
|
if( have_posts())
|
|
{
|
|
if( empty($GeneralSettings['feed_accel']) )
|
|
the_post();
|
|
else
|
|
$GLOBALS['post'] = $GLOBALS['wp_query']->next_post(); // Use this rather than the_post() that way we do not add additional queries to the database
|
|
// Featured podcast epiosde, give it the highest itunes:order value...
|
|
?>
|
|
<item>
|
|
<title><?php the_title_rss() ?></title>
|
|
<link><?php the_permalink_rss() ?></link>
|
|
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
|
|
<guid isPermaLink="false"><?php the_guid(); ?></guid>
|
|
<description><?php echo powerpress_format_itunes_value( powerpress_get_the_excerpt_rss( !empty($GeneralSettings['feed_accel']) ), 'description' ); ?></description>
|
|
<?php rss_enclosure(); ?>
|
|
<?php do_action('rss2_item'.$FeedActionHook); ?>
|
|
<?php
|
|
echo "\t<itunes:order>";
|
|
echo 1;
|
|
echo "</itunes:order>\n";
|
|
?>
|
|
</item>
|
|
<?php
|
|
}
|
|
wp_reset_query();
|
|
}
|
|
?>
|
|
</channel>
|
|
</rss>
|
|
<?php
|
|
|
|
if( defined('POWERPRESS_DEBUG_QUERIES') ) {
|
|
if( !empty($wpdb->queries) ) {
|
|
echo "<!--\n";
|
|
echo "SQL Queries for this feed:\n";
|
|
print_r($wpdb->queries);
|
|
echo "\n-->";
|
|
}
|
|
}
|
|
?>
|
|
<?php exit; // exit feed to prevent possible notices ?>
|