PowerPress Podcasting plugin by Blubrry - Version 6.0.3

Version Description

  • Released on 5/7/2015
  • Added define option POWERPRESS_DEFAULT_MEDIA_URL to enable the default media URL field.
  • Fixed notice messages being printed when populating category podcasting settings (thanks slapdashcast for bringing to our attention)
  • iTunes image requirements updated, 3000x3000 is now the maximum (previously 2048x2048) for iTunes artwork. 1400x1400 is still the recommended size.
  • Added Subscribe on Android, the one-click subscribe protocol for Android. There are currently 6 Android apps that support Subscribe on Android one-click with more to follow in the coming weeks.
  • PowerPress Playlist Player SQLi injection vulnerability fixed (Thanks Ben Bidner, Security Wrangler @ Automattic.com!)
  • Subscribe tools now use the esc_attr, esc_url and esc_html native WordPress functions (rather than htmlspecialchars).
Download this release

Release Info

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

Code changes from version 6.0.2 to 6.0.3

class.powerpress-subscribe-widget.php CHANGED
@@ -81,6 +81,9 @@ body .pp-ssb-widget a.pp-ssb-btn:hover {
81
  .pp-ssb-widget-modern a.pp-ssb-email {
82
  background-color: #337EC9;
83
  }
 
 
 
84
  .pp-ssb-widget-modern a.pp-ssb-rss {
85
  background-color: #FF8800;
86
  }
@@ -91,7 +94,7 @@ body .pp-ssb-widget a.pp-ssb-btn:hover {
91
  display: inline-block;
92
  vertical-align: middle;
93
  margin-right: 2px;
94
- background-image: url(<?php echo powerpress_get_root_url(); ?>/images/spriteStandard.png);
95
  background-repeat: no-repeat;
96
  background-size: 294px;
97
  }
@@ -104,6 +107,9 @@ body .pp-ssb-widget a.pp-ssb-btn:hover {
104
  .pp-ssb-email .pp-ssb-ic {
105
  background-position: -196px -49px;
106
  }
 
 
 
107
  .pp-ssb-more .pp-ssb-ic {
108
  background-position: -49px -49px;
109
  }
@@ -113,7 +119,7 @@ body .pp-ssb-widget a.pp-ssb-btn:hover {
113
  only screen and (-o-min-device-pixel-ratio: 200/100),
114
  only screen and (min-device-pixel-ratio: 2.0) {
115
  .pp-sub-ic {
116
- background-image: url(<?php echo powerpress_get_root_url(); ?>/images/spriteRetina.png);
117
  }
118
  }
119
  </style>
81
  .pp-ssb-widget-modern a.pp-ssb-email {
82
  background-color: #337EC9;
83
  }
84
+ .pp-ssb-widget-modern a.pp-ssb-android {
85
+ background-color: #6AB344;
86
+ }
87
  .pp-ssb-widget-modern a.pp-ssb-rss {
88
  background-color: #FF8800;
89
  }
94
  display: inline-block;
95
  vertical-align: middle;
96
  margin-right: 2px;
97
+ background-image: url(<?php echo powerpress_get_root_url(); ?>images/spriteStandard.png);
98
  background-repeat: no-repeat;
99
  background-size: 294px;
100
  }
107
  .pp-ssb-email .pp-ssb-ic {
108
  background-position: -196px -49px;
109
  }
110
+ .pp-ssb-android .pp-ssb-ic {
111
+ background-position: -98px -98px;
112
+ }
113
  .pp-ssb-more .pp-ssb-ic {
114
  background-position: -49px -49px;
115
  }
119
  only screen and (-o-min-device-pixel-ratio: 200/100),
120
  only screen and (min-device-pixel-ratio: 2.0) {
121
  .pp-sub-ic {
122
+ background-image: url(<?php echo powerpress_get_root_url(); ?>images/spriteRetina.png);
123
  }
124
  }
125
  </style>
css/subscribe.css CHANGED
@@ -125,6 +125,9 @@ body .pp-sub-widget a:hover {
125
  .pp-sub-widget-modern a.pp-sub-rss {
126
  background-color: #FF8800;
127
  }
 
 
 
128
 
129
  .pp-sub-widget-modern div.pp-sub-h,
130
  .pp-sub-widget-modern p.pp-sub-m-p {
@@ -159,6 +162,9 @@ body .pp-sub-widget a:hover {
159
  .pp-sub-bp .pp-sub-ic {
160
  background-position: -147px 0;
161
  }
 
 
 
162
 
163
  /* Retina-specific stuff here */
164
  @media only screen and (-webkit-min-device-pixel-ratio: 2.0),
125
  .pp-sub-widget-modern a.pp-sub-rss {
126
  background-color: #FF8800;
127
  }
128
+ .pp-sub-widget-modern a.pp-sub-android {
129
+ background-color: #6AB344;
130
+ }
131
 
132
  .pp-sub-widget-modern div.pp-sub-h,
133
  .pp-sub-widget-modern p.pp-sub-m-p {
162
  .pp-sub-bp .pp-sub-ic {
163
  background-position: -147px 0;
164
  }
165
+ .pp-sub-android .pp-sub-ic {
166
+ background-position: -98px -98px;
167
+ }
168
 
169
  /* Retina-specific stuff here */
170
  @media only screen and (-webkit-min-device-pixel-ratio: 2.0),
images/spriteRetina.png CHANGED
Binary file
images/spriteStandard.png CHANGED
Binary file
powerpress-playlist.php CHANGED
@@ -152,19 +152,17 @@ function powerpress_playlist_episodes($args)
152
  if( !empty($TaxonomyObj->term_taxonomy_id) )
153
  $query .= "INNER JOIN {$wpdb->term_relationships} AS tr ON p.ID = tr.object_id ";
154
 
155
- if( $args['slug'] == 'podcast' )
156
- $query .= "WHERE (pm.meta_key = 'enclosure') ";
157
- else
158
- $query .= "WHERE (pm.meta_key = '_".$args['slug'].":enclosure') ";
159
- $query .= "AND p.post_type = '". $args['post_type'] ."' ";
160
  $query .= "AND p.post_status = 'publish' ";
161
  if( !empty($TaxonomyObj->term_taxonomy_id) )
162
  $query .= "AND tr.term_taxonomy_id = '". $TaxonomyObj->term_taxonomy_id ."' ";
163
 
164
  $query .= "GROUP BY p.ID ";
165
  $query .= "ORDER BY p.post_date DESC ";
166
- $query .= "LIMIT 0, ".$args['limit'];
167
 
 
168
  $results_data = $wpdb->get_results($query, ARRAY_A);
169
  if( $results_data )
170
  {
152
  if( !empty($TaxonomyObj->term_taxonomy_id) )
153
  $query .= "INNER JOIN {$wpdb->term_relationships} AS tr ON p.ID = tr.object_id ";
154
 
155
+ $query .= "WHERE (pm.meta_key = %s) ";
156
+ $query .= "AND p.post_type = %s ";
 
 
 
157
  $query .= "AND p.post_status = 'publish' ";
158
  if( !empty($TaxonomyObj->term_taxonomy_id) )
159
  $query .= "AND tr.term_taxonomy_id = '". $TaxonomyObj->term_taxonomy_id ."' ";
160
 
161
  $query .= "GROUP BY p.ID ";
162
  $query .= "ORDER BY p.post_date DESC ";
163
+ $query .= "LIMIT 0, %d";
164
 
165
+ $query = $wpdb->prepare($query, ($args['slug'] == 'podcast'?'enclosure': '_'.$args['slug'].':enclosure'), $args['post_type'], $args['limit'] );
166
  $results_data = $wpdb->get_results($query, ARRAY_A);
167
  if( $results_data )
168
  {
powerpress-subscribe.php CHANGED
@@ -197,15 +197,36 @@ function powerpressplayer_link_subscribe_pre($content, $media_url, $ExtraData =
197
  $itunes_url = preg_replace('/(^https?:\/\/)/i', 'itpc://', $feed_url);
198
 
199
  $player_links = '';
 
200
  if( !empty($itunes_url) ) {
201
- $player_links .= "<a href=\"{$itunes_url}\" class=\"powerpress_link_subscribe powerpress_link_subscribe_itunes\" title=\"". __('Subscribe on iTunes', 'powerpress') ."\" rel=\"nofollow\">". __('iTunes','powerpress') ."</a>".PHP_EOL;
202
- $player_links .= ' '.POWERPRESS_LINK_SEPARATOR .' ';
 
 
 
 
 
 
 
 
 
 
203
  }
204
- $player_links .= "<a href=\"{$feed_url}\" class=\"powerpress_link_subscribe powerpress_link_subscribe_rss\" title=\"". __('Subscribe via RSS', 'powerpress') ."\" rel=\"nofollow\">". __('RSS','powerpress') ."</a>".PHP_EOL;
 
 
 
 
 
 
205
  if( !empty($SubscribeSettings['subscribe_page_url']) )
206
  {
 
 
 
 
 
207
  $label = (empty($SubscribeSettings['subscribe_page_link_text'])?__('More Subscribe Options', 'powerpress'):$SubscribeSettings['subscribe_page_link_text']);
208
- $player_links .= ' '.POWERPRESS_LINK_SEPARATOR .' ';
209
  $player_links .= "<a href=\"{$SubscribeSettings['subscribe_page_url']}\" class=\"powerpress_link_subscribe powerpress_link_subscribe_more\" title=\"". htmlspecialchars($label) ."\" rel=\"nofollow\">". htmlspecialchars($label) ."</a>".PHP_EOL;
210
  }
211
  $content .= $player_links;
@@ -346,7 +367,7 @@ function powerpress_subscribe_shortcode( $attr ) {
346
  $html .= '<div>';
347
  $html .= '';
348
  $html .='<a href="';
349
- $html .= $Settings['itunes_url'];
350
  $html .= '" target="itunes_store" style="display:inline-block;overflow:hidden;background:url(https://linkmaker.itunes.apple.com/htmlResources/assets/en_us//images/web/linkmaker/badge_subscribe-lrg.png) no-repeat;width:135px;height:40px;}"></a>';
351
  $html .= '</div>';
352
  return $html;
@@ -404,35 +425,43 @@ function powerpress_do_subscribe_widget($settings)
404
 
405
  $htmlX = '';
406
  $html = '';
407
- $html .= '<div class="pp-sub-widget pp-sub-widget-'. $settings['style'] .'">';
408
  if( !empty($settings['title']) )
409
  {
410
  if( !isset($settings['heading']) )
411
  $settings['heading'] = __('Subscribe to', 'powerpress');
412
 
413
  if( !empty($settings['heading']) ) {
414
- $html .= '<div class="pp-sub-h">'. htmlspecialchars($settings['heading']) .'</div>'; }
415
- $html .= '<h2 class="pp-sub-t">'. htmlspecialchars( $settings['title'] ) .'</h2>';
416
  }
417
  else
418
  {
419
  $settings['title'] = ''; // Make sure it's an empty string
420
  }
421
  $html .= '<div class="pp-sub-bx">';
422
- $html .= '<img class="pp-sub-l" src="'. htmlspecialchars( $settings['image_url'] ) .'" '. (!empty($settings['title'])?' title="'. htmlspecialchars($settings['title']).'" ':'') .'/>';
423
  $html .= '<div class="pp-sub-btns">';
424
  if( !empty($settings['itunes_url']) ) {
425
- $html .= '<a href="'. htmlspecialchars( $settings['itunes_url'] ) .'" class="pp-sub-btn pp-sub-itunes"><span class="pp-sub-ic"></span>'. htmlspecialchars( __('on iTunes', 'powerpress') ) .'</a>';
426
  }
427
- $html .= '<a href="'. htmlspecialchars( $settings['feed_url'] ) .'" class="pp-sub-btn pp-sub-rss"><span class="pp-sub-ic"></span>'. htmlspecialchars( __('via RSS', 'powerpress') ) .'</a>';
428
- $htmlX .= '<a href="" class="pp-sub-btn pp-sub-email"><span class="pp-sub-ic"></span>'. htmlspecialchars( __('via Email', 'powerpress') ) .'</a>';
429
- $html .= '<a href="'. htmlspecialchars( $settings['feed_url'] ) .'" class="pp-sub-btn pp-sub-bp"><span class="pp-sub-ic"></span>'. htmlspecialchars( __('BeyondPod for Android', 'powerpress') ) .'</a>';
430
- $html .= '<a href="'. htmlspecialchars( $settings['feed_url'] ) .'" class="pp-sub-btn pp-sub-pr"><span class="pp-sub-ic"></span>'. htmlspecialchars( __('Podcast Republic for Android', 'powerpress') ) .'</a>';
 
 
 
 
 
 
 
 
431
  $html .= '</div>';
432
  $html .= '</div>';
433
  $html .= '<div class="pp-sub-m">';
434
- $html .= '<p class="pp-sub-m-p">'. htmlspecialchars( __('Or subscribe with your favorite app by using the address below', 'powerpress') ) .'</p>';
435
- $html .= '<input class="pp-sub-m-i" type="text" name="NULL'. rand(0,9999) .'" value="'. htmlspecialchars( $settings['feed_url'] ) .'" onclick="this.focus();this.select();" />';
436
  $html .= '</div>';
437
  $html .= '</div>';
438
 
@@ -463,14 +492,20 @@ function powerpress_do_subscribe_sidebar_widget($settings)
463
  $htmlX = '';
464
  $html = '';
465
 
466
- $html .= '<div class="pp-ssb-widget pp-ssb-widget-'. $settings['style'] .'">';
467
  if( !empty($settings['itunes_url']) ) {
468
- $html .= '<a href="'. htmlspecialchars( $settings['itunes_url'] ) .'" class="pp-ssb-btn pp-ssb-itunes"><span class="pp-ssb-ic"></span>'. htmlspecialchars( __('on iTunes', 'powerpress') ) .'</a>';
 
 
 
 
 
469
  }
470
- $html .= '<a href="'. htmlspecialchars( $settings['feed_url'] ) .'" class="pp-ssb-btn pp-ssb-rss"><span class="pp-ssb-ic"></span>'. htmlspecialchars( __('via RSS', 'powerpress') ) .'</a>';
471
- $htmlX .= '<a href="" class="pp-ssb-btn pp-ssb-email"><span class="pp-ssb-ic"></span>'. htmlspecialchars( __('via Email', 'powerpress') ) .'</a>';
 
472
  if( !empty($settings['subscribe_page_url']) )
473
- $html .= '<a href="'. htmlspecialchars( $settings['subscribe_page_url'] ) .'" class="pp-ssb-btn pp-ssb-more"><span class="pp-ssb-ic"></span>'. htmlspecialchars( __('More Subscribe Options', 'powerpress') ) .'</a>';
474
  $html .= '</div>';
475
 
476
  return $html;
197
  $itunes_url = preg_replace('/(^https?:\/\/)/i', 'itpc://', $feed_url);
198
 
199
  $player_links = '';
200
+ $separator = false;
201
  if( !empty($itunes_url) ) {
202
+ $player_links .= "<a href=\"". htmlspecialchars($itunes_url) ."\" class=\"powerpress_link_subscribe powerpress_link_subscribe_itunes\" title=\"". __('Subscribe on iTunes', 'powerpress') ."\" rel=\"nofollow\">". __('iTunes','powerpress') ."</a>".PHP_EOL;
203
+ $separator = true;
204
+ }
205
+
206
+ if( preg_match('/^(https?:\/\/)(.*)$/i', $feed_url, $matches ) ) {
207
+ if( $separator )
208
+ $player_links .= ' '.POWERPRESS_LINK_SEPARATOR .' ';
209
+ else
210
+ $separator = true;
211
+
212
+ $android_url = $matches[1] . 'subscribeonandroid.com/' . $matches[2];
213
+ $player_links .= "<a href=\"". htmlspecialchars($android_url) ."\" class=\"powerpress_link_subscribe powerpress_link_subscribe_rss\" title=\"". __('Subscribe on Android', 'powerpress') ."\" rel=\"nofollow\">". __('Android','powerpress') ."</a>".PHP_EOL;
214
  }
215
+
216
+ if( $separator )
217
+ $player_links .= ' '.POWERPRESS_LINK_SEPARATOR .' ';
218
+ else
219
+ $separator = true;
220
+ $player_links .= "<a href=\"". htmlspecialchars($feed_url) ."\" class=\"powerpress_link_subscribe powerpress_link_subscribe_rss\" title=\"". __('Subscribe via RSS', 'powerpress') ."\" rel=\"nofollow\">". __('RSS','powerpress') ."</a>".PHP_EOL;
221
+
222
  if( !empty($SubscribeSettings['subscribe_page_url']) )
223
  {
224
+ if( $separator )
225
+ $player_links .= ' '.POWERPRESS_LINK_SEPARATOR .' ';
226
+ else
227
+ $separator = true;
228
+
229
  $label = (empty($SubscribeSettings['subscribe_page_link_text'])?__('More Subscribe Options', 'powerpress'):$SubscribeSettings['subscribe_page_link_text']);
 
230
  $player_links .= "<a href=\"{$SubscribeSettings['subscribe_page_url']}\" class=\"powerpress_link_subscribe powerpress_link_subscribe_more\" title=\"". htmlspecialchars($label) ."\" rel=\"nofollow\">". htmlspecialchars($label) ."</a>".PHP_EOL;
231
  }
232
  $content .= $player_links;
367
  $html .= '<div>';
368
  $html .= '';
369
  $html .='<a href="';
370
+ $html .= esc_url($Settings['itunes_url']);
371
  $html .= '" target="itunes_store" style="display:inline-block;overflow:hidden;background:url(https://linkmaker.itunes.apple.com/htmlResources/assets/en_us//images/web/linkmaker/badge_subscribe-lrg.png) no-repeat;width:135px;height:40px;}"></a>';
372
  $html .= '</div>';
373
  return $html;
425
 
426
  $htmlX = '';
427
  $html = '';
428
+ $html .= '<div class="pp-sub-widget pp-sub-widget-'. esc_attr($settings['style']) .'">';
429
  if( !empty($settings['title']) )
430
  {
431
  if( !isset($settings['heading']) )
432
  $settings['heading'] = __('Subscribe to', 'powerpress');
433
 
434
  if( !empty($settings['heading']) ) {
435
+ $html .= '<div class="pp-sub-h">'. esc_html($settings['heading']) .'</div>'; }
436
+ $html .= '<h2 class="pp-sub-t">'. esc_html( $settings['title'] ) .'</h2>';
437
  }
438
  else
439
  {
440
  $settings['title'] = ''; // Make sure it's an empty string
441
  }
442
  $html .= '<div class="pp-sub-bx">';
443
+ $html .= '<img class="pp-sub-l" src="'. esc_url( $settings['image_url'] ) .'" '. (!empty($settings['title'])?' title="'. esc_attr($settings['title']).'" ':'') .'/>';
444
  $html .= '<div class="pp-sub-btns">';
445
  if( !empty($settings['itunes_url']) ) {
446
+ $html .= '<a href="'. esc_url( $settings['itunes_url'] ) .'" class="pp-sub-btn pp-sub-itunes"><span class="pp-sub-ic"></span>'. esc_html( __('on iTunes', 'powerpress') ) .'</a>';
447
  }
448
+
449
+ if( preg_match('/^(https?:\/\/)(.*)$/i', $settings['feed_url'], $matches ) ) {
450
+ $android_url = $matches[1] . 'subscribeonandroid.com/' . $matches[2];
451
+ $html .= '<a href="'. esc_url( $android_url ) .'" class="pp-sub-btn pp-sub-android"><span class="pp-sub-ic"></span>'. esc_html( __('on Android', 'powerpress') ) .'</a>';
452
+ }
453
+
454
+ $html .= '<a href="'. esc_url( $settings['feed_url'] ) .'" class="pp-sub-btn pp-sub-rss"><span class="pp-sub-ic"></span>'. esc_html( __('via RSS', 'powerpress') ) .'</a>';
455
+
456
+ // May want these back, not sure.
457
+ //$html .= '<a href="'. esc_url( $settings['feed_url'] ) .'" class="pp-sub-btn pp-sub-bp"><span class="pp-sub-ic"></span>'. esc_html( __('BeyondPod for Android', 'powerpress') ) .'</a>';
458
+ //$html .= '<a href="'. esc_url( $settings['feed_url'] ) .'" class="pp-sub-btn pp-sub-pr"><span class="pp-sub-ic"></span>'. esc_html( __('Podcast Republic for Android', 'powerpress') ) .'</a>';
459
+
460
  $html .= '</div>';
461
  $html .= '</div>';
462
  $html .= '<div class="pp-sub-m">';
463
+ $html .= '<p class="pp-sub-m-p">'. esc_html( __('Or subscribe with your favorite app by using the address below', 'powerpress') ) .'</p>';
464
+ $html .= '<input class="pp-sub-m-i" type="text" name="NULL'. rand(0,9999) .'" value="'. esc_attr( $settings['feed_url'] ) .'" onclick="this.focus();this.select();" />';
465
  $html .= '</div>';
466
  $html .= '</div>';
467
 
492
  $htmlX = '';
493
  $html = '';
494
 
495
+ $html .= '<div class="pp-ssb-widget pp-ssb-widget-'. esc_attr($settings['style']) .'">';
496
  if( !empty($settings['itunes_url']) ) {
497
+ $html .= '<a href="'. esc_url( $settings['itunes_url'] ) .'" class="pp-ssb-btn pp-ssb-itunes"><span class="pp-ssb-ic"></span>'. esc_html( __('on iTunes', 'powerpress') ) .'</a>';
498
+ }
499
+
500
+ if( preg_match('/^(https?:\/\/)(.*)$/i', $settings['feed_url'], $matches ) ) {
501
+ $android_url = $matches[1] . 'subscribeonandroid.com/' . $matches[2];
502
+ $html .= '<a href="'. esc_url( $android_url ) .'" class="pp-ssb-btn pp-ssb-android"><span class="pp-ssb-ic"></span>'. esc_html( __('on Android', 'powerpress') ) .'</a>';
503
  }
504
+
505
+ $html .= '<a href="'. esc_url( $settings['feed_url'] ) .'" class="pp-ssb-btn pp-ssb-rss"><span class="pp-ssb-ic"></span>'. esc_html( __('via RSS', 'powerpress') ) .'</a>';
506
+ $htmlX .= '<a href="" class="pp-ssb-btn pp-ssb-email"><span class="pp--ic"></span>'. esc_html( __('via Email', 'powerpress') ) .'</a>';
507
  if( !empty($settings['subscribe_page_url']) )
508
+ $html .= '<a href="'. esc_url( $settings['subscribe_page_url'] ) .'" class="pp-ssb-btn pp-ssb-more"><span class="pp-ssb-ic"></span>'. esc_html( __('More Subscribe Options', 'powerpress') ) .'</a>';
509
  $html .= '</div>';
510
 
511
  return $html;
powerpress.php CHANGED
@@ -3,7 +3,7 @@
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> adds podcasting support to your blog. Features include: media player, 3rd party statistics, iTunes integration, Blubrry Services (Media Statistics and Hosting) integration and a lot more.
6
- Version: 6.0.2
7
  Author: Blubrry
8
  Author URI: http://www.blubrry.com/
9
  Change Log:
@@ -32,7 +32,7 @@ if( !function_exists('add_action') )
32
  die("access denied.");
33
 
34
  // WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
35
- define('POWERPRESS_VERSION', '6.0.2' );
36
 
37
  // Translation support:
38
  if ( !defined('POWERPRESS_ABSPATH') )
@@ -1498,7 +1498,9 @@ function powerpress_load_general_feed_settings()
1498
  $powerpress_feed['category'] = $cat_ID;
1499
  $powerpress_feed['process_podpress'] = !empty($GeneralSettings['process_podpress']); // Category feeds could originate from Podpress
1500
  $powerpress_feed['rss_language'] = ''; // default, let WordPress set the language
1501
- $powerpress_feed['default_url'] = rtrim($GeneralSettings['default_url'], '/') .'/';
 
 
1502
  $explicit_array = array("no", "yes", "clean");
1503
  $powerpress_feed['explicit'] = $explicit_array[$Feed['itunes_explicit']];
1504
  if( $Feed['itunes_talent_name'] )
@@ -1511,7 +1513,8 @@ function powerpress_load_general_feed_settings()
1511
  $powerpress_feed['posts_per_rss'] = false;
1512
  if( !empty($Feed['posts_per_rss']) && is_numeric($Feed['posts_per_rss']) && $Feed['posts_per_rss'] > 0 )
1513
  $powerpress_feed['posts_per_rss'] = $Feed['posts_per_rss'];
1514
- if( $Feed['feed_redirect_url'] != '' )
 
1515
  $powerpress_feed['feed_redirect_url'] = $Feed['feed_redirect_url'];
1516
  if( $Feed['itunes_author_post'] == true )
1517
  $powerpress_feed['itunes_author_post'] = true;
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> adds podcasting support to your blog. Features include: media player, 3rd party statistics, iTunes integration, Blubrry Services (Media Statistics and Hosting) integration and a lot more.
6
+ Version: 6.0.3
7
  Author: Blubrry
8
  Author URI: http://www.blubrry.com/
9
  Change Log:
32
  die("access denied.");
33
 
34
  // WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
35
+ define('POWERPRESS_VERSION', '6.0.3' );
36
 
37
  // Translation support:
38
  if ( !defined('POWERPRESS_ABSPATH') )
1498
  $powerpress_feed['category'] = $cat_ID;
1499
  $powerpress_feed['process_podpress'] = !empty($GeneralSettings['process_podpress']); // Category feeds could originate from Podpress
1500
  $powerpress_feed['rss_language'] = ''; // default, let WordPress set the language
1501
+ $powerpress_feed['default_url'] = '';
1502
+ if( !empty($GeneralSettings['default_url']) )
1503
+ $powerpress_feed['default_url'] = rtrim($GeneralSettings['default_url'], '/') .'/';
1504
  $explicit_array = array("no", "yes", "clean");
1505
  $powerpress_feed['explicit'] = $explicit_array[$Feed['itunes_explicit']];
1506
  if( $Feed['itunes_talent_name'] )
1513
  $powerpress_feed['posts_per_rss'] = false;
1514
  if( !empty($Feed['posts_per_rss']) && is_numeric($Feed['posts_per_rss']) && $Feed['posts_per_rss'] > 0 )
1515
  $powerpress_feed['posts_per_rss'] = $Feed['posts_per_rss'];
1516
+ $powerpress_feed['feed_redirect_url'] = '';
1517
+ if( !empty($Feed['feed_redirect_url']) )
1518
  $powerpress_feed['feed_redirect_url'] = $Feed['feed_redirect_url'];
1519
  if( $Feed['itunes_author_post'] == true )
1520
  $powerpress_feed['itunes_author_post'] = true;
powerpressadmin-basic.php CHANGED
@@ -478,7 +478,7 @@ SelectEmbedField(<?php echo $General['episode_box_embed']; ?>);
478
  if( !empty($General['hide_warnings']) )
479
  $AdvanecdOptions = true;
480
 
481
- $DefaultMediaURL = (defined('POWERPRESS_DEFAULT_MEDIA_URL')? POWERPRESS_CUSTOM_MEDIA_URL :false);
482
 
483
  if( !empty($General['default_url']) )
484
  $DefaultMediaURL = true;
@@ -489,7 +489,7 @@ SelectEmbedField(<?php echo $General['episode_box_embed']; ?>);
489
  <?php } ?>
490
  <!-- start advanced features -->
491
  <div id="advanced_basic_options" <?php echo ($AdvanecdOptions?'':'style="display:none;"'); ?>>
492
- <?php if( $DefaultMediaURL ) { ?>
493
  <table class="form-table">
494
  <tr valign="top">
495
  <th scope="row"><?php echo __('Default Media URL', 'powerpress'); ?></th>
@@ -1409,7 +1409,7 @@ function powerpressadmin_edit_artwork($FeedSettings, $General)
1409
  <input type="text" id="itunes_image" name="Feed[itunes_image]" style="width: 60%;" value="<?php echo esc_attr( !empty($FeedSettings['itunes_image'])? $FeedSettings['itunes_image']:''); ?>" maxlength="250" />
1410
  <a href="#" onclick="javascript: window.open( document.getElementById('itunes_image').value ); return false;"><?php echo __('preview', 'powerpress'); ?></a>
1411
 
1412
- <p><?php echo __('iTunes image must be at least 1400 x 1400 pixels in .jpg or .png format. iTunes image must not exceed 2048 x 2048 pixels and must use RGB color space.', 'powerpress'); ?> <?php echo __('Example', 'powerpress'); ?>: http://example.com/images/itunes.jpg
1413
  </p>
1414
 
1415
  <p><strong><?php echo __('A square 1400 x 1400 pixel image in .jpg format is recommended.', 'powerpress'); ?></strong></p>
478
  if( !empty($General['hide_warnings']) )
479
  $AdvanecdOptions = true;
480
 
481
+ $DefaultMediaURL = false;
482
 
483
  if( !empty($General['default_url']) )
484
  $DefaultMediaURL = true;
489
  <?php } ?>
490
  <!-- start advanced features -->
491
  <div id="advanced_basic_options" <?php echo ($AdvanecdOptions?'':'style="display:none;"'); ?>>
492
+ <?php if( $DefaultMediaURL || defined('POWERPRESS_DEFAULT_MEDIA_URL') ) { ?>
493
  <table class="form-table">
494
  <tr valign="top">
495
  <th scope="row"><?php echo __('Default Media URL', 'powerpress'); ?></th>
1409
  <input type="text" id="itunes_image" name="Feed[itunes_image]" style="width: 60%;" value="<?php echo esc_attr( !empty($FeedSettings['itunes_image'])? $FeedSettings['itunes_image']:''); ?>" maxlength="250" />
1410
  <a href="#" onclick="javascript: window.open( document.getElementById('itunes_image').value ); return false;"><?php echo __('preview', 'powerpress'); ?></a>
1411
 
1412
+ <p><?php echo __('iTunes image must be at least 1400 x 1400 pixels in .jpg or .png format. iTunes image must not exceed 3000 x 3000 pixels and must use RGB color space.', 'powerpress'); ?> <?php echo __('Example', 'powerpress'); ?>: http://example.com/images/itunes.jpg
1413
  </p>
1414
 
1415
  <p><strong><?php echo __('A square 1400 x 1400 pixel image in .jpg format is recommended.', 'powerpress'); ?></strong></p>
powerpressadmin.php CHANGED
@@ -168,7 +168,7 @@ function powerpress_admin_init()
168
 
169
  if( $ImageData )
170
  {
171
- if( $rgb && ( $ImageData[2] == IMAGETYPE_JPEG || $ImageData[2] == IMAGETYPE_PNG ) && $ImageData[0] == $ImageData[1] && $ImageData[0] >= 1400 && $ImageData[0] <= 2048 && $ImageData['channels'] == 3 ) // Just check that it is an image, the correct image type and that the image is square
172
  {
173
  if( !move_uploaded_file($temp, $upload_path . $filename) )
174
  {
@@ -200,9 +200,9 @@ function powerpress_admin_init()
200
  {
201
  powerpress_page_message_add_error( __('Invalid iTunes image', 'powerpress') .': ' . htmlspecialchars($_FILES['itunes_image_file']['name']) .' - '. __('Image is too small, 1400 x 1400 is the required minimum size.', 'powerprss') );
202
  }
203
- else if( $ImageData[0] != $ImageData[1] || $ImageData[0] > 2048 )
204
  {
205
- powerpress_page_message_add_error( __('Invalid iTunes image', 'powerpress') .': ' . htmlspecialchars($_FILES['itunes_image_file']['name']) .' - '. __('Image is too large, 2048 x 2048 is the maximum size allowed.', 'powerprss') );
206
  }
207
  else
208
  {
168
 
169
  if( $ImageData )
170
  {
171
+ if( $rgb && ( $ImageData[2] == IMAGETYPE_JPEG || $ImageData[2] == IMAGETYPE_PNG ) && $ImageData[0] == $ImageData[1] && $ImageData[0] >= 1400 && $ImageData[0] <= 3000 && $ImageData['channels'] == 3 ) // Just check that it is an image, the correct image type and that the image is square
172
  {
173
  if( !move_uploaded_file($temp, $upload_path . $filename) )
174
  {
200
  {
201
  powerpress_page_message_add_error( __('Invalid iTunes image', 'powerpress') .': ' . htmlspecialchars($_FILES['itunes_image_file']['name']) .' - '. __('Image is too small, 1400 x 1400 is the required minimum size.', 'powerprss') );
202
  }
203
+ else if( $ImageData[0] != $ImageData[1] || $ImageData[0] > 3000 )
204
  {
205
+ powerpress_page_message_add_error( __('Invalid iTunes image', 'powerpress') .': ' . htmlspecialchars($_FILES['itunes_image_file']['name']) .' - '. __('Image is too large, 3000 x 3000 is the maximum size allowed.', 'powerprss') );
206
  }
207
  else
208
  {
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: amandato, blubrry
3
  Tags: podcasting, podcast, podcaster, itunes, enclosure, zune, iphone, youtube, viddler, blip.tv, ustream, podcasting, audio, video, rss2, feed, player, media, rss, mp3, music, embed, feedburner, statistics, stats, flv, flash, id3, episodes, blubrry, webm, mp4, m4v, wordpressmu, mu, wordpress mu, multisite, multi site, mediacaster, post, plugin, posts, simple, social, dashboard, TSG, Buzzsprout, MTR, WP-boxCast, CastMyBlog, simple podcasting, seriously simple podcasting, seriously-simple-podcasting, podlove, podcast.de
4
  Requires at least: 3.6
5
- Tested up to: 4.1.1
6
- Stable tag: 6.0.2
7
  Donate link: http://create.blubrry.com/
8
  License: GPLv2 or later
9
 
@@ -201,6 +201,16 @@ To install Blubrry PowerPress manually, follow these steps:
201
  * We are looking for beta testers! If you would like to beta test future versions of PowerPress, please [contact us](http://www.blubrry.com/contact.php) with your name and email.
202
 
203
 
 
 
 
 
 
 
 
 
 
 
204
  = 6.0.2 =
205
  * Released on 3/21/2015
206
  * Fixed bug where specific global podcast settings are not applied when podcast channel settings iTunes new feed URL or feed maximizer option were configured then deleted afterward. This only effected settings if you deleted the default podcast feed.
2
  Contributors: amandato, blubrry
3
  Tags: podcasting, podcast, podcaster, itunes, enclosure, zune, iphone, youtube, viddler, blip.tv, ustream, podcasting, audio, video, rss2, feed, player, media, rss, mp3, music, embed, feedburner, statistics, stats, flv, flash, id3, episodes, blubrry, webm, mp4, m4v, wordpressmu, mu, wordpress mu, multisite, multi site, mediacaster, post, plugin, posts, simple, social, dashboard, TSG, Buzzsprout, MTR, WP-boxCast, CastMyBlog, simple podcasting, seriously simple podcasting, seriously-simple-podcasting, podlove, podcast.de
4
  Requires at least: 3.6
5
+ Tested up to: 4.2.2
6
+ Stable tag: 6.0.3
7
  Donate link: http://create.blubrry.com/
8
  License: GPLv2 or later
9
 
201
  * We are looking for beta testers! If you would like to beta test future versions of PowerPress, please [contact us](http://www.blubrry.com/contact.php) with your name and email.
202
 
203
 
204
+ = 6.0.3 =
205
+ * Released on 5/7/2015
206
+ * Added define option `POWERPRESS_DEFAULT_MEDIA_URL` to enable the default media URL field.
207
+ * Fixed notice messages being printed when populating category podcasting settings (thanks slapdashcast for bringing to our attention)
208
+ * iTunes image requirements updated, 3000x3000 is now the maximum (previously 2048x2048) for iTunes artwork. 1400x1400 is still the recommended size.
209
+ * Added [Subscribe on Android](http://subscribeonandroid.com/), the one-click subscribe protocol for Android. There are currently 6 Android apps that support Subscribe on Android one-click with more to follow in the coming weeks.
210
+ * PowerPress Playlist Player SQLi injection vulnerability fixed (Thanks Ben Bidner, Security Wrangler @ Automattic.com!)
211
+ * Subscribe tools now use the esc_attr, esc_url and esc_html native WordPress functions (rather than htmlspecialchars).
212
+
213
+
214
  = 6.0.2 =
215
  * Released on 3/21/2015
216
  * Fixed bug where specific global podcast settings are not applied when podcast channel settings iTunes new feed URL or feed maximizer option were configured then deleted afterward. This only effected settings if you deleted the default podcast feed.