Version Description
- Released on 4/2/2016
- Improved feed import for PodBean users (they appear to be blocking user agents like SquareSpace)
- Adding
to new lines for iTunes summary so new lines appear on iTunes desktop app (Thanks Daniel for input!) - Added additional code to handle ajax verify media URL errors.
- Added Feed setting option
Do not allow other plugins to modify podcast feeds.
. - Added Feed setting option
Include RSS Image in feeds.
, default is enabled. For themes that set their own site icon in the feeds. - Added logic to handle post type podcast only feeds. (Thanks Alan for helping us debug!)
- Added logic to prevent featured episode from appearing on custom post type feeds.
- Fixed bug with post type podcasting channel level feed settings not applying correctly when using slug
podcast
. (Thanks Joe for pointing out the issue) - Fixed bug with enhanced itunes summary not displaying in some circumstances. (Thanks Filip for bringing to our attention!)
- Podcast Subscribe sidebar widget category podcasting option now accepts category slug values (in addition to the category numeric ID)
- Added define option
POWERPRESS_FEED_AUTH_PRINT_WP_ERRORS
to printwp_authentication
error message when password protected feed authentication fails. This is useful for debugging purposes. - Fixed typos in RSS import page. (Thanks Robin!)
Download this release
Release Info
Developer | amandato |
Plugin | PowerPress Podcasting plugin by Blubrry |
Version | 6.3.3 |
Comparing to | |
See all releases |
Code changes from version 6.3.2 to 6.3.3
- class.powerpress-subscribe-widget.php +14 -2
- feed-podcast.php +21 -12
- powerpress-feed-auth.php +21 -8
- powerpress.php +61 -44
- powerpressadmin-editfeed.php +13 -2
- powerpressadmin-metabox.php +1 -1
- powerpressadmin-rss-import.php +10 -7
- powerpressadmin-tools.php +2 -2
- powerpressadmin.php +70 -30
- readme.txt +20 -3
class.powerpress-subscribe-widget.php
CHANGED
@@ -252,9 +252,21 @@ body .pp-ssb-widget a.pp-ssb-btn:hover {
|
|
252 |
$ExtraData['taxonomy_term_id'] = $instance['subscribe_term_taxonomy_id'];
|
253 |
}; break;
|
254 |
case 'category': {
|
255 |
-
|
|
|
256 |
return;
|
257 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
258 |
}; break;
|
259 |
default: {
|
260 |
// Doesn't matter, we'r using the default podcast channel
|
252 |
$ExtraData['taxonomy_term_id'] = $instance['subscribe_term_taxonomy_id'];
|
253 |
}; break;
|
254 |
case 'category': {
|
255 |
+
|
256 |
+
if( empty($instance['subscribe_category_id']) )
|
257 |
return;
|
258 |
+
|
259 |
+
if( is_numeric($instance['subscribe_category_id']) )
|
260 |
+
{
|
261 |
+
$ExtraData['cat_id'] = $instance['subscribe_category_id'];
|
262 |
+
}
|
263 |
+
else
|
264 |
+
{
|
265 |
+
$catObj = get_category_by_slug($instance['subscribe_category_id']);
|
266 |
+
if( empty($catObj->term_id) )
|
267 |
+
return;
|
268 |
+
$ExtraData['cat_id'] = $catObj->term_id;
|
269 |
+
}
|
270 |
}; break;
|
271 |
default: {
|
272 |
// Doesn't matter, we'r using the default podcast channel
|
feed-podcast.php
CHANGED
@@ -22,21 +22,30 @@
|
|
22 |
return apply_filters('the_excerpt_rss', $output);
|
23 |
}
|
24 |
|
|
|
25 |
$FeaturedPodcastID = 0;
|
26 |
$iTunesFeatured = get_option('powerpress_itunes_featured');
|
27 |
$feed_slug = get_query_var('feed');
|
28 |
if( !empty($iTunesFeatured[ $feed_slug ]) )
|
29 |
{
|
30 |
-
|
31 |
-
|
|
|
|
|
|
|
|
|
32 |
}
|
33 |
-
|
34 |
|
35 |
header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);
|
36 |
$more = 1;
|
37 |
|
38 |
-
|
39 |
-
|
|
|
|
|
|
|
|
|
40 |
<rss version="2.0"
|
41 |
xmlns:content="http://purl.org/rss/1.0/modules/content/"
|
42 |
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
|
@@ -44,7 +53,7 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
|
|
44 |
xmlns:atom="http://www.w3.org/2005/Atom"
|
45 |
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
|
46 |
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
|
47 |
-
<?php do_action('rss2_ns'); ?>
|
48 |
>
|
49 |
<channel>
|
50 |
<title><?php if( version_compare($GLOBALS['wp_version'], 4.4, '<' ) ) { bloginfo_rss('name'); } wp_title_rss(); ?></title>
|
@@ -55,7 +64,7 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
|
|
55 |
<language><?php bloginfo_rss( 'language' ); ?></language>
|
56 |
<sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
|
57 |
<sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
|
58 |
-
<?php do_action('rss2_head'); ?>
|
59 |
<?php
|
60 |
|
61 |
$ItemCount = 0;
|
@@ -95,17 +104,17 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
|
|
95 |
}
|
96 |
?>
|
97 |
<?php rss_enclosure(); ?>
|
98 |
-
<?php do_action('rss2_item'); ?>
|
99 |
<?php
|
100 |
-
if(
|
101 |
{
|
102 |
echo "\t<itunes:order>";
|
103 |
if( $FeaturedPodcastID == get_the_ID() )
|
104 |
{
|
105 |
-
echo 1;
|
106 |
$FeaturedPodcastID = 0;
|
107 |
}
|
108 |
-
else
|
109 |
{
|
110 |
echo $iTunesOrderNumber;
|
111 |
$iTunesOrderNumber++;
|
@@ -141,7 +150,7 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
|
|
141 |
<guid isPermaLink="false"><?php the_guid(); ?></guid>
|
142 |
<description><?php echo powerpress_format_itunes_value( powerpress_get_the_excerpt_rss(), 'description' ); ?></description>
|
143 |
<?php rss_enclosure(); ?>
|
144 |
-
<?php do_action('rss2_item'); ?>
|
145 |
<?php
|
146 |
echo "\t<itunes:order>";
|
147 |
echo 1;
|
22 |
return apply_filters('the_excerpt_rss', $output);
|
23 |
}
|
24 |
|
25 |
+
$iTunesOrderNumber = 0;
|
26 |
$FeaturedPodcastID = 0;
|
27 |
$iTunesFeatured = get_option('powerpress_itunes_featured');
|
28 |
$feed_slug = get_query_var('feed');
|
29 |
if( !empty($iTunesFeatured[ $feed_slug ]) )
|
30 |
{
|
31 |
+
if( get_post_type() == 'post' )
|
32 |
+
{
|
33 |
+
$FeaturedPodcastID = $iTunesFeatured[ $feed_slug ];
|
34 |
+
$GLOBALS['powerpress_feed']['itunes_feature'] = true; // So any custom order value is not used when looping through the feeds.
|
35 |
+
$iTunesOrderNumber = 2; // One reserved for featured episode
|
36 |
+
}
|
37 |
}
|
38 |
+
|
39 |
|
40 |
header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);
|
41 |
$more = 1;
|
42 |
|
43 |
+
$GeneralSettings = get_option('powerpress_general');
|
44 |
+
$FeedActionHook = '';
|
45 |
+
if( !empty($GeneralSettings['feed_action_hook']) )
|
46 |
+
$FeedActionHook = '_powerpress';
|
47 |
+
|
48 |
+
echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'."\n"; ?>
|
49 |
<rss version="2.0"
|
50 |
xmlns:content="http://purl.org/rss/1.0/modules/content/"
|
51 |
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
|
53 |
xmlns:atom="http://www.w3.org/2005/Atom"
|
54 |
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
|
55 |
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
|
56 |
+
<?php do_action('rss2_ns'.$FeedActionHook); ?>
|
57 |
>
|
58 |
<channel>
|
59 |
<title><?php if( version_compare($GLOBALS['wp_version'], 4.4, '<' ) ) { bloginfo_rss('name'); } wp_title_rss(); ?></title>
|
64 |
<language><?php bloginfo_rss( 'language' ); ?></language>
|
65 |
<sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
|
66 |
<sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
|
67 |
+
<?php do_action('rss2_head'.$FeedActionHook); ?>
|
68 |
<?php
|
69 |
|
70 |
$ItemCount = 0;
|
104 |
}
|
105 |
?>
|
106 |
<?php rss_enclosure(); ?>
|
107 |
+
<?php do_action('rss2_item'.$FeedActionHook); ?>
|
108 |
<?php
|
109 |
+
if( $iTunesOrderNumber > 0 )
|
110 |
{
|
111 |
echo "\t<itunes:order>";
|
112 |
if( $FeaturedPodcastID == get_the_ID() )
|
113 |
{
|
114 |
+
echo '1';
|
115 |
$FeaturedPodcastID = 0;
|
116 |
}
|
117 |
+
else // Print of 2, 3, ...
|
118 |
{
|
119 |
echo $iTunesOrderNumber;
|
120 |
$iTunesOrderNumber++;
|
150 |
<guid isPermaLink="false"><?php the_guid(); ?></guid>
|
151 |
<description><?php echo powerpress_format_itunes_value( powerpress_get_the_excerpt_rss(), 'description' ); ?></description>
|
152 |
<?php rss_enclosure(); ?>
|
153 |
+
<?php do_action('rss2_item'.$FeedActionHook); ?>
|
154 |
<?php
|
155 |
echo "\t<itunes:order>";
|
156 |
echo 1;
|
powerpress-feed-auth.php
CHANGED
@@ -23,8 +23,10 @@
|
|
23 |
unset($ha);
|
24 |
}
|
25 |
|
26 |
-
if( !isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) )
|
27 |
powerpress_feed_auth_basic( $FeedSettings['title'] );
|
|
|
|
|
28 |
|
29 |
$user = $_SERVER['PHP_AUTH_USER'];
|
30 |
$password = $_SERVER['PHP_AUTH_PW'];
|
@@ -36,17 +38,29 @@
|
|
36 |
// Check capability...
|
37 |
if( $userObj->has_cap( $FeedSettings['premium'] ) )
|
38 |
return; // Nice, let us continue...
|
39 |
-
|
40 |
powerpress_feed_auth_basic( $FeedSettings['title'], __('Access Denied', 'powerpress') );
|
|
|
41 |
}
|
42 |
|
43 |
-
//
|
44 |
-
powerpress_feed_auth_basic( $FeedSettings['title'],
|
|
|
45 |
}
|
46 |
}
|
47 |
|
48 |
function powerpress_feed_auth_basic($realm_name, $error = false )
|
49 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
if( !$error )
|
51 |
$error = __('Unauthorized', 'powerpress');
|
52 |
header('HTTP/1.0 401 Unauthorized');
|
@@ -60,15 +74,14 @@
|
|
60 |
<head>
|
61 |
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
|
62 |
<meta name="robots" content="noindex" />
|
63 |
-
<title><?php echo htmlspecialchars($
|
64 |
</head>
|
65 |
<body>
|
66 |
-
<p><?php echo
|
67 |
</body>
|
68 |
</html>
|
69 |
<?php
|
70 |
exit;
|
71 |
}
|
72 |
|
73 |
-
|
74 |
-
|
23 |
unset($ha);
|
24 |
}
|
25 |
|
26 |
+
if( !isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ) {
|
27 |
powerpress_feed_auth_basic( $FeedSettings['title'] );
|
28 |
+
exit;
|
29 |
+
}
|
30 |
|
31 |
$user = $_SERVER['PHP_AUTH_USER'];
|
32 |
$password = $_SERVER['PHP_AUTH_PW'];
|
38 |
// Check capability...
|
39 |
if( $userObj->has_cap( $FeedSettings['premium'] ) )
|
40 |
return; // Nice, let us continue...
|
|
|
41 |
powerpress_feed_auth_basic( $FeedSettings['title'], __('Access Denied', 'powerpress') );
|
42 |
+
exit;
|
43 |
}
|
44 |
|
45 |
+
// If we made it this far, then there was a wp_authenticate error...
|
46 |
+
powerpress_feed_auth_basic( $FeedSettings['title'], $userObj );
|
47 |
+
exit;
|
48 |
}
|
49 |
}
|
50 |
|
51 |
function powerpress_feed_auth_basic($realm_name, $error = false )
|
52 |
{
|
53 |
+
if( !defined('POWERPRESS_FEED_AUTH_PRINT_WP_ERRORS') && is_wp_error($error) ) {
|
54 |
+
$error = __('Unauthorized', 'powerpress');
|
55 |
+
}
|
56 |
+
|
57 |
+
if( empty($error) ) {
|
58 |
+
$error = __('Unauthorized', 'powerpress');
|
59 |
+
}
|
60 |
+
|
61 |
+
$error_heading = (is_wp_error($error)? __('Unauthorized', 'powerpress') : $error);
|
62 |
+
$error_message = (is_wp_error($error)?$error->get_error_message(): htmlspecialchars($error) );
|
63 |
+
|
64 |
if( !$error )
|
65 |
$error = __('Unauthorized', 'powerpress');
|
66 |
header('HTTP/1.0 401 Unauthorized');
|
74 |
<head>
|
75 |
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
|
76 |
<meta name="robots" content="noindex" />
|
77 |
+
<title><?php echo htmlspecialchars($error_heading); ?></title>
|
78 |
</head>
|
79 |
<body>
|
80 |
+
<p><?php echo $error_message; ?></p>
|
81 |
</body>
|
82 |
</html>
|
83 |
<?php
|
84 |
exit;
|
85 |
}
|
86 |
|
87 |
+
// eof
|
|
powerpress.php
CHANGED
@@ -3,11 +3,11 @@
|
|
3 |
Plugin Name: Blubrry PowerPress
|
4 |
Plugin URI: http://create.blubrry.com/resources/powerpress/
|
5 |
Description: <a href="http://create.blubrry.com/resources/powerpress/" target="_blank">Blubrry PowerPress</a> is the No. 1 Podcasting plugin for WordPress. Developed by podcasters for podcasters; features include Simple and Advanced modes, multiple audio/video player options, subscribe to podcast tools, podcast SEO features, and more! Fully supports iTunes, Google Play, Stitcher, and Blubrry Podcasting directories, as well as all podcast applications and clients.
|
6 |
-
Version: 6.3.
|
7 |
Author: Blubrry
|
8 |
Author URI: http://www.blubrry.com/
|
9 |
-
Requires at least: 3.
|
10 |
-
Tested up to: 4.
|
11 |
Text Domain: powerpress
|
12 |
Change Log:
|
13 |
Please see readme.txt for detailed change log.
|
@@ -35,7 +35,7 @@ if( !function_exists('add_action') )
|
|
35 |
die("access denied.");
|
36 |
|
37 |
// WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
|
38 |
-
define('POWERPRESS_VERSION', '6.3.
|
39 |
|
40 |
// Translation support:
|
41 |
if ( !defined('POWERPRESS_ABSPATH') )
|
@@ -477,6 +477,7 @@ function powerpress_rss2_ns()
|
|
477 |
}
|
478 |
|
479 |
add_action('rss2_ns', 'powerpress_rss2_ns');
|
|
|
480 |
|
481 |
function powerpress_rss2_head()
|
482 |
{
|
@@ -503,8 +504,15 @@ function powerpress_rss2_head()
|
|
503 |
}
|
504 |
else if( powerpress_is_custom_podcast_feed() ) // If we're handling a custom podcast feed...
|
505 |
{
|
506 |
-
|
507 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
508 |
}
|
509 |
|
510 |
if( !isset($Feed['url']) || trim($Feed['url']) == '' )
|
@@ -610,29 +618,31 @@ function powerpress_rss2_head()
|
|
610 |
$podcast_title_safe .= get_bloginfo_rss('name');
|
611 |
}
|
612 |
$podcast_title_safe .= get_wp_title_rss();
|
613 |
-
|
614 |
-
if( !empty($Feed['rss2_image']) || !empty($Feed['itunes_image']) )
|
615 |
{
|
616 |
-
if( !empty($Feed['rss2_image']) )
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
|
|
|
|
|
|
634 |
}
|
635 |
-
|
636 |
// Handle iTunes categories
|
637 |
$Categories = powerpress_itunes_categories();
|
638 |
$Cat1 = false; $Cat2 = false; $Cat3 = false;
|
@@ -773,6 +783,7 @@ function powerpress_rss2_head()
|
|
773 |
}
|
774 |
|
775 |
add_action('rss2_head', 'powerpress_rss2_head');
|
|
|
776 |
|
777 |
function powerpress_rss2_item()
|
778 |
{
|
@@ -856,9 +867,9 @@ function powerpress_rss2_item()
|
|
856 |
PHP_EOL);
|
857 |
}
|
858 |
|
859 |
-
$excerpt_no_html = '';
|
860 |
-
$content_no_html = '';
|
861 |
-
$content_no_html_a = '';
|
862 |
if( !$subtitle || !$summary )
|
863 |
{
|
864 |
$excerpt_no_html = strip_tags( get_the_excerpt() );
|
@@ -891,18 +902,18 @@ function powerpress_rss2_item()
|
|
891 |
echo "\t\t<itunes:summary><![CDATA[". powerpress_format_itunes_value($summary, 'summary', true) .']]></itunes:summary>'.PHP_EOL;
|
892 |
else if( $powerpress_feed['enhance_itunes_summary'] )
|
893 |
echo "\t\t<itunes:summary><![CDATA[". powerpress_itunes_summary() .']]></itunes:summary>'.PHP_EOL;
|
894 |
-
else if( $excerpt_no_html )
|
895 |
echo "\t\t<itunes:summary><![CDATA[". powerpress_format_itunes_value($excerpt_no_html, 'summary', true) .']]></itunes:summary>'.PHP_EOL;
|
896 |
-
else
|
897 |
echo "\t\t<itunes:summary><![CDATA[". powerpress_format_itunes_value($content_no_html_a, 'summary', true) .']]></itunes:summary>'.PHP_EOL;
|
898 |
} else {
|
899 |
if( $summary )
|
900 |
echo "\t\t<itunes:summary>". powerpress_format_itunes_value($summary, 'summary') .'</itunes:summary>'.PHP_EOL;
|
901 |
else if( $powerpress_feed['enhance_itunes_summary'] )
|
902 |
-
echo "\t\t<itunes:summary><![CDATA[". powerpress_itunes_summary(
|
903 |
-
else if( $excerpt_no_html )
|
904 |
echo "\t\t<itunes:summary>". powerpress_format_itunes_value($excerpt_no_html, 'summary') .'</itunes:summary>'.PHP_EOL;
|
905 |
-
else
|
906 |
echo "\t\t<itunes:summary>". powerpress_format_itunes_value($content_no_html_a, 'summary') .'</itunes:summary>'.PHP_EOL;
|
907 |
}
|
908 |
|
@@ -998,6 +1009,7 @@ function powerpress_rss2_item()
|
|
998 |
}
|
999 |
|
1000 |
add_action('rss2_item', 'powerpress_rss2_item');
|
|
|
1001 |
|
1002 |
function powerpress_filter_rss_enclosure($content)
|
1003 |
{
|
@@ -1475,6 +1487,11 @@ function powerpress_init()
|
|
1475 |
if ( !in_array($feed_slug, $wp_rewrite->feeds) ) // we need to add this feed name
|
1476 |
{
|
1477 |
add_feed($feed_slug, 'powerpress_do_podcast_feed');
|
|
|
|
|
|
|
|
|
|
|
1478 |
}
|
1479 |
}
|
1480 |
}
|
@@ -2417,13 +2434,19 @@ function powerpress_get_root_url()
|
|
2417 |
function powerpress_itunes_summary()
|
2418 |
{
|
2419 |
$summary = apply_filters( 'the_content', get_the_content() );
|
2420 |
-
$summary = str_replace(']]>', ']]>', $
|
2421 |
-
$summary =
|
|
|
|
|
|
|
2422 |
return powerpress_trim_itunes_value($summary, 'summary');
|
2423 |
}
|
2424 |
|
2425 |
function powerpress_format_itunes_value($value, $tag, $cdata=false)
|
2426 |
{
|
|
|
|
|
|
|
2427 |
if( $cdata ) {
|
2428 |
$value = str_replace(']]>', ']]>', $value);
|
2429 |
return powerpress_trim_itunes_value($value, $tag);
|
@@ -2453,8 +2476,6 @@ function powerpress_format_itunes_value($value, $tag, $cdata=false)
|
|
2453 |
$value = @html_entity_decode($value, ENT_COMPAT, 'UTF-8'); // Remove any additional entities such as
|
2454 |
$value = preg_replace( '/&/ui' , '&', $value); // Precaution in case it didn't get removed from function above.
|
2455 |
|
2456 |
-
if( $tag == 'summary-enhanced' )
|
2457 |
-
return powerpress_trim_itunes_value($value, $tag);
|
2458 |
return esc_html( powerpress_trim_itunes_value($value, $tag) );
|
2459 |
}
|
2460 |
|
@@ -2468,11 +2489,10 @@ function powerpress_trim_itunes_value($value, $tag = 'summary')
|
|
2468 |
switch($tag)
|
2469 |
{
|
2470 |
case 'description':
|
2471 |
-
case 'summary-enhanced':
|
2472 |
case 'summary': {
|
2473 |
// 4000 character limit
|
2474 |
if( $length > 4000 )
|
2475 |
-
$trim_at =
|
2476 |
}; break;
|
2477 |
case 'subtitle':
|
2478 |
case 'author':
|
@@ -2515,9 +2535,6 @@ function powerpress_trim_itunes_value($value, $tag = 'summary')
|
|
2515 |
if( $remove_new_lines )
|
2516 |
$value = str_replace( array("\r\n\r\n", "\n", "\r", "\t","- "), array(' - ',' ', '', ' ', ''), $value );
|
2517 |
|
2518 |
-
if( $tag == 'summary-enhanced' )
|
2519 |
-
$value = str_replace(']]>', ']]>', $value); // Make sure there's no ]]> in the value
|
2520 |
-
|
2521 |
return $value;
|
2522 |
}
|
2523 |
|
3 |
Plugin Name: Blubrry PowerPress
|
4 |
Plugin URI: http://create.blubrry.com/resources/powerpress/
|
5 |
Description: <a href="http://create.blubrry.com/resources/powerpress/" target="_blank">Blubrry PowerPress</a> is the No. 1 Podcasting plugin for WordPress. Developed by podcasters for podcasters; features include Simple and Advanced modes, multiple audio/video player options, subscribe to podcast tools, podcast SEO features, and more! Fully supports iTunes, Google Play, Stitcher, and Blubrry Podcasting directories, as well as all podcast applications and clients.
|
6 |
+
Version: 6.3.3
|
7 |
Author: Blubrry
|
8 |
Author URI: http://www.blubrry.com/
|
9 |
+
Requires at least: 3.6
|
10 |
+
Tested up to: 4.5
|
11 |
Text Domain: powerpress
|
12 |
Change Log:
|
13 |
Please see readme.txt for detailed change log.
|
35 |
die("access denied.");
|
36 |
|
37 |
// WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
|
38 |
+
define('POWERPRESS_VERSION', '6.3.3' );
|
39 |
|
40 |
// Translation support:
|
41 |
if ( !defined('POWERPRESS_ABSPATH') )
|
477 |
}
|
478 |
|
479 |
add_action('rss2_ns', 'powerpress_rss2_ns');
|
480 |
+
add_action('rss2_ns_powerpress', 'powerpress_rss2_ns');
|
481 |
|
482 |
function powerpress_rss2_head()
|
483 |
{
|
504 |
}
|
505 |
else if( powerpress_is_custom_podcast_feed() ) // If we're handling a custom podcast feed...
|
506 |
{
|
507 |
+
if( !empty($powerpress_feed['post_type']) ) {
|
508 |
+
$PostTypeSettingsArray = get_option('powerpress_posttype_'.$powerpress_feed['post_type']); // Get the post type podcast feed settings saved in the database
|
509 |
+
if( !empty($PostTypeSettingsArray[ $feed_slug ]) )
|
510 |
+
$Feed = $PostTypeSettingsArray[ $feed_slug ];
|
511 |
+
}
|
512 |
+
else {
|
513 |
+
$CustomFeed = get_option('powerpress_feed_'.$feed_slug); // Get the custom podcast feed settings saved in the database
|
514 |
+
}
|
515 |
+
$Feed = powerpress_merge_empty_feed_settings($CustomFeed, $Feed, ($feed_slug == 'podcast' && empty($powerpress_feed['post_type']) ) );
|
516 |
}
|
517 |
|
518 |
if( !isset($Feed['url']) || trim($Feed['url']) == '' )
|
618 |
$podcast_title_safe .= get_bloginfo_rss('name');
|
619 |
}
|
620 |
$podcast_title_safe .= get_wp_title_rss();
|
621 |
+
if( empty($General['disable_rss_image']) )
|
|
|
622 |
{
|
623 |
+
if( !empty($Feed['rss2_image']) || !empty($Feed['itunes_image']) )
|
624 |
+
{
|
625 |
+
if( !empty($Feed['rss2_image']) ) // If the RSS image is set, use it, otherwise use the iTunes image...
|
626 |
+
$rss_image = $Feed['rss2_image'];
|
627 |
+
else
|
628 |
+
$rss_image = $Feed['itunes_image'];
|
629 |
+
|
630 |
+
echo "\t". '<image>' .PHP_EOL;
|
631 |
+
echo "\t\t".'<title>' . $podcast_title_safe . '</title>'.PHP_EOL;
|
632 |
+
echo "\t\t".'<url>' . esc_html( str_replace(' ', '+', $rss_image)) . '</url>'.PHP_EOL;
|
633 |
+
echo "\t\t".'<link>'. $Feed['url'] . '</link>' . PHP_EOL;
|
634 |
+
echo "\t".'</image>' . PHP_EOL;
|
635 |
+
}
|
636 |
+
else // Use the default image
|
637 |
+
{
|
638 |
+
echo "\t". '<image>' .PHP_EOL;
|
639 |
+
echo "\t\t".'<title>' . $podcast_title_safe . '</title>'.PHP_EOL;
|
640 |
+
echo "\t\t".'<url>' . powerpress_get_root_url() . 'rss_default.jpg</url>'.PHP_EOL;
|
641 |
+
echo "\t\t".'<link>'. $Feed['url'] . '</link>' . PHP_EOL;
|
642 |
+
echo "\t".'</image>' . PHP_EOL;
|
643 |
+
}
|
644 |
}
|
645 |
+
|
646 |
// Handle iTunes categories
|
647 |
$Categories = powerpress_itunes_categories();
|
648 |
$Cat1 = false; $Cat2 = false; $Cat3 = false;
|
783 |
}
|
784 |
|
785 |
add_action('rss2_head', 'powerpress_rss2_head');
|
786 |
+
add_action('rss2_head_powerpress', 'powerpress_rss2_head');
|
787 |
|
788 |
function powerpress_rss2_item()
|
789 |
{
|
867 |
PHP_EOL);
|
868 |
}
|
869 |
|
870 |
+
$excerpt_no_html = ''; // for itunes:subtitle if subtitle is blank
|
871 |
+
$content_no_html = ''; // for itunes:subtitle if excerpt is blank
|
872 |
+
$content_no_html_a = ''; // for itunes:summary if excerpt is blank
|
873 |
if( !$subtitle || !$summary )
|
874 |
{
|
875 |
$excerpt_no_html = strip_tags( get_the_excerpt() );
|
902 |
echo "\t\t<itunes:summary><![CDATA[". powerpress_format_itunes_value($summary, 'summary', true) .']]></itunes:summary>'.PHP_EOL;
|
903 |
else if( $powerpress_feed['enhance_itunes_summary'] )
|
904 |
echo "\t\t<itunes:summary><![CDATA[". powerpress_itunes_summary() .']]></itunes:summary>'.PHP_EOL;
|
905 |
+
else if( $excerpt_no_html )
|
906 |
echo "\t\t<itunes:summary><![CDATA[". powerpress_format_itunes_value($excerpt_no_html, 'summary', true) .']]></itunes:summary>'.PHP_EOL;
|
907 |
+
else // $content_no_html_a
|
908 |
echo "\t\t<itunes:summary><![CDATA[". powerpress_format_itunes_value($content_no_html_a, 'summary', true) .']]></itunes:summary>'.PHP_EOL;
|
909 |
} else {
|
910 |
if( $summary )
|
911 |
echo "\t\t<itunes:summary>". powerpress_format_itunes_value($summary, 'summary') .'</itunes:summary>'.PHP_EOL;
|
912 |
else if( $powerpress_feed['enhance_itunes_summary'] )
|
913 |
+
echo "\t\t<itunes:summary><![CDATA[". powerpress_itunes_summary() .']]></itunes:summary>'.PHP_EOL;
|
914 |
+
else if( $excerpt_no_html )
|
915 |
echo "\t\t<itunes:summary>". powerpress_format_itunes_value($excerpt_no_html, 'summary') .'</itunes:summary>'.PHP_EOL;
|
916 |
+
else // $content_no_html_a
|
917 |
echo "\t\t<itunes:summary>". powerpress_format_itunes_value($content_no_html_a, 'summary') .'</itunes:summary>'.PHP_EOL;
|
918 |
}
|
919 |
|
1009 |
}
|
1010 |
|
1011 |
add_action('rss2_item', 'powerpress_rss2_item');
|
1012 |
+
add_action('rss2_item_powerpress', 'powerpress_rss2_item');
|
1013 |
|
1014 |
function powerpress_filter_rss_enclosure($content)
|
1015 |
{
|
1487 |
if ( !in_array($feed_slug, $wp_rewrite->feeds) ) // we need to add this feed name
|
1488 |
{
|
1489 |
add_feed($feed_slug, 'powerpress_do_podcast_feed');
|
1490 |
+
while( list($post_type_slug, $title) = each($FeedSlugPostTypes) )
|
1491 |
+
{
|
1492 |
+
add_rewrite_rule( '/'. $post_type_slug .'/feed/'. $feed_slug .'/?$', 'index.php?post_type='. $post_type_slug .'&feed='.$feed_slug, 'top' ); // capture the post type feeds
|
1493 |
+
add_rewrite_rule( '/'. $post_type_slug .'/feed/'. $feed_slug .'/?$', 'index.php?post_type='. $post_type_slug .'&feed='.$feed_slug, 'bottom' ); // capture the post type feeds
|
1494 |
+
}
|
1495 |
}
|
1496 |
}
|
1497 |
}
|
2434 |
function powerpress_itunes_summary()
|
2435 |
{
|
2436 |
$summary = apply_filters( 'the_content', get_the_content() );
|
2437 |
+
$summary = str_replace(']]>', ']]>', $summary); // CDATA error prevention
|
2438 |
+
$summary = str_replace("<li>", '<li>* ', $summary);
|
2439 |
+
$summary = strip_tags($summary, '<a><br>'); // We can leave a tags for itunes:summary
|
2440 |
+
$summary = str_replace("\n", "<br />\n", $summary);
|
2441 |
+
|
2442 |
return powerpress_trim_itunes_value($summary, 'summary');
|
2443 |
}
|
2444 |
|
2445 |
function powerpress_format_itunes_value($value, $tag, $cdata=false)
|
2446 |
{
|
2447 |
+
if( $tag == 'summary' )
|
2448 |
+
$value = nl2br($value); // Does not remove existing br tags if present.
|
2449 |
+
|
2450 |
if( $cdata ) {
|
2451 |
$value = str_replace(']]>', ']]>', $value);
|
2452 |
return powerpress_trim_itunes_value($value, $tag);
|
2476 |
$value = @html_entity_decode($value, ENT_COMPAT, 'UTF-8'); // Remove any additional entities such as
|
2477 |
$value = preg_replace( '/&/ui' , '&', $value); // Precaution in case it didn't get removed from function above.
|
2478 |
|
|
|
|
|
2479 |
return esc_html( powerpress_trim_itunes_value($value, $tag) );
|
2480 |
}
|
2481 |
|
2489 |
switch($tag)
|
2490 |
{
|
2491 |
case 'description':
|
|
|
2492 |
case 'summary': {
|
2493 |
// 4000 character limit
|
2494 |
if( $length > 4000 )
|
2495 |
+
$trim_at = 3997; // 3 less characters so we can add a dot dot dot
|
2496 |
}; break;
|
2497 |
case 'subtitle':
|
2498 |
case 'author':
|
2535 |
if( $remove_new_lines )
|
2536 |
$value = str_replace( array("\r\n\r\n", "\n", "\r", "\t","- "), array(' - ',' ', '', ' ', ''), $value );
|
2537 |
|
|
|
|
|
|
|
2538 |
return $value;
|
2539 |
}
|
2540 |
|
powerpressadmin-editfeed.php
CHANGED
@@ -419,6 +419,9 @@ function powerpressadmin_edit_feed_general($FeedSettings, $General)
|
|
419 |
<p><?php echo __('These are podcast only feeds suitable for submission podcast directories such as iTunes.', 'powerpress'); ?></p>
|
420 |
<p class="description"><?php echo __('Note: We do not recommend submitting your main site feed to podcast directories such as iTunes. iTunes and many other podcast directories work best with feeds that do not have regular blog posts mixed in.', 'powerpress'); ?></p>
|
421 |
|
|
|
|
|
|
|
422 |
</td>
|
423 |
</tr>
|
424 |
|
@@ -426,12 +429,20 @@ function powerpressadmin_edit_feed_general($FeedSettings, $General)
|
|
426 |
<th scope="row">
|
427 |
<?php echo __('Feed Discovery', 'powerpress'); ?></th>
|
428 |
<td>
|
429 |
-
|
430 |
-
<p><label><input type="checkbox" name="General[feed_links]" value="1" <?php if( !empty($General['feed_links']) && $General['feed_links'] == 1 ) echo 'checked '; ?>/> <?php echo __('Include podcast feed links in HTML headers.', 'powerpress'); ?></label></p>
|
431 |
<p><?php echo __('Adds "feed discovery" links to your web site\'s headers allowing web browsers and feed readers to auto-detect your podcast feeds.', 'powerpress'); ?></p>
|
432 |
</td>
|
433 |
</tr>
|
434 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
435 |
|
436 |
</table>
|
437 |
<?php
|
419 |
<p><?php echo __('These are podcast only feeds suitable for submission podcast directories such as iTunes.', 'powerpress'); ?></p>
|
420 |
<p class="description"><?php echo __('Note: We do not recommend submitting your main site feed to podcast directories such as iTunes. iTunes and many other podcast directories work best with feeds that do not have regular blog posts mixed in.', 'powerpress'); ?></p>
|
421 |
|
422 |
+
<input type="hidden" name="General[feed_action_hook]" value="0" />
|
423 |
+
<p><label><input type="checkbox" name="General[feed_action_hook]" value="1" <?php if( !empty($General['feed_action_hook']) && $General['feed_action_hook'] == 1 ) echo 'checked '; ?>/> <?php echo __('Do not allow other plugins to modify podcast feeds.', 'powerpress'); ?></label></p>
|
424 |
+
|
425 |
</td>
|
426 |
</tr>
|
427 |
|
429 |
<th scope="row">
|
430 |
<?php echo __('Feed Discovery', 'powerpress'); ?></th>
|
431 |
<td>
|
432 |
+
<p style="margin-top: 10px;"><label><input type="checkbox" name="General[feed_links]" value="1" <?php if( !empty($General['feed_links']) && $General['feed_links'] == 1 ) echo 'checked '; ?>/> <?php echo __('Include podcast feed links in HTML headers.', 'powerpress'); ?></label></p>
|
|
|
433 |
<p><?php echo __('Adds "feed discovery" links to your web site\'s headers allowing web browsers and feed readers to auto-detect your podcast feeds.', 'powerpress'); ?></p>
|
434 |
</td>
|
435 |
</tr>
|
436 |
|
437 |
+
<tr valign="top">
|
438 |
+
<th scope="row">
|
439 |
+
<?php echo __('RSS2 Image', 'powerpress'); ?></th>
|
440 |
+
<td>
|
441 |
+
<input type="hidden" name="General[disable_rss_image]" value="1" />
|
442 |
+
<p><label><input type="checkbox" name="General[disable_rss_image]" value="0" <?php if( empty($General['disable_rss_image']) ) echo 'checked '; ?>/> <?php echo __('Include RSS Image in feeds.', 'powerpress'); ?></label></p>
|
443 |
+
</td>
|
444 |
+
</tr>
|
445 |
+
|
446 |
|
447 |
</table>
|
448 |
<?php
|
powerpressadmin-metabox.php
CHANGED
@@ -191,7 +191,7 @@ function powerpress_meta_box($object, $box)
|
|
191 |
}
|
192 |
?>
|
193 |
<div id="powerpress_podcast_edit_<?php echo $FeedSlug; ?>">
|
194 |
-
<div class="error below-h2" id="powerpress_warning_<?php echo $FeedSlug; ?>" style="display:none;"></div>
|
195 |
<div class="success below-h2" id="powerpress_success_<?php echo $FeedSlug; ?>" style="display:none;"></div>
|
196 |
<div class="powerpress_row">
|
197 |
<label for="Powerpress[<?php echo $FeedSlug; ?>][url]"><?php echo __('Media URL', 'powerpress'); ?></label>
|
191 |
}
|
192 |
?>
|
193 |
<div id="powerpress_podcast_edit_<?php echo $FeedSlug; ?>">
|
194 |
+
<div class="warning error below-h2" id="powerpress_warning_<?php echo $FeedSlug; ?>" style="display:none;"></div>
|
195 |
<div class="success below-h2" id="powerpress_success_<?php echo $FeedSlug; ?>" style="display:none;"></div>
|
196 |
<div class="powerpress_row">
|
197 |
<label for="Powerpress[<?php echo $FeedSlug; ?>][url]"><?php echo __('Media URL', 'powerpress'); ?></label>
|
powerpressadmin-rss-import.php
CHANGED
@@ -107,7 +107,7 @@ class PowerPress_RSS_Podcast_Import extends WP_Importer {
|
|
107 |
?>
|
108 |
</div>
|
109 |
<div id="powerpress-import-advanced-options-off">
|
110 |
-
<p><a href="#" onclick="document.getElementById('powerpress-import-advanced-options-off').style.display='none'; document.getElementById('powerpress-import-advanced-options-on').style.display='block'; return false;"><?php echo __('Advanced options', '
|
111 |
</p>
|
112 |
</div>
|
113 |
<div id="powerpress-import-advanced-options-on" style="display: none;">
|
@@ -879,6 +879,9 @@ class PowerPress_RSS_Podcast_Import extends WP_Importer {
|
|
879 |
$options['user-agent'] = 'Blubrry PowerPress/'.POWERPRESS_VERSION;
|
880 |
if( !empty($_GET['import']) && $_GET['import'] == 'powerpress-squarespace-rss-podcast' )
|
881 |
$options['user-agent'] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36';
|
|
|
|
|
|
|
882 |
$options['timeout'] = 10;
|
883 |
|
884 |
$response = wp_safe_remote_get($_POST['podcast_feed_url'], $options);
|
@@ -886,7 +889,7 @@ class PowerPress_RSS_Podcast_Import extends WP_Importer {
|
|
886 |
echo '<p>'. $response->get_error_message() .'<p>';
|
887 |
return false;
|
888 |
}
|
889 |
-
|
890 |
$this->m_content = wp_remote_retrieve_body( $response );
|
891 |
return true;
|
892 |
}
|
@@ -904,11 +907,11 @@ class PowerPress_RSS_Podcast_Import extends WP_Importer {
|
|
904 |
|
905 |
$powerpress_rss_podcast_import = new PowerPress_RSS_Podcast_Import();
|
906 |
|
907 |
-
register_importer('powerpress-soundcloud-rss-podcast', __('Podcast from SoundCloud', 'powerpress'), __('Import
|
908 |
-
register_importer('powerpress-libsyn-rss-podcast', __('Podcast from LibSyn', 'powerpress'), __('Import
|
909 |
-
register_importer('powerpress-podbean-rss-podcast', __('Podcast from PodBean ', 'powerpress'), __('Import
|
910 |
-
register_importer('powerpress-squarespace-rss-podcast', __('Podcast from Squarespace', 'powerpress'), __('Import
|
911 |
-
register_importer('powerpress-rss-podcast', __('Podcast RSS Feed', 'powerpress'), __('Import
|
912 |
|
913 |
}; // end if WP_Importer exists
|
914 |
|
107 |
?>
|
108 |
</div>
|
109 |
<div id="powerpress-import-advanced-options-off">
|
110 |
+
<p><a href="#" onclick="document.getElementById('powerpress-import-advanced-options-off').style.display='none'; document.getElementById('powerpress-import-advanced-options-on').style.display='block'; return false;"><?php echo __('Advanced options', 'powerpress'); ?></a>
|
111 |
</p>
|
112 |
</div>
|
113 |
<div id="powerpress-import-advanced-options-on" style="display: none;">
|
879 |
$options['user-agent'] = 'Blubrry PowerPress/'.POWERPRESS_VERSION;
|
880 |
if( !empty($_GET['import']) && $_GET['import'] == 'powerpress-squarespace-rss-podcast' )
|
881 |
$options['user-agent'] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36';
|
882 |
+
else if( !empty($_GET['import']) && $_GET['import'] == 'powerpress-podbean-rss-podcast' )
|
883 |
+
$options['user-agent'] = 'iTunes/12.2.2 (Macintosh; OS X 10.10.5) AppleWebKit/600.8.9'; // Common user agent
|
884 |
+
// 'gPodder/3.8.4 (+http://gpodder.org/)';
|
885 |
$options['timeout'] = 10;
|
886 |
|
887 |
$response = wp_safe_remote_get($_POST['podcast_feed_url'], $options);
|
889 |
echo '<p>'. $response->get_error_message() .'<p>';
|
890 |
return false;
|
891 |
}
|
892 |
+
|
893 |
$this->m_content = wp_remote_retrieve_body( $response );
|
894 |
return true;
|
895 |
}
|
907 |
|
908 |
$powerpress_rss_podcast_import = new PowerPress_RSS_Podcast_Import();
|
909 |
|
910 |
+
register_importer('powerpress-soundcloud-rss-podcast', __('Podcast from SoundCloud', 'powerpress'), __('Import episodes from a SoundCloud podcast feed.', 'powerpress'), array ($powerpress_rss_podcast_import, 'dispatch'));
|
911 |
+
register_importer('powerpress-libsyn-rss-podcast', __('Podcast from LibSyn', 'powerpress'), __('Import episodes from a LibSyn podcast feed.', 'powerpress'), array ($powerpress_rss_podcast_import, 'dispatch'));
|
912 |
+
register_importer('powerpress-podbean-rss-podcast', __('Podcast from PodBean ', 'powerpress'), __('Import episodes from a PodBean podcast feed.', 'powerpress'), array ($powerpress_rss_podcast_import, 'dispatch'));
|
913 |
+
register_importer('powerpress-squarespace-rss-podcast', __('Podcast from Squarespace', 'powerpress'), __('Import episodes from a Squarespace podcast feed.', 'powerpress'), array ($powerpress_rss_podcast_import, 'dispatch'));
|
914 |
+
register_importer('powerpress-rss-podcast', __('Podcast RSS Feed', 'powerpress'), __('Import episodes from a RSS podcast feed.', 'powerpress'), array ($powerpress_rss_podcast_import, 'dispatch'));
|
915 |
|
916 |
}; // end if WP_Importer exists
|
917 |
|
powerpressadmin-tools.php
CHANGED
@@ -23,8 +23,8 @@
|
|
23 |
<p style="margin-top: 5px;"><strong><a href="http://create.blubrry.com/support/"><?php echo __('Blubrry Support', 'powerpress'); ?></a></strong>
|
24 |
- <?php echo __('Get support for your podcast!', 'powerpress'); ?></p>
|
25 |
|
26 |
-
<p style="margin-top: 5px;"><strong><a href="
|
27 |
-
- <?php echo __('
|
28 |
</td>
|
29 |
</tr>
|
30 |
|
23 |
<p style="margin-top: 5px;"><strong><a href="http://create.blubrry.com/support/"><?php echo __('Blubrry Support', 'powerpress'); ?></a></strong>
|
24 |
- <?php echo __('Get support for your podcast!', 'powerpress'); ?></p>
|
25 |
|
26 |
+
<p style="margin-top: 5px;"><strong><a href="https://wordpress.org/support/plugin/powerpress"><?php echo __('Blubrry PowerPress Forum', 'powerpress'); ?></a></strong>
|
27 |
+
- <?php echo __('PowerPress support forum on WordPress.org.', 'powerpress'); ?></p>
|
28 |
</td>
|
29 |
</tr>
|
30 |
|
powerpressadmin.php
CHANGED
@@ -2304,35 +2304,38 @@ jQuery(document).ready(function($) {
|
|
2304 |
.powerpress_podcast_box .powerpress_row_content {
|
2305 |
margin-left: 120px;
|
2306 |
}
|
2307 |
-
.powerpress_podcast_box .error
|
2308 |
-
|
2309 |
-
margin-bottom: 10px;
|
2310 |
-
padding: 5px;
|
2311 |
-
font-size: 12px;
|
2312 |
-
border-width: 1px;
|
2313 |
-
border-style: solid;
|
2314 |
-
font-weight: bold;
|
2315 |
-
text-align: center;
|
2316 |
-
}
|
2317 |
.powerpress_podcast_box .success {
|
2318 |
margin-top: 10px;
|
2319 |
margin-bottom: 10px;
|
2320 |
padding: 5px;
|
|
|
2321 |
border-width: 1px;
|
2322 |
border-style: solid;
|
2323 |
font-weight: bold;
|
2324 |
text-align: center;
|
2325 |
-
border-width: 1px;
|
2326 |
-
border-style: solid;
|
2327 |
-moz-border-radius: 3px;
|
2328 |
-khtml-border-radius: 3px;
|
2329 |
-webkit-border-radius: 3px;
|
2330 |
border-radius: 3px;
|
2331 |
-
border-color: #009900;
|
2332 |
-
background-color: #CCFFCC;
|
2333 |
-
font-size: 12px;
|
2334 |
position: relative;
|
2335 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2336 |
.powerpress_podcast_box .success a.close {
|
2337 |
position: absolute;
|
2338 |
top: 2px;
|
@@ -2451,12 +2454,8 @@ function powerpress_get_media_info(FeedSlug)
|
|
2451 |
timeout: (30 * 1000),
|
2452 |
success: function(response) {
|
2453 |
|
2454 |
-
<?php
|
2455 |
-
if( defined('POWERPRESS_AJAX_DEBUG') )
|
2456 |
-
echo "\t\t\t\talert(response);\n";
|
2457 |
-
?>
|
2458 |
-
// This logic will parse beyond warning messages generated by the server that we don't know about
|
2459 |
|
|
|
2460 |
var foundAt = response.indexOf('VERIFY-OK');
|
2461 |
if( foundAt > 0 )
|
2462 |
{
|
@@ -2509,12 +2508,20 @@ function powerpress_get_media_info(FeedSlug)
|
|
2509 |
jQuery( '#powerpress_warning_'+FeedSlug ).css('display', 'block');
|
2510 |
jQuery( '#powerpress_warning_'+FeedSlug ).addClass("updated");
|
2511 |
jQuery( '#powerpress_warning_'+FeedSlug ).removeClass("error");
|
|
|
|
|
|
|
|
|
2512 |
}
|
2513 |
else
|
2514 |
{
|
2515 |
jQuery( '#powerpress_success_'+FeedSlug ).html( '<?php echo __('Media verified successfully.', 'powerpress'); ?> <a href="#" onclick="jQuery( \'#powerpress_success_'+ FeedSlug +'\' ).fadeOut(1000);return false;" title="Close" class="close">X<\/a>' );
|
2516 |
jQuery( '#powerpress_success_'+FeedSlug ).css('display', 'block');
|
2517 |
// setTimeout( function() { jQuery( '#powerpress_success_'+FeedSlug ).fadeOut(1000); }, 10000 );
|
|
|
|
|
|
|
|
|
2518 |
}
|
2519 |
}
|
2520 |
else
|
@@ -2529,25 +2536,58 @@ function powerpress_get_media_info(FeedSlug)
|
|
2529 |
jQuery( '#powerpress_warning_'+FeedSlug ).html( Parts[1] );
|
2530 |
else
|
2531 |
jQuery( '#powerpress_warning_'+FeedSlug ).text( '<?php echo __('Unknown error occurred while checking Media URL.', 'powerpress'); ?>' );
|
|
|
|
|
|
|
|
|
|
|
2532 |
jQuery( '#powerpress_warning_'+FeedSlug ).css('display', 'block');
|
2533 |
}
|
2534 |
},
|
2535 |
-
error: function(objAJAXRequest,
|
2536 |
|
2537 |
-
var
|
|
|
|
|
2538 |
if ( objAJAXRequest.responseText ) {
|
2539 |
-
|
2540 |
}
|
2541 |
|
2542 |
jQuery('#powerpress_check_'+FeedSlug).css("display", 'none');
|
2543 |
-
if(
|
2544 |
jQuery( '#powerpress_warning_'+FeedSlug ).text( '<?php echo __('Operation timed out.', 'powerpress'); ?>' );
|
2545 |
-
|
2546 |
-
|
2547 |
-
|
2548 |
-
|
2549 |
-
else
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2550 |
jQuery( '#powerpress_warning_'+FeedSlug ).text( '<?php echo __('AJAX Error', 'powerpress') .': '. __('Unknown', 'powerpress'); ?>' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2551 |
jQuery( '#powerpress_warning_'+FeedSlug ).css('display', 'block');
|
2552 |
}
|
2553 |
});
|
@@ -2982,7 +3022,7 @@ function powerpress_admin_page_footer($SaveButton=true, $form=true)
|
|
2982 |
<a href="http://create.blubrry.com/manual/" target="_blank" title="<?php echo __('Podcasting Manual', 'powerpress'); ?>"><?php echo __('Podcasting Manual', 'powerpress'); ?></a> |
|
2983 |
<a href="http://create.blubrry.com/resources/" target="_blank" title="<?php echo __('Blubrry PowerPress and related Resources', 'powerpress'); ?>"><?php echo __('Resources', 'powerpress'); ?></a> |
|
2984 |
<a href="http://create.blubrry.com/support/" target="_blank" title="<?php echo __('Blubrry Support', 'powerpress'); ?>"><?php echo __('Support', 'powerpress'); ?></a> |
|
2985 |
-
<a href="
|
2986 |
<a href="http://twitter.com/blubrry" target="_blank" title="<?php echo __('Follow Blubrry on Twitter', 'powerpress'); ?>"><?php echo __('Follow Blubrry on Twitter', 'powerpress'); ?></a>
|
2987 |
</p>
|
2988 |
<?php if( $form ) { ?>
|
2304 |
.powerpress_podcast_box .powerpress_row_content {
|
2305 |
margin-left: 120px;
|
2306 |
}
|
2307 |
+
.powerpress_podcast_box .error,
|
2308 |
+
.powerpress_podcast_box .warning,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2309 |
.powerpress_podcast_box .success {
|
2310 |
margin-top: 10px;
|
2311 |
margin-bottom: 10px;
|
2312 |
padding: 5px;
|
2313 |
+
font-size: 12px;
|
2314 |
border-width: 1px;
|
2315 |
border-style: solid;
|
2316 |
font-weight: bold;
|
2317 |
text-align: center;
|
|
|
|
|
2318 |
-moz-border-radius: 3px;
|
2319 |
-khtml-border-radius: 3px;
|
2320 |
-webkit-border-radius: 3px;
|
2321 |
border-radius: 3px;
|
|
|
|
|
|
|
2322 |
position: relative;
|
2323 |
}
|
2324 |
+
.powerpress_podcast_box .warning {
|
2325 |
+
color: #8a6d3b;
|
2326 |
+
border-color: #faebcc;
|
2327 |
+
background-color: #fcf8e3;
|
2328 |
+
}
|
2329 |
+
.powerpress_podcast_box .error {
|
2330 |
+
color: #a94442;
|
2331 |
+
border-color: #ebccd1;
|
2332 |
+
background-color: #f2dede;
|
2333 |
+
}
|
2334 |
+
.powerpress_podcast_box .success {
|
2335 |
+
color: #3c763d;
|
2336 |
+
border-color: #d6e9c6;
|
2337 |
+
background-color: #dff0d8;
|
2338 |
+
}
|
2339 |
.powerpress_podcast_box .success a.close {
|
2340 |
position: absolute;
|
2341 |
top: 2px;
|
2454 |
timeout: (30 * 1000),
|
2455 |
success: function(response) {
|
2456 |
|
|
|
|
|
|
|
|
|
|
|
2457 |
|
2458 |
+
// This logic will parse beyond warning messages generated by the server that we don't know about
|
2459 |
var foundAt = response.indexOf('VERIFY-OK');
|
2460 |
if( foundAt > 0 )
|
2461 |
{
|
2508 |
jQuery( '#powerpress_warning_'+FeedSlug ).css('display', 'block');
|
2509 |
jQuery( '#powerpress_warning_'+FeedSlug ).addClass("updated");
|
2510 |
jQuery( '#powerpress_warning_'+FeedSlug ).removeClass("error");
|
2511 |
+
<?php
|
2512 |
+
if( defined('POWERPRESS_AJAX_DEBUG') )
|
2513 |
+
echo "\t\t\t\tjQuery( '#powerpress_warning_'+FeedSlug ).append( '<br/>Complete Response: '+ response);\n";
|
2514 |
+
?>
|
2515 |
}
|
2516 |
else
|
2517 |
{
|
2518 |
jQuery( '#powerpress_success_'+FeedSlug ).html( '<?php echo __('Media verified successfully.', 'powerpress'); ?> <a href="#" onclick="jQuery( \'#powerpress_success_'+ FeedSlug +'\' ).fadeOut(1000);return false;" title="Close" class="close">X<\/a>' );
|
2519 |
jQuery( '#powerpress_success_'+FeedSlug ).css('display', 'block');
|
2520 |
// setTimeout( function() { jQuery( '#powerpress_success_'+FeedSlug ).fadeOut(1000); }, 10000 );
|
2521 |
+
<?php
|
2522 |
+
if( defined('POWERPRESS_AJAX_DEBUG') )
|
2523 |
+
echo "\t\t\t\tjQuery( '#powerpress_success_'+FeedSlug ).append( '<br/>Complete Response: '+ response);\n";
|
2524 |
+
?>
|
2525 |
}
|
2526 |
}
|
2527 |
else
|
2536 |
jQuery( '#powerpress_warning_'+FeedSlug ).html( Parts[1] );
|
2537 |
else
|
2538 |
jQuery( '#powerpress_warning_'+FeedSlug ).text( '<?php echo __('Unknown error occurred while checking Media URL.', 'powerpress'); ?>' );
|
2539 |
+
|
2540 |
+
<?php
|
2541 |
+
if( defined('POWERPRESS_AJAX_DEBUG') )
|
2542 |
+
echo "\t\t\t\tjQuery( '#powerpress_warning_'+FeedSlug ).append( '<br/>Complete Response: '+ response);\n";
|
2543 |
+
?>
|
2544 |
jQuery( '#powerpress_warning_'+FeedSlug ).css('display', 'block');
|
2545 |
}
|
2546 |
},
|
2547 |
+
error: function(objAJAXRequest, textStatus, errorThrown) {
|
2548 |
|
2549 |
+
var errorCode = objAJAXRequest.status;
|
2550 |
+
var errorMsg = objAJAXRequest.statusText;
|
2551 |
+
var responseClean = '';
|
2552 |
if ( objAJAXRequest.responseText ) {
|
2553 |
+
responseClean = objAJAXRequest.responseText.replace( /<.[^<>]*?>/g, '' );
|
2554 |
}
|
2555 |
|
2556 |
jQuery('#powerpress_check_'+FeedSlug).css("display", 'none');
|
2557 |
+
if( textStatus == 'timeout' ) {
|
2558 |
jQuery( '#powerpress_warning_'+FeedSlug ).text( '<?php echo __('Operation timed out.', 'powerpress'); ?>' );
|
2559 |
+
}
|
2560 |
+
else if( textStatus == 'error' ) {
|
2561 |
+
jQuery( '#powerpress_warning_'+FeedSlug ).html( errorCode +' - '+ errorThrown +'<br />');
|
2562 |
+
}
|
2563 |
+
else if( textStatus == 'abort' ) {
|
2564 |
+
jQuery( '#powerpress_warning_'+FeedSlug ).text( '<?php echo __('Operation aborted.', 'powerpress'); ?>' );
|
2565 |
+
}
|
2566 |
+
else if( textStatus == 'parsererror' ) {
|
2567 |
+
jQuery( '#powerpress_warning_'+FeedSlug ).text( '<?php echo __('Parse error occurred.', 'powerpress'); ?>' );
|
2568 |
+
}
|
2569 |
+
else if( textStatus != null ) {
|
2570 |
+
jQuery( '#powerpress_warning_'+FeedSlug ).text( '<?php echo __('AJAX Error', 'powerpress') .': '; ?>'+textStatus );
|
2571 |
+
}
|
2572 |
+
else if( errorMsg ) {
|
2573 |
+
jQuery( '#powerpress_warning_'+FeedSlug ).text( +errorMsg );
|
2574 |
+
}
|
2575 |
+
else {
|
2576 |
jQuery( '#powerpress_warning_'+FeedSlug ).text( '<?php echo __('AJAX Error', 'powerpress') .': '. __('Unknown', 'powerpress'); ?>' );
|
2577 |
+
}
|
2578 |
+
|
2579 |
+
if( textStatus != 'error' && errorThrown ) { // If we have an error thrown, lets append it to the error message
|
2580 |
+
jQuery('#powerpress_warning_'+FeedSlug).append('<br/>'+errorThrown);
|
2581 |
+
}
|
2582 |
+
|
2583 |
+
<?php
|
2584 |
+
if( defined('POWERPRESS_AJAX_DEBUG') ) {
|
2585 |
+
echo "\t\t\tif( objAJAXRequest.responseText ) {\n";
|
2586 |
+
echo "\t\t\t\tjQuery('#powerpress_warning_'+FeedSlug).text( jQuery('#powerpress_warning_'+FeedSlug).text() +' - Response: '+ objAJAXRequest.responseText);\n";
|
2587 |
+
echo "\t\t\t}\n";
|
2588 |
+
}
|
2589 |
+
?>
|
2590 |
+
|
2591 |
jQuery( '#powerpress_warning_'+FeedSlug ).css('display', 'block');
|
2592 |
}
|
2593 |
});
|
3022 |
<a href="http://create.blubrry.com/manual/" target="_blank" title="<?php echo __('Podcasting Manual', 'powerpress'); ?>"><?php echo __('Podcasting Manual', 'powerpress'); ?></a> |
|
3023 |
<a href="http://create.blubrry.com/resources/" target="_blank" title="<?php echo __('Blubrry PowerPress and related Resources', 'powerpress'); ?>"><?php echo __('Resources', 'powerpress'); ?></a> |
|
3024 |
<a href="http://create.blubrry.com/support/" target="_blank" title="<?php echo __('Blubrry Support', 'powerpress'); ?>"><?php echo __('Support', 'powerpress'); ?></a> |
|
3025 |
+
<a href="https://wordpress.org/support/plugin/powerpress" target="_blank" title="<?php echo __('Blubrry PowerPress Forum', 'powerpress'); ?>"><?php echo __('Forum', 'powerpress'); ?></a> |
|
3026 |
<a href="http://twitter.com/blubrry" target="_blank" title="<?php echo __('Follow Blubrry on Twitter', 'powerpress'); ?>"><?php echo __('Follow Blubrry on Twitter', 'powerpress'); ?></a>
|
3027 |
</p>
|
3028 |
<?php if( $form ) { ?>
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
Contributors: amandato, blubrry
|
3 |
Tags: powerpress, podcasting, podcast, podcaster, itunes, google play music, google play, enclosure, professional, apple, apple tv, ipad, iphone, soundcloud, squarespace, youtube, viddler, ustream, podcasting, audio, video, rss2, feed, player, media, rss, mp3, music, embed, feedburner, statistics, stats, flv, flash, id3, episodes, blubrry, mp4, m4v, wordpressmu, mu, wordpress mu, multisite, multi site, mediacaster, post, plugin, posts, simple, social, dashboard, TSG, Buzzsprout, MTR, WP-boxCast, CastMyBlog, tgs podcasting, simple podcasting, seriously simple podcasting, seriously-simple-podcasting, serious, seriously, ssp, podlove, podcast.de, clammr, clammr radio, audio player, stitcher, show, shows, series, docs, documentation, support, free, add-ons, extensions, addons, libsyn, libsyn-podcasting, podbean, podomatic, spreaker
|
4 |
Requires at least: 3.6
|
5 |
-
Tested up to: 4.
|
6 |
-
Stable tag: 6.3.
|
7 |
Donate link: https://www.patreon.com/blubrry?ty=h
|
8 |
License: GPLv2 or later
|
9 |
|
@@ -127,7 +127,7 @@ Interested translators please [contact us](https://www.blubrry.com/contact/#tran
|
|
127 |
= Need Help? =
|
128 |
. . . or have some ideas that could improve the plugin?
|
129 |
|
130 |
-
* Visit the Blubrry [
|
131 |
* Use the Blubrry [Contact Us](http://www.blubrry.com/contact.php) form
|
132 |
* Blubrry [PowerPress Documentation](http://create.blubrry.com/resources/powerpress/)
|
133 |
* Check out [The Podcasting Manual](http://create.blubrry.com/manual/) - everything you need to know about podcasting
|
@@ -226,6 +226,22 @@ To install Blubrry PowerPress manually, follow these steps:
|
|
226 |
= Become a PowerPress Patron! =
|
227 |
Help support your favorite podcasting plugin via Patreon. [Visit Blubrry's Patreon page](https://www.patreon.com/blubrry?ty=h)
|
228 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
= 6.3.2 =
|
230 |
* Released on 2/21/2016
|
231 |
* Added import podcast from Squarespace option (thanks Steve for bringing to our attention that importing from Squarespace requires added logic)
|
@@ -239,6 +255,7 @@ Help support your favorite podcasting plugin via Patreon. [Visit Blubrry's Patre
|
|
239 |
* Added width and height attributes to img tag for the HTML5 audio player image. (Thanks Eduard for the patch and information about the Accelerated Mobile Pages Project!)
|
240 |
* Fixed tab control styling when other themes or plugins use newer versions of jquery-ui.
|
241 |
* Added dismissable notification message to alert PowerPress users of the latest iTunes changes.
|
|
|
242 |
|
243 |
|
244 |
= 6.3.1 =
|
2 |
Contributors: amandato, blubrry
|
3 |
Tags: powerpress, podcasting, podcast, podcaster, itunes, google play music, google play, enclosure, professional, apple, apple tv, ipad, iphone, soundcloud, squarespace, youtube, viddler, ustream, podcasting, audio, video, rss2, feed, player, media, rss, mp3, music, embed, feedburner, statistics, stats, flv, flash, id3, episodes, blubrry, mp4, m4v, wordpressmu, mu, wordpress mu, multisite, multi site, mediacaster, post, plugin, posts, simple, social, dashboard, TSG, Buzzsprout, MTR, WP-boxCast, CastMyBlog, tgs podcasting, simple podcasting, seriously simple podcasting, seriously-simple-podcasting, serious, seriously, ssp, podlove, podcast.de, clammr, clammr radio, audio player, stitcher, show, shows, series, docs, documentation, support, free, add-ons, extensions, addons, libsyn, libsyn-podcasting, podbean, podomatic, spreaker
|
4 |
Requires at least: 3.6
|
5 |
+
Tested up to: 4.5
|
6 |
+
Stable tag: 6.3.3
|
7 |
Donate link: https://www.patreon.com/blubrry?ty=h
|
8 |
License: GPLv2 or later
|
9 |
|
127 |
= Need Help? =
|
128 |
. . . or have some ideas that could improve the plugin?
|
129 |
|
130 |
+
* Visit the Blubrry [PowerPress Forum](https://wordpress.org/support/plugin/powerpress) and [Blubrry Resources](http://create.blubrry.com/resources/)
|
131 |
* Use the Blubrry [Contact Us](http://www.blubrry.com/contact.php) form
|
132 |
* Blubrry [PowerPress Documentation](http://create.blubrry.com/resources/powerpress/)
|
133 |
* Check out [The Podcasting Manual](http://create.blubrry.com/manual/) - everything you need to know about podcasting
|
226 |
= Become a PowerPress Patron! =
|
227 |
Help support your favorite podcasting plugin via Patreon. [Visit Blubrry's Patreon page](https://www.patreon.com/blubrry?ty=h)
|
228 |
|
229 |
+
= 6.3.3 =
|
230 |
+
* Released on 4/2/2016
|
231 |
+
* Improved feed import for PodBean users (they appear to be blocking user agents like SquareSpace)
|
232 |
+
* Adding <br /> to new lines for iTunes summary so new lines appear on iTunes desktop app (Thanks Daniel for input!)
|
233 |
+
* Added additional code to handle ajax verify media URL errors.
|
234 |
+
* Added Feed setting option `Do not allow other plugins to modify podcast feeds.`.
|
235 |
+
* Added Feed setting option `Include RSS Image in feeds.`, default is enabled. For themes that set their own site icon in the feeds.
|
236 |
+
* Added logic to handle post type podcast only feeds. (Thanks Alan for helping us debug!)
|
237 |
+
* Added logic to prevent featured episode from appearing on custom post type feeds.
|
238 |
+
* Fixed bug with post type podcasting channel level feed settings not applying correctly when using slug `podcast`. (Thanks Joe for pointing out the issue)
|
239 |
+
* Fixed bug with enhanced itunes summary not displaying in some circumstances. (Thanks Filip for bringing to our attention!)
|
240 |
+
* Podcast Subscribe sidebar widget category podcasting option now accepts category slug values (in addition to the category numeric ID)
|
241 |
+
* Added define option `POWERPRESS_FEED_AUTH_PRINT_WP_ERRORS` to print `wp_authentication` error message when password protected feed authentication fails. This is useful for debugging purposes.
|
242 |
+
* Fixed typos in RSS import page. (Thanks Robin!)
|
243 |
+
|
244 |
+
|
245 |
= 6.3.2 =
|
246 |
* Released on 2/21/2016
|
247 |
* Added import podcast from Squarespace option (thanks Steve for bringing to our attention that importing from Squarespace requires added logic)
|
255 |
* Added width and height attributes to img tag for the HTML5 audio player image. (Thanks Eduard for the patch and information about the Accelerated Mobile Pages Project!)
|
256 |
* Fixed tab control styling when other themes or plugins use newer versions of jquery-ui.
|
257 |
* Added dismissable notification message to alert PowerPress users of the latest iTunes changes.
|
258 |
+
* Enhanced iTunes summary option now formats new lines with <br /> tag for use on iOS podcasts app.
|
259 |
|
260 |
|
261 |
= 6.3.1 =
|