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)