PowerPress Podcasting plugin by Blubrry - Version 7.4.3

Version Description

  • Released on 6/12/2019
  • Updated labels for Subscribe buttons and links in admin.
  • Note: Apple has announced the end of life for iTunes desktop (except for Windows). PowerPress will be removing iTunes desktop specific features where they conflict with the Apple Podcasts iOS app.
  • Enhanced iTunes summary updated, optimized for latest iOS podcasts app. It is now designed for Apple Podcasts iOS app rather than for iTunes desktop. (Thanks Robin for your assistance!)
  • Force feed discovery on homepage only to use default podcast feed for Google Search.
  • Fixed bug with deleting media files hosted on Blubrry Podcast hosting.
  • Fixed bug with posts with revisions being part of the total number of episodes when viewing podcast feeds in PowerPress settings.
  • Fixed bug with skipto position time not getting included in feed show notes. (Thanks @tszt for bringing to our attention!)
Download this release

Release Info

Developer amandato
Plugin Icon 128x128 PowerPress Podcasting plugin by Blubrry
Version 7.4.3
Comparing to
See all releases

Code changes from version 7.4.2 to 7.4.3

feed-podcast.php CHANGED
@@ -16,13 +16,24 @@
16
17
global $post;
18
$content = $post->post_content;
19
$content = wptexturize($content);
20
- $content = convert_smilies($content);
21
$content = wpautop($content);
22
- $content = shortcode_unautop($content);
23
$content = prepend_attachment($content);
24
- //$content = wp_make_content_images_responsive($content);
25
$content = capital_P_dangit($content);
26
$content = strip_shortcodes( $content );
27
$content = str_replace(']]>', ']]>', $content);
28
@@ -50,7 +61,12 @@
50
}
51
$output = strip_tags($post->post_excerpt);
52
if ( $output == '') {
53
- $output = strip_shortcodes( $post->post_content );
54
$output = str_replace(']]>', ']]>', $output);
55
$output = strip_tags($output);
56
}
16
17
global $post;
18
$content = $post->post_content;
19
+ if( function_exists('do_blocks') )
20
+ $content = do_blocks($content);
21
$content = wptexturize($content);
22
$content = wpautop($content);
23
+ $content = shortcode_unautop($content); // Why do we do this?
24
$content = prepend_attachment($content);
25
+ if( function_exists('wp_make_content_images_responsive') )
26
+ $content = wp_make_content_images_responsive($content);
27
+
28
+ $shortcodesTemp = $GLOBALS['shortcode_tags'];
29
+ $GLOBALS['shortcode_tags']['skipto'] = 'powerpress_shortcode_skipto';
30
+ $content = do_shortcode($content);
31
+ $GLOBALS['shortcode_tags'] = $shortcodesTemp;
32
+
33
$content = capital_P_dangit($content);
34
+
35
+ $content = convert_smilies($content);
36
+
37
$content = strip_shortcodes( $content );
38
$content = str_replace(']]>', ']]>', $content);
39
61
}
62
$output = strip_tags($post->post_excerpt);
63
if ( $output == '') {
64
+ $output = $post->post_content;
65
+ $shortcodesTemp = $GLOBALS['shortcode_tags'];
66
+ $GLOBALS['shortcode_tags']['skipto'] = 'powerpress_shortcode_skipto';
67
+ $output = do_shortcode($output);
68
+ $GLOBALS['shortcode_tags'] = $shortcodesTemp;
69
+ $output = strip_shortcodes( $output );
70
$output = str_replace(']]>', ']]>', $output);
71
$output = strip_tags($output);
72
}
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 Apple Podcasts (previously iTunes), Google Podcasts, Spotify, Stitcher, and Blubrry Podcasting directories, as well as all podcast applications and clients.
6
- Version: 7.4.2
7
Author: Blubrry
8
Author URI: http://www.blubrry.com/
9
Requires at least: 3.6
10
- Tested up to: 5.1.1
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
}
36
37
// WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
38
- define('POWERPRESS_VERSION', '7.4.2' );
39
40
// Translation support:
41
if ( !defined('POWERPRESS_ABSPATH') )
@@ -419,16 +419,45 @@ function powerpress_pinw(pinw_url){window.open(pinw_url, 'PowerPressPlayer','too
419
420
if( !empty($Powerpress['feed_links']) )
421
{
422
- // Loop through podcast feeds and display them here
423
- foreach( $Powerpress['custom_feeds'] as $feed_slug=> $title )
424
- {
425
$href = get_feed_link($feed_slug);
426
- if ( isset($title) && isset($href) )
427
- echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . esc_attr( $title ) . '" href="' . esc_url( $href ) . '" />' . "\n";
428
}
429
- reset($Powerpress['custom_feeds']);
430
-
431
- // TODO: Add logic to add category, post type and taxonomy feeds as well
432
}
433
}
434
@@ -528,9 +557,17 @@ function powerpress_rss2_head()
528
{
529
if( is_category() )
530
$Feed['url'] = get_category_link($cat_ID);
531
- else
532
$Feed['url'] = get_bloginfo('url');
533
}
534
535
$General = get_option('powerpress_general');
536
@@ -1111,10 +1148,24 @@ function powerpress_bloginfo_rss($content, $field = '')
1111
}
1112
}; break;
1113
case 'url': {
1114
if( !empty($Feed['url']) )
1115
return trim($Feed['url']);
1116
- else if( is_category() )
1117
return get_category_link( get_query_var('cat') );
1118
}; break;
1119
case 'name': { // As of wp 4.4+ title is handled by get_the_title_rss completely.
1120
if( !empty($Feed['title']) )
@@ -1566,6 +1617,9 @@ function powerpress_init()
1566
//add_filter( 'get_wp_title_rss', 'wp_encode_emoji' );
1567
}
1568
}
1569
}
1570
1571
add_action('init', 'powerpress_init', -100); // We need to add the feeds before other plugins start screwing with them
@@ -2564,7 +2618,14 @@ function powerpress_get_the_exerpt($for_summary = false, $no_filters = false, $p
2564
$post = get_post($post_id);
2565
$subtitle = $post->post_excerpt;
2566
if ( $subtitle == '') {
2567
- $subtitle = strip_shortcodes( $post->post_content );
2568
$subtitle = str_replace(']]>', ']]&gt;', $subtitle);
2569
$subtitle = strip_tags($subtitle);
2570
}
@@ -2573,7 +2634,15 @@ function powerpress_get_the_exerpt($for_summary = false, $no_filters = false, $p
2573
{
2574
$subtitle = $GLOBALS['post']->post_excerpt;
2575
if ( $subtitle == '') {
2576
- $subtitle = strip_shortcodes( $GLOBALS['post']->post_content );
2577
$subtitle = str_replace(']]>', ']]&gt;', $subtitle);
2578
$subtitle = strip_tags($subtitle);
2579
}
@@ -2592,18 +2661,25 @@ function powerpress_get_the_content($for_summary = true, $no_filters = false, $n
2592
if( $no_filters ) {
2593
global $post;
2594
$content_no_html = $post->post_content;
2595
- $content_no_html = strip_shortcodes( $content_no_html );
2596
$content_no_html = str_replace(']]>', ']]&gt;', $content_no_html);
2597
$content_no_html = wp_staticize_emoji( _oembed_filter_feed_content( $content_no_html ) );
2598
} else {
2599
$content_no_html = get_the_content();
2600
}
2601
$content_no_html = strip_shortcodes( $content_no_html );
2602
if( $no_strip_tags )
2603
return $content_no_html;
2604
2605
if( $for_summary ) {
2606
- return trim( strip_tags($content_no_html, '<a><p><br>') );
2607
}
2608
return trim( strip_tags($content_no_html) );
2609
}
@@ -2615,8 +2691,8 @@ function powerpress_enhanced_itunes_summary($no_filters = false)
2615
} else {
2616
$summary = apply_filters( 'the_content', powerpress_get_the_content(false, $no_filters, true) );
2617
}
2618
- $summary = str_replace("<li>", '<li>* ', $summary);
2619
- $summary = strip_tags($summary, '<a><br>'); // We can leave a tags for itunes:summary, this will also strip CDATA tags
2620
return $summary;
2621
}
2622
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 Apple Podcasts (previously iTunes), Google Podcasts, Spotify, Stitcher, and Blubrry Podcasting directories, as well as all podcast applications and clients.
6
+ Version: 7.4.3
7
Author: Blubrry
8
Author URI: http://www.blubrry.com/
9
Requires at least: 3.6
10
+ Tested up to: 5.2.2
11
Text Domain: powerpress
12
Change Log:
13
Please see readme.txt for detailed change log.
35
}
36
37
// WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
38
+ define('POWERPRESS_VERSION', '7.4.3' );
39
40
// Translation support:
41
if ( !defined('POWERPRESS_ABSPATH') )
419
420
if( !empty($Powerpress['feed_links']) )
421
{
422
+ if( is_home() ) {
423
+ $feed_slug = 'podcast';
424
$href = get_feed_link($feed_slug);
425
+ // Podcast default and channel feed settings
426
+ $Settings = get_option('powerpress_feed_'. $feed_slug);
427
+
428
+ if( empty($Settings) && $feed_slug == 'podcast' )
429
+ $Settings = get_option('powerpress_feed'); // Get the main feed settings
430
+
431
+ if( empty($Settings['title']) )
432
+ $Settings['title'] = get_bloginfo_rss('name'); // Get blog title
433
+
434
+ // Get the default podcast feed...
435
+ echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . esc_attr( $Settings['title'] ) . '" href="' . esc_url( $href ) . '" />' . "\n";
436
+ } else if( is_category() ) {
437
+
438
+ $category_id = get_query_var('cat');
439
+ if( $category_id ) {
440
+ $Settings = get_option('powerpress_cat_feed_'.$category_id );
441
+ if( empty($Settings['title']) ) {
442
+ $Settings['title'] = get_cat_name( $category_id ); // Get category title
443
+ $Settings['title'] .= ' '. apply_filters( 'document_title_separator', '-' ) .' ';
444
+ $Settings['title'] .= get_bloginfo_rss('name');
445
+ }
446
+ if( empty($Settings['title']) ) {
447
+ $Settings['title'] = get_bloginfo_rss('name'); // Get blog title, best we can do
448
+ }
449
+
450
+ if( !empty($Settings['feed_redirect_url']) )
451
+ $Settings['feed_url'] = $Settings['feed_redirect_url'];
452
+ else if( !empty($General['cat_casting_podcast_feeds']) )
453
+ $Settings['feed_url'] = get_category_feed_link($category_id, 'podcast');
454
+ else
455
+ $Settings['feed_url'] = get_category_feed_link( $category_id ); // Get category feed URL
456
+
457
+ // Get the category podcast feed...
458
+ echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . esc_attr( $Settings['title'] ) . '" href="' . esc_url( $Settings['feed_url'] ) . '" />' . "\n";
459
+ }
460
}
461
}
462
}
463
557
{
558
if( is_category() )
559
$Feed['url'] = get_category_link($cat_ID);
560
+ else {
561
+
562
+ $blogHomepage = get_option('page_for_posts');
563
+ if( !empty($blogHomepage) ) {
564
+ $Feed['url'] = get_permalink( $blogHomepage );
565
+ }
566
+
567
+ if( empty($Feed['url']) )
568
$Feed['url'] = get_bloginfo('url');
569
}
570
+ }
571
572
$General = get_option('powerpress_general');
573
1148
}
1149
}; break;
1150
case 'url': {
1151
+ // If the website URL is set for this podcast then lets use it...
1152
if( !empty($Feed['url']) )
1153
return trim($Feed['url']);
1154
+
1155
+ if( is_category() ) {
1156
return get_category_link( get_query_var('cat') );
1157
+ } else {
1158
+ $urlTemp = '';
1159
+ $blogHomepage = get_option('page_for_posts');
1160
+ if( !empty($blogHomepage) ) {
1161
+ $urlTemp = get_permalink( $blogHomepage );
1162
+ }
1163
+
1164
+ if( empty($urlTemp) )
1165
+ $urlTemp = get_bloginfo('url');
1166
+ if( !empty($urlTemp) )
1167
+ return $urlTemp;
1168
+ }
1169
}; break;
1170
case 'name': { // As of wp 4.4+ title is handled by get_the_title_rss completely.
1171
if( !empty($Feed['title']) )
1617
//add_filter( 'get_wp_title_rss', 'wp_encode_emoji' );
1618
}
1619
}
1620
+
1621
+ remove_action( 'wp_head', 'feed_links', 2 );
1622
+ remove_action( 'wp_head', 'feed_links_extra', 3 );
1623
}
1624
1625
add_action('init', 'powerpress_init', -100); // We need to add the feeds before other plugins start screwing with them
2618
$post = get_post($post_id);
2619
$subtitle = $post->post_excerpt;
2620
if ( $subtitle == '') {
2621
+
2622
+ $subtitle = $post->post_content;
2623
+ $shortcodesTemp = $GLOBALS['shortcode_tags'];
2624
+ $GLOBALS['shortcode_tags']['skipto'] = 'powerpress_shortcode_skipto';
2625
+ $subtitle = do_shortcode($subtitle);
2626
+ $GLOBALS['shortcode_tags'] = $shortcodesTemp;
2627
+
2628
+ $subtitle = strip_shortcodes( $subtitle );
2629
$subtitle = str_replace(']]>', ']]&gt;', $subtitle);
2630
$subtitle = strip_tags($subtitle);
2631
}
2634
{
2635
$subtitle = $GLOBALS['post']->post_excerpt;
2636
if ( $subtitle == '') {
2637
+
2638
+ $subtitle = $GLOBALS['post']->post_content;
2639
+
2640
+ $shortcodesTemp = $GLOBALS['shortcode_tags'];
2641
+ $GLOBALS['shortcode_tags']['skipto'] = 'powerpress_shortcode_skipto';
2642
+ $subtitle = do_shortcode($subtitle);
2643
+ $GLOBALS['shortcode_tags'] = $shortcodesTemp;
2644
+
2645
+ $subtitle = strip_shortcodes( $subtitle );
2646
$subtitle = str_replace(']]>', ']]&gt;', $subtitle);
2647
$subtitle = strip_tags($subtitle);
2648
}
2661
if( $no_filters ) {
2662
global $post;
2663
$content_no_html = $post->post_content;
2664
+
2665
+ $shortcodesTemp = $GLOBALS['shortcode_tags'];
2666
+ $GLOBALS['shortcode_tags']['skipto'] = 'powerpress_shortcode_skipto';
2667
+ $content_no_html = do_shortcode($content_no_html);
2668
+ $GLOBALS['shortcode_tags'] = $shortcodesTemp;
2669
+
2670
+ //$content_no_html = strip_shortcodes( $content_no_html );
2671
$content_no_html = str_replace(']]>', ']]&gt;', $content_no_html);
2672
$content_no_html = wp_staticize_emoji( _oembed_filter_feed_content( $content_no_html ) );
2673
} else {
2674
$content_no_html = get_the_content();
2675
}
2676
+
2677
$content_no_html = strip_shortcodes( $content_no_html );
2678
if( $no_strip_tags )
2679
return $content_no_html;
2680
2681
if( $for_summary ) {
2682
+ return trim( strip_tags($content_no_html, '<a><p><br><ul><li>') );
2683
}
2684
return trim( strip_tags($content_no_html) );
2685
}
2691
} else {
2692
$summary = apply_filters( 'the_content', powerpress_get_the_content(false, $no_filters, true) );
2693
}
2694
+ $summary = str_replace("<li>", '<li>* ', $summary); // Make sure our bullet lists stay nicely formatted.
2695
+ $summary = strip_tags($summary, '<a>'); // We can leave a tags for itunes:summary, this will also strip CDATA tags
2696
return $summary;
2697
}
2698
powerpressadmin-basic.php CHANGED
@@ -1291,27 +1291,20 @@ function powerpressadmin_appearance($General=false, $Feed = false)
1291
</li>
1292
</ul>
1293
1294
- <p style="padding-top:10px;"><input type="checkbox" name="NULL[subscribe_feature_itunes]" value="1" checked disabled /> <label><?php echo __('Subscribe on iTunes', 'powerpress'); ?></label></p>
1295
<div style="margin-left: 24px;">
1296
- <p><?php echo __('Link to your one click iTunes Subscription URL.', 'powerpress'); ?></p>
1297
-
1298
<p><a href="<?php echo 'https://linkmaker.itunes.apple.com/?q='.urlencode( get_bloginfo('name') ); ?>&amp;media=podcasts" target="_blank"><?php echo __('Find your iTunes Subscription URL', 'powerpress'); ?></a></p>
1299
</div>
1300
1301
<p><input type="checkbox" name="NULL[subscribe_feature_android]" value="1" checked disabled /> <label><?php echo __('Subscribe on Android', 'powerpress'); ?></label></p>
1302
<div style="margin-left: 24px;">
1303
- <p><?php echo __('Link to your one click Subscribe on Android URL.', 'powerpress'); ?></p>
1304
<p><a href="http://subscribeonandroid.com/podcasters/" target="_blank"><?php echo __('Learn more about Subscribe on Android', 'powerpress'); ?></a></p>
1305
</div>
1306
1307
<p><input type="hidden" name="General[subscribe_feature_rss]" value="0" /><input type="checkbox" name="General[subscribe_feature_rss]" value="1" id="subscribe_feature_rss" <?php if( !empty($General['subscribe_feature_rss']) || !isset($General['subscribe_feature_rss']) ) echo 'checked '; ?>/> <label for="subscribe_feature_rss"><?php echo __('Subscribe via RSS', 'powerpress'); ?></label></p>
1308
- <div style="margin-left: 24px;">
1309
- <p><?php echo __('Link to your podcast RSS feed.', 'powerpress'); ?></p>
1310
- </div>
1311
1312
<p><input type="checkbox" id="subscribe_feature_email" name="General[subscribe_feature_email]" value="1" <?php if( !empty($General['subscribe_feature_email']) ) echo 'checked '; ?>/> <label for="subscribe_feature_email"><?php echo __('Subscribe By Email', 'powerpress'); ?></label> </p>
1313
<div style="margin-left: 24px;">
1314
- <p><?php echo __('Link to your one click Subscribe by Email URL.', 'powerpress'); ?></p>
1315
<p>
1316
<?php echo __('Subscribe By Email is a service that allows listeners to subscribe to their favorite podcasts by email.', 'powerpress'); ?>
1317
</p>
1291
</li>
1292
</ul>
1293
1294
+ <p style="padding-top:10px;"><input type="checkbox" name="NULL[subscribe_feature_itunes]" value="1" checked disabled /> <label><?php echo __('Subscribe on Apple Podcasts', 'powerpress'); ?></label></p>
1295
<div style="margin-left: 24px;">
1296
<p><a href="<?php echo 'https://linkmaker.itunes.apple.com/?q='.urlencode( get_bloginfo('name') ); ?>&amp;media=podcasts" target="_blank"><?php echo __('Find your iTunes Subscription URL', 'powerpress'); ?></a></p>
1297
</div>
1298
1299
<p><input type="checkbox" name="NULL[subscribe_feature_android]" value="1" checked disabled /> <label><?php echo __('Subscribe on Android', 'powerpress'); ?></label></p>
1300
<div style="margin-left: 24px;">
1301
<p><a href="http://subscribeonandroid.com/podcasters/" target="_blank"><?php echo __('Learn more about Subscribe on Android', 'powerpress'); ?></a></p>
1302
</div>
1303
1304
<p><input type="hidden" name="General[subscribe_feature_rss]" value="0" /><input type="checkbox" name="General[subscribe_feature_rss]" value="1" id="subscribe_feature_rss" <?php if( !empty($General['subscribe_feature_rss']) || !isset($General['subscribe_feature_rss']) ) echo 'checked '; ?>/> <label for="subscribe_feature_rss"><?php echo __('Subscribe via RSS', 'powerpress'); ?></label></p>
1305
1306
<p><input type="checkbox" id="subscribe_feature_email" name="General[subscribe_feature_email]" value="1" <?php if( !empty($General['subscribe_feature_email']) ) echo 'checked '; ?>/> <label for="subscribe_feature_email"><?php echo __('Subscribe By Email', 'powerpress'); ?></label> </p>
1307
<div style="margin-left: 24px;">
1308
<p>
1309
<?php echo __('Subscribe By Email is a service that allows listeners to subscribe to their favorite podcasts by email.', 'powerpress'); ?>
1310
</p>
powerpressadmin-jquery.php CHANGED
@@ -116,21 +116,6 @@ function powerpress_admin_jquery_init()
116
powerpress_admin_jquery_footer();
117
exit;
118
119
- }; // No break here, let this fall thru..
120
- case 'powerpress-jquery-media-delete': {
121
-
122
- if( !current_user_can('edit_posts') )
123
- {
124
- powerpress_admin_jquery_header('Uploader');
125
- powerpress_page_message_add_notice( __('You do not have sufficient permission to upload media.', 'powerpress') );
126
- powerpress_page_message_print();
127
- powerpress_admin_jquery_footer();
128
- exit;
129
- }
130
-
131
- check_admin_referer('powerpress-jquery-media-delete');
132
- $DeleteFile = $_GET['delete'];
133
-
134
}; // No break here, let this fall thru..
135
136
case 'powerpress-jquery-hosting': {
@@ -151,6 +136,22 @@ function powerpress_admin_jquery_init()
151
152
}; break;
153
154
case 'powerpress-jquery-media': {
155
156
if( !current_user_can('edit_posts') )
116
powerpress_admin_jquery_footer();
117
exit;
118
119
}; // No break here, let this fall thru..
120
121
case 'powerpress-jquery-hosting': {
136
137
}; break;
138
139
+ case 'powerpress-jquery-media-delete': {
140
+
141
+ if( !current_user_can('edit_posts') )
142
+ {
143
+ powerpress_admin_jquery_header('Uploader');
144
+ powerpress_page_message_add_notice( __('You do not have sufficient permission to upload media.', 'powerpress') );
145
+ powerpress_page_message_print();
146
+ powerpress_admin_jquery_footer();
147
+ exit;
148
+ }
149
+
150
+ check_admin_referer('powerpress-jquery-media-delete');
151
+ $DeleteFile = $_GET['delete'];
152
+
153
+ }; // No break here, let this fall thru..
154
+
155
case 'powerpress-jquery-media': {
156
157
if( !current_user_can('edit_posts') )
powerpressadmin-pts.php CHANGED
@@ -2,6 +2,17 @@
2
/**
3
* Class PowerPressPostToSocial
4
*/
5
class PowerPressPostToSocial {
6
// member variables
7
@@ -151,7 +162,6 @@ function callUpdateListing( $post_id, $program_keyword, $guid ) {
151
foreach ( $api_url_array as $api_url ) {
152
$response = powerpress_remote_fopen( "{$api_url}social/{$program_keyword}/update-listing.json", $Settings['blubrry_auth'], json_encode( $post_params ) );
153
154
- //mail('cio@rawvoice.com', 'update listing response', $response);
155
if ( $response ) {
156
break;
157
}
@@ -173,7 +183,7 @@ function callUpdateListing( $post_id, $program_keyword, $guid ) {
173
* @param string $program_keyword
174
* @return array|mixed|object|string
175
*/
176
- function callGetSocialOptions( $program_keyword ) {
177
$Settings = get_option( 'powerpress_general' );
178
179
$api_url_array = powerpress_get_api_array();
@@ -272,9 +282,56 @@ function generate_radio( $label, $name, $value, $checked='' ) {
272
return $checkbox;
273
}
274
275
function powerpress_ajax_pts($Settings)
276
{
277
- //$Settings = powerpress_get_settings('powerpress_general');
278
powerpress_admin_jquery_header( __( 'Post to Social', 'powerpress' ) );
279
280
if ( !current_user_can('publish_posts' ) ) {
@@ -313,7 +370,7 @@ function powerpress_ajax_pts($Settings)
313
if ( !is_array( $response ) ) { // an error occurred\
314
echo "<br /><br />";
315
echo $response;
316
- //var_dump($response);
317
exit;
318
}
319
@@ -338,7 +395,7 @@ function powerpress_ajax_pts($Settings)
338
add_post_meta( $post_id, 'podcast-id', $podcast_id, true );
339
340
// get the info necessary to create the post to social form using the `get-social-options` api call
341
- $response = callGetSocialOptions( $program_keyword );
342
343
if ( !is_array( $response ) ) { // a cURL error occurred
344
echo $response;
@@ -361,47 +418,105 @@ function powerpress_ajax_pts($Settings)
361
//else
362
//var_dump($response);
363
?>
364
<script>var linkel = document.createElement('link'); linkel.rel = 'stylesheet'; linkel.href = 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'; document.head.appendChild(linkel);</script>
365
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
366
367
- <form action="admin.php?action=powerpress-jquery-pts-post" method="POST">
368
<input type="hidden" name="podcast-id" value="<?php echo $podcast_id; ?>">
369
<input type="hidden" name="post-id" value="<?php echo $post_id; ?>">
370
<?php
371
- foreach ( $response['social-options'] as $option ) {
372
- echo '<h4>' ."<img src='{$option['social-image']}'>" .$option['social-title'] .'</h4>';
373
-
374
- foreach ( $option['form-data'] as $form_field ) {
375
- if( !isset($form_field['value']) )
376
- $form_field['value'] = '';
377
- if( !isset($form_field['placeholder']) )
378
- $form_field['placeholder'] = '';
379
- if( !isset($form_field['help-text']) )
380
- $form_field['help-text'] = '';
381
- if( !isset($form_field['maxlength']) )
382
- $form_field['maxlength'] = '';
383
- if( !isset($form_field['checked']) )
384
- $form_field['checked'] = '';
385
-
386
- $label = htmlspecialchars( $form_field['label'] );
387
-
388
- if ( $form_field['field-type'] == 'input-text' ) {
389
- $rows = (!empty($form_field['rows']) ? $form_field['rows'] : 1);
390
- echo generate_text_field( $label, $option['social-type'] . '-' . $form_field['name'], $form_field['value'], htmlspecialchars( $form_field['placeholder'] ), htmlspecialchars( $form_field['help-text'] ), $rows, $form_field['maxlength'] );
391
- }
392
- elseif ( $form_field['field-type'] == 'input-checkbox' ) {
393
- echo generate_checkbox( $label, $option['social-type'] . '-' . $form_field['name'], $form_field['value'], $form_field['checked'] );
394
- }
395
- elseif ( $form_field['field-type'] == 'input-radio' ) {
396
- echo generate_radio( $label, $option['social-type'] . '-' . $form_field['name'], $form_field['value'], $form_field['checked'] );
397
- }
398
- }
399
- }
400
?>
401
- <br>
402
- <button type="submit">Submit</button>
403
</form>
404
- <p style="text-align: center;"><a href="#" onclick="self.parent.tb_remove();"><?php echo __( 'Close', 'powerpress' ); ?></a></p>
405
<?php
406
powerpress_admin_jquery_footer();
407
}
@@ -410,7 +525,7 @@ function powerpress_ajax_pts_post($Settings)
410
{
411
powerpress_admin_jquery_header( __( 'Post to Social', 'powerpress' ) );
412
413
- //$Settings = powerpress_get_settings('powerpress_general');
414
415
$api_url_array = powerpress_get_api_array();
416
@@ -423,7 +538,7 @@ function powerpress_ajax_pts_post($Settings)
423
424
$post_data = array();
425
426
- foreach ( $_POST as $key => $value ) {
427
if ( $value ) { // we don't allow empty messages to be posted to social media
428
429
preg_match("/-(\d+)-?/", $key, $matches);
@@ -447,9 +562,35 @@ function powerpress_ajax_pts_post($Settings)
447
448
$post_data[ $social_id ]['social-data'][ $field_name ] = $value;
449
}
450
}
451
452
- $post_params = array( 'podcast-id' => $podcast_id, 'post-data' => $post_data );
453
454
foreach ( $api_url_array as $api_url ) {
455
$response = powerpress_remote_fopen( "{$api_url}social/{$program_keyword}/post.json", $Settings['blubrry_auth'], json_encode( $post_params ) );
2
/**
3
* Class PowerPressPostToSocial
4
*/
5
+
6
+ define('POWERPRESS_POSTED_STATUS_NOT_POSTED_YET', 0);
7
+ define('POWERPRESS_POSTED_STATUS_SUCCESS', 1);
8
+ define('POWERPRESS_POSTED_STATUS_FAILED', 2);
9
+ define('POWERPRESS_POSTED_STATUS_INVALID_CREDENTIALS', 3);
10
+ define('POWERPRESS_POSTED_STATUS_NO_CREDENTIALS', 4);
11
+ define('POWERPRESS_POSTED_STATUS_NOT_AUDIO', 5);
12
+ define('POWERPRESS_POSTED_STATUS_CONVERSION_FAILED', 6);
13
+ define('POWERPRESS_POSTED_STATUS_PROGRAM_ID_NOT_MATCHED', 7);
14
+ define('POWERPRESS_POSTED_STATUS_NOT_SCHEDULED', 8);
15
+
16
class PowerPressPostToSocial {
17
// member variables
18
162
foreach ( $api_url_array as $api_url ) {
163
$response = powerpress_remote_fopen( "{$api_url}social/{$program_keyword}/update-listing.json", $Settings['blubrry_auth'], json_encode( $post_params ) );
164
165
if ( $response ) {
166
break;
167
}
183
* @param string $program_keyword
184
* @return array|mixed|object|string
185
*/
186
+ function callGetSocialOptions( $program_keyword, $podcast_id ) {
187
$Settings = get_option( 'powerpress_general' );
188
189
$api_url_array = powerpress_get_api_array();
282
return $checkbox;
283
}
284
285
+ function displayStatus($isPostedArray)
286
+ {
287
+ $tempStatusArray = $isPostedArray;
288
+
289
+ if (sizeof($tempStatusArray) > 1){
290
+ if (end($tempStatusArray) == 0){
291
+ $tempStatusArray = array($tempStatusArray[0], end($tempStatusArray));
292
+ }
293
+ else {
294
+ $tempStatusArray = array($tempStatusArray[0]);
295
+ }
296
+ }
297
+ foreach($tempStatusArray as $isPosted){
298
+
299
+ if ($isPosted == POWERPRESS_POSTED_STATUS_SUCCESS) { ?>
300
+ <span class="label label-success">Posted!</span>
301
+ <?php return;
302
+
303
+ } else if ($isPosted == POWERPRESS_POSTED_STATUS_NOT_POSTED_YET) { ?>
304
+ <script>post_scheduled_notification.style.display = "block";</script>
305
+
306
+ <?php if (sizeof($isPostedArray) > 1) {?>
307
+ <span class="label label-primary"> Post Rescheduled</span>
308
+
309
+ <?php } else { ?>
310
+ <span class="label label-primary"> Post Scheduled</span>
311
+ <?php } return;
312
+
313
+ } else if ($isPosted == POWERPRESS_POSTED_STATUS_NOT_SCHEDULED) { ?>
314
+
315
+ <?php } else if ($isPosted == POWERPRESS_POSTED_STATUS_CONVERSION_FAILED) { ?>
316
+ <span class="label label-danger">Error occurred: Video creation failed</span>
317
+
318
+ <?php } else if($isPosted == POWERPRESS_POSTED_STATUS_NOT_AUDIO) { ?>
319
+ <span class="label label-danger">Error occurred: Mp3 file required for posting to Youtube</span>
320
+
321
+ <?php } else if ($isPosted == POWERPRESS_POSTED_STATUS_INVALID_CREDENTIALS || $isPosted == POWERPRESS_POSTED_STATUS_NO_CREDENTIALS) { ?>
322
+ <span class="label label-danger">Error occurred: Please re-link your account</span>
323
+
324
+ <?php } else if ($isPosted > POWERPRESS_POSTED_STATUS_SUCCESS) { ?>
325
+ <span class="label label-danger">Error occurred</span>
326
+
327
+ <?php
328
+ }
329
+ }
330
+
331
+ }
332
+
333
function powerpress_ajax_pts($Settings)
334
{
335
powerpress_admin_jquery_header( __( 'Post to Social', 'powerpress' ) );
336
337
if ( !current_user_can('publish_posts' ) ) {
370
if ( !is_array( $response ) ) { // an error occurred\
371
echo "<br /><br />";
372
echo $response;
373
+
374
exit;
375
}
376
395
add_post_meta( $post_id, 'podcast-id', $podcast_id, true );
396
397
// get the info necessary to create the post to social form using the `get-social-options` api call
398
+ $response = callGetSocialOptions( $program_keyword, $podcast_id );
399
400
if ( !is_array( $response ) ) { // a cURL error occurred
401
echo $response;
418
//else
419
//var_dump($response);
420
?>
421
+
422
+ <script language=JavaScript>
423
+
424
+ function check_length(pts_form)
425
+ {
426
+ maxLen = 280 - (pts_form.twitter_link.value.length+1); // max number of characters allowed
427
+ if (pts_form.twitter_content.value.length > maxLen) {
428
+ var msg = "You have reached your maximum limit of characters allowed";
429
+ alert(msg);
430
+ pts_form.twitter_content.value = pts_form.twitter_content.value.substring(0, maxLen);
431
+
432
+ } else {
433
+
434
+ document.getElementById('text_length').innerHTML = maxLen - pts_form.twitter_content.value.length;
435
+ }
436
+ }
437
+
438
+ </script>
439
+
440
<script>var linkel = document.createElement('link'); linkel.rel = 'stylesheet'; linkel.href = 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'; document.head.appendChild(linkel);</script>
441
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
442
443
+ <form action="admin.php?action=powerpress-jquery-pts-post" method="POST" id="pts_form" name="pts_form">
444
<input type="hidden" name="podcast-id" value="<?php echo $podcast_id; ?>">
445
<input type="hidden" name="post-id" value="<?php echo $post_id; ?>">
446
<?php
447
+
448
+ if (!empty($response['accounts']['Twitter'])){
449
+ echo '<h2>' ."<img src='{$response['settings']['twitter_image']}'>" ." Twitter" .'</h2>'; ?>
450
+
451
+ <label>Check the accounts where you want this episode to be posted</label> <br> <?php
452
+ foreach ($response['accounts']['Twitter'] as $meta_id => $account){
453
+ $isPostedToTwitter = $account['status']; ?>
454
+ <label class="checkbox-inline"><input type="checkbox" name="twitter_meta[]"
455
+ value="<?php echo $meta_id ?>" <?php echo ($isPostedToTwitter[0] < POWERPRESS_POSTED_STATUS_FAILED || $isPostedToTwitter[0] == POWERPRESS_POSTED_STATUS_NOT_SCHEDULED) ? 'checked' : '';?> <?php echo ($isPostedToTwitter[0] == POWERPRESS_POSTED_STATUS_SUCCESS) ? 'disabled' : '';?>> <?php echo "@" . $account['twitter_handle']?></label>
456
+ <?php displayStatus($isPostedToTwitter)?><br>
457
+
458
+ <?php } ?>
459
+ <br>
460
+ <input type="hidden" id="twitter_link" name="twitter_link" value="<?php echo $response['settings']['link'] ?>" />
461
+ <textarea onKeyUp=check_length(this.form); class="form-control" rows="2" name="twitter_content" id="twitter_content"
462
+ size="<?php echo 280 - (strlen($response['settings']['link'])); ?>" placeholder="What's happening?" <?php echo ($isPostedToTwitter[0] == POWERPRESS_POSTED_STATUS_SUCCESS || $isPostedToTwitter[0] == POWERPRESS_POSTED_STATUS_NOT_POSTED_YET) ? 'readonly' : '';?>
463
+ ><?php echo (isset($response['accounts']['twitter_posted_array']['content']) ? $response['accounts']['twitter_posted_array']['content'] : '')?></textarea>
464
+ <b>Characters Left: </b><label id="text_length"> <?php echo 280 - (strlen($response['settings']['link'])); ?></label>
465
+ Player URL: <?php echo $response['settings']['link']; ?>
466
+ <?php }
467
+
468
+ if (!empty($response['accounts']['Youtube'])){
469
+ echo '<h2>' ."<img src='{$response['settings']['youtube_image']}'>" ." Youtube" .'</h2>'; ?>
470
+
471
+ <label>Check the accounts where you want this episode to be posted</label> <br> <?php
472
+ foreach ($response['accounts']['Youtube'] as $meta_id => $account){ ?>
473
+ <?php $isPostedToYoutube = $account['status']; ?>
474
+ <label class="checkbox-inline"><input type="checkbox" name="youtube_meta[]"
475
+ value="<?php echo $meta_id ?>" <?php echo ($isPostedToYoutube[0] < POWERPRESS_POSTED_STATUS_FAILED || $isPostedToYoutube[0] == POWERPRESS_POSTED_STATUS_NOT_SCHEDULED) ? 'checked' : '';?> <?php echo ($isPostedToYoutube[0] == POWERPRESS_POSTED_STATUS_SUCCESS) ? 'disabled' : '';?>> <?php echo "as " . $account['youtube_name']?></label>
476
+ <?php displayStatus($isPostedToYoutube); ?><br>
477
+ <?php } ?>
478
+ <br>
479
+ <label for="youtube_title">Video Title</label>
480
+ <textarea class="form-control" rows="1" id="youtube_title" name="youtube_title"
481
+ placeholder="Video title" <?php echo ($isPostedToYoutube[0] == POWERPRESS_POSTED_STATUS_SUCCESS || $isPostedToYoutube[0] == POWERPRESS_POSTED_STATUS_NOT_POSTED_YET) ? 'readonly' : '';?>><?php echo (isset($response['accounts']['youtube_posted_array']['youtube_title']) ? $response['accounts']['youtube_posted_array']['youtube_title'] : '')?></textarea>
482
+ <label for="youtube_description">Youtube description</label>
483
+ <textarea class="form-control" rows="3" id="youtube_description" name="youtube_description"
484
+ placeholder="Youtube description" <?php echo ($isPostedToYoutube[0] == POWERPRESS_POSTED_STATUS_SUCCESS || $isPostedToYoutube[0] == POWERPRESS_POSTED_STATUS_NOT_POSTED_YET) ? 'readonly' : '';?>><?php echo (isset($response['accounts']['youtube_posted_array']['youtube_description']) ? $response['accounts']['youtube_posted_array']['youtube_description'] : '')?></textarea>
485
+ <?php }
486
+
487
+ if (!empty($response['accounts']['Facebook'])){
488
+ echo '<h2>' ."<img src='{$response['settings']['facebook_image']}'>" ." Facebook" .'</h2>'; ?>
489
+
490
+ <label>Check the pages where you want this episode to be posted</label> <br> <?php
491
+ foreach ($response['accounts']['Facebook'] as $meta_id => $account){
492
+ foreach ($account['pages'] as $page){ ?>
493
+ <?php $isPostedToFacebook = $page['status']; ?>
494
+ <label class="checkbox-inline"><input type="checkbox" name="facebook_meta[<?php echo $meta_id ?>][]"
495
+ value="<?php echo $page['name'] ?>" <?php echo ($isPostedToFacebook[0] < POWERPRESS_POSTED_STATUS_FAILED || $isPostedToFacebook[0] == POWERPRESS_POSTED_STATUS_NOT_SCHEDULED) ? 'checked' : '';?> <?php echo ($isPostedToFacebook[0] == POWERPRESS_POSTED_STATUS_SUCCESS) ? 'disabled' : '';?>> <?php echo $page['name'] . " (as " . $account['social_name'] . ")"?></label>
496
+ <?php displayStatus($isPostedToFacebook); ?><br>
497
+ <?php }
498
+ } ?>
499
+ <br>
500
+ <label for="facebook_link">Link to Podcast</label>
501
+ <textarea class="form-control" rows="1" id="facebook_link" name="facebook_link"
502
+ placeholder="Link your podcast here" <?php echo ($isPostedToFacebook[0] == POWERPRESS_POSTED_STATUS_SUCCESS || $isPostedToFacebook[0] == POWERPRESS_POSTED_STATUS_NOT_POSTED_YET) ? 'readonly' : '';?>><?php echo (isset($response['accounts']['facebook_posted_array']['link_to_podcast']) ? $response['accounts']['facebook_posted_array']['link_to_podcast'] : $response['settings']['link']) ?></textarea>
503
+ <br>
504
+ <label for="facebook_description">Post to Facebook</label>
505
+ <textarea class="form-control" rows="3" id="facebook_description" name="facebook_description"
506
+ placeholder="What's on your mind?" <?php echo ($isPostedToFacebook[0] == POWERPRESS_POSTED_STATUS_SUCCESS || $isPostedToFacebook[0] == POWERPRESS_POSTED_STATUS_NOT_POSTED_YET) ? 'readonly' : '';?>><?php echo (isset($response['accounts']['facebook_posted_array']['facebook_description']) ? $response['accounts']['facebook_posted_array']['facebook_description'] : '')?></textarea>
507
+
508
+ <?php }
509
?>
510
+ <hr>
511
+ <small>Disclaimer: By hitting "Post to Selected Media Accounts" you are agreeing to allow Blubrry to post the
512
+ above content on the selected Social Media Accounts.
513
+ </small><br><br>
514
+ <input class="btn btn-sm btn-primary" name="do_update" type="submit"
515
+ value="Post To Selected social media accounts"
516
+ id="post_button" />
517
+ <a href="#" class="btn btn-sm btn-default"
518
+ onclick="self.parent.tb_remove();"><?php echo __( 'Cancel', 'powerpress' ); ?></a>
519
</form>
520
<?php
521
powerpress_admin_jquery_footer();
522
}
525
{
526
powerpress_admin_jquery_header( __( 'Post to Social', 'powerpress' ) );
527
528
+ //$Settings = get_option('powerpress_general');
529
530
$api_url_array = powerpress_get_api_array();
531
538
539
$post_data = array();
540
541
+ /*foreach ( $_POST as $key => $value ) {
542
if ( $value ) { // we don't allow empty messages to be posted to social media
543
544
preg_match("/-(\d+)-?/", $key, $matches);
562
563
$post_data[ $social_id ]['social-data'][ $field_name ] = $value;
564
}
565
+
566
+ }*/
567
+
568
+ if (!empty($_POST['twitter_content'])){
569
+ $post_data['twitter']['accounts'] = $_POST['twitter_meta'];
570
+ $post_data['twitter']['content'] = $_POST['twitter_content'];
571
+ $post_data['twitter']['link'] = $_POST['twitter_link'];
572
+ }
573
+
574
+ if (!empty($_POST['facebook_description'])){
575
+ $post_data['facebook']['accounts'] = $_POST['facebook_meta'];
576
+ $post_data['facebook']['description'] = $_POST['facebook_description'];
577
+
578
+ if (!empty($_POST['facebook_link'])){
579
+ $post_data['facebook']['link'] = $_POST['facebook_link'];
580
+ }
581
+ else {
582
+ $post_data['facebook']['link'] = $_POST['twitter_link'];
583
+ }
584
+ }
585
+
586
+ if (!empty($_POST['youtube_description'])){
587
+ $post_data['youtube']['accounts'] = $_POST['youtube_meta'];
588
+ $post_data['youtube']['description'] = $_POST['youtube_description'];
589
+ $post_data['youtube']['title'] = $_POST['youtube_title'];
590
}
591
592
+
593
+ $post_params = array( 'podcast-id' => $podcast_id, 'post-data' => $post_data, '' );
594
595
foreach ( $api_url_array as $api_url ) {
596
$response = powerpress_remote_fopen( "{$api_url}social/{$program_keyword}/post.json", $Settings['blubrry_auth'], json_encode( $post_params ) );
powerpressadmin.php CHANGED
@@ -3955,7 +3955,7 @@ function powerpress_admin_episodes_per_feed($feed_slug, $post_type='post')
3955
if( $feed_slug != 'podcast' )
3956
$field = '_'. $feed_slug .':enclosure';
3957
global $wpdb;
3958
- if ( $results = $wpdb->get_results("SELECT COUNT(post_id) AS episodes_total FROM $wpdb->postmeta WHERE meta_key = '$field'", ARRAY_A) ) {
3959
if( count($results) )
3960
{
3961
foreach( $results as $key => $row ) {
3955
if( $feed_slug != 'podcast' )
3956
$field = '_'. $feed_slug .':enclosure';
3957
global $wpdb;
3958
+ if ( $results = $wpdb->get_results("SELECT COUNT(post_id) AS episodes_total FROM $wpdb->postmeta WHERE meta_key = '$field' AND post_status <> 'auto-draft' AND post_status <> 'trash' AND post_status <> 'inherit' ", ARRAY_A) ) {
3959
if( count($results) )
3960
{
3961
foreach( $results as $key => $row ) {
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: amandato, blubrry
3
Tags: podcasting, podcast, podcaster, powerpress, itunes, apple, apple podcasts, google podcasts, 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, tunein, show, shows, series, docs, documentation, support, free, add-ons, extensions, addons, libsyn, libsyn-podcasting, podbean, podomatic, spreaker
4
Requires at least: 3.6
5
Requires PHP: 5.2
6
- Tested up to: 5.1.1
7
- Stable tag: 7.4.2
8
Donate link: https://create.blubrry.com/resources/podcast-media-hosting/
9
License: GPLv2 or later
10
@@ -235,6 +235,17 @@ To install Blubrry PowerPress manually, follow these steps:
235
If you are a fan of PowerPress, we would greatly appreciate it if you could take a moment and [leave us a review on WordPress.org](https://wordpress.org/support/plugin/powerpress/reviews/?rate=5#new-post). Your support is greatly appreciated!
236
237
238
= 7.4.2 =
239
* Released on 4/26/2019
240
* Fixed `T_FUNCTION` bug for PHP 5.2 (not an issue if you have PHP 5.3 or newer)
3
Tags: podcasting, podcast, podcaster, powerpress, itunes, apple, apple podcasts, google podcasts, 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, tunein, show, shows, series, docs, documentation, support, free, add-ons, extensions, addons, libsyn, libsyn-podcasting, podbean, podomatic, spreaker
4
Requires at least: 3.6
5
Requires PHP: 5.2
6
+ Tested up to: 5.2.2
7
+ Stable tag: 7.4.3
8
Donate link: https://create.blubrry.com/resources/podcast-media-hosting/
9
License: GPLv2 or later
10
235
If you are a fan of PowerPress, we would greatly appreciate it if you could take a moment and [leave us a review on WordPress.org](https://wordpress.org/support/plugin/powerpress/reviews/?rate=5#new-post). Your support is greatly appreciated!
236
237
238
+ = 7.4.3 =
239
+ * Released on 6/12/2019
240
+ * Updated labels for Subscribe buttons and links in admin.
241
+ * Note: Apple has announced the end of life for iTunes desktop (except for Windows). PowerPress will be removing iTunes desktop specific features where they conflict with the Apple Podcasts iOS app.
242
+ * Enhanced iTunes summary updated, optimized for latest iOS podcasts app. It is now designed for Apple Podcasts iOS app rather than for iTunes desktop. (Thanks Robin for your assistance!)
243
+ * Force feed discovery on homepage only to use default podcast feed for Google Search.
244
+ * Fixed bug with deleting media files hosted on Blubrry Podcast hosting.
245
+ * Fixed bug with posts with revisions being part of the total number of episodes when viewing podcast feeds in PowerPress settings.
246
+ * Fixed bug with skipto position time not getting included in feed show notes. (Thanks @tszt for bringing to our attention!)
247
+
248
+
249
= 7.4.2 =
250
* Released on 4/26/2019
251
* Fixed `T_FUNCTION` bug for PHP 5.2 (not an issue if you have PHP 5.3 or newer)