PowerPress Podcasting plugin by Blubrry - Version 7.3

Version Description

  • Released on 07/10/2018
  • Spotify and Google Podcasts subscribe links added to Destinations.
  • PowerPress users using Blubrry Podcast Hosting may now submit shows to Spotify!
  • Added PodcastMirror setting, a modern alternative to FeedBurner. Learn more about PodcastMirror at podcastmirror.com
  • Converted loop logic from each() to foreach() for PHP 7.3+ / 8.0+ compatibility.
  • Improved logic for playlist player to appear better when certain settings are not set.
  • Moved the enqueue script ('jquery-ui-tabs') logic so it only loads in the powerpress admin pages. (Thanks @keenanpayne for the code change!)
  • Added define option POWERPRESS_POSTTYPE_MIXING, when set to true podcast channels for the default podcast feed will mix all post types of type post with the default podcast feed. (Thanks @eos-rose for bringing to our attention)
  • Fixed bug with translation and javascript alert messages. (Thanks Enrico for reporting the bug!)
Download this release

Release Info

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

Code changes from version 7.2 to 7.3

class.powerpress-subscribe-widget.php CHANGED
@@ -102,7 +102,11 @@ body .pp-ssb-widget a.pp-ssb-btn:hover {
102
  background-color: #2CB6A8;
103
  }
104
  .pp-ssb-widget-modern a.pp-ssb-gp {
105
- background-color: #F15832;
 
 
 
 
106
  }
107
  .pp-ssb-widget-modern a.pp-ssb-android {
108
  background-color: #6AB344;
@@ -117,7 +121,7 @@ body .pp-ssb-widget a.pp-ssb-btn:hover {
117
  display: inline-block;
118
  vertical-align: middle;
119
  margin-right: 2px;
120
- background-image: url(<?php echo powerpress_get_root_url(); ?>images/spriteStandard.png);
121
  background-repeat: no-repeat;
122
  background-size: 294px;
123
  }
@@ -139,10 +143,12 @@ body .pp-ssb-widget a.pp-ssb-btn:hover {
139
  .pp-ssb-tunein .pp-ssb-ic {
140
  background-position: -245px -98px;
141
  }
 
 
 
142
  .pp-ssb-gp .pp-ssb-ic {
143
- background-position: -196px -98px;
144
  }
145
-
146
  .pp-ssb-more .pp-ssb-ic {
147
  background-position: -49px -49px;
148
  }
@@ -152,7 +158,7 @@ body .pp-ssb-widget a.pp-ssb-btn:hover {
152
  only screen and (-o-min-device-pixel-ratio: 200/100),
153
  only screen and (min-device-pixel-ratio: 2.0) {
154
  .pp-sub-ic {
155
- background-image: url(<?php echo powerpress_get_root_url(); ?>images/spriteRetina.png);
156
  }
157
  }
158
  </style>
@@ -194,7 +200,7 @@ body .pp-ssb-widget a.pp-ssb-btn:hover {
194
  if( !empty($GeneralSettings['posttype_podcasting']) || $instance['subscribe_type'] == 'post_type' ) // If post type podcasting enabled
195
  $types['post_type'] = __('Post Type Podcasting','powerpress');
196
 
197
- while( list($type, $label) = each($types) ) {
198
  echo '<option value="' . $type . '"'
199
  . selected( $instance['subscribe_type'], $type, false )
200
  . '>' . $label . "</option>\n";
@@ -213,7 +219,7 @@ body .pp-ssb-widget a.pp-ssb-btn:hover {
213
  <option value=""><?php echo __('Select Post Type', 'powerpress'); ?></option>
214
  <?php
215
  $post_types = powerpress_admin_get_post_types(false);
216
- while( list($index, $label) = each($post_types) ) {
217
  echo '<option value="' . $label . '"'
218
  . selected( $instance['subscribe_post_type'], $label, false )
219
  . '>' . $label . "</option>\n";
102
  background-color: #2CB6A8;
103
  }
104
  .pp-ssb-widget-modern a.pp-ssb-gp {
105
+ background-color: #db3236;
106
+ }
107
+ .pp-ssb-widget-modern a.pp-ssb-spotify {
108
+ background-color: #84bd00;
109
+ background-color: #1db954;
110
  }
111
  .pp-ssb-widget-modern a.pp-ssb-android {
112
  background-color: #6AB344;
121
  display: inline-block;
122
  vertical-align: middle;
123
  margin-right: 2px;
124
+ background-image: url(<?php echo powerpress_get_root_url(); ?>images/spriteStandard2.png);
125
  background-repeat: no-repeat;
126
  background-size: 294px;
127
  }
143
  .pp-ssb-tunein .pp-ssb-ic {
144
  background-position: -245px -98px;
145
  }
146
+ .pp-ssb-spotify .pp-ssb-ic {
147
+ background-position: -147px 0;
148
+ }
149
  .pp-ssb-gp .pp-ssb-ic {
150
+ background-position: -196px 0;
151
  }
 
152
  .pp-ssb-more .pp-ssb-ic {
153
  background-position: -49px -49px;
154
  }
158
  only screen and (-o-min-device-pixel-ratio: 200/100),
159
  only screen and (min-device-pixel-ratio: 2.0) {
160
  .pp-sub-ic {
161
+ background-image: url(<?php echo powerpress_get_root_url(); ?>images/spriteRetina2.png);
162
  }
163
  }
164
  </style>
200
  if( !empty($GeneralSettings['posttype_podcasting']) || $instance['subscribe_type'] == 'post_type' ) // If post type podcasting enabled
201
  $types['post_type'] = __('Post Type Podcasting','powerpress');
202
 
203
+ foreach( $types as $type => $label ) {
204
  echo '<option value="' . $type . '"'
205
  . selected( $instance['subscribe_type'], $type, false )
206
  . '>' . $label . "</option>\n";
219
  <option value=""><?php echo __('Select Post Type', 'powerpress'); ?></option>
220
  <?php
221
  $post_types = powerpress_admin_get_post_types(false);
222
+ foreach( $post_types as $index => $label ) {
223
  echo '<option value="' . $label . '"'
224
  . selected( $instance['subscribe_post_type'], $label, false )
225
  . '>' . $label . "</option>\n";
css/admin.css CHANGED
@@ -213,6 +213,22 @@ padding-bottom: 15px;
213
  /* float: left; */
214
  display: inline-block;
215
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  #powerpress_admin_header .powerpress-mode {
217
  margin-left: 14px;
218
  display: inline-block;
213
  /* float: left; */
214
  display: inline-block;
215
  }
216
+ #powerpress_admin_header h2,
217
+ #powerpress_admin_header h3,
218
+ #powerpress_admin_header h4 {
219
+ line-height: 1.1;
220
+ margin: 10px 0 0 0;
221
+ padding: 0;
222
+ font-weight: bold;
223
+ }
224
+ #powerpress_admin_header p {
225
+ line-height: 1.1;
226
+ margin: 5px 0 10px 0;
227
+ padding: 0;
228
+ }
229
+ #powerpress_admin_header .powerpress-admin-heading {
230
+ font-weight: bold;
231
+ }
232
  #powerpress_admin_header .powerpress-mode {
233
  margin-left: 14px;
234
  display: inline-block;
css/subscribe.css CHANGED
@@ -141,7 +141,13 @@ body .pp-sub-widget a:hover {
141
  background-color: #2CB6A8;
142
  }
143
  .pp-sub-widget-modern a.pp-sub-gp {
144
- background-color: #F15832;
 
 
 
 
 
 
145
  }
146
  .pp-sub-widget-modern a.pp-sub-android {
147
  background-color: #6AB344;
@@ -161,7 +167,7 @@ body .pp-sub-widget a:hover {
161
  margin-right: 2px;
162
  }
163
  .pp-sub-ic {
164
- background-image: url(../images/spriteStandard.png);
165
  background-repeat: no-repeat;
166
  background-size: 294px;
167
  }
@@ -190,7 +196,10 @@ body .pp-sub-widget a:hover {
190
  background-position: -245px -98px;
191
  }
192
  .pp-sub-gp .pp-sub-ic {
193
- background-position: -196px -98px;
 
 
 
194
  }
195
 
196
  /* Retina-specific stuff here */
@@ -199,6 +208,6 @@ body .pp-sub-widget a:hover {
199
  only screen and (-o-min-device-pixel-ratio: 200/100),
200
  only screen and (min-device-pixel-ratio: 2.0) {
201
  .pp-sub-ic {
202
- background-image: url(../images/spriteRetina.png);
203
  }
204
  }
141
  background-color: #2CB6A8;
142
  }
143
  .pp-sub-widget-modern a.pp-sub-gp {
144
+ background-color: #F15832; /* google yellow */
145
+ background-color: #3cba54; /* google green */
146
+ background-color: #4885ed; /* google blue */
147
+ background-color: #db3236; /* google red */
148
+ }
149
+ .pp-sub-widget-modern a.pp-sub-spotify {
150
+ background-color: #1db954;
151
  }
152
  .pp-sub-widget-modern a.pp-sub-android {
153
  background-color: #6AB344;
167
  margin-right: 2px;
168
  }
169
  .pp-sub-ic {
170
+ background-image: url(../images/spriteStandard2.png);
171
  background-repeat: no-repeat;
172
  background-size: 294px;
173
  }
196
  background-position: -245px -98px;
197
  }
198
  .pp-sub-gp .pp-sub-ic {
199
+ background-position: -196px 0;
200
+ }
201
+ .pp-sub-spotify .pp-sub-ic {
202
+ background-position: -147px 0;
203
  }
204
 
205
  /* Retina-specific stuff here */
208
  only screen and (-o-min-device-pixel-ratio: 200/100),
209
  only screen and (min-device-pixel-ratio: 2.0) {
210
  .pp-sub-ic {
211
+ background-image: url(../images/spriteRetina2.png);
212
  }
213
  }
images/spriteRetina.png CHANGED
Binary file
images/spriteRetina2.png ADDED
Binary file
images/spriteStandard.png CHANGED
Binary file
images/spriteStandard2.png ADDED
Binary file
mp3info.class.php CHANGED
@@ -657,7 +657,7 @@
657
  }
658
 
659
  $errors = '';
660
- while( list($null,$error) = each($FileInfo['error']) )
661
  {
662
  if( strstr($error, 'error parsing') )
663
  continue;
@@ -673,7 +673,7 @@
673
  if( false && isset($FileInfo['warning']) )
674
  {
675
  $errors = '';
676
- while( list($null,$warning) = each($FileInfo['warning']) )
677
  $this->AddWarning($warning );
678
  }
679
 
@@ -749,7 +749,7 @@
749
  {
750
  $plugin_folder = $matches[1];
751
  $current_plugins = get_option('active_plugins');
752
- while( list($null,$plugin_local_path) = each($current_plugins) )
753
  {
754
  if( substr($plugin_local_path, 0, strpos($plugin_local_path, '/') ) != $plugin_folder )
755
  continue;
657
  }
658
 
659
  $errors = '';
660
+ foreach( $FileInfo['error'] as $null => $error )
661
  {
662
  if( strstr($error, 'error parsing') )
663
  continue;
673
  if( false && isset($FileInfo['warning']) )
674
  {
675
  $errors = '';
676
+ foreach( $FileInfo['warning'] as $null => $warning )
677
  $this->AddWarning($warning );
678
  }
679
 
749
  {
750
  $plugin_folder = $matches[1];
751
  $current_plugins = get_option('active_plugins');
752
+ foreach( $current_plugins as $null => $plugin_local_path )
753
  {
754
  if( substr($plugin_local_path, 0, strpos($plugin_local_path, '/') ) != $plugin_folder )
755
  continue;
powerpress-player.php CHANGED
@@ -189,7 +189,7 @@ function powerpress_shortcode_handler( $attributes, $content = null )
189
  };
190
  }
191
 
192
- while( list($feed_slug, $postTypeSettings) = each($PostTypeSettingsArray) )
193
  {
194
  if( !empty( $postTypeSettings['title']) )
195
  $GeneralSettings['custom_feeds'][ $feed_slug ] = $postTypeSettings['title'];
@@ -199,7 +199,7 @@ function powerpress_shortcode_handler( $attributes, $content = null )
199
  }
200
  }
201
 
202
- while( list($feed_slug,$feed_title) = each($GeneralSettings['custom_feeds']) )
203
  {
204
  if( isset($GeneralSettings['disable_player']) && isset($GeneralSettings['disable_player'][$feed_slug]) )
205
  continue;
@@ -1251,7 +1251,7 @@ function powerpressplayer_build_mediaelementvideo($media_url, $EpisodeData=array
1251
  $shortcode = wp_video_shortcode( $attr );
1252
  } else {
1253
  $shortcode_value = '[video ';
1254
- while( list($tag_name,$tag_value) = each($attr) ) {
1255
  $shortcode_value .= ' '.$tag_name.'="'. esc_attr($tag_value) .'"';
1256
  }
1257
  $shortcode_value .= ']';
@@ -1578,7 +1578,7 @@ function powerpressplayer_build_1pxoutplayer($media_url, $EpisodeData = array())
1578
  }
1579
 
1580
  $flashvars ='';
1581
- while( list($key,$value) = each($PlayerSettings) )
1582
  {
1583
  $flashvars .= '&amp;'. $key .'='. preg_replace('/\#/','',$value);
1584
  }
189
  };
190
  }
191
 
192
+ foreach( $PostTypeSettingsArray as $feed_slug => $postTypeSettings )
193
  {
194
  if( !empty( $postTypeSettings['title']) )
195
  $GeneralSettings['custom_feeds'][ $feed_slug ] = $postTypeSettings['title'];
199
  }
200
  }
201
 
202
+ foreach( $GeneralSettings['custom_feeds'] as $feed_slug => $feed_title )
203
  {
204
  if( isset($GeneralSettings['disable_player']) && isset($GeneralSettings['disable_player'][$feed_slug]) )
205
  continue;
1251
  $shortcode = wp_video_shortcode( $attr );
1252
  } else {
1253
  $shortcode_value = '[video ';
1254
+ foreach( $attr as $tag_name => $tag_value ) {
1255
  $shortcode_value .= ' '.$tag_name.'="'. esc_attr($tag_value) .'"';
1256
  }
1257
  $shortcode_value .= ']';
1578
  }
1579
 
1580
  $flashvars ='';
1581
+ foreach( $PlayerSettings as $key => $value )
1582
  {
1583
  $flashvars .= '&amp;'. $key .'='. preg_replace('/\#/','',$value);
1584
  }
powerpress-playlist.php CHANGED
@@ -57,7 +57,7 @@ function powerpress_get_program_title_by_taxonomy($term_id, $taxonomy = 'categor
57
  {
58
  $Feeds = $General['custom_cat_feeds'];
59
  // Walk through the categories...
60
- while( list($null, $cat_id) = each($Feeds) )
61
  {
62
  $FeedSettings = get_option('powerpress_cat_feed_'.$cat_id);
63
  if( !empty($FeedSettings['title']) )
@@ -70,7 +70,7 @@ function powerpress_get_program_title_by_taxonomy($term_id, $taxonomy = 'categor
70
  if( !empty($PowerPressTaxonomies) )
71
  {
72
  $query_in = '';
73
- while( list($tt_id, $null) = each($PowerPressTaxonomies) )
74
  {
75
  if( !empty($query_in) )
76
  $query_in .= ',';
@@ -81,7 +81,7 @@ function powerpress_get_program_title_by_taxonomy($term_id, $taxonomy = 'categor
81
  {
82
  $terms = $wpdb->get_results("SELECT term_taxonomy_id, term_id, taxonomy FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id IN ($query_in)", ARRAY_A);
83
 
84
- while( list($index,$term_info) = each($terms) )
85
  {
86
  // TODO: We need to get term by the term_id and taxonomy
87
  $FeedSettings = powerpress_get_settings('powerpress_taxonomy_'.$term_info['term_taxonomy_id']);
@@ -165,7 +165,7 @@ function powerpress_playlist_episodes($args)
165
  // First santity check make sure we are only working with numbers....
166
  if( preg_match('/^[0-9,\s]*$/', $args['ids']) ) {
167
  $ids = explode(',', preg_replace('/(\s)/', '', $args['ids']) );
168
- while( list($index,$id) = each($ids) ) {
169
  if( empty($id) )
170
  continue;
171
  if( !empty($for_query) )
@@ -191,7 +191,7 @@ function powerpress_playlist_episodes($args)
191
  $results_data = $wpdb->get_results($query, ARRAY_A);
192
  if( $results_data )
193
  {
194
- while( list($null,$row) = each($results_data) )
195
  {
196
  if( empty($row['meta_value']) )
197
  continue;
@@ -223,7 +223,7 @@ function powerpress_underscore_playlist_templates() {
223
  <# } #>
224
  <# if ( data.meta.link ) { #>
225
  <span class="wp-playlist-item-meta wp-playlist-item-title"><a href="{{ data.meta.link }}" rel="nofollow">{{ data.title }}</a></span>
226
- <# } else { #>
227
  <span class="wp-playlist-item-meta wp-playlist-item-title">{{ data.title }}</span>
228
  <# } #>
229
  <# if ( data.meta.date ) { #><span class="wp-playlist-item-meta wp-playlist-item-artist">{{ data.meta.date }}</span><# } #>
@@ -234,7 +234,9 @@ function powerpress_underscore_playlist_templates() {
234
  <div class="wp-playlist-item">
235
  <a class="wp-playlist-caption" href="{{ data.src }}">
236
  <!-- <span class="wp-playlist-item-title">&#8220;{{{ data.title }}}&#8221;</span> -->
 
237
  <span class="wp-playlist-item-title">{{ data.title }}</span>
 
238
  <# if ( data.meta.date ) { #>
239
  <span class="wp-playlist-item-artist"> &mdash; {{ data.meta.date }}</span>
240
  <# } #>
@@ -312,7 +314,7 @@ function powerpress_playlist_shortcode( $attr ) {
312
  'term_taxonomy_id'=>'', // Used for PowerPress Playlist (specify term_taxonomy_id)
313
  'program_titles_by_taxonomy'=>'', // e.g. category
314
  'date' => true, // Display the date
315
- 'title' => true, // Dislay the title of program
316
  'links'=>true, // Link to episode page
317
  'slug' => '', // Used for PowerPress Playlist
318
  'feed' => '', // Used for PowerPress Playlist
@@ -335,6 +337,7 @@ function powerpress_playlist_shortcode( $attr ) {
335
  $images = filter_var( $images, FILTER_VALIDATE_BOOLEAN );
336
  $links = filter_var( $links, FILTER_VALIDATE_BOOLEAN );
337
  $itunes_subtitle = filter_var( $itunes_subtitle, FILTER_VALIDATE_BOOLEAN );
 
338
  $date = filter_var( $date, FILTER_VALIDATE_BOOLEAN );
339
 
340
  if( empty($slug) && !empty($feed) )
@@ -420,6 +423,10 @@ function powerpress_playlist_shortcode( $attr ) {
420
  'description' => $episode['post_title']
421
  );
422
 
 
 
 
 
423
  //$image = false;
424
  $episode_image = $image;
425
  if( $images && !empty($episode['enclosure']['image']) )
@@ -444,7 +451,8 @@ function powerpress_playlist_shortcode( $attr ) {
444
  $track['meta']['program_title'] = powerpress_get_program_title_by_taxonomy($ObjectTerms[0]->term_id, $program_titles_by_taxonomy);
445
  }
446
  }
447
- $track['meta']['title'] = $episode['post_title'];
 
448
  if( !empty($itunes_subtitle) && !empty($episode['enclosure']['subtitle']) )
449
  $track['meta']['itunes_subtitle'] = $episode['enclosure']['subtitle'];
450
  $track['meta']['genre'] = 'Podcast';
57
  {
58
  $Feeds = $General['custom_cat_feeds'];
59
  // Walk through the categories...
60
+ foreach( $Feeds as $null=> $cat_id )
61
  {
62
  $FeedSettings = get_option('powerpress_cat_feed_'.$cat_id);
63
  if( !empty($FeedSettings['title']) )
70
  if( !empty($PowerPressTaxonomies) )
71
  {
72
  $query_in = '';
73
+ foreach( $PowerPressTaxonomies as $tt_id=> $null )
74
  {
75
  if( !empty($query_in) )
76
  $query_in .= ',';
81
  {
82
  $terms = $wpdb->get_results("SELECT term_taxonomy_id, term_id, taxonomy FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id IN ($query_in)", ARRAY_A);
83
 
84
+ foreach( $terms as $index=> $term_info )
85
  {
86
  // TODO: We need to get term by the term_id and taxonomy
87
  $FeedSettings = powerpress_get_settings('powerpress_taxonomy_'.$term_info['term_taxonomy_id']);
165
  // First santity check make sure we are only working with numbers....
166
  if( preg_match('/^[0-9,\s]*$/', $args['ids']) ) {
167
  $ids = explode(',', preg_replace('/(\s)/', '', $args['ids']) );
168
+ foreach( $ids as $index=> $id ) {
169
  if( empty($id) )
170
  continue;
171
  if( !empty($for_query) )
191
  $results_data = $wpdb->get_results($query, ARRAY_A);
192
  if( $results_data )
193
  {
194
+ foreach( $results_data as $null=> $row )
195
  {
196
  if( empty($row['meta_value']) )
197
  continue;
223
  <# } #>
224
  <# if ( data.meta.link ) { #>
225
  <span class="wp-playlist-item-meta wp-playlist-item-title"><a href="{{ data.meta.link }}" rel="nofollow">{{ data.title }}</a></span>
226
+ <# } else if ( data.title ) { #>
227
  <span class="wp-playlist-item-meta wp-playlist-item-title">{{ data.title }}</span>
228
  <# } #>
229
  <# if ( data.meta.date ) { #><span class="wp-playlist-item-meta wp-playlist-item-artist">{{ data.meta.date }}</span><# } #>
234
  <div class="wp-playlist-item">
235
  <a class="wp-playlist-caption" href="{{ data.src }}">
236
  <!-- <span class="wp-playlist-item-title">&#8220;{{{ data.title }}}&#8221;</span> -->
237
+ <# if ( data.title ) { #>
238
  <span class="wp-playlist-item-title">{{ data.title }}</span>
239
+ <# } #>
240
  <# if ( data.meta.date ) { #>
241
  <span class="wp-playlist-item-artist"> &mdash; {{ data.meta.date }}</span>
242
  <# } #>
314
  'term_taxonomy_id'=>'', // Used for PowerPress Playlist (specify term_taxonomy_id)
315
  'program_titles_by_taxonomy'=>'', // e.g. category
316
  'date' => true, // Display the date
317
+ 'title' => true, // Dislay the title of episode
318
  'links'=>true, // Link to episode page
319
  'slug' => '', // Used for PowerPress Playlist
320
  'feed' => '', // Used for PowerPress Playlist
337
  $images = filter_var( $images, FILTER_VALIDATE_BOOLEAN );
338
  $links = filter_var( $links, FILTER_VALIDATE_BOOLEAN );
339
  $itunes_subtitle = filter_var( $itunes_subtitle, FILTER_VALIDATE_BOOLEAN );
340
+ $episode_title = filter_var( $title, FILTER_VALIDATE_BOOLEAN );
341
  $date = filter_var( $date, FILTER_VALIDATE_BOOLEAN );
342
 
343
  if( empty($slug) && !empty($feed) )
423
  'description' => $episode['post_title']
424
  );
425
 
426
+ if( empty($episode_title) ) {
427
+ $track['title'] = '';
428
+ }
429
+
430
  //$image = false;
431
  $episode_image = $image;
432
  if( $images && !empty($episode['enclosure']['image']) )
451
  $track['meta']['program_title'] = powerpress_get_program_title_by_taxonomy($ObjectTerms[0]->term_id, $program_titles_by_taxonomy);
452
  }
453
  }
454
+ if( !empty($episode_title) )
455
+ $track['meta']['title'] = $episode['post_title'];
456
  if( !empty($itunes_subtitle) && !empty($episode['enclosure']['subtitle']) )
457
  $track['meta']['itunes_subtitle'] = $episode['enclosure']['subtitle'];
458
  $track['meta']['genre'] = 'Podcast';
powerpress-subscribe.php CHANGED
@@ -85,8 +85,11 @@ function powerpresssubscribe_get_settings($ExtraData, $detect_category=true)
85
  if( !$category_id && is_single() )
86
  {
87
  $categories = wp_get_post_categories( get_the_ID() );
88
- if( count($categories) == 1 )
89
- list($null,$category_id) = each($categories);
 
 
 
90
  if( !empty($category_id) )
91
  {
92
  $Settings = get_option('powerpress_cat_feed_'.$category_id );
@@ -129,6 +132,7 @@ function powerpresssubscribe_get_settings($ExtraData, $detect_category=true)
129
  $Settings['subscribe_feature_gp'] = (!empty($GeneralSettings['subscribe_feature_gp']) );
130
  $Settings['subscribe_feature_stitcher'] = (!empty($GeneralSettings['subscribe_feature_stitcher']) );
131
  $Settings['subscribe_feature_tunein'] = (!empty($GeneralSettings['subscribe_feature_tunein']) );
 
132
  return $Settings;
133
  }
134
 
@@ -189,6 +193,7 @@ function powerpresssubscribe_get_settings($ExtraData, $detect_category=true)
189
  $Settings['subscribe_feature_gp'] = (!empty($GeneralSettings['subscribe_feature_gp']) );
190
  $Settings['subscribe_feature_stitcher'] = (!empty($GeneralSettings['subscribe_feature_stitcher']) );
191
  $Settings['subscribe_feature_tunein'] = (!empty($GeneralSettings['subscribe_feature_tunein']) );
 
192
  return $Settings;
193
  }
194
  }; break;
@@ -222,11 +227,13 @@ function powerpresssubscribe_get_settings($ExtraData, $detect_category=true)
222
  $Settings['subscribe_feature_gp'] = (!empty($GeneralSettings['subscribe_feature_gp']) );
223
  $Settings['subscribe_feature_stitcher'] = (!empty($GeneralSettings['subscribe_feature_stitcher']) );
224
  $Settings['subscribe_feature_tunein'] = (!empty($GeneralSettings['subscribe_feature_tunein']) );
 
225
  if( !empty($FeedSettings['premium']) ) {
226
  $Settings['subscribe_feature_email'] = false;
227
  $Settings['subscribe_feature_gp'] = false;
228
  $Settings['subscribe_feature_stitcher'] = false;
229
  $Settings['subscribe_feature_tunein'] = false;
 
230
  }
231
 
232
  return $Settings;
@@ -279,10 +286,10 @@ function powerpressplayer_link_subscribe_pre($content, $media_url, $ExtraData =
279
  }
280
  }
281
 
282
- if( !empty($SubscribeSettings['subscribe_feature_gp']) && !empty($SubscribeSettings['googleplay_url']) )
283
  {
284
- $SubscribeSettings['googleplay_url'] = trim($SubscribeSettings['googleplay_url']);
285
- $links_array[] = "<a href=\"". esc_attr($SubscribeSettings['googleplay_url'] ) ."\" class=\"powerpress_link_subscribe powerpress_link_subscribe_googleplay\" title=\"". __('Subscribe on Google Play', 'powerpress') ."\" rel=\"nofollow\">". __('Google Play','powerpress') ."</a>".PHP_EOL_WEB;
286
  }
287
 
288
  if( !empty($SubscribeSettings['subscribe_feature_stitcher']) && !empty($SubscribeSettings['stitcher_url']) )
@@ -296,7 +303,13 @@ function powerpressplayer_link_subscribe_pre($content, $media_url, $ExtraData =
296
  $SubscribeSettings['tunein_url'] = trim($SubscribeSettings['tunein_url']);
297
  $links_array[] = "<a href=\"". esc_attr($SubscribeSettings['tunein_url'] ) ."\" class=\"powerpress_link_subscribe powerpress_link_subscribe_tunein\" title=\"". __('Subscribe on TuneIn', 'powerpress') ."\" rel=\"nofollow\">". __('TuneIn','powerpress') ."</a>".PHP_EOL_WEB;
298
  }
299
-
 
 
 
 
 
 
300
  if( !empty($SubscribeSettings['subscribe_feature_rss']) ) {
301
  $links_array[] = "<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_WEB;
302
  }
@@ -574,10 +587,9 @@ function powerpress_do_subscribe_widget($settings)
574
  }
575
  }
576
 
577
- if( !empty($settings['googleplay_url']) )
578
- {
579
- $html .= '<a href="'. esc_url( $settings['googleplay_url'] ) .'" class="pp-sub-btn pp-sub-gp" title="'. esc_attr( __('Subscribe on Google Play', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'. esc_html( __('on Google Play', 'powerpress') ) .'</a>';
580
- }
581
 
582
  if( !empty($settings['stitcher_url']) )
583
  {
@@ -589,6 +601,11 @@ function powerpress_do_subscribe_widget($settings)
589
  $html .= '<a href="'. esc_url( $settings['tunein_url'] ) .'" class="pp-sub-btn pp-sub-tunein" title="'. esc_attr( __('Subscribe on TuneIn', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'. esc_html( __('on TuneIn', 'powerpress') ) .'</a>';
590
  }
591
 
 
 
 
 
 
592
  //$html .= var_dump($settings, true);
593
 
594
  if( !empty($settings['subscribe_feature_rss']) ) {
@@ -639,11 +656,11 @@ function powerpress_do_subscribe_sidebar_widget($settings)
639
  }
640
  }
641
 
642
- if( !empty($settings['subscribe_feature_gp']) && !empty($settings['googleplay_url']) ) {
643
- $settings['googleplay_url'] = trim($settings['googleplay_url']);
644
- $html .= '<a href="'. esc_url( $settings['googleplay_url'] ) .'" class="pp-ssb-btn pp-ssb-gp" title="'. esc_attr( __('Subscribe on Google Play', 'powerpress') ) .'"><span class="pp-ssb-ic"></span>'. esc_html( __('on Google Play', 'powerpress') ) .'</a>';
645
  }
646
-
647
  if( !empty($settings['subscribe_feature_stitcher']) && !empty($settings['stitcher_url']) ) {
648
  $settings['stitcher_url'] = trim($settings['stitcher_url']);
649
  $html .= '<a href="'. esc_url( $settings['stitcher_url'] ) .'" class="pp-ssb-btn pp-ssb-stitcher" title="'. esc_attr( __('Subscribe on Stitcher', 'powerpress') ) .'"><span class="pp-ssb-ic"></span>'. esc_html( __('on Stitcher', 'powerpress') ) .'</a>';
@@ -654,6 +671,11 @@ function powerpress_do_subscribe_sidebar_widget($settings)
654
  $html .= '<a href="'. esc_url( $settings['tunein_url'] ) .'" class="pp-ssb-btn pp-ssb-tunein" title="'. esc_attr( __('Subscribe on TuneIn', 'powerpress') ) .'"><span class="pp-ssb-ic"></span>'. esc_html( __('on TuneIn', 'powerpress') ) .'</a>';
655
  }
656
 
 
 
 
 
 
657
  if( !empty($settings['subscribe_feature_rss']) ) {
658
  $html .= '<a href="'. esc_url( $settings['feed_url'] ) .'" class="pp-ssb-btn pp-ssb-rss" title="'. esc_attr( __('Subscribe via RSS', 'powerpress') ) .'"><span class="pp-ssb-ic"></span>'. esc_html( __('via RSS', 'powerpress') ) .'</a>';
659
  }
85
  if( !$category_id && is_single() )
86
  {
87
  $categories = wp_get_post_categories( get_the_ID() );
88
+ if( count($categories) == 1 ) {
89
+ foreach( $categories as $null=> $category_id ) {
90
+ break;
91
+ }
92
+ }
93
  if( !empty($category_id) )
94
  {
95
  $Settings = get_option('powerpress_cat_feed_'.$category_id );
132
  $Settings['subscribe_feature_gp'] = (!empty($GeneralSettings['subscribe_feature_gp']) );
133
  $Settings['subscribe_feature_stitcher'] = (!empty($GeneralSettings['subscribe_feature_stitcher']) );
134
  $Settings['subscribe_feature_tunein'] = (!empty($GeneralSettings['subscribe_feature_tunein']) );
135
+ $Settings['subscribe_feature_spotify'] = (!empty($GeneralSettings['subscribe_feature_spotify']) );
136
  return $Settings;
137
  }
138
 
193
  $Settings['subscribe_feature_gp'] = (!empty($GeneralSettings['subscribe_feature_gp']) );
194
  $Settings['subscribe_feature_stitcher'] = (!empty($GeneralSettings['subscribe_feature_stitcher']) );
195
  $Settings['subscribe_feature_tunein'] = (!empty($GeneralSettings['subscribe_feature_tunein']) );
196
+ $Settings['subscribe_feature_spotify'] = (!empty($GeneralSettings['subscribe_feature_spotify']) );
197
  return $Settings;
198
  }
199
  }; break;
227
  $Settings['subscribe_feature_gp'] = (!empty($GeneralSettings['subscribe_feature_gp']) );
228
  $Settings['subscribe_feature_stitcher'] = (!empty($GeneralSettings['subscribe_feature_stitcher']) );
229
  $Settings['subscribe_feature_tunein'] = (!empty($GeneralSettings['subscribe_feature_tunein']) );
230
+ $Settings['subscribe_feature_spotify'] = (!empty($GeneralSettings['subscribe_feature_spotify']) );
231
  if( !empty($FeedSettings['premium']) ) {
232
  $Settings['subscribe_feature_email'] = false;
233
  $Settings['subscribe_feature_gp'] = false;
234
  $Settings['subscribe_feature_stitcher'] = false;
235
  $Settings['subscribe_feature_tunein'] = false;
236
+ $Settings['subscribe_feature_spotify'] = false;
237
  }
238
 
239
  return $Settings;
286
  }
287
  }
288
 
289
+ if( !empty($SubscribeSettings['subscribe_feature_gp']) )
290
  {
291
+ $SubscribeSettings['googleplay_url'] = 'https://www.google.com/podcasts?feed='. base64_encode($feed_url);
292
+ $links_array[] = "<a href=\"". esc_attr($SubscribeSettings['googleplay_url'] ) ."\" class=\"powerpress_link_subscribe powerpress_link_subscribe_googleplay\" title=\"". __('Subscribe on Google Podcasts', 'powerpress') ."\" rel=\"nofollow\">". __('Google Podcasts','powerpress') ."</a>".PHP_EOL_WEB;
293
  }
294
 
295
  if( !empty($SubscribeSettings['subscribe_feature_stitcher']) && !empty($SubscribeSettings['stitcher_url']) )
303
  $SubscribeSettings['tunein_url'] = trim($SubscribeSettings['tunein_url']);
304
  $links_array[] = "<a href=\"". esc_attr($SubscribeSettings['tunein_url'] ) ."\" class=\"powerpress_link_subscribe powerpress_link_subscribe_tunein\" title=\"". __('Subscribe on TuneIn', 'powerpress') ."\" rel=\"nofollow\">". __('TuneIn','powerpress') ."</a>".PHP_EOL_WEB;
305
  }
306
+
307
+ if( !empty($SubscribeSettings['subscribe_feature_spotify']) && !empty($SubscribeSettings['spotify_url']) )
308
+ {
309
+ $SubscribeSettings['spotify_url'] = trim($SubscribeSettings['spotify_url']);
310
+ $links_array[] = "<a href=\"". esc_attr($SubscribeSettings['spotify_url'] ) ."\" class=\"powerpress_link_subscribe powerpress_link_subscribe_spotify\" title=\"". __('Subscribe on Spotify', 'powerpress') ."\" rel=\"nofollow\">". __('Spotify','powerpress') ."</a>".PHP_EOL_WEB;
311
+ }
312
+
313
  if( !empty($SubscribeSettings['subscribe_feature_rss']) ) {
314
  $links_array[] = "<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_WEB;
315
  }
587
  }
588
  }
589
 
590
+ // Google Podcasts
591
+ $html .= '<a href="'. esc_url( 'https://www.google.com/podcasts?feed='. base64_encode($settings['feed_url']) ) .'" class="pp-sub-btn pp-sub-gp" title="'. esc_attr( __('Subscribe on Google Podcasts', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'. esc_html( __('on Google Podcasts', 'powerpress') ) .'</a>';
592
+
 
593
 
594
  if( !empty($settings['stitcher_url']) )
595
  {
601
  $html .= '<a href="'. esc_url( $settings['tunein_url'] ) .'" class="pp-sub-btn pp-sub-tunein" title="'. esc_attr( __('Subscribe on TuneIn', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'. esc_html( __('on TuneIn', 'powerpress') ) .'</a>';
602
  }
603
 
604
+ if( !empty($settings['spotify_url']) )
605
+ {
606
+ $html .= '<a href="'. esc_url( $settings['spotify_url'] ) .'" class="pp-sub-btn pp-sub-spotify" title="'. esc_attr( __('Subscribe on Spotify', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'. esc_html( __('on Spotify', 'powerpress') ) .'</a>';
607
+ }
608
+
609
  //$html .= var_dump($settings, true);
610
 
611
  if( !empty($settings['subscribe_feature_rss']) ) {
656
  }
657
  }
658
 
659
+ if( !empty($settings['subscribe_feature_gp']) ) {
660
+ $gp_url = 'https://www.google.com/podcasts?feed='.base64_encode($settings['feed_url']);
661
+ $html .= '<a href="'. esc_url( $gp_url ) .'" class="pp-ssb-btn pp-ssb-gp" title="'. esc_attr( __('Subscribe on Google Podcasts', 'powerpress') ) .'"><span class="pp-ssb-ic"></span>'. esc_html( __('on Google Podcasts', 'powerpress') ) .'</a>';
662
  }
663
+
664
  if( !empty($settings['subscribe_feature_stitcher']) && !empty($settings['stitcher_url']) ) {
665
  $settings['stitcher_url'] = trim($settings['stitcher_url']);
666
  $html .= '<a href="'. esc_url( $settings['stitcher_url'] ) .'" class="pp-ssb-btn pp-ssb-stitcher" title="'. esc_attr( __('Subscribe on Stitcher', 'powerpress') ) .'"><span class="pp-ssb-ic"></span>'. esc_html( __('on Stitcher', 'powerpress') ) .'</a>';
671
  $html .= '<a href="'. esc_url( $settings['tunein_url'] ) .'" class="pp-ssb-btn pp-ssb-tunein" title="'. esc_attr( __('Subscribe on TuneIn', 'powerpress') ) .'"><span class="pp-ssb-ic"></span>'. esc_html( __('on TuneIn', 'powerpress') ) .'</a>';
672
  }
673
 
674
+ if( !empty($settings['subscribe_feature_spotify']) && !empty($settings['spotify_url']) ) {
675
+ $settings['spotify_url'] = trim($settings['spotify_url']);
676
+ $html .= '<a href="'. esc_url( $settings['spotify_url'] ) .'" class="pp-ssb-btn pp-ssb-spotify" title="'. esc_attr( __('Subscribe on Spotify', 'powerpress') ) .'"><span class="pp-ssb-ic"></span>'. esc_html( __('on Spotify', 'powerpress') ) .'</a>';
677
+ }
678
+
679
  if( !empty($settings['subscribe_feature_rss']) ) {
680
  $html .= '<a href="'. esc_url( $settings['feed_url'] ) .'" class="pp-ssb-btn pp-ssb-rss" title="'. esc_attr( __('Subscribe via RSS', 'powerpress') ) .'"><span class="pp-ssb-ic"></span>'. esc_html( __('via RSS', 'powerpress') ) .'</a>';
681
  }
powerpress.php CHANGED
@@ -2,8 +2,8 @@
2
  /*
3
  Plugin Name: Blubrry PowerPress
4
  Plugin URI: http://create.blubrry.com/resources/powerpress/
5
- Description: <a href="http://create.blubrry.com/resources/powerpress/" target="_blank">Blubrry PowerPress</a> is the No. 1 Podcasting plugin for WordPress. Developed by podcasters for podcasters; features include Simple and Advanced modes, multiple audio/video player options, subscribe to podcast tools, podcast SEO features, and more! Fully supports iTunes, Google Play, Stitcher, and Blubrry Podcasting directories, as well as all podcast applications and clients.
6
- Version: 7.2
7
  Author: Blubrry
8
  Author URI: http://www.blubrry.com/
9
  Requires at least: 3.6
@@ -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', '7.2' );
36
 
37
  // Translation support:
38
  if ( !defined('POWERPRESS_ABSPATH') )
@@ -189,7 +189,7 @@ function powerpress_content($content)
189
  $Temp = $GeneralSettings['custom_feeds'];
190
  $GeneralSettings['custom_feeds'] = array();
191
  $GeneralSettings['custom_feeds']['podcast'] = 'Default Podcast Feed';
192
- while( list($feed_slug, $feed_title) = each($Temp) )
193
  {
194
  if( $feed_slug == 'podcast' )
195
  continue;
@@ -219,7 +219,7 @@ function powerpress_content($content)
219
  }; break;
220
  }
221
 
222
- while( list($feed_slug, $postTypeSettings) = each($PostTypeSettingsArray) )
223
  {
224
  if( !empty( $postTypeSettings['title']) )
225
  $GeneralSettings['custom_feeds'][ $feed_slug ] = $postTypeSettings['title'];
@@ -258,7 +258,7 @@ function powerpress_content($content)
258
  {
259
  if( isset($matches[3]) )
260
  {
261
- while( list($key,$row) = each($matches[3]) )
262
  {
263
  $attributes = shortcode_parse_atts($row);
264
  if( isset($attributes['url']) )
@@ -281,7 +281,7 @@ function powerpress_content($content)
281
 
282
  // LOOP HERE TO DISPLAY EACH MEDIA TYPE
283
  $new_content = '';
284
- while( list($feed_slug,$feed_title) = each($GeneralSettings['custom_feeds']) )
285
  {
286
  // Get the enclosure data
287
  $EpisodeData = powerpress_get_enclosure_data($post->ID, $feed_slug);
@@ -418,7 +418,7 @@ function powerpress_pinw(pinw_url){window.open(pinw_url, 'PowerPressPlayer','too
418
  if( !empty($Powerpress['feed_links']) )
419
  {
420
  // Loop through podcast feeds and display them here
421
- while( list($feed_slug, $title) = each($Powerpress['custom_feeds']) )
422
  {
423
  $href = get_feed_link($feed_slug);
424
  if ( isset($title) && isset($href) )
@@ -746,7 +746,7 @@ function powerpress_rss2_head()
746
  if( !empty($Feed['donate_link']) && !empty($Feed['donate_url']) )
747
  echo "\t<rawvoice:donate href=\"". htmlspecialchars( $Feed['donate_url'] ) ."\">". htmlspecialchars( (empty($Feed['donate_label'])?'':$Feed['donate_label']) ) ."</rawvoice:donate>".PHP_EOL;
748
 
749
- if( !empty($Feed['itunes_url']) || !empty($Feed['googleplay_url']) || !empty($Feed['blubrry_url']) || !empty($Feed['stitcher_url']) || !empty($Feed['tunein_url']) ) {
750
  echo "\t<rawvoice:subscribe feed=\"";
751
  self_link();
752
  echo '"';
@@ -763,14 +763,14 @@ function powerpress_rss2_head()
763
 
764
  if( !empty($Feed['itunes_url']) )
765
  echo " itunes=\"". htmlspecialchars( $Feed['itunes_url'] ) .'"';
766
- if( !empty($Feed['googleplay_url']) )
767
- echo " googleplay=\"". htmlspecialchars( $Feed['googleplay_url'] ) .'"';
768
  if( !empty($Feed['blubrry_url']) )
769
  echo " blubrry=\"". htmlspecialchars( $Feed['blubrry_url'] ) .'"';
770
  if( !empty($Feed['stitcher_url']) )
771
  echo " stitcher=\"". htmlspecialchars( $Feed['stitcher_url'] ) .'"';
772
  if( !empty($Feed['tunein_url']) )
773
  echo " tunein=\"". htmlspecialchars( $Feed['tunein_url'] ) .'"';
 
 
774
  echo "></rawvoice:subscribe>".PHP_EOL;
775
  }
776
  }
@@ -1365,9 +1365,9 @@ function powerpress_template_redirect()
1365
  if( is_array($powerpress_feed) && trim($powerpress_feed['feed_redirect_url']) != '' && !preg_match("/feedburner|feedsqueezer|feedvalidator/i", $_SERVER['HTTP_USER_AGENT'] ) && $redirect_value != 'no' )
1366
  {
1367
  if (function_exists('status_header'))
1368
- status_header( 302 );
1369
  header("Location: " . trim($powerpress_feed['feed_redirect_url']));
1370
- header("HTTP/1.1 302 Temporary Redirect");
1371
  exit();
1372
  }
1373
  }
@@ -1386,7 +1386,7 @@ function powerpress_rewrite_rules_array($array)
1386
  $podcast_feeds = array_merge($settings['custom_feeds'], $podcast_feeds );
1387
 
1388
  $merged_slugs = '';
1389
- while( list($feed_slug, $feed_title) = each($podcast_feeds) )
1390
  {
1391
  if( $merged_slugs != '' )
1392
  $merged_slugs .= '|';
@@ -1402,7 +1402,7 @@ function powerpress_rewrite_rules_array($array)
1402
 
1403
  global $wpdb;
1404
  reset($podcast_feeds);
1405
- while( list($feed_slug, $feed_title) = each($podcast_feeds) )
1406
  {
1407
  $page_name_id = $wpdb->get_var("SELECT ID FROM {$wpdb->posts} WHERE post_name = '".$feed_slug."'");
1408
  if( $page_name_id )
@@ -1424,7 +1424,7 @@ function powerpress_rewrite_rules_array($array)
1424
  {
1425
  reset($podcast_feeds);
1426
  $remaining_slugs = '';
1427
- while( list($feed_slug, $feed_title) = each($podcast_feeds) )
1428
  {
1429
  if( $remaining_slugs != '' )
1430
  $remaining_slugs .= '|';
@@ -1449,7 +1449,7 @@ function powerpress_pre_transient_rewrite_rules($return_rules)
1449
 
1450
  if( $GeneralSettings && isset($GeneralSettings['custom_feeds']) && is_array($GeneralSettings['custom_feeds']) )
1451
  {
1452
- while( list($feed_slug,$null) = each($GeneralSettings['custom_feeds']) )
1453
  {
1454
  if( !in_array($feed_slug, $wp_rewrite->feeds) )
1455
  $wp_rewrite->feeds[] = $feed_slug;
@@ -1499,7 +1499,7 @@ function powerpress_init()
1499
 
1500
  if( $GeneralSettings && isset($GeneralSettings['custom_feeds']) && is_array($GeneralSettings['custom_feeds']) )
1501
  {
1502
- while( list($feed_slug,$feed_title) = each($GeneralSettings['custom_feeds']) )
1503
  {
1504
  if( $feed_slug != 'podcast' )
1505
  add_feed($feed_slug, 'powerpress_do_podcast_feed');
@@ -1528,12 +1528,12 @@ function powerpress_init()
1528
  {
1529
  $FeedSlugPostTypesArray = array();
1530
  }
1531
- while( list($feed_slug, $FeedSlugPostTypes) = each($FeedSlugPostTypesArray) )
1532
  {
1533
  if ( !in_array($feed_slug, $wp_rewrite->feeds) ) // we need to add this feed name
1534
  {
1535
  add_feed($feed_slug, 'powerpress_do_podcast_feed');
1536
- while( list($post_type_slug, $title) = each($FeedSlugPostTypes) )
1537
  {
1538
  add_rewrite_rule( '/'. $post_type_slug .'/feed/'. $feed_slug .'/?$', 'index.php?post_type='. $post_type_slug .'&feed='.$feed_slug, 'top' ); // capture the post type feeds
1539
  add_rewrite_rule( '/'. $post_type_slug .'/feed/'. $feed_slug .'/?$', 'index.php?post_type='. $post_type_slug .'&feed='.$feed_slug, 'bottom' ); // capture the post type feeds
@@ -1601,9 +1601,9 @@ function powerpress_request($qv)
1601
 
1602
  if( $podcast_feed_slug )
1603
  {
1604
- if( $qv['feed'] == 'podcast' )
1605
  $qv['post_type'] = 'post';
1606
- else {
1607
  $qv['post_type'] = get_post_types( array('public'=> true, 'capability_type'=>'post') );
1608
  if( !empty($qv['post_type']['attachment']) )
1609
  unset($qv['post_type']['attachment']);
@@ -2166,7 +2166,7 @@ function get_the_powerpress_content()
2166
  $GeneralSettings['custom_feeds'] = array();
2167
  $GeneralSettings['custom_feeds']['podcast'] = 'Default Podcast Feed';
2168
 
2169
- while( list($feed_slug, $feed_title) = each($Temp) )
2170
  {
2171
  if( $feed_slug == 'podcast' )
2172
  continue;
@@ -2196,7 +2196,7 @@ function get_the_powerpress_content()
2196
  }; break;
2197
  }
2198
 
2199
- while( list($feed_slug, $postTypeSettings) = each($PostTypeSettingsArray) )
2200
  {
2201
  if( !empty( $postTypeSettings['title']) )
2202
  $GeneralSettings['custom_feeds'][ $feed_slug ] = $postTypeSettings['title'];
@@ -2220,7 +2220,7 @@ function get_the_powerpress_content()
2220
 
2221
  // LOOP HERE TO DISPLAY EACH MEDIA TYPE
2222
  $new_content = '';
2223
- while( list($feed_slug,$feed_title) = each($GeneralSettings['custom_feeds']) )
2224
  {
2225
  // Get the enclosure data
2226
  $EpisodeData = powerpress_get_enclosure_data($post->ID, $feed_slug);
@@ -2492,7 +2492,7 @@ function powerpress_itunes_categories($PrefixSubCategories = false)
2492
 
2493
  if( $PrefixSubCategories )
2494
  {
2495
- while( list($key,$val) = each($temp) )
2496
  {
2497
  $parts = explode('-', $key);
2498
  $cat = $parts[0];
@@ -2782,7 +2782,9 @@ function powerpress_add_redirect_url($MediaURL, $EpisodeData = false) // $channe
2782
  } else if( is_single() ) {
2783
  $categories = wp_get_post_categories( get_the_ID() );
2784
  if( count($categories) == 1 ) { // See if only one category is associated with this post
2785
- list($null,$cat_id) = each($categories);
 
 
2786
  $FeedCatSettings = get_option('powerpress_cat_feed_'.$cat_id );
2787
  if( $FeedCatSettings && !empty($FeedCatSettings['redirect']) ) {
2788
  $Redirects['redirect0'] = $FeedCatSettings['redirect'];
@@ -2852,7 +2854,7 @@ function powerpress_add_redirect_url($MediaURL, $EpisodeData = false) // $channe
2852
  $ttid_found = 0;
2853
  $TaxonomySettings = false;
2854
 
2855
- while( list($index,$termObj) = each($terms) )
2856
  {
2857
  // Skip the default taxonomies
2858
  if( $termObj->taxonomy == 'category' || $termObj->taxonomy == 'link_category' || $termObj->taxonomy == 'post_tag' || $termObj->taxonomy == 'nav_menu' )
@@ -2992,7 +2994,7 @@ function powerpress_merge_empty_feed_settings($CustomFeedSettings, $FeedSettings
2992
  if( !$CustomFeedSettings )
2993
  return $FeedSettings; // If the $CustomFeedSettings is false
2994
 
2995
- while( list($key,$value) = each($CustomFeedSettings) )
2996
  {
2997
  if( $value !== '' || !isset($FeedSettings[$key]) )
2998
  $FeedSettings[$key] = $value;
@@ -3158,7 +3160,7 @@ function powerpress_get_enclosure_data($post_id, $feed_slug = 'podcast', $raw_da
3158
  $ExtraData = @unserialize($Serialized);
3159
  if( $ExtraData && is_array($ExtraData) )
3160
  {
3161
- while( list($key,$value) = each($ExtraData) ) {
3162
 
3163
  // Make sure specific fields are not overwritten...
3164
  switch( $key ) {
@@ -3341,7 +3343,7 @@ function get_the_powerpress_all_players($slug = false, $no_link=false)
3341
  {
3342
  if( isset($GeneralSettings['custom_feeds']['podcast']) )
3343
  $ChannelSlugs = array(); // Reset the array so it is added from the list in specified order
3344
- while( list($feed_slug,$null) = each($GeneralSettings['custom_feeds']) )
3345
  $ChannelSlugs[] = $feed_slug;
3346
  }
3347
  else if( is_array($slug) )
@@ -3358,7 +3360,7 @@ function get_the_powerpress_all_players($slug = false, $no_link=false)
3358
  {
3359
  the_post();
3360
 
3361
- while( list($null,$feed_slug) = each($ChannelSlugs) )
3362
  {
3363
  // Do we follow the global settings to disable a player?
3364
  if( isset($GeneralSettings['disable_player']) && isset($GeneralSettings['disable_player'][$feed_slug]) && $slug == false )
@@ -3501,7 +3503,7 @@ function powerpress_in_wp_head()
3501
  $trace = $e->getTrace();
3502
 
3503
  if( !empty($trace) ) {
3504
- while( list($index,$call) = each($trace) ) {
3505
  if( isset($call['function']) ) {
3506
  // Which calls should we not add the player and links...
3507
  switch( $call['function'] ) {
@@ -3522,8 +3524,8 @@ function powerpress_in_custom_post_widget()
3522
  $trace = $e->getTrace();
3523
 
3524
  if( !empty($trace) ) {
3525
- //var_dump($trace);
3526
- while( list($index,$call) = each($trace) ) {
3527
  if( isset($call['function']) ) {
3528
  // Which calls should we not add the player and links...
3529
  switch( $call['function'] ) {
2
  /*
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.3
7
  Author: Blubrry
8
  Author URI: http://www.blubrry.com/
9
  Requires at least: 3.6
32
  die("access denied.");
33
 
34
  // WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
35
+ define('POWERPRESS_VERSION', '7.3' );
36
 
37
  // Translation support:
38
  if ( !defined('POWERPRESS_ABSPATH') )
189
  $Temp = $GeneralSettings['custom_feeds'];
190
  $GeneralSettings['custom_feeds'] = array();
191
  $GeneralSettings['custom_feeds']['podcast'] = 'Default Podcast Feed';
192
+ foreach( $Temp as $feed_slug=> $feed_title )
193
  {
194
  if( $feed_slug == 'podcast' )
195
  continue;
219
  }; break;
220
  }
221
 
222
+ foreach( $PostTypeSettingsArray as $feed_slug=> $postTypeSettings )
223
  {
224
  if( !empty( $postTypeSettings['title']) )
225
  $GeneralSettings['custom_feeds'][ $feed_slug ] = $postTypeSettings['title'];
258
  {
259
  if( isset($matches[3]) )
260
  {
261
+ foreach( $matches[3] as $key=> $row )
262
  {
263
  $attributes = shortcode_parse_atts($row);
264
  if( isset($attributes['url']) )
281
 
282
  // LOOP HERE TO DISPLAY EACH MEDIA TYPE
283
  $new_content = '';
284
+ foreach( $GeneralSettings['custom_feeds'] as $feed_slug=> $feed_title )
285
  {
286
  // Get the enclosure data
287
  $EpisodeData = powerpress_get_enclosure_data($post->ID, $feed_slug);
418
  if( !empty($Powerpress['feed_links']) )
419
  {
420
  // Loop through podcast feeds and display them here
421
+ foreach( $Powerpress['custom_feeds'] as $feed_slug=> $title )
422
  {
423
  $href = get_feed_link($feed_slug);
424
  if ( isset($title) && isset($href) )
746
  if( !empty($Feed['donate_link']) && !empty($Feed['donate_url']) )
747
  echo "\t<rawvoice:donate href=\"". htmlspecialchars( $Feed['donate_url'] ) ."\">". htmlspecialchars( (empty($Feed['donate_label'])?'':$Feed['donate_label']) ) ."</rawvoice:donate>".PHP_EOL;
748
 
749
+ if( !empty($Feed['itunes_url']) || !empty($Feed['blubrry_url']) || !empty($Feed['stitcher_url']) || !empty($Feed['tunein_url']) || !empty($Feed['spotify_url']) ) {
750
  echo "\t<rawvoice:subscribe feed=\"";
751
  self_link();
752
  echo '"';
763
 
764
  if( !empty($Feed['itunes_url']) )
765
  echo " itunes=\"". htmlspecialchars( $Feed['itunes_url'] ) .'"';
 
 
766
  if( !empty($Feed['blubrry_url']) )
767
  echo " blubrry=\"". htmlspecialchars( $Feed['blubrry_url'] ) .'"';
768
  if( !empty($Feed['stitcher_url']) )
769
  echo " stitcher=\"". htmlspecialchars( $Feed['stitcher_url'] ) .'"';
770
  if( !empty($Feed['tunein_url']) )
771
  echo " tunein=\"". htmlspecialchars( $Feed['tunein_url'] ) .'"';
772
+ if( !empty($Feed['spotify_url']) )
773
+ echo " spotify=\"". htmlspecialchars( $Feed['spotify_url'] ) .'"';
774
  echo "></rawvoice:subscribe>".PHP_EOL;
775
  }
776
  }
1365
  if( is_array($powerpress_feed) && trim($powerpress_feed['feed_redirect_url']) != '' && !preg_match("/feedburner|feedsqueezer|feedvalidator/i", $_SERVER['HTTP_USER_AGENT'] ) && $redirect_value != 'no' )
1366
  {
1367
  if (function_exists('status_header'))
1368
+ status_header( 301 );
1369
  header("Location: " . trim($powerpress_feed['feed_redirect_url']));
1370
+ header("HTTP/1.1 301 Moved Permanently");
1371
  exit();
1372
  }
1373
  }
1386
  $podcast_feeds = array_merge($settings['custom_feeds'], $podcast_feeds );
1387
 
1388
  $merged_slugs = '';
1389
+ foreach( $podcast_feeds as $feed_slug=> $feed_title )
1390
  {
1391
  if( $merged_slugs != '' )
1392
  $merged_slugs .= '|';
1402
 
1403
  global $wpdb;
1404
  reset($podcast_feeds);
1405
+ foreach( $podcast_feeds as $feed_slug=> $feed_title )
1406
  {
1407
  $page_name_id = $wpdb->get_var("SELECT ID FROM {$wpdb->posts} WHERE post_name = '".$feed_slug."'");
1408
  if( $page_name_id )
1424
  {
1425
  reset($podcast_feeds);
1426
  $remaining_slugs = '';
1427
+ foreach( $podcast_feeds as $feed_slug=> $feed_title )
1428
  {
1429
  if( $remaining_slugs != '' )
1430
  $remaining_slugs .= '|';
1449
 
1450
  if( $GeneralSettings && isset($GeneralSettings['custom_feeds']) && is_array($GeneralSettings['custom_feeds']) )
1451
  {
1452
+ foreach( $GeneralSettings['custom_feeds'] as $feed_slug=> $null )
1453
  {
1454
  if( !in_array($feed_slug, $wp_rewrite->feeds) )
1455
  $wp_rewrite->feeds[] = $feed_slug;
1499
 
1500
  if( $GeneralSettings && isset($GeneralSettings['custom_feeds']) && is_array($GeneralSettings['custom_feeds']) )
1501
  {
1502
+ foreach( $GeneralSettings['custom_feeds'] as $feed_slug=> $feed_title )
1503
  {
1504
  if( $feed_slug != 'podcast' )
1505
  add_feed($feed_slug, 'powerpress_do_podcast_feed');
1528
  {
1529
  $FeedSlugPostTypesArray = array();
1530
  }
1531
+ foreach( $FeedSlugPostTypesArray as $feed_slug=> $FeedSlugPostTypes )
1532
  {
1533
  if ( !in_array($feed_slug, $wp_rewrite->feeds) ) // we need to add this feed name
1534
  {
1535
  add_feed($feed_slug, 'powerpress_do_podcast_feed');
1536
+ foreach( $FeedSlugPostTypes as $post_type_slug=> $title )
1537
  {
1538
  add_rewrite_rule( '/'. $post_type_slug .'/feed/'. $feed_slug .'/?$', 'index.php?post_type='. $post_type_slug .'&feed='.$feed_slug, 'top' ); // capture the post type feeds
1539
  add_rewrite_rule( '/'. $post_type_slug .'/feed/'. $feed_slug .'/?$', 'index.php?post_type='. $post_type_slug .'&feed='.$feed_slug, 'bottom' ); // capture the post type feeds
1601
 
1602
  if( $podcast_feed_slug )
1603
  {
1604
+ if( !defined('POWERPRESS_POSTTYPE_MIXING') && $qv['feed'] == 'podcast' ) {
1605
  $qv['post_type'] = 'post';
1606
+ } else {
1607
  $qv['post_type'] = get_post_types( array('public'=> true, 'capability_type'=>'post') );
1608
  if( !empty($qv['post_type']['attachment']) )
1609
  unset($qv['post_type']['attachment']);
2166
  $GeneralSettings['custom_feeds'] = array();
2167
  $GeneralSettings['custom_feeds']['podcast'] = 'Default Podcast Feed';
2168
 
2169
+ foreach( $Temp as $feed_slug=> $feed_title )
2170
  {
2171
  if( $feed_slug == 'podcast' )
2172
  continue;
2196
  }; break;
2197
  }
2198
 
2199
+ foreach( $PostTypeSettingsArray as $feed_slug=> $postTypeSettings )
2200
  {
2201
  if( !empty( $postTypeSettings['title']) )
2202
  $GeneralSettings['custom_feeds'][ $feed_slug ] = $postTypeSettings['title'];
2220
 
2221
  // LOOP HERE TO DISPLAY EACH MEDIA TYPE
2222
  $new_content = '';
2223
+ foreach( $GeneralSettings['custom_feeds'] as $feed_slug=> $feed_title )
2224
  {
2225
  // Get the enclosure data
2226
  $EpisodeData = powerpress_get_enclosure_data($post->ID, $feed_slug);
2492
 
2493
  if( $PrefixSubCategories )
2494
  {
2495
+ foreach( $temp as $key=> $val )
2496
  {
2497
  $parts = explode('-', $key);
2498
  $cat = $parts[0];
2782
  } else if( is_single() ) {
2783
  $categories = wp_get_post_categories( get_the_ID() );
2784
  if( count($categories) == 1 ) { // See if only one category is associated with this post
2785
+ foreach( $categories as $null=> $cat_id ) {
2786
+ break;
2787
+ }
2788
  $FeedCatSettings = get_option('powerpress_cat_feed_'.$cat_id );
2789
  if( $FeedCatSettings && !empty($FeedCatSettings['redirect']) ) {
2790
  $Redirects['redirect0'] = $FeedCatSettings['redirect'];
2854
  $ttid_found = 0;
2855
  $TaxonomySettings = false;
2856
 
2857
+ foreach( $terms as $index=> $termObj )
2858
  {
2859
  // Skip the default taxonomies
2860
  if( $termObj->taxonomy == 'category' || $termObj->taxonomy == 'link_category' || $termObj->taxonomy == 'post_tag' || $termObj->taxonomy == 'nav_menu' )
2994
  if( !$CustomFeedSettings )
2995
  return $FeedSettings; // If the $CustomFeedSettings is false
2996
 
2997
+ foreach( $CustomFeedSettings as $key=> $value )
2998
  {
2999
  if( $value !== '' || !isset($FeedSettings[$key]) )
3000
  $FeedSettings[$key] = $value;
3160
  $ExtraData = @unserialize($Serialized);
3161
  if( $ExtraData && is_array($ExtraData) )
3162
  {
3163
+ foreach( $ExtraData as $key=> $value ) {
3164
 
3165
  // Make sure specific fields are not overwritten...
3166
  switch( $key ) {
3343
  {
3344
  if( isset($GeneralSettings['custom_feeds']['podcast']) )
3345
  $ChannelSlugs = array(); // Reset the array so it is added from the list in specified order
3346
+ foreach( $GeneralSettings['custom_feeds'] as $feed_slug=> $null )
3347
  $ChannelSlugs[] = $feed_slug;
3348
  }
3349
  else if( is_array($slug) )
3360
  {
3361
  the_post();
3362
 
3363
+ foreach( $ChannelSlugs as $null=> $feed_slug )
3364
  {
3365
  // Do we follow the global settings to disable a player?
3366
  if( isset($GeneralSettings['disable_player']) && isset($GeneralSettings['disable_player'][$feed_slug]) && $slug == false )
3503
  $trace = $e->getTrace();
3504
 
3505
  if( !empty($trace) ) {
3506
+ foreach( $trace as $index=> $call ) {
3507
  if( isset($call['function']) ) {
3508
  // Which calls should we not add the player and links...
3509
  switch( $call['function'] ) {
3524
  $trace = $e->getTrace();
3525
 
3526
  if( !empty($trace) ) {
3527
+
3528
+ foreach( $trace as $index=> $call ) {
3529
  if( isset($call['function']) ) {
3530
  // Which calls should we not add the player and links...
3531
  switch( $call['function'] ) {
powerpressadmin-basic.php CHANGED
@@ -151,8 +151,8 @@ jQuery(document).ready(function($) {
151
  <li><a href="#tab2"><span><?php echo htmlspecialchars(__('Services & Stats', 'powerpress')); ?></span></a></li>
152
  <li><a href="#tab3"><span><?php echo htmlspecialchars(__('Website', 'powerpress')); ?></span></a></li>
153
  <li><a href="#tab4"><span><?php echo htmlspecialchars(__('Feeds', 'powerpress')); ?></span></a></li>
154
- <li><a href="#tab5"><span><?php echo htmlspecialchars(__('iTunes', 'powerpress')); ?></span></a></li>
155
- <li><a href="#tab6"><span><?php echo htmlspecialchars(__('Google Play', 'powerpress')); ?></span></a></li>
156
  <li><a href="#tab7"><span><?php echo htmlspecialchars(__('Artwork', 'powerpress')); ?></span></a></li>
157
  <li><a href="#tab-dest"><span><?php echo htmlspecialchars(__('Destinations', 'powerpress')); ?></span></a></li>
158
  </ul>
@@ -262,17 +262,17 @@ jQuery(document).ready( function() {
262
  <div style="margin-left: 50px;" >
263
  <div>
264
  <input type="checkbox" name="NULL[import_podcast]" value="1" checked disabled />
265
- <strong><a href="<?php echo admin_url('admin.php?page=powerpress/powerpressadmin_import_feed.php'); ?>"><?php echo __('Import Podcast', 'powerpress'); ?></a></strong> <?php echo powerpressadmin_new(); ?> -
266
  <?php echo __('Import podcast feed from SoundCloud, LibSyn, PodBean or other podcast service.', 'powerpress'); ?>
267
  </div>
268
  <div>
269
  <input type="checkbox" name="NULL[migrate_media]" value="1" checked disabled />
270
- <strong><a href="<?php echo admin_url('admin.php?page=powerpress/powerpressadmin_migrate.php'); ?>"><?php echo __('Migrate Media', 'powerpress'); ?></a></strong> <?php echo powerpressadmin_new(); ?> -
271
  <?php echo __('Migrate media files to Blubrry Podcast Media Hosting with only a few clicks.', 'powerpress'); ?>
272
  </div>
273
  <div>
274
  <input type="checkbox" name="NULL[podcasting_seo]" value="1" checked disabled />
275
- <strong><a href="<?php echo admin_url('admin.php?page=powerpress/powerpressadmin_search.php'); ?>"><?php echo __('Podcasting SEO', 'powerpress'); ?></a></strong> <?php echo powerpressadmin_new(); ?> -
276
  <?php echo __('Select from 3 different web based audio players.', 'powerpress'); ?>
277
  </div>
278
 
@@ -509,7 +509,7 @@ function powerpressadmin_edit_entry_options($General)
509
  (<?php echo __('Leave unchecked if you do not distribute closed captioned media', 'powerpress'); ?>)</p>
510
 
511
  <p style="margin-top: 15px;"><label><input id="episode_box_order" class="episode_box_option" name="General[episode_box_order]" type="checkbox" value="1"<?php if( !empty($General['episode_box_order']) ) echo ' checked'; ?> <?php if( !empty($General['episode_box_feature_in_itunes']) ) echo ' disabled'; ?> /> <?php echo __('iTunes Order', 'powerpress'); ?></label>
512
- (<?php echo __('Override the default ordering of episodes on the iTunes and Google Play Music podcast directories', 'powerpress'); ?>)</p>
513
  <em><strong><?php echo __('If conflicting values are present the directories will use the default ordering.', 'powerpress'); ?></strong></em><br />
514
  <em><strong><?php echo __('This feature only applies to the default podcast feed and Custom Podcast Channel feeds added by PowerPress.', 'powerpress'); ?></strong></em>
515
 
@@ -519,11 +519,11 @@ function powerpressadmin_edit_entry_options($General)
519
  $linkoptions = array('false'=>__('Hide Field', 'powerpress'),
520
  1=>__('Show Field', 'powerpress') );
521
 
522
- while( list($value,$desc) = each($linkoptions) )
523
  echo "\t<option value=\"$value\"". ( !empty($General['episode_box_itunes_title']) && $General['episode_box_itunes_title'] == $value ?' selected':''). ">$desc</option>\n";
524
 
525
  ?>
526
- </select> <?php echo __('iTunes Episode Title Field', 'powerpress'); ?></label> <?php echo powerpressadmin_new(); ?></p>
527
  <em><strong><?php echo __('Specify iTunes episode title separate from podcast feed title.', 'powerpress'); ?></strong></em>
528
  <?php } // end episode_box_itunes_title ?>
529
 
@@ -533,16 +533,16 @@ while( list($value,$desc) = each($linkoptions) )
533
  $linkoptions = array('false'=>__('Hide Field', 'powerpress'),
534
  1=>__('Show Field', 'powerpress') );
535
 
536
- while( list($value,$desc) = each($linkoptions) )
537
  echo "\t<option value=\"$value\"". ( !empty($General['episode_box_itunes_nst']) && $General['episode_box_itunes_nst'] == $value ?' selected':''). ">$desc</option>\n";
538
 
539
  ?>
540
- </select> <?php echo __('iTunes Episode Number, Season and Type Fields', 'powerpress'); ?></label> <?php echo powerpressadmin_new(); ?></p>
541
  <em><strong><?php echo __('Enter specifics about episode including episode number, season number and type (full, trailer, or bonus).', 'powerpress'); ?></strong></em>
542
  <?php } // end episode_box_itunes_title ?>
543
 
544
- <p style="margin-top: 15px;"><label><input id="episode_box_feature_in_itunes" class="episode_box_option" name="General[episode_box_feature_in_itunes]" type="checkbox" value="1"<?php if( !empty($General['episode_box_feature_in_itunes']) ) echo ' checked'; ?> /> <?php echo __('Feature Episode in iTunes and Google Play Music', 'powerpress'); ?></label>
545
- (<?php echo __('Display selected episode at top of your iTunes and Google Play Music directory listings', 'powerpress'); ?>)</p>
546
  <em><strong><?php echo __('All other episodes will be listed following the featured episode.', 'powerpress'); ?></strong></em><br />
547
  <em><strong><?php echo __('This feature only applies to the default podcast feed and Custom Podcast Channel feeds added by PowerPress.', 'powerpress'); ?></strong></em>
548
 
@@ -623,7 +623,7 @@ SelectEmbedField(<?php echo $General['episode_box_embed']; ?>);
623
  <?php
624
  $options = array(0=>__('Auto detect file size', 'powerpress'), 1=>__('User specify', 'powerpress') );
625
 
626
- while( list($value,$desc) = each($options) )
627
  echo "\t<option value=\"$value\"". ($General['set_size']==$value?' selected':''). ">$desc</option>\n";
628
 
629
  ?>
@@ -639,7 +639,7 @@ while( list($value,$desc) = each($options) )
639
  <?php
640
  $options = array(0=>__('Auto detect duration', 'powerpress'), 1=>__('User specify', 'powerpress'), -1=>__('Not specified (not recommended)', 'powerpress') );
641
 
642
- while( list($value,$desc) = each($options) )
643
  echo "\t<option value=\"$value\"". ($General['set_duration']==$value?' selected':''). ">$desc</option>\n";
644
 
645
  ?>
@@ -658,7 +658,7 @@ while( list($value,$desc) = each($options) )
658
  <?php
659
  $options = array(0=>__('Disabled (default)', 'powerpress'), 1=>__('First media link found in post content', 'powerpress'), 2=>__('Last media link found in post content', 'powerpress') );
660
 
661
- while( list($value,$desc) = each($options) )
662
  echo "\t<option value=\"$value\"". ($General['auto_enclose']==$value?' selected':''). ">$desc</option>\n";
663
 
664
  ?>
@@ -676,7 +676,7 @@ while( list($value,$desc) = each($options) )
676
  <?php
677
  $options = array(0=>__('No (default)', 'powerpress'), 1=>__('Yes', 'powerpress') );
678
  $current_value = (!empty($General['hide_warnings'])?$General['hide_warnings']:0);
679
- while( list($value,$desc) = each($options) )
680
  echo "\t<option value=\"$value\"". ($current_value==$value?' selected':''). ">$desc</option>\n";
681
 
682
  ?>
@@ -705,7 +705,7 @@ while( list($value,$desc) = each($options) )
705
  $options = array(0=>__('Default WordPress Behavior', 'powerpress'), 1=>__('Match Feed Name to Page/Category', 'powerpress') );
706
  $current_value = (!empty($General['permalink_feeds_only'])?$General['permalink_feeds_only']:0);
707
 
708
- while( list($value,$desc) = each($options) )
709
  echo "\t<option value=\"$value\"". ($current_value==$value?' selected':''). ">$desc</option>\n";
710
 
711
  ?>
@@ -743,7 +743,7 @@ function powerpressadmin_edit_podpress_options($General)
743
  <?php
744
  $options = array(0=>__('Ignore', 'powerpress'), 1=>__('Include in Posts and Feeds', 'powerpress') );
745
 
746
- while( list($value,$desc) = each($options) )
747
  echo "\t<option value=\"$value\"". ($General['process_podpress']==$value?' selected':''). ">$desc</option>\n";
748
 
749
  ?>
@@ -760,7 +760,7 @@ while( list($value,$desc) = each($options) )
760
  <?php
761
  $options = array(0=>__('Hide', 'powerpress'), 1=>__('Display', 'powerpress') );
762
 
763
- while( list($value,$desc) = each($options) )
764
  echo "\t<option value=\"$value\"". ($General['podpress_stats']==$value?' selected':''). ">$desc</option>\n";
765
 
766
  ?>
@@ -818,7 +818,7 @@ function powerpressadmin_edit_googleplay($FeedSettings, $General, $FeedAttribs =
818
  }
819
 
820
  ?>
821
- <h3><?php echo __('Google Play Settings', 'powerpress'); ?> <?php echo powerpressadmin_new(); ?></h3>
822
  <table class="form-table">
823
  <tr valign="top">
824
  <th scope="row">
@@ -864,7 +864,7 @@ function powerpressadmin_edit_googleplay($FeedSettings, $General, $FeedAttribs =
864
  <?php
865
  $explicit = array(0=> __('No - display nothing', 'powerpress'), 1=>__('Yes - explicit content', 'powerpress') );
866
 
867
- while( list($value,$desc) = each($explicit) )
868
  echo "\t<option value=\"$value\"". ($FeedSettings['googleplay_explicit']==$value?' selected':''). ">$desc</option>\n";
869
 
870
  ?>
@@ -886,7 +886,7 @@ $MoreCategories = false;
886
  $Categories = powerpress_googleplay_categories();
887
 
888
  echo '<option value="">'. __('Select Category', 'powerpress') .'</option>';
889
- while( list($value,$desc) = each($Categories) )
890
  echo "\t<option value=\"$value\"". ($FeedSettings['googleplay_cat']==$value?' selected':''). ">".htmlspecialchars($desc)."</option>\n";
891
 
892
  ?>
@@ -1161,7 +1161,7 @@ function powerpressadmin_appearance($General=false, $Feed = false)
1161
  $Players = array('podcast'=>__('Default Podcast (podcast)', 'powerpress') );
1162
  if( isset($General['custom_feeds']) )
1163
  {
1164
- while( list($podcast_slug, $podcast_title) = each($General['custom_feeds']) )
1165
  {
1166
  if( $podcast_slug == 'podcast' )
1167
  continue;
@@ -1281,7 +1281,7 @@ function powerpressadmin_appearance($General=false, $Feed = false)
1281
 
1282
  <tr valign="top">
1283
  <th scope="row">
1284
- <?php echo __('Subscribe Links', 'powerpress'); ?> <?php echo powerpressadmin_new(); ?></th>
1285
  <td>
1286
  <p style="padding-top: 8px;"><label><input type="checkbox" name="General[subscribe_links]" value="1" <?php if( $General['subscribe_links'] == 1 ) echo 'checked '; ?>/>
1287
  <?php echo __('Display subscribe links below player and media links.', 'powerpress'); ?></label></p>
@@ -1298,7 +1298,7 @@ function powerpressadmin_appearance($General=false, $Feed = false)
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> <?php echo powerpressadmin_new(); ?></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>
@@ -1309,7 +1309,7 @@ function powerpressadmin_appearance($General=false, $Feed = false)
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> <?php echo powerpressadmin_new(); ?></p>
1313
  <div style="margin-left: 24px;">
1314
  <p><?php echo __('Link to your one click Subscribe by Email URL.', 'powerpress'); ?></p>
1315
  <p>
@@ -1320,11 +1320,14 @@ function powerpressadmin_appearance($General=false, $Feed = false)
1320
  </p>
1321
  </div>
1322
 
1323
- <p><input type="hidden" name="General[subscribe_feature_gp]" value="0" /><input type="checkbox" id="subscribe_feature_gp" name="General[subscribe_feature_gp]" value="1" <?php if( !empty($General['subscribe_feature_gp']) ) echo 'checked '; ?>/> <label for="subscribe_feature_gp"><?php echo __('Subscribe on Google Play', 'powerpress'); ?></label> <?php echo powerpressadmin_new(); ?></p>
 
1324
 
1325
- <p><input type="hidden" name="General[subscribe_feature_stitcher]" value="0" /><input type="checkbox" id="subscribe_feature_stitcher" name="General[subscribe_feature_stitcher]" value="1" <?php if( !empty($General['subscribe_feature_stitcher']) ) echo 'checked '; ?>/> <label for="subscribe_feature_stitcher"><?php echo __('Subscribe on Stitcher', 'powerpress'); ?></label> <?php echo powerpressadmin_new(); ?></p>
1326
 
1327
- <p><input type="hidden" name="General[subscribe_feature_tunein]" value="0" /><input type="checkbox" id="subscribe_feature_tunein" name="General[subscribe_feature_tunein]" value="1" <?php if( !empty($General['subscribe_feature_tunein']) ) echo 'checked '; ?>/> <label for="subscribe_feature_tunein"><?php echo __('Subscribe on TuneIn', 'powerpress'); ?></label> <?php echo powerpressadmin_new(); ?></p>
 
 
1328
 
1329
  </td>
1330
  </tr>
@@ -1349,7 +1352,7 @@ $linkoptions = array(0=>__('No, everything is working', 'powerpress'),
1349
  3=>__('Yes, excluding excerpts', 'powerpress'),
1350
  4=>__('Yes, wp_head check', 'powerpress') );
1351
 
1352
- while( list($value,$desc) = each($linkoptions) )
1353
  echo "\t<option value=\"$value\"". ($General['player_aggressive']==$value?' selected':''). ">$desc</option>\n";
1354
 
1355
  ?>
@@ -1450,7 +1453,7 @@ function powerpressadmin_edit_funding($FeedSettings = false, $feed_slug='podcast
1450
  <table class="form-table">
1451
  <tr valign="top">
1452
  <th scope="row">
1453
- <?php echo __('Donate Link', 'powerpress'); ?> <?php echo powerpressadmin_new(); ?></th>
1454
  <td>
1455
  <p style="padding-top: 8px;"><label for="donate_link"><input type="checkbox" id="donate_link" name="Feed[donate_link]" value="1" <?php if( $FeedSettings['donate_link'] == 1 ) echo 'checked '; ?>/>
1456
  <?php echo __('Syndicate a donate link with your podcast. Create your own croudfunding page with PayPal donate buttons, or link to a service such as Patreon.', 'powerpress'); ?></label></p>
@@ -1502,7 +1505,7 @@ function powerpressadmin_edit_tv($FeedSettings = false, $feed_slug='podcast', $c
1502
  );
1503
 
1504
 
1505
- while( list($rating,$title) = each($Ratings) )
1506
  {
1507
  $tip = $RatingsTips[ $rating ];
1508
  ?>
@@ -1582,7 +1585,7 @@ function powerpressadmin_edit_artwork($FeedSettings, $General)
1582
  <table class="form-table">
1583
  <tr valign="top">
1584
  <th scope="row">
1585
- <?php echo __('Google Play Image', 'powerpress'); ?> <?php echo powerpressadmin_new(); ?>
1586
  </th>
1587
  <td>
1588
  <input type="text" id="googleplay_image" name="Feed[googleplay_image]" style="width: 60%; margin-top: 10px;" value="<?php echo esc_attr( !empty($FeedSettings['googleplay_image'])? $FeedSettings['googleplay_image']:''); ?>" maxlength="255" />
151
  <li><a href="#tab2"><span><?php echo htmlspecialchars(__('Services & Stats', 'powerpress')); ?></span></a></li>
152
  <li><a href="#tab3"><span><?php echo htmlspecialchars(__('Website', 'powerpress')); ?></span></a></li>
153
  <li><a href="#tab4"><span><?php echo htmlspecialchars(__('Feeds', 'powerpress')); ?></span></a></li>
154
+ <li><a href="#tab5"><span><?php echo htmlspecialchars(__('Apple', 'powerpress')); ?></span></a></li>
155
+ <li><a href="#tab6"><span><?php echo htmlspecialchars(__('Google', 'powerpress')); ?></span></a></li>
156
  <li><a href="#tab7"><span><?php echo htmlspecialchars(__('Artwork', 'powerpress')); ?></span></a></li>
157
  <li><a href="#tab-dest"><span><?php echo htmlspecialchars(__('Destinations', 'powerpress')); ?></span></a></li>
158
  </ul>
262
  <div style="margin-left: 50px;" >
263
  <div>
264
  <input type="checkbox" name="NULL[import_podcast]" value="1" checked disabled />
265
+ <strong><a href="<?php echo admin_url('admin.php?page=powerpress/powerpressadmin_import_feed.php'); ?>"><?php echo __('Import Podcast', 'powerpress'); ?></a></strong> -
266
  <?php echo __('Import podcast feed from SoundCloud, LibSyn, PodBean or other podcast service.', 'powerpress'); ?>
267
  </div>
268
  <div>
269
  <input type="checkbox" name="NULL[migrate_media]" value="1" checked disabled />
270
+ <strong><a href="<?php echo admin_url('admin.php?page=powerpress/powerpressadmin_migrate.php'); ?>"><?php echo __('Migrate Media', 'powerpress'); ?></a></strong> -
271
  <?php echo __('Migrate media files to Blubrry Podcast Media Hosting with only a few clicks.', 'powerpress'); ?>
272
  </div>
273
  <div>
274
  <input type="checkbox" name="NULL[podcasting_seo]" value="1" checked disabled />
275
+ <strong><a href="<?php echo admin_url('admin.php?page=powerpress/powerpressadmin_search.php'); ?>"><?php echo __('Podcasting SEO', 'powerpress'); ?></a></strong> -
276
  <?php echo __('Select from 3 different web based audio players.', 'powerpress'); ?>
277
  </div>
278
 
509
  (<?php echo __('Leave unchecked if you do not distribute closed captioned media', 'powerpress'); ?>)</p>
510
 
511
  <p style="margin-top: 15px;"><label><input id="episode_box_order" class="episode_box_option" name="General[episode_box_order]" type="checkbox" value="1"<?php if( !empty($General['episode_box_order']) ) echo ' checked'; ?> <?php if( !empty($General['episode_box_feature_in_itunes']) ) echo ' disabled'; ?> /> <?php echo __('iTunes Order', 'powerpress'); ?></label>
512
+ (<?php echo __('Override the default ordering of episodes on the Apple and Google Podcast directories', 'powerpress'); ?>)</p>
513
  <em><strong><?php echo __('If conflicting values are present the directories will use the default ordering.', 'powerpress'); ?></strong></em><br />
514
  <em><strong><?php echo __('This feature only applies to the default podcast feed and Custom Podcast Channel feeds added by PowerPress.', 'powerpress'); ?></strong></em>
515
 
519
  $linkoptions = array('false'=>__('Hide Field', 'powerpress'),
520
  1=>__('Show Field', 'powerpress') );
521
 
522
+ foreach( $linkoptions as $value => $desc )
523
  echo "\t<option value=\"$value\"". ( !empty($General['episode_box_itunes_title']) && $General['episode_box_itunes_title'] == $value ?' selected':''). ">$desc</option>\n";
524
 
525
  ?>
526
+ </select> <?php echo __('iTunes Episode Title Field', 'powerpress'); ?></label> </p>
527
  <em><strong><?php echo __('Specify iTunes episode title separate from podcast feed title.', 'powerpress'); ?></strong></em>
528
  <?php } // end episode_box_itunes_title ?>
529
 
533
  $linkoptions = array('false'=>__('Hide Field', 'powerpress'),
534
  1=>__('Show Field', 'powerpress') );
535
 
536
+ foreach( $linkoptions as $value => $desc )
537
  echo "\t<option value=\"$value\"". ( !empty($General['episode_box_itunes_nst']) && $General['episode_box_itunes_nst'] == $value ?' selected':''). ">$desc</option>\n";
538
 
539
  ?>
540
+ </select> <?php echo __('iTunes Episode Number, Season and Type Fields', 'powerpress'); ?></label> </p>
541
  <em><strong><?php echo __('Enter specifics about episode including episode number, season number and type (full, trailer, or bonus).', 'powerpress'); ?></strong></em>
542
  <?php } // end episode_box_itunes_title ?>
543
 
544
+ <p style="margin-top: 15px;"><label><input id="episode_box_feature_in_itunes" class="episode_box_option" name="General[episode_box_feature_in_itunes]" type="checkbox" value="1"<?php if( !empty($General['episode_box_feature_in_itunes']) ) echo ' checked'; ?> /> <?php echo __('Feature Episode in Apple and Google Podcasts', 'powerpress'); ?></label>
545
+ (<?php echo __('Display selected episode at top of your Apple and Google Podcasts listings', 'powerpress'); ?>)</p>
546
  <em><strong><?php echo __('All other episodes will be listed following the featured episode.', 'powerpress'); ?></strong></em><br />
547
  <em><strong><?php echo __('This feature only applies to the default podcast feed and Custom Podcast Channel feeds added by PowerPress.', 'powerpress'); ?></strong></em>
548
 
623
  <?php
624
  $options = array(0=>__('Auto detect file size', 'powerpress'), 1=>__('User specify', 'powerpress') );
625
 
626
+ foreach( $options as $value => $desc )
627
  echo "\t<option value=\"$value\"". ($General['set_size']==$value?' selected':''). ">$desc</option>\n";
628
 
629
  ?>
639
  <?php
640
  $options = array(0=>__('Auto detect duration', 'powerpress'), 1=>__('User specify', 'powerpress'), -1=>__('Not specified (not recommended)', 'powerpress') );
641
 
642
+ foreach( $options as $value => $desc )
643
  echo "\t<option value=\"$value\"". ($General['set_duration']==$value?' selected':''). ">$desc</option>\n";
644
 
645
  ?>
658
  <?php
659
  $options = array(0=>__('Disabled (default)', 'powerpress'), 1=>__('First media link found in post content', 'powerpress'), 2=>__('Last media link found in post content', 'powerpress') );
660
 
661
+ foreach( $options as $value => $desc )
662
  echo "\t<option value=\"$value\"". ($General['auto_enclose']==$value?' selected':''). ">$desc</option>\n";
663
 
664
  ?>
676
  <?php
677
  $options = array(0=>__('No (default)', 'powerpress'), 1=>__('Yes', 'powerpress') );
678
  $current_value = (!empty($General['hide_warnings'])?$General['hide_warnings']:0);
679
+ foreach( $options as $value => $desc )
680
  echo "\t<option value=\"$value\"". ($current_value==$value?' selected':''). ">$desc</option>\n";
681
 
682
  ?>
705
  $options = array(0=>__('Default WordPress Behavior', 'powerpress'), 1=>__('Match Feed Name to Page/Category', 'powerpress') );
706
  $current_value = (!empty($General['permalink_feeds_only'])?$General['permalink_feeds_only']:0);
707
 
708
+ foreach( $options as $value => $desc )
709
  echo "\t<option value=\"$value\"". ($current_value==$value?' selected':''). ">$desc</option>\n";
710
 
711
  ?>
743
  <?php
744
  $options = array(0=>__('Ignore', 'powerpress'), 1=>__('Include in Posts and Feeds', 'powerpress') );
745
 
746
+ foreach( $options as $value => $desc )
747
  echo "\t<option value=\"$value\"". ($General['process_podpress']==$value?' selected':''). ">$desc</option>\n";
748
 
749
  ?>
760
  <?php
761
  $options = array(0=>__('Hide', 'powerpress'), 1=>__('Display', 'powerpress') );
762
 
763
+ foreach( $options as $value => $desc )
764
  echo "\t<option value=\"$value\"". ($General['podpress_stats']==$value?' selected':''). ">$desc</option>\n";
765
 
766
  ?>
818
  }
819
 
820
  ?>
821
+ <h3><?php echo __('Google Play Settings', 'powerpress'); ?> </h3>
822
  <table class="form-table">
823
  <tr valign="top">
824
  <th scope="row">
864
  <?php
865
  $explicit = array(0=> __('No - display nothing', 'powerpress'), 1=>__('Yes - explicit content', 'powerpress') );
866
 
867
+ foreach( $explicit as $value => $desc )
868
  echo "\t<option value=\"$value\"". ($FeedSettings['googleplay_explicit']==$value?' selected':''). ">$desc</option>\n";
869
 
870
  ?>
886
  $Categories = powerpress_googleplay_categories();
887
 
888
  echo '<option value="">'. __('Select Category', 'powerpress') .'</option>';
889
+ foreach( $Categories as $value => $desc )
890
  echo "\t<option value=\"$value\"". ($FeedSettings['googleplay_cat']==$value?' selected':''). ">".htmlspecialchars($desc)."</option>\n";
891
 
892
  ?>
1161
  $Players = array('podcast'=>__('Default Podcast (podcast)', 'powerpress') );
1162
  if( isset($General['custom_feeds']) )
1163
  {
1164
+ foreach( $General['custom_feeds'] as $podcast_slug => $podcast_title )
1165
  {
1166
  if( $podcast_slug == 'podcast' )
1167
  continue;
1281
 
1282
  <tr valign="top">
1283
  <th scope="row">
1284
+ <?php echo __('Subscribe Links', 'powerpress'); ?> </th>
1285
  <td>
1286
  <p style="padding-top: 8px;"><label><input type="checkbox" name="General[subscribe_links]" value="1" <?php if( $General['subscribe_links'] == 1 ) echo 'checked '; ?>/>
1287
  <?php echo __('Display subscribe links below player and media links.', 'powerpress'); ?></label></p>
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>
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>
1320
  </p>
1321
  </div>
1322
 
1323
+ <p><input type="hidden" name="General[subscribe_feature_gp]" value="0" /><input type="checkbox" id="subscribe_feature_gp" name="General[subscribe_feature_gp]" value="1" <?php if( !empty($General['subscribe_feature_gp']) ) echo 'checked '; ?>/> <label for="subscribe_feature_gp"><?php echo __('Subscribe on Google Podcasts', 'powerpress'); ?></label> <?php echo powerpressadmin_new(); ?></p>
1324
+ <p><?php echo __('Note: Subscribe on Android includes Google Podcasts.', 'powerpress'); ?>
1325
 
1326
+ <p><input type="hidden" name="General[subscribe_feature_stitcher]" value="0" /><input type="checkbox" id="subscribe_feature_stitcher" name="General[subscribe_feature_stitcher]" value="1" <?php if( !empty($General['subscribe_feature_stitcher']) ) echo 'checked '; ?>/> <label for="subscribe_feature_stitcher"><?php echo __('Subscribe on Stitcher', 'powerpress'); ?></label></p>
1327
 
1328
+ <p><input type="hidden" name="General[subscribe_feature_tunein]" value="0" /><input type="checkbox" id="subscribe_feature_tunein" name="General[subscribe_feature_tunein]" value="1" <?php if( !empty($General['subscribe_feature_tunein']) ) echo 'checked '; ?>/> <label for="subscribe_feature_tunein"><?php echo __('Subscribe on TuneIn', 'powerpress'); ?></label></p>
1329
+
1330
+ <p><input type="hidden" name="General[subscribe_feature_spotify]" value="0" /><input type="checkbox" id="subscribe_feature_spotify" name="General[subscribe_feature_spotify]" value="1" <?php if( !empty($General['subscribe_feature_spotify']) ) echo 'checked '; ?>/> <label for="subscribe_feature_spotify"><?php echo __('Subscribe on Spotify', 'powerpress'); ?></label> <?php echo powerpressadmin_new(); ?></p>
1331
 
1332
  </td>
1333
  </tr>
1352
  3=>__('Yes, excluding excerpts', 'powerpress'),
1353
  4=>__('Yes, wp_head check', 'powerpress') );
1354
 
1355
+ foreach( $linkoptions as $value => $desc )
1356
  echo "\t<option value=\"$value\"". ($General['player_aggressive']==$value?' selected':''). ">$desc</option>\n";
1357
 
1358
  ?>
1453
  <table class="form-table">
1454
  <tr valign="top">
1455
  <th scope="row">
1456
+ <?php echo __('Donate Link', 'powerpress'); ?> </th>
1457
  <td>
1458
  <p style="padding-top: 8px;"><label for="donate_link"><input type="checkbox" id="donate_link" name="Feed[donate_link]" value="1" <?php if( $FeedSettings['donate_link'] == 1 ) echo 'checked '; ?>/>
1459
  <?php echo __('Syndicate a donate link with your podcast. Create your own croudfunding page with PayPal donate buttons, or link to a service such as Patreon.', 'powerpress'); ?></label></p>
1505
  );
1506
 
1507
 
1508
+ foreach( $Ratings as $rating => $title )
1509
  {
1510
  $tip = $RatingsTips[ $rating ];
1511
  ?>
1585
  <table class="form-table">
1586
  <tr valign="top">
1587
  <th scope="row">
1588
+ <?php echo __('Google Play Image', 'powerpress'); ?>
1589
  </th>
1590
  <td>
1591
  <input type="text" id="googleplay_image" name="Feed[googleplay_image]" style="width: 60%; margin-top: 10px;" value="<?php echo esc_attr( !empty($FeedSettings['googleplay_image'])? $FeedSettings['googleplay_image']:''); ?>" maxlength="255" />
powerpressadmin-categoryfeeds.php CHANGED
@@ -67,7 +67,7 @@ function powerpress_admin_categoryfeeds()
67
  $Feeds = $General['custom_cat_feeds'];
68
 
69
  $count = 0;
70
- while( list($null, $cat_ID) = each($Feeds) )
71
  {
72
  if( empty($cat_ID) )
73
  continue;
67
  $Feeds = $General['custom_cat_feeds'];
68
 
69
  $count = 0;
70
+ foreach( $Feeds as $null => $cat_ID )
71
  {
72
  if( empty($cat_ID) )
73
  continue;
powerpressadmin-customfeeds.php CHANGED
@@ -72,7 +72,7 @@ function powerpress_admin_customfeeds()
72
  asort($Feeds, SORT_STRING); // Sort feeds
73
 
74
  $count = 0;
75
- while( list($feed_slug, $feed_title) = each($Feeds ) )
76
  {
77
  $feed_slug = esc_attr($feed_slug); // Precaution
78
  $episode_total = powerpress_admin_episodes_per_feed($feed_slug);
72
  asort($Feeds, SORT_STRING); // Sort feeds
73
 
74
  $count = 0;
75
+ foreach( $Feeds as $feed_slug => $feed_title )
76
  {
77
  $feed_slug = esc_attr($feed_slug); // Precaution
78
  $episode_total = powerpress_admin_episodes_per_feed($feed_slug);
powerpressadmin-dashboard.php CHANGED
@@ -160,7 +160,7 @@ function powerpress_dashboard_stats_content()
160
  {
161
  $success = false;
162
  $api_url_array = powerpress_get_api_array();
163
- while( list($index,$api_url) = each($api_url_array) )
164
  {
165
  $req_url = sprintf('%s/stats/%s/summary.html?nobody=1', rtrim($api_url, '/'), $Keyword);
166
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
160
  {
161
  $success = false;
162
  $api_url_array = powerpress_get_api_array();
163
+ foreach( $api_url_array as $index=> $api_url )
164
  {
165
  $req_url = sprintf('%s/stats/%s/summary.html?nobody=1', rtrim($api_url, '/'), $Keyword);
166
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
powerpressadmin-defaults.php CHANGED
@@ -117,7 +117,7 @@ jQuery(document).ready(function($) {
117
  if( $Step > 1 ) { // Only display if we have episdoes in the feed!
118
  // TODO: Need to include the settings_tab_destinations.php but only the iTunes option to keep things simple
119
  }
120
- // iTunes settings (in simple mode of course)
121
  powerpressadmin_edit_itunes_feed($FeedSettings, $General, $FeedAttribs);
122
 
123
  powerpressadmin_edit_artwork($FeedSettings, $General);
117
  if( $Step > 1 ) { // Only display if we have episdoes in the feed!
118
  // TODO: Need to include the settings_tab_destinations.php but only the iTunes option to keep things simple
119
  }
120
+ // Apple settings (in simple mode of course)
121
  powerpressadmin_edit_itunes_feed($FeedSettings, $General, $FeedAttribs);
122
 
123
  powerpressadmin_edit_artwork($FeedSettings, $General);
powerpressadmin-diagnostics.php CHANGED
@@ -291,7 +291,7 @@
291
  $current_plugins = get_option('active_plugins');
292
  $message .= "<br />\n";
293
  $message .= '<strong>'.__('Active Plugins', 'powerpress') ."</strong><br />\n";
294
- while( list($null,$plugin_path) = each($current_plugins) )
295
  {
296
  $plugin_data = get_plugin_data( rtrim(WP_PLUGIN_DIR, '/\\'). '/'. rtrim($plugin_path, '\\/'), false, false ); //Do not apply markup/translate as it'll be cached.
297
 
291
  $current_plugins = get_option('active_plugins');
292
  $message .= "<br />\n";
293
  $message .= '<strong>'.__('Active Plugins', 'powerpress') ."</strong><br />\n";
294
+ foreach( $current_plugins as $null=> $plugin_path )
295
  {
296
  $plugin_data = get_plugin_data( rtrim(WP_PLUGIN_DIR, '/\\'). '/'. rtrim($plugin_path, '\\/'), false, false ); //Do not apply markup/translate as it'll be cached.
297
 
powerpressadmin-editfeed.php CHANGED
@@ -133,7 +133,7 @@ function powerpress_admin_capabilities()
133
  $capnames = apply_filters( 'powerpress_admin_capabilities', array_unique($capnames) );
134
 
135
  $remove_keys = array('level_0', 'level_1', 'level_2', 'level_3', 'level_4', 'level_5', 'level_6', 'level_7', 'level_8', 'level_9', 'level_10');
136
- while( list($null,$key) = each($remove_keys) )
137
  unset($capnames[ $key ]);
138
  asort($capnames);
139
  return $capnames;
@@ -252,8 +252,8 @@ function powerpress_admin_editfeed($type='', $type_value = '', $feed_slug = fals
252
  <div id="powerpress_settings_page" class="powerpress_tabbed_content">
253
  <ul class="powerpress_settings_tabs">
254
  <li><a href="#feed_tab_feed"><span><?php echo htmlspecialchars(__('Feed', 'powerpress')); ?></span></a></li>
255
- <li><a href="#feed_tab_itunes"><span><?php echo htmlspecialchars(__('iTunes', 'powerpress')); ?></span></a></li>
256
- <li><a href="#feed_tab_googleplay"><span><?php echo htmlspecialchars(__('Google Play', 'powerpress')); ?></span></a></li>
257
  <li><a href="#feed_tab_artwork"><span><?php echo htmlspecialchars(__('Artwork', 'powerpress')); ?></span></a></li>
258
  <?php if( in_array($FeedAttribs['type'], array('category', 'ttid', 'post_type', 'channel') ) ) { ?>
259
  <li><a href="#feed_tab_appearance"><span><?php echo htmlspecialchars(__('Website', 'powerpress')); ?></span></a></li>
@@ -391,7 +391,7 @@ function powerpressadmin_edit_feed_general($FeedSettings, $General)
391
  else if( isset($General['custom_feeds'])&& is_array($General['custom_feeds']) )
392
  $Feeds += $General['custom_feeds'];
393
 
394
- while( list($feed_slug, $feed_title) = each($Feeds) )
395
  {
396
  if( empty($feed_title) )
397
  $feed_title = $feed_slug;
@@ -421,7 +421,7 @@ function powerpressadmin_edit_feed_general($FeedSettings, $General)
421
  <th scope="row">
422
  <?php echo __('Feed Discovery', 'powerpress'); ?></th>
423
  <td>
424
- <p style="margin-top: 10px;"><label><input type="checkbox" name="General[feed_links]" value="1" <?php if( !empty($General['feed_links']) && $General['feed_links'] == 1 ) echo 'checked '; ?>/> <?php echo __('Exclude podcast feed links in HTML headers.', 'powerpress'); ?></label></p>
425
  <p><?php echo __('Adds "feed discovery" links to your web site\'s headers allowing web browsers and feed readers to auto-detect your podcast feeds.', 'powerpress'); ?></p>
426
  </td>
427
  </tr>
@@ -570,22 +570,16 @@ if( $FeedAttribs['type'] != 'general' ) // All types exept general settings
570
  <?php } ?>
571
  </td>
572
  </tr>
 
573
 
574
  <tr valign="top">
575
  <th scope="row">
576
- <?php echo __('FeedBurner Feed URL', 'powerpress'); ?><br />
577
- <span style="font-size: 85%; margin-left: 5px;"><?php echo __('Recommendation: leave blank', 'powerpress'); ?></span>
578
  </th>
579
  <td>
580
  <input type="text" name="Feed[feed_redirect_url]" style="width: 60%;" value="<?php echo esc_attr(!empty($FeedSettings['feed_redirect_url'])? $FeedSettings['feed_redirect_url']:''); ?>" maxlength="100" /> (<?php echo __('leave blank to use built-in feed', 'powerpress'); ?>)
581
-
582
- <p style="margin-top: 0px; margin-bottomd: 0;" class="description"><?php echo powerpressadmin_notice( __('NOTE: FeedBurner is not required for podcasting.', 'powerpress') ); ?> <br />
583
- <?php echo powerpressadmin_notice( __('No support is available from blubrry if you are using Feedburner or other feed hosted services.', 'powerpress') ); ?><br />
584
- <a href="http://create.blubrry.com/manual/syndicating-your-podcast-rss-feeds/feedburner-for-podcasting/" target="_blank"><?php echo __('Learn more about FeedBurner and Podcasitng', 'powerpress'); ?></a>
585
- </p>
586
- <p><?php echo __('Use this option to redirect this feed to a hosted feed service such as FeedBurner.', 'powerpress'); ?></p>
587
-
588
- <p><?php echo __('We recommend that you disable FeedBurner SmartCast when using FeedBurner with PowerPress.', 'powerpress'); ?></p>
589
  <?php
590
  $link = $feed_link;
591
  if( strstr($link, '?') )
@@ -597,8 +591,6 @@ else
597
  </td>
598
  </tr>
599
 
600
- <?php } // End not general settings ?>
601
-
602
  <tr valign="top">
603
  <th scope="row">
604
  <?php echo __('Show the most recent', 'powerpress'); ?>
@@ -615,7 +607,7 @@ else
615
  ?>
616
  <tr valign="top">
617
  <th scope="row">
618
- <?php echo __('Feed Episode Maximizer', 'powerpress'); ?> <?php echo powerpressadmin_new(); ?>
619
  </th>
620
  <td>
621
  <p><input type="checkbox" name="Feed[maximize_feed]" value="1" <?php if( !empty($FeedSettings['maximize_feed']) ) echo 'checked'; ?> />
@@ -637,7 +629,7 @@ else
637
  $Languages = powerpress_languages();
638
 
639
  echo '<option value="">'. __('Blog Default Language', 'powerpress') .'</option>';
640
- while( list($value,$desc) = each($Languages) )
641
  echo "\t<option value=\"$value\"". ($FeedSettings['rss_language']==$value?' selected':''). ">". esc_attr($desc)."</option>\n";
642
  ?>
643
  </select>
@@ -778,7 +770,7 @@ function powerpressadmin_edit_itunes_feed($FeedSettings, $General, $FeedAttribs
778
 
779
  ?>
780
 
781
- <h3><?php echo __('iTunes Settings', 'powerpress'); ?></h3>
782
  <table class="form-table">
783
  <tr valign="top">
784
  <th scope="row">
@@ -861,7 +853,7 @@ $Categories = powerpress_itunes_categories(true);
861
 
862
  echo '<option value="">'. __('Select Category', 'powerpress') .'</option>';
863
 
864
- while( list($value,$desc) = each($Categories) )
865
  echo "\t<option value=\"$value\"". ($FeedSettings['itunes_cat_1']==$value?' selected':''). ">".htmlspecialchars($desc)."</option>\n";
866
 
867
  reset($Categories);
@@ -892,7 +884,7 @@ reset($Categories);
892
 
893
 
894
  echo '<option value="">'. __('Select Category', 'powerpress') .'</option>';
895
- while( list($value,$desc) = each($Categories) )
896
  echo "\t<option value=\"$value\"". ($FeedSettings['itunes_cat_2']==$value?' selected':''). ">".htmlspecialchars($desc)."</option>\n";
897
 
898
  reset($Categories);
@@ -917,7 +909,7 @@ reset($Categories);
917
  <?php
918
 
919
  echo '<option value="">'. __('Select Category', 'powerpress') .'</option>';
920
- while( list($value,$desc) = each($Categories) )
921
  echo "\t<option value=\"$value\"". ($FeedSettings['itunes_cat_3']==$value?' selected':''). ">".htmlspecialchars($desc)."</option>\n";
922
 
923
  reset($Categories);
@@ -946,7 +938,7 @@ reset($Categories);
946
  <?php
947
  $explicit = array(0=> __('No option selected', 'powerpress'), 1=>__('Yes - explicit content', 'powerpress'), 2=>__('Clean - no explicit content', 'powerpress'));
948
 
949
- while( list($value,$desc) = each($explicit) )
950
  echo "\t<option value=\"$value\"". ($FeedSettings['itunes_explicit']==$value?' selected':''). (($FeedSettings['itunes_explicit']!=0&&$value==0)?'disabled':''). ">$desc</option>\n";
951
 
952
  ?>
@@ -991,14 +983,13 @@ while( list($value,$desc) = each($explicit) )
991
  <tr valign="top">
992
  <th scope="row">
993
  <?php echo __('iTunes Type', 'powerpress'); ?>
994
- <?php echo powerpressadmin_new(); ?>
995
  </th>
996
  <td>
997
  <select name="Feed[itunes_type]" class="bpp_input_med">
998
  <?php
999
  $types = array(''=> __('No option selected', 'powerpress'), 'episodic'=>__('Episodic (default)', 'powerpress'), 'serial'=>__('Serial', 'powerpress'));
1000
 
1001
- while( list($value,$desc) = each($types) )
1002
  echo "\t<option value=\"$value\"". ($FeedSettings['itunes_type']==$value?' selected':''). ">$desc</option>\n";
1003
 
1004
  ?>
133
  $capnames = apply_filters( 'powerpress_admin_capabilities', array_unique($capnames) );
134
 
135
  $remove_keys = array('level_0', 'level_1', 'level_2', 'level_3', 'level_4', 'level_5', 'level_6', 'level_7', 'level_8', 'level_9', 'level_10');
136
+ foreach( $remove_keys as $null=> $key )
137
  unset($capnames[ $key ]);
138
  asort($capnames);
139
  return $capnames;
252
  <div id="powerpress_settings_page" class="powerpress_tabbed_content">
253
  <ul class="powerpress_settings_tabs">
254
  <li><a href="#feed_tab_feed"><span><?php echo htmlspecialchars(__('Feed', 'powerpress')); ?></span></a></li>
255
+ <li><a href="#feed_tab_itunes"><span><?php echo htmlspecialchars(__('Apple', 'powerpress')); ?></span></a></li>
256
+ <li><a href="#feed_tab_googleplay"><span><?php echo htmlspecialchars(__('Google', 'powerpress')); ?></span></a></li>
257
  <li><a href="#feed_tab_artwork"><span><?php echo htmlspecialchars(__('Artwork', 'powerpress')); ?></span></a></li>
258
  <?php if( in_array($FeedAttribs['type'], array('category', 'ttid', 'post_type', 'channel') ) ) { ?>
259
  <li><a href="#feed_tab_appearance"><span><?php echo htmlspecialchars(__('Website', 'powerpress')); ?></span></a></li>
391
  else if( isset($General['custom_feeds'])&& is_array($General['custom_feeds']) )
392
  $Feeds += $General['custom_feeds'];
393
 
394
+ foreach( $Feeds as $feed_slug=> $feed_title )
395
  {
396
  if( empty($feed_title) )
397
  $feed_title = $feed_slug;
421
  <th scope="row">
422
  <?php echo __('Feed Discovery', 'powerpress'); ?></th>
423
  <td>
424
+ <p style="margin-top: 10px;"><label><input type="checkbox" name="General[feed_links]" value="1" <?php if( !empty($General['feed_links']) && $General['feed_links'] == 1 ) echo 'checked '; ?>/> <?php echo __('Include podcast feed links in HTML headers.', 'powerpress'); ?></label></p>
425
  <p><?php echo __('Adds "feed discovery" links to your web site\'s headers allowing web browsers and feed readers to auto-detect your podcast feeds.', 'powerpress'); ?></p>
426
  </td>
427
  </tr>
570
  <?php } ?>
571
  </td>
572
  </tr>
573
+ <?php } // End not general settings ?>
574
 
575
  <tr valign="top">
576
  <th scope="row">
577
+ <?php echo __('PodcastMirror Feed URL', 'powerpress'); ?> <?php echo powerpressadmin_new(); ?><br />
578
+ <span style="font-size: 85%; margin-left: 5px;"><a href="https://podcastmirror.com" target="_blank"><?php echo __('learn more', 'powerpress'); ?></a></span>
579
  </th>
580
  <td>
581
  <input type="text" name="Feed[feed_redirect_url]" style="width: 60%;" value="<?php echo esc_attr(!empty($FeedSettings['feed_redirect_url'])? $FeedSettings['feed_redirect_url']:''); ?>" maxlength="100" /> (<?php echo __('leave blank to use built-in feed', 'powerpress'); ?>)
582
+ <p><?php echo __('Use this option to mirror your podcast feed to provide fast, scalable subscriptions to your show. Service is FeedBurner compatible.', 'powerpress'); ?></p>
 
 
 
 
 
 
 
583
  <?php
584
  $link = $feed_link;
585
  if( strstr($link, '?') )
591
  </td>
592
  </tr>
593
 
 
 
594
  <tr valign="top">
595
  <th scope="row">
596
  <?php echo __('Show the most recent', 'powerpress'); ?>
607
  ?>
608
  <tr valign="top">
609
  <th scope="row">
610
+ <?php echo __('Feed Episode Maximizer', 'powerpress'); ?>
611
  </th>
612
  <td>
613
  <p><input type="checkbox" name="Feed[maximize_feed]" value="1" <?php if( !empty($FeedSettings['maximize_feed']) ) echo 'checked'; ?> />
629
  $Languages = powerpress_languages();
630
 
631
  echo '<option value="">'. __('Blog Default Language', 'powerpress') .'</option>';
632
+ foreach( $Languages as $value=> $desc )
633
  echo "\t<option value=\"$value\"". ($FeedSettings['rss_language']==$value?' selected':''). ">". esc_attr($desc)."</option>\n";
634
  ?>
635
  </select>
770
 
771
  ?>
772
 
773
+ <h3><?php echo __('Apple Settings', 'powerpress'); ?></h3>
774
  <table class="form-table">
775
  <tr valign="top">
776
  <th scope="row">
853
 
854
  echo '<option value="">'. __('Select Category', 'powerpress') .'</option>';
855
 
856
+ foreach( $Categories as $value=> $desc )
857
  echo "\t<option value=\"$value\"". ($FeedSettings['itunes_cat_1']==$value?' selected':''). ">".htmlspecialchars($desc)."</option>\n";
858
 
859
  reset($Categories);
884
 
885
 
886
  echo '<option value="">'. __('Select Category', 'powerpress') .'</option>';
887
+ foreach( $Categories as $value=> $desc )
888
  echo "\t<option value=\"$value\"". ($FeedSettings['itunes_cat_2']==$value?' selected':''). ">".htmlspecialchars($desc)."</option>\n";
889
 
890
  reset($Categories);
909
  <?php
910
 
911
  echo '<option value="">'. __('Select Category', 'powerpress') .'</option>';
912
+ foreach( $Categories as $value=> $desc )
913
  echo "\t<option value=\"$value\"". ($FeedSettings['itunes_cat_3']==$value?' selected':''). ">".htmlspecialchars($desc)."</option>\n";
914
 
915
  reset($Categories);
938
  <?php
939
  $explicit = array(0=> __('No option selected', 'powerpress'), 1=>__('Yes - explicit content', 'powerpress'), 2=>__('Clean - no explicit content', 'powerpress'));
940
 
941
+ foreach( $explicit as $value=> $desc )
942
  echo "\t<option value=\"$value\"". ($FeedSettings['itunes_explicit']==$value?' selected':''). (($FeedSettings['itunes_explicit']!=0&&$value==0)?'disabled':''). ">$desc</option>\n";
943
 
944
  ?>
983
  <tr valign="top">
984
  <th scope="row">
985
  <?php echo __('iTunes Type', 'powerpress'); ?>
 
986
  </th>
987
  <td>
988
  <select name="Feed[itunes_type]" class="bpp_input_med">
989
  <?php
990
  $types = array(''=> __('No option selected', 'powerpress'), 'episodic'=>__('Episodic (default)', 'powerpress'), 'serial'=>__('Serial', 'powerpress'));
991
 
992
+ foreach( $types as $value=> $desc )
993
  echo "\t<option value=\"$value\"". ($FeedSettings['itunes_type']==$value?' selected':''). ">$desc</option>\n";
994
 
995
  ?>
powerpressadmin-find-replace.php CHANGED
@@ -11,7 +11,7 @@
11
  $query = "SELECT meta_id, post_id, meta_key, meta_value FROM {$wpdb->postmeta} WHERE meta_key LIKE \"%enclosure\"";
12
  $results_data = $wpdb->get_results($query, ARRAY_A);
13
 
14
- while( list( $index, $row) = each($results_data) )
15
  {
16
  list($url) = @explode("\n", $row['meta_value'], 2 );
17
  $url = trim($url);
@@ -45,7 +45,7 @@
45
 
46
  $FoundArray = powerpressadmin_find_replace_get_enclosures($FindReplace['find_string']);
47
 
48
- while( list($meta_id, $row) = each($FoundArray) )
49
  {
50
  // powerpress_get_post_meta
51
  $meta_value = get_post_meta($row['post_id'], $row['meta_key'], true);
@@ -257,7 +257,7 @@ dt {
257
 
258
  <ol>
259
  <?php
260
- while( list($meta_id, $row) = each($FindReplaceResults) )
261
  {
262
  $post_view_link = '<a href="' . get_permalink($row['post_id']) . '" target="_blank">' . get_the_title($row['post_id']) . '</a>';
263
  $post_edit_link = '<a href="' . get_edit_post_link($row['post_id']) . '" target="_blank">' . __('Edit Post', 'powerpress') . '</a>';
11
  $query = "SELECT meta_id, post_id, meta_key, meta_value FROM {$wpdb->postmeta} WHERE meta_key LIKE \"%enclosure\"";
12
  $results_data = $wpdb->get_results($query, ARRAY_A);
13
 
14
+ foreach( $results_data as $index=> $row )
15
  {
16
  list($url) = @explode("\n", $row['meta_value'], 2 );
17
  $url = trim($url);
45
 
46
  $FoundArray = powerpressadmin_find_replace_get_enclosures($FindReplace['find_string']);
47
 
48
+ foreach( $FoundArray as $meta_id=> $row )
49
  {
50
  // powerpress_get_post_meta
51
  $meta_value = get_post_meta($row['post_id'], $row['meta_key'], true);
257
 
258
  <ol>
259
  <?php
260
+ foreach( $FindReplaceResults as $meta_id=> $row )
261
  {
262
  $post_view_link = '<a href="' . get_permalink($row['post_id']) . '" target="_blank">' . get_the_title($row['post_id']) . '</a>';
263
  $post_edit_link = '<a href="' . get_edit_post_link($row['post_id']) . '" target="_blank">' . __('Edit Post', 'powerpress') . '</a>';
powerpressadmin-jquery.php CHANGED
@@ -186,7 +186,7 @@ function powerpress_admin_jquery_init()
186
  {
187
  $json_data = false;
188
  $api_url_array = powerpress_get_api_array();
189
- while( list($index,$api_url) = each($api_url_array) )
190
  {
191
  $req_url = sprintf('%s/media/%s/%s?format=json', rtrim($api_url, '/'), $Settings['blubrry_program_keyword'], $DeleteFile );
192
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
@@ -209,7 +209,7 @@ function powerpress_admin_jquery_init()
209
 
210
  $json_data = false;
211
  $api_url_array = powerpress_get_api_array();
212
- while( list($index,$api_url) = each($api_url_array) )
213
  {
214
  $req_url = sprintf('%s/media/%s/index.json?quota=true&published=true', rtrim($api_url, '/'), $Settings['blubrry_program_keyword'] );
215
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
@@ -318,7 +318,7 @@ function DeleteMedia(File)
318
  else if( is_array($results) )
319
  {
320
  $PublishedList = false;
321
- while( list($index,$data) = each($results) )
322
  {
323
  if( $index === 'quota' )
324
  {
@@ -486,7 +486,7 @@ function DeleteMedia(File)
486
  $auth = base64_encode( $SaveSettings['blubrry_username'] . ':' . $Password );
487
  $json_data = false;
488
  $api_url_array = powerpress_get_api_array();
489
- while( list($index,$api_url) = each($api_url_array) )
490
  {
491
  $req_url = sprintf('%s/service/index.json', rtrim($api_url, '/') );
492
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'?'. POWERPRESS_BLUBRRY_API_QSA:'');
@@ -524,7 +524,7 @@ function DeleteMedia(File)
524
  else
525
  {
526
  // Get all the programs for this user...
527
- while( list($null,$row) = each($results) )
528
  {
529
  $Programs[ $row['program_keyword'] ] = $row['program_title'];
530
  if( $row['hosting'] === true || $row['hosting'] == 'true' )
@@ -556,7 +556,10 @@ function DeleteMedia(File)
556
  }
557
  else if( count($Programs) == 1 )
558
  {
559
- list($keyword, $title) = each($Programs);
 
 
 
560
  $SaveSettings['blubrry_program_keyword'] = $keyword;
561
  $SaveSettings['blubrry_hosting'] = $ProgramHosting[ $keyword ];
562
  if( !is_bool($SaveSettings['blubrry_hosting']) )
@@ -698,7 +701,7 @@ jQuery(document).ready(function($) {
698
  <select id="blubrry_program_keyword" name="Settings[blubrry_program_keyword]">
699
  <option value=""><?php echo __('Select Program', 'powerpress'); ?></option>
700
  <?php
701
- while( list($value,$desc) = each($Programs) )
702
  echo "\t<option value=\"$value\"". ($Settings['blubrry_program_keyword']==$value?' selected':''). ">$desc</option>\n";
703
  ?>
704
  </select>
@@ -750,7 +753,7 @@ while( list($value,$desc) = each($Programs) )
750
  {
751
  $json_data = false;
752
  $api_url_array = powerpress_get_api_array();
753
- while( list($index,$api_url) = each($api_url_array) )
754
  {
755
  $req_url = sprintf('%s/media/%s/upload_session.json', rtrim($api_url, '/'), $Settings['blubrry_program_keyword'] );
756
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'?'. POWERPRESS_BLUBRRY_API_QSA:'');
186
  {
187
  $json_data = false;
188
  $api_url_array = powerpress_get_api_array();
189
+ foreach( $api_url_array as $index => $api_url )
190
  {
191
  $req_url = sprintf('%s/media/%s/%s?format=json', rtrim($api_url, '/'), $Settings['blubrry_program_keyword'], $DeleteFile );
192
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
209
 
210
  $json_data = false;
211
  $api_url_array = powerpress_get_api_array();
212
+ foreach( $api_url_array as $index => $api_url )
213
  {
214
  $req_url = sprintf('%s/media/%s/index.json?quota=true&published=true', rtrim($api_url, '/'), $Settings['blubrry_program_keyword'] );
215
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
318
  else if( is_array($results) )
319
  {
320
  $PublishedList = false;
321
+ foreach( $results as $index => $data )
322
  {
323
  if( $index === 'quota' )
324
  {
486
  $auth = base64_encode( $SaveSettings['blubrry_username'] . ':' . $Password );
487
  $json_data = false;
488
  $api_url_array = powerpress_get_api_array();
489
+ foreach( $api_url_array as $index => $api_url )
490
  {
491
  $req_url = sprintf('%s/service/index.json', rtrim($api_url, '/') );
492
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'?'. POWERPRESS_BLUBRRY_API_QSA:'');
524
  else
525
  {
526
  // Get all the programs for this user...
527
+ foreach( $results as $null => $row )
528
  {
529
  $Programs[ $row['program_keyword'] ] = $row['program_title'];
530
  if( $row['hosting'] === true || $row['hosting'] == 'true' )
556
  }
557
  else if( count($Programs) == 1 )
558
  {
559
+ foreach( $Programs as $keyword => $title ) {
560
+ break;
561
+ }
562
+
563
  $SaveSettings['blubrry_program_keyword'] = $keyword;
564
  $SaveSettings['blubrry_hosting'] = $ProgramHosting[ $keyword ];
565
  if( !is_bool($SaveSettings['blubrry_hosting']) )
701
  <select id="blubrry_program_keyword" name="Settings[blubrry_program_keyword]">
702
  <option value=""><?php echo __('Select Program', 'powerpress'); ?></option>
703
  <?php
704
+ foreach( $Programs as $value => $desc )
705
  echo "\t<option value=\"$value\"". ($Settings['blubrry_program_keyword']==$value?' selected':''). ">$desc</option>\n";
706
  ?>
707
  </select>
753
  {
754
  $json_data = false;
755
  $api_url_array = powerpress_get_api_array();
756
+ foreach( $api_url_array as $index => $api_url )
757
  {
758
  $req_url = sprintf('%s/media/%s/upload_session.json', rtrim($api_url, '/'), $Settings['blubrry_program_keyword'] );
759
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'?'. POWERPRESS_BLUBRRY_API_QSA:'');
powerpressadmin-metabox.php CHANGED
@@ -404,7 +404,7 @@ function powerpress_meta_box($object, $box)
404
  <?php
405
  $type_array = array(''=>__('Full (default)', 'powerpress'), 'full'=>__('Full', 'powerpress'),'trailer'=>__('Trailer', 'powerpress'), 'bonus'=>__('Bonus', 'powerpress') );
406
 
407
- while( list($value,$desc) = each($type_array) )
408
  echo "\t<option value=\"$value\"". ($ExtraData['episode_type']==$value?' selected':''). ">$desc</option>\n";
409
  unset($cc_array);
410
  ?>
@@ -525,7 +525,7 @@ unset($cc_array);
525
  <?php
526
  $explicit_array = array(''=>__('Use feed\'s explicit setting', 'powerpress'), 0=>__('no - display nothing', 'powerpress'), 1=>__('yes - explicit content', 'powerpress'), 2=>__('clean - no explicit content', 'powerpress') );
527
 
528
- while( list($value,$desc) = each($explicit_array) )
529
  echo "\t<option value=\"$value\"". ($iTunesExplicit==$value?' selected':''). ">$desc</option>\n";
530
 
531
  ?>
@@ -545,7 +545,7 @@ while( list($value,$desc) = each($explicit_array) )
545
  <?php
546
  $explicit_array = array(''=>__('Use feed\'s explicit setting', 'powerpress'), 0=>__('no - display nothing', 'powerpress'), 1=>__('yes - explicit content', 'powerpress') );
547
 
548
- while( list($value,$desc) = each($explicit_array) )
549
  echo "\t<option value=\"$value\"". ($GooglePlayExplicit==$value?' selected':''). ">$desc</option>\n";
550
 
551
  ?>
@@ -566,7 +566,7 @@ while( list($value,$desc) = each($explicit_array) )
566
  <?php
567
  $cc_array = array(''=>__('No Closed Captioning', 'powerpress'), 1=>__('Yes, Closed Captioned media', 'powerpress') );
568
 
569
- while( list($value,$desc) = each($cc_array) )
570
  echo "\t<option value=\"$value\"". ($iTunesCC==$value?' selected':''). ">$desc</option>\n";
571
  unset($cc_array);
572
  ?>
@@ -617,7 +617,7 @@ unset($cc_array);
617
  <?php
618
  $block_array = array(''=>__('No', 'powerpress'), 1=>__('Yes, Block episode from iTunes', 'powerpress') );
619
 
620
- while( list($value,$desc) = each($block_array) )
621
  echo "\t<option value=\"$value\"". ($iTunesBlock==$value?' selected':''). ">$desc</option>\n";
622
  unset($block_array);
623
  ?>
@@ -635,9 +635,9 @@ unset($block_array);
635
  <div class="powerpress_row_content">
636
  <select id="powerpress_block_<?php echo $FeedSlug; ?>" name="Powerpress[<?php echo $FeedSlug; ?>][gp_block]" style="width: 220px;">
637
  <?php
638
- $block_array = array(''=>__('No', 'powerpress'), 1=>__('Yes, Block episode from Google Play Music', 'powerpress') );
639
 
640
- while( list($value,$desc) = each($block_array) )
641
  echo "\t<option value=\"$value\"". ($GooglePlayBlock==$value?' selected':''). ">$desc</option>\n";
642
  unset($block_array);
643
  ?>
@@ -670,8 +670,9 @@ unset($block_array);
670
  $cur_cat_id = intval(!empty($ExtraData['category'])?$ExtraData['category']:0);
671
  if( count($GeneralSettings['custom_cat_feeds']) == 1 ) // Lets auto select the category
672
  {
673
-
674
- list($null, $cur_cat_id) = each($GeneralSettings['custom_cat_feeds']);
 
675
  reset($GeneralSettings['custom_cat_feeds']);
676
  }
677
 
@@ -683,7 +684,7 @@ unset($block_array);
683
  echo '<option value="0"';
684
  echo '>' . esc_html( __('Select category', 'powerpress') ) . '</option>' . "\n";
685
 
686
- while( list($null, $cat_id) = each($GeneralSettings['custom_cat_feeds']) ) {
687
  $catObj = get_category( $cat_id );
688
  if( empty($catObj->name ) )
689
  continue; // Do not allow empty categories forward
404
  <?php
405
  $type_array = array(''=>__('Full (default)', 'powerpress'), 'full'=>__('Full', 'powerpress'),'trailer'=>__('Trailer', 'powerpress'), 'bonus'=>__('Bonus', 'powerpress') );
406
 
407
+ foreach( $type_array as $value => $desc )
408
  echo "\t<option value=\"$value\"". ($ExtraData['episode_type']==$value?' selected':''). ">$desc</option>\n";
409
  unset($cc_array);
410
  ?>
525
  <?php
526
  $explicit_array = array(''=>__('Use feed\'s explicit setting', 'powerpress'), 0=>__('no - display nothing', 'powerpress'), 1=>__('yes - explicit content', 'powerpress'), 2=>__('clean - no explicit content', 'powerpress') );
527
 
528
+ foreach( $explicit_array as $value => $desc )
529
  echo "\t<option value=\"$value\"". ($iTunesExplicit==$value?' selected':''). ">$desc</option>\n";
530
 
531
  ?>
545
  <?php
546
  $explicit_array = array(''=>__('Use feed\'s explicit setting', 'powerpress'), 0=>__('no - display nothing', 'powerpress'), 1=>__('yes - explicit content', 'powerpress') );
547
 
548
+ foreach( $explicit_array as $value => $desc )
549
  echo "\t<option value=\"$value\"". ($GooglePlayExplicit==$value?' selected':''). ">$desc</option>\n";
550
 
551
  ?>
566
  <?php
567
  $cc_array = array(''=>__('No Closed Captioning', 'powerpress'), 1=>__('Yes, Closed Captioned media', 'powerpress') );
568
 
569
+ foreach( $cc_array as $value => $desc )
570
  echo "\t<option value=\"$value\"". ($iTunesCC==$value?' selected':''). ">$desc</option>\n";
571
  unset($cc_array);
572
  ?>
617
  <?php
618
  $block_array = array(''=>__('No', 'powerpress'), 1=>__('Yes, Block episode from iTunes', 'powerpress') );
619
 
620
+ foreach( $block_array as $value => $desc )
621
  echo "\t<option value=\"$value\"". ($iTunesBlock==$value?' selected':''). ">$desc</option>\n";
622
  unset($block_array);
623
  ?>
635
  <div class="powerpress_row_content">
636
  <select id="powerpress_block_<?php echo $FeedSlug; ?>" name="Powerpress[<?php echo $FeedSlug; ?>][gp_block]" style="width: 220px;">
637
  <?php
638
+ $block_array = array(''=>__('No', 'powerpress'), 1=>__('Yes, Block episode from Google Podcasts', 'powerpress') );
639
 
640
+ foreach( $block_array as $value => $desc )
641
  echo "\t<option value=\"$value\"". ($GooglePlayBlock==$value?' selected':''). ">$desc</option>\n";
642
  unset($block_array);
643
  ?>
670
  $cur_cat_id = intval(!empty($ExtraData['category'])?$ExtraData['category']:0);
671
  if( count($GeneralSettings['custom_cat_feeds']) == 1 ) // Lets auto select the category
672
  {
673
+ foreach( $GeneralSettings['custom_cat_feeds'] as $null => $cur_cat_id ) {
674
+ break;
675
+ }
676
  reset($GeneralSettings['custom_cat_feeds']);
677
  }
678
 
684
  echo '<option value="0"';
685
  echo '>' . esc_html( __('Select category', 'powerpress') ) . '</option>' . "\n";
686
 
687
+ foreach( $GeneralSettings['custom_cat_feeds'] as $null => $cat_id ) {
688
  $catObj = get_category( $cat_id );
689
  if( empty($catObj->name ) )
690
  continue; // Do not allow empty categories forward
powerpressadmin-metamarks.php CHANGED
@@ -7,7 +7,7 @@
7
  $Episodes = ( !empty($_POST['Powerpress']) ? $_POST['Powerpress'] : false);
8
  if( $Episodes )
9
  {
10
- while( list($feed_slug,$Powerpress) = each($Episodes) )
11
  {
12
  $field = '_'.$feed_slug.':metamarks';
13
 
@@ -25,14 +25,14 @@
25
  {
26
  $MetaMarkData = $MetaMarks[ $feed_slug ];
27
  // Loop through, and convert position and duration to seconds, if specified with 00:00:00
28
- while( list($index,$row) = each($MetaMarkData) )
29
  {
30
  $MetaMarkData[ $index ]['position'] = powerpress_raw_duration( $row['position'] );
31
  $MetaMarkData[ $index ]['duration'] = powerpress_raw_duration( $row['duration'] );
32
  }
33
  reset($MetaMarkData);
34
 
35
- while( list($index,$row) = each($MetaMarkData) )
36
  {
37
  if( empty($MetaMarkData[ $index ]['type']) && empty($MetaMarkData[ $index ]['position']) && empty($MetaMarkData[ $index ]['duration']) && empty($MetaMarkData[ $index ]['link']) && empty($MetaMarkData[ $index ]['value']) )
38
  {
@@ -87,7 +87,7 @@
87
 
88
  $html .= '<div class="powerpress_metamarks_block" id="powerpress_metamarks_block_' . $feed_slug .'">';
89
  $index = 0;
90
- while( list($key,$row) = each($MetaRecords) )
91
  {
92
  $html .= powerpress_metamarks_editrow_html($feed_slug, $index, $row);
93
  $index++;
@@ -266,7 +266,7 @@ function powerpress_metamarks_deleterow(div)
266
  function powerpress_metamarks_print_rss2($episode_data)
267
  {
268
  $MetaRecords = powerpress_metamarks_get($episode_data['id'], $episode_data['feed'] );
269
- while( list($index,$MetaMark) = each($MetaRecords) )
270
  {
271
  echo "\t\t";
272
  echo '<rawvoice:metamark type="'. esc_attr($MetaMark['type']) .'"';
7
  $Episodes = ( !empty($_POST['Powerpress']) ? $_POST['Powerpress'] : false);
8
  if( $Episodes )
9
  {
10
+ foreach( $Episodes as $feed_slug => $Powerpress )
11
  {
12
  $field = '_'.$feed_slug.':metamarks';
13
 
25
  {
26
  $MetaMarkData = $MetaMarks[ $feed_slug ];
27
  // Loop through, and convert position and duration to seconds, if specified with 00:00:00
28
+ foreach( $MetaMarkData as $index => $row )
29
  {
30
  $MetaMarkData[ $index ]['position'] = powerpress_raw_duration( $row['position'] );
31
  $MetaMarkData[ $index ]['duration'] = powerpress_raw_duration( $row['duration'] );
32
  }
33
  reset($MetaMarkData);
34
 
35
+ foreach( $MetaMarkData as $index => $row )
36
  {
37
  if( empty($MetaMarkData[ $index ]['type']) && empty($MetaMarkData[ $index ]['position']) && empty($MetaMarkData[ $index ]['duration']) && empty($MetaMarkData[ $index ]['link']) && empty($MetaMarkData[ $index ]['value']) )
38
  {
87
 
88
  $html .= '<div class="powerpress_metamarks_block" id="powerpress_metamarks_block_' . $feed_slug .'">';
89
  $index = 0;
90
+ foreach( $MetaRecords as $key => $row )
91
  {
92
  $html .= powerpress_metamarks_editrow_html($feed_slug, $index, $row);
93
  $index++;
266
  function powerpress_metamarks_print_rss2($episode_data)
267
  {
268
  $MetaRecords = powerpress_metamarks_get($episode_data['id'], $episode_data['feed'] );
269
+ foreach( $MetaRecords as $index => $MetaMark )
270
  {
271
  echo "\t\t";
272
  echo '<rawvoice:metamark type="'. esc_attr($MetaMark['type']) .'"';
powerpressadmin-migrate.php CHANGED
@@ -52,7 +52,7 @@ function powerpress_admin_migrate_get_files($clean=false, $exclude_blubrry=true)
52
  $results_data = $wpdb->get_results($query, ARRAY_A);
53
  if( $results_data )
54
  {
55
- while( list($null,$row) = each($results_data) )
56
  {
57
  $meta_id = $row['meta_id'];
58
  $EpisodeData = powerpress_get_enclosure_data($row['post_id'], 'podcast', $row['meta_value'], false); // Get the enclosure data with no redirect added
@@ -84,7 +84,7 @@ function powepress_admin_migrate_add_urls($urls)
84
 
85
  $json_data = false;
86
  $api_url_array = powerpress_get_api_array();
87
- while( list($index,$api_url) = each($api_url_array) )
88
  {
89
  $req_url = sprintf('%s/media/%s/migrate_add.json', rtrim($api_url, '/'), urlencode($Settings['blubrry_program_keyword']) );
90
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
@@ -139,7 +139,7 @@ function powerpress_admin_migrate_get_status()
139
 
140
  $json_data = false;
141
  $api_url_array = powerpress_get_api_array();
142
- while( list($index,$api_url) = each($api_url_array) )
143
  {
144
  $req_url = sprintf('%s/media/%s/migrate_status.json?status=summary&simple=true', rtrim($api_url, '/'), $Settings['blubrry_program_keyword'] );
145
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
@@ -191,7 +191,7 @@ function powerpress_admin_migrate_get_migrated_by_status($status='migrated')
191
 
192
  $json_data = false;
193
  $api_url_array = powerpress_get_api_array();
194
- while( list($index,$api_url) = each($api_url_array) )
195
  {
196
  $req_url = sprintf('%s/media/%s/migrate_status.json?status=%s&limit=10000&simple=true', rtrim($api_url, '/'), $Settings['blubrry_program_keyword'], urlencode($status) );
197
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
@@ -302,7 +302,7 @@ function powerpress_admin_migrate_request()
302
  $FoundCount = 0;
303
  if( !empty($QueuedEpisodes) )
304
  {
305
- while( list($index,$row) = each($URLs['results']) )
306
  {
307
  if( $row['status'] != 'completed' ) // Not migrated
308
  continue;
@@ -319,7 +319,7 @@ function powerpress_admin_migrate_request()
319
  $FoundCount++;
320
  $GLOBALS['g_powerpress_total_files_found']++;
321
 
322
- while( list($null,$meta_id) = each($found) )
323
  {
324
  // Get the post meta
325
  $meta_object = get_metadata_by_mid('post', $meta_id);
@@ -419,7 +419,7 @@ function powerpress_admin_extension_counts()
419
  {
420
  $files = powerpress_admin_migrate_get_files(true, false);
421
  $extensions = array(); // 'blubrry'=>0, 'mp3'=>0, 'm4a'=>0, 'mp4'=>0, 'm4v'=>0, '*'=>0 );
422
- while( list($meta_id,$row) = each($files) )
423
  {
424
  $extension = '*';
425
 
@@ -442,7 +442,7 @@ function powerpress_admin_queue_files($extensions=array() )
442
  {
443
  $add_urls = '';
444
  $extensions_preg_match = '';
445
- while( list($extension,$null) = each($extensions) )
446
  {
447
  if( $extension == '*' )
448
  {
@@ -473,7 +473,7 @@ function powerpress_admin_queue_files($extensions=array() )
473
  $AddedCount = 0;;
474
  $AlreadyAddedCount = 0;
475
 
476
- while( list($meta_id,$row) = each($files) )
477
  {
478
  $parts = pathinfo($row['src_url']);
479
  if( preg_match('/('.$extensions_preg_match.')/i', $parts['extension']) )
@@ -544,7 +544,7 @@ function powerpress_admin_migrate_step1()
544
  <?php
545
  }
546
  $types = array('mp3', 'm4a', 'mp4', 'm4v', 'mov', '*', 'blubrry');
547
- while (list($null, $extension) = each($types) )
548
  {
549
  if( empty($GLOBALS['powerpress_migrate_stats'][$extension]) )
550
  continue;
@@ -586,7 +586,7 @@ function powerpress_admin_migrate_step1()
586
  function powerpress_admin_migrate_find_in_results(&$results, $src_url)
587
  {
588
  $found = false;
589
- while( list($index,$row) = each($results) )
590
  {
591
  if( $row['source_url'] == $src_url )
592
  {
@@ -658,7 +658,7 @@ table.powerpress-migration-table tr:hover {
658
  <th class="powerpress-migrate-e"><?php echo __('Episode Updated', 'powerpress'); ?></th>
659
  </tr>
660
  <?php
661
- while( list($meta_id, $url) = each($QueuedResults) )
662
  {
663
  $status = __('Requested', 'powerpress');
664
  $updated = '-';
52
  $results_data = $wpdb->get_results($query, ARRAY_A);
53
  if( $results_data )
54
  {
55
+ foreach( $results_data as $null => $row )
56
  {
57
  $meta_id = $row['meta_id'];
58
  $EpisodeData = powerpress_get_enclosure_data($row['post_id'], 'podcast', $row['meta_value'], false); // Get the enclosure data with no redirect added
84
 
85
  $json_data = false;
86
  $api_url_array = powerpress_get_api_array();
87
+ foreach( $api_url_array as $index => $api_url )
88
  {
89
  $req_url = sprintf('%s/media/%s/migrate_add.json', rtrim($api_url, '/'), urlencode($Settings['blubrry_program_keyword']) );
90
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
139
 
140
  $json_data = false;
141
  $api_url_array = powerpress_get_api_array();
142
+ foreach( $api_url_array as $index => $api_url )
143
  {
144
  $req_url = sprintf('%s/media/%s/migrate_status.json?status=summary&simple=true', rtrim($api_url, '/'), $Settings['blubrry_program_keyword'] );
145
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
191
 
192
  $json_data = false;
193
  $api_url_array = powerpress_get_api_array();
194
+ foreach( $api_url_array as $index => $api_url )
195
  {
196
  $req_url = sprintf('%s/media/%s/migrate_status.json?status=%s&limit=10000&simple=true', rtrim($api_url, '/'), $Settings['blubrry_program_keyword'], urlencode($status) );
197
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
302
  $FoundCount = 0;
303
  if( !empty($QueuedEpisodes) )
304
  {
305
+ foreach( $URLs['results'] as $index => $row )
306
  {
307
  if( $row['status'] != 'completed' ) // Not migrated
308
  continue;
319
  $FoundCount++;
320
  $GLOBALS['g_powerpress_total_files_found']++;
321
 
322
+ foreach( $found as $null => $meta_id )
323
  {
324
  // Get the post meta
325
  $meta_object = get_metadata_by_mid('post', $meta_id);
419
  {
420
  $files = powerpress_admin_migrate_get_files(true, false);
421
  $extensions = array(); // 'blubrry'=>0, 'mp3'=>0, 'm4a'=>0, 'mp4'=>0, 'm4v'=>0, '*'=>0 );
422
+ foreach( $files as $meta_id => $row )
423
  {
424
  $extension = '*';
425
 
442
  {
443
  $add_urls = '';
444
  $extensions_preg_match = '';
445
+ foreach( $extensions as $extension => $null )
446
  {
447
  if( $extension == '*' )
448
  {
473
  $AddedCount = 0;;
474
  $AlreadyAddedCount = 0;
475
 
476
+ foreach( $files as $meta_id => $row )
477
  {
478
  $parts = pathinfo($row['src_url']);
479
  if( preg_match('/('.$extensions_preg_match.')/i', $parts['extension']) )
544
  <?php
545
  }
546
  $types = array('mp3', 'm4a', 'mp4', 'm4v', 'mov', '*', 'blubrry');
547
+ foreach( $types as $null => $extension )
548
  {
549
  if( empty($GLOBALS['powerpress_migrate_stats'][$extension]) )
550
  continue;
586
  function powerpress_admin_migrate_find_in_results(&$results, $src_url)
587
  {
588
  $found = false;
589
+ foreach( $results as $index => $row )
590
  {
591
  if( $row['source_url'] == $src_url )
592
  {
658
  <th class="powerpress-migrate-e"><?php echo __('Episode Updated', 'powerpress'); ?></th>
659
  </tr>
660
  <?php
661
+ foreach( $QueuedResults as $meta_id => $url )
662
  {
663
  $status = __('Requested', 'powerpress');
664
  $updated = '-';
powerpressadmin-mt.php CHANGED
@@ -20,7 +20,7 @@ if( !function_exists('add_action') )
20
  $results_data = $wpdb->get_results($query, ARRAY_A); // This could return a lot of data...
21
  if( $results_data )
22
  {
23
- while( list($null,$row) = each($results_data) )
24
  {
25
  $Media = powerpressadmin_mt_media_from_content($row['post_content']);
26
  if( count($Media) == 0 )
@@ -31,7 +31,7 @@ if( !function_exists('add_action') )
31
  $return[ $row['ID'] ] = array();
32
  $return[ $row['ID'] ]['post_title'] = $row['post_title'];
33
  $return[ $row['ID'] ]['post_date'] = $row['post_date'];
34
- while( list($index,$url) = each($Media) )
35
  $return[ $row['ID'] ]['enclosures'][$index]['url'] = $url;
36
  }
37
  }
@@ -128,7 +128,7 @@ if( !function_exists('add_action') )
128
  $any = $ltrs . $gunk . $punc;
129
 
130
  preg_match_all( "{\b http : [$any] +? (?= [$punc] * [^$any] | $)}x", $content, $post_links_temp );
131
- while( list($null,$url) = each($post_links_temp[0]) )
132
  {
133
  if( powerpressadmin_mt_is_media($url) )
134
  {
@@ -161,9 +161,9 @@ if( !function_exists('add_action') )
161
  $Mp3Info->SetDownloadBytesLimit(POWERPRESS_DOWNLOAD_BYTE_LIMIT);
162
  }
163
 
164
- while( list($post_id, $episode_feeds) = each($Import) )
165
  {
166
- while( list($media_index, $feed_slug) = each($episode_feeds) )
167
  {
168
  if( $feed_slug == '' )
169
  continue; // User decoded not to import this one..
@@ -315,7 +315,7 @@ if( !function_exists('add_action') )
315
 
316
  if( !empty($Settings['custom_feeds']) && is_array($Settings['custom_feeds']) )
317
  {
318
- while( list($feed_slug,$value) = each($Settings['custom_feeds']) )
319
  {
320
  if( $feed_slug != 'podcast' )
321
  $data['feed-'.$feed_slug] = __('Feed', 'powerpress') .': ('.$feed_slug.')';
@@ -494,7 +494,7 @@ else
494
  $MaxFileIndex = 1;
495
 
496
  $count = 0;
497
- while( list($post_id, $import_data) = each($results ) )
498
  {
499
  $edit_link = get_edit_post_link( $post_id );
500
  if( $post_id == 'feeds_required' )
@@ -506,7 +506,7 @@ else
506
 
507
  if( is_array($Settings['custom_feeds']) )
508
  {
509
- while( list($feed_slug,$value) = each($Settings['custom_feeds']) )
510
  {
511
  if( $feed_slug == 'podcast' )
512
  $enclosure_data = get_post_meta($post_id, 'enclosure', true);
@@ -524,7 +524,7 @@ else
524
  }
525
 
526
  $found = false;
527
- while( list($episode_index,$episode_data) = each($import_data['enclosures']) )
528
  {
529
  if( $episode_data['url'] == $CurrentEnclosures[ $feed_slug ]['url'] )
530
  {
@@ -584,7 +584,7 @@ else
584
  echo '</strong><br />';
585
  echo '<div style="margin-left: 10px;">';
586
  $index = 1;
587
- while( list($episode_index,$episode_data) = each($import_data['enclosures']) )
588
  {
589
  if( $index > $MaxFileIndex )
590
  $MaxFileIndex = $index;
@@ -651,7 +651,7 @@ else
651
  if( isset($CurrentEnclosures[$feed_slug]) && $CurrentEnclosures[$feed_slug]['imported'] )
652
  {
653
  $index = 1;
654
- while( list($episode_index,$episode_data) = each($import_data['enclosures']) )
655
  {
656
  echo "File $index: ";
657
  if( $CurrentEnclosures[$feed_slug]['url'] == $episode_data['url'] )
@@ -671,7 +671,7 @@ else
671
  else
672
  {
673
  $index = 1;
674
- while( list($episode_index,$episode_data) = each($import_data['enclosures']) )
675
  {
676
  echo "File&nbsp;$index:&nbsp;";
677
  if( !empty($episode_data['imported']) )
@@ -731,7 +731,7 @@ else
731
  <p style="margin: 0 0 0 40px; padding: 0;">
732
  <?php echo __('File', 'powerpress'); ?> <?php echo ($number+1); ?>:
733
  <?php
734
- while( list($feed_slug,$feed_title) = each($Settings['custom_feeds']) )
735
  {
736
  echo '<a href="javascript:void()" onclick="select_all('. $number .',\''. $feed_slug .'\');return false;">'. htmlspecialchars($feed_title) .'</a> | ';
737
  }
@@ -746,7 +746,7 @@ else
746
  <?php
747
  $comma = false;
748
  global $g_import_mt_extensions;
749
- while( list($ext, $null) = each($g_import_mt_extensions) )
750
  {
751
  if( $comma )
752
  echo ', ';
20
  $results_data = $wpdb->get_results($query, ARRAY_A); // This could return a lot of data...
21
  if( $results_data )
22
  {
23
+ foreach( $results_data as $null => $row )
24
  {
25
  $Media = powerpressadmin_mt_media_from_content($row['post_content']);
26
  if( count($Media) == 0 )
31
  $return[ $row['ID'] ] = array();
32
  $return[ $row['ID'] ]['post_title'] = $row['post_title'];
33
  $return[ $row['ID'] ]['post_date'] = $row['post_date'];
34
+ foreach( $Media as $index => $url )
35
  $return[ $row['ID'] ]['enclosures'][$index]['url'] = $url;
36
  }
37
  }
128
  $any = $ltrs . $gunk . $punc;
129
 
130
  preg_match_all( "{\b http : [$any] +? (?= [$punc] * [^$any] | $)}x", $content, $post_links_temp );
131
+ foreach( $post_links_temp[0] as $null => $url )
132
  {
133
  if( powerpressadmin_mt_is_media($url) )
134
  {
161
  $Mp3Info->SetDownloadBytesLimit(POWERPRESS_DOWNLOAD_BYTE_LIMIT);
162
  }
163
 
164
+ foreach( $Import as $post_id => $episode_feeds )
165
  {
166
+ foreach( $episode_feeds as $media_index => $feed_slug )
167
  {
168
  if( $feed_slug == '' )
169
  continue; // User decoded not to import this one..
315
 
316
  if( !empty($Settings['custom_feeds']) && is_array($Settings['custom_feeds']) )
317
  {
318
+ foreach( $Settings['custom_feeds'] as $feed_slug => $value )
319
  {
320
  if( $feed_slug != 'podcast' )
321
  $data['feed-'.$feed_slug] = __('Feed', 'powerpress') .': ('.$feed_slug.')';
494
  $MaxFileIndex = 1;
495
 
496
  $count = 0;
497
+ foreach( $results as $post_id => $import_data )
498
  {
499
  $edit_link = get_edit_post_link( $post_id );
500
  if( $post_id == 'feeds_required' )
506
 
507
  if( is_array($Settings['custom_feeds']) )
508
  {
509
+ foreach( $Settings['custom_feeds'] as $feed_slug => $value )
510
  {
511
  if( $feed_slug == 'podcast' )
512
  $enclosure_data = get_post_meta($post_id, 'enclosure', true);
524
  }
525
 
526
  $found = false;
527
+ foreach( $import_data['enclosures'] as $episode_index => $episode_data )
528
  {
529
  if( $episode_data['url'] == $CurrentEnclosures[ $feed_slug ]['url'] )
530
  {
584
  echo '</strong><br />';
585
  echo '<div style="margin-left: 10px;">';
586
  $index = 1;
587
+ foreach( $import_data['enclosures'] as $episode_index => $episode_data )
588
  {
589
  if( $index > $MaxFileIndex )
590
  $MaxFileIndex = $index;
651
  if( isset($CurrentEnclosures[$feed_slug]) && $CurrentEnclosures[$feed_slug]['imported'] )
652
  {
653
  $index = 1;
654
+ foreach( $import_data['enclosures'] as $episode_index => $episode_data )
655
  {
656
  echo "File $index: ";
657
  if( $CurrentEnclosures[$feed_slug]['url'] == $episode_data['url'] )
671
  else
672
  {
673
  $index = 1;
674
+ foreach( $import_data['enclosures'] as $episode_index => $episode_data )
675
  {
676
  echo "File&nbsp;$index:&nbsp;";
677
  if( !empty($episode_data['imported']) )
731
  <p style="margin: 0 0 0 40px; padding: 0;">
732
  <?php echo __('File', 'powerpress'); ?> <?php echo ($number+1); ?>:
733
  <?php
734
+ foreach( $Settings['custom_feeds'] as $feed_slug => $feed_title )
735
  {
736
  echo '<a href="javascript:void()" onclick="select_all('. $number .',\''. $feed_slug .'\');return false;">'. htmlspecialchars($feed_title) .'</a> | ';
737
  }
746
  <?php
747
  $comma = false;
748
  global $g_import_mt_extensions;
749
+ foreach( $g_import_mt_extensions as $ext => $null )
750
  {
751
  if( $comma )
752
  echo ', ';
powerpressadmin-notifications.php CHANGED
@@ -53,7 +53,7 @@ class PowerPress_Notification_Manager {
53
 
54
  public function all_admin_notices()
55
  {
56
- while( list($key, $notification) = each($this->notifications) )
57
  {
58
  echo $notification->get_notification_as_string();
59
  }
@@ -164,35 +164,61 @@ function powerpressadmin_notifications_appropriate()
164
  }
165
 
166
  if( powerpressadmin_notifications_appropriate() ) {
167
- //$PowerPressNotificationManager = new PowerPress_Notification_Manager(); // Uncomment when we have notices to display
168
 
169
  // e.g. usage
170
- /*
171
- if( !$PowerPressNotificationManager->dismissed_status('apple-201602') ) {
172
 
173
  $message = '';
174
- $message .= '<h3 style="margin: 5px 0;">';
175
- $message .= __('iTunes Update, February, 2016 - Blubrry PowerPress', 'powerpress');
176
- $message .= '</h3>';
177
- $message .= __('Apple now recommends using a 3000 x 3000 pixel JPG or PNG in the RGB color space in a compressed format. Saving your image as a JPG with your favorite image editing software should automatically compress your image to optimize for mobile devices.', 'powerpress');
178
- $message .= ' &mdash; <a href="'. admin_url("admin.php?page=powerpressadmin_basic#tab7") .'">'. __('Update Now', 'powerpress') .'</a>';
179
- $message .= ' | <a href="http://www.powerpresspodcast.com/2016/02/19/new-itunes-podcast-directory-recommendations-february-2016/" target="_blank">'. __('Learn More', 'powerpress') .'</a>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  $message .= "\n\n";
 
 
 
 
 
 
181
  $message .= __('Apple has changed the iTunes explicit setting. <strong>You <i>must</i> now select "clean" or "explicit"</strong> - the \'no\' option is no longer available', 'powerpress');
182
  $message .= ' &mdash; <a href="'. admin_url("admin.php?page=powerpressadmin_basic#tab5") .'">'. __('Update Now', 'powerpress') .'</a>';
183
  $message .= ' | <a href="http://www.powerpresspodcast.com/2016/02/19/new-itunes-podcast-directory-recommendations-february-2016/" target="_blank">'. __('Learn More', 'powerpress') .'</a>';
184
  $message .= "\n\n";
185
- $message .= __('Podcast submissions to the iTunes podcast directory are now managed by the new <a href="https://podcastsconnect.apple.com/" target="_blank">Podcast Connect</a> website. The new website allows you to submit new podcasts, as well as refresh, hide and delete your current podcast listings.', 'powerpress');
 
186
  $message .= ' &mdash; <a href="http://www.powerpresspodcast.com/2016/02/19/new-itunes-podcast-directory-recommendations-february-2016/" target="_blank">'. __('Learn More', 'powerpress') .'</a>';
 
187
  $message .= "\n\n";
188
  $message .= '<div style="text-align: center; margin: 5px 0; font-weight: bold;"><i>'. powerpress_review_message() .'</i></div>';
189
 
190
  // http://www.apple.com/customer-letter/
191
  // if you love PowerPress, Please rate and review PowerPress here:
192
 
193
- $PowerPressNotificationManager->add('apple-201602', $message);
194
  }
195
- */
196
  }
197
 
198
  // eof
53
 
54
  public function all_admin_notices()
55
  {
56
+ foreach( $this->notifications as $key => $notification )
57
  {
58
  echo $notification->get_notification_as_string();
59
  }
164
  }
165
 
166
  if( powerpressadmin_notifications_appropriate() ) {
167
+ $PowerPressNotificationManager = new PowerPress_Notification_Manager(); // Uncomment when we have notices to display
168
 
169
  // e.g. usage
170
+
171
+ if( !$PowerPressNotificationManager->dismissed_status('spotify-201807') ) {
172
 
173
  $message = '';
174
+ $message .= '<h2 style="margin: 0; padding; 0; font-size: 115%;">';
175
+ $message .= __('Spotify Submissions and Google Podcasts Announcement, July 2018 - Blubrry PowerPress', 'powerpress');
176
+ $message .= '</h2>';
177
+
178
+ $message .= '<a href="https://create.blubrry.com/manual/podcast-promotion/submit-podcast-to-spotify/" target="_blank" class="powerpress-admin-heading">';
179
+ $message .= 'Submit Your Podcasts to Spotify';
180
+ $message .= '</a> ';
181
+ $message .= powerpressadmin_new();
182
+ $message .= '<p>PowerPress users who also use <a href="https://create.blubrry.com/resources/podcast-media-hosting/" target="_blank">Blubrry media hosting</a> can now submit their podcast to Spotify. Not a Blubrry hosting customer? Migration is free and easy, and includes free email, phone, and scheduled screen sharing support. Get started with the <a href="https://create.blubrry.com/resources/podcast-media-hosting/migrating-to-blubrry/powerpress-podcasting-plugin-wordpress/" target="_blank">Media Migration Tool</a> built into PowerPress.</p>';
183
+
184
+ $message .= '<a href="https://create.blubrry.com/manual/podcast-promotion/submit-podcast-google-podcasts/" target="_blank" class="powerpress-admin-heading">';
185
+ $message .= 'Google Podcasts';
186
+ $message .= '</a> ';
187
+ $message .= powerpressadmin_new();
188
+ $message .= '<p>Google has launched a new podcast directory that is available through Google search, Google Home smart speakers and the new <a href="https://powerpresspodcast.com/2018/06/25/google-podcasts-app-is-here-yp34/" target="_blank">Google Podcasts</a> app for Android. As long as your podcast website is discoverable by Google search, your podcast will be included in this directory.</p>';
189
+ //$message .= '<p>Google has launched a new Podcast directory built into Google search. No submission is necessary. As long as your website is discoverable by Google search your podcast will be indexed by Google.</p>';
190
+ $message .= "\n\n";
191
+
192
+
193
+ $message .= '<div class="powerpress-admin-heading">';
194
+ $message .= 'Destinations Tab and Subscribe Page (Shortcode) and Sidebar Widget Updated';
195
+ $message .= '</div> ';
196
+ $message .= '<p>Destinations settings in PowerPress have been updated to include Google Podcasts and Spotify. The subscribe pages and sidebar will update with your new destinations.</p>';
197
+ //$message .= '<p>Google has launched a new Podcast directory built into Google search. No submission is necessary. As long as your website is discoverable by Google search your podcast will be indexed by Google.</p>';
198
  $message .= "\n\n";
199
+
200
+ //$message .= '<p>Do not forget to update the <a href="'. admin_url("admin.php?page=powerpressadmin_basic#tab-dest") .'">Destinations</a> settings in PowerPress to maximize your podcast distribution.</p>'. "\n\n";
201
+
202
+
203
+ /*
204
+
205
  $message .= __('Apple has changed the iTunes explicit setting. <strong>You <i>must</i> now select "clean" or "explicit"</strong> - the \'no\' option is no longer available', 'powerpress');
206
  $message .= ' &mdash; <a href="'. admin_url("admin.php?page=powerpressadmin_basic#tab5") .'">'. __('Update Now', 'powerpress') .'</a>';
207
  $message .= ' | <a href="http://www.powerpresspodcast.com/2016/02/19/new-itunes-podcast-directory-recommendations-february-2016/" target="_blank">'. __('Learn More', 'powerpress') .'</a>';
208
  $message .= "\n\n";
209
+ $message .= '<p>'.__('Podcast submissions to the iTunes podcast directory are now managed by the new <a href="https://podcastsconnect.apple.com/" target="_blank">Podcast Connect</a> website. The new website allows you to submit new podcasts, as well as refresh, hide and delete your current podcast listings.', 'powerpress') .'</p>';
210
+
211
  $message .= ' &mdash; <a href="http://www.powerpresspodcast.com/2016/02/19/new-itunes-podcast-directory-recommendations-february-2016/" target="_blank">'. __('Learn More', 'powerpress') .'</a>';
212
+ */
213
  $message .= "\n\n";
214
  $message .= '<div style="text-align: center; margin: 5px 0; font-weight: bold;"><i>'. powerpress_review_message() .'</i></div>';
215
 
216
  // http://www.apple.com/customer-letter/
217
  // if you love PowerPress, Please rate and review PowerPress here:
218
 
219
+ $PowerPressNotificationManager->add('spotify-201807', $message);
220
  }
221
+
222
  }
223
 
224
  // eof
powerpressadmin-ping-sites.php CHANGED
@@ -11,7 +11,7 @@
11
  {
12
  $ping_site_data = get_option('ping_sites');
13
 
14
- while( list($null,$url) = each($PingSites) )
15
  $ping_site_data = trim($ping_site_data)."\r\n$url";
16
 
17
  update_option('ping_sites', $ping_site_data);
@@ -45,7 +45,7 @@
45
  <td>
46
  <p><?php echo __('Select the blog service you would like to notify.', 'powerpress'); ?></p>
47
  <?php
48
- while( list($url,$name) = each($BlogSites) )
49
  {
50
  if( stripos($ping_sites, $url) !== false )
51
  {
@@ -69,7 +69,7 @@
69
  <td>
70
  <p><?php echo __('Select the podcasting service you would like to notify.', 'powerpress'); ?></p>
71
  <?php
72
- while( list($url,$name) = each($PodcastSites) )
73
  {
74
  if( stripos($ping_sites, $url) !== false )
75
  {
11
  {
12
  $ping_site_data = get_option('ping_sites');
13
 
14
+ foreach( $PingSites as $null => $url )
15
  $ping_site_data = trim($ping_site_data)."\r\n$url";
16
 
17
  update_option('ping_sites', $ping_site_data);
45
  <td>
46
  <p><?php echo __('Select the blog service you would like to notify.', 'powerpress'); ?></p>
47
  <?php
48
+ foreach( $BlogSites as $url => $name )
49
  {
50
  if( stripos($ping_sites, $url) !== false )
51
  {
69
  <td>
70
  <p><?php echo __('Select the podcasting service you would like to notify.', 'powerpress'); ?></p>
71
  <?php
72
+ foreach( $PodcastSites as $url => $name )
73
  {
74
  if( stripos($ping_sites, $url) !== false )
75
  {
powerpressadmin-player-page.php CHANGED
@@ -370,7 +370,7 @@ table.html5formats tr > td:first-child {
370
  <th scope="row">&nbsp;</th>
371
  <td>
372
  <ul>
373
- <li><label><input type="radio" name="Player[player]" id="player_blubrryaudio" value="blubrryaudio" <?php if( $General['player'] == 'blubrryaudio' ) echo 'checked'; ?> /> <?php echo __('Blubrry Audio Player', 'powerpress'); ?> <?php echo powerpressadmin_new(); ?></label>
374
  <strong style="padding-top: 8px; margin-left: 20px;"><a href="<?php echo admin_url('admin.php?page=powerpress/powerpressadmin_player.php&ep=1'); ?>" id="activate_blubrryaudio" class="activate-player"><?php echo __('Activate and Configure Now', 'powerpress'); ?></a></strong>
375
  </li>
376
  <li style="margin-left: 30px; margin-bottom:16px;">
370
  <th scope="row">&nbsp;</th>
371
  <td>
372
  <ul>
373
+ <li><label><input type="radio" name="Player[player]" id="player_blubrryaudio" value="blubrryaudio" <?php if( $General['player'] == 'blubrryaudio' ) echo 'checked'; ?> /> <?php echo __('Blubrry Audio Player', 'powerpress'); ?> </label>
374
  <strong style="padding-top: 8px; margin-left: 20px;"><a href="<?php echo admin_url('admin.php?page=powerpress/powerpressadmin_player.php&ep=1'); ?>" id="activate_blubrryaudio" class="activate-player"><?php echo __('Activate and Configure Now', 'powerpress'); ?></a></strong>
375
  </li>
376
  <li style="margin-left: 30px; margin-bottom:16px;">
powerpressadmin-podpress.php CHANGED
@@ -75,7 +75,7 @@ if( !function_exists('add_action') )
75
  $results_data = $wpdb->get_results($query, ARRAY_A);
76
  if( $results_data )
77
  {
78
- while( list($null,$row) = each($results_data) )
79
  {
80
  //$return = $row;
81
  $podpress_data = @unserialize($row['meta_value']);
@@ -120,7 +120,7 @@ if( !function_exists('add_action') )
120
  }
121
 
122
  $clean_data = array();
123
- while( list($episode_index,$episode_data) = each($podpress_data) )
124
  {
125
  if( trim($episode_data['URI']) != '' )
126
  {
@@ -165,7 +165,7 @@ if( !function_exists('add_action') )
165
  list($EnclosureURL,$null) = explode("\n", $enclosure_data);
166
  $return[ $row['ID'] ]['enclosure'] = $enclosure_data;
167
 
168
- while( list($episode_index_temp,$episode_data_temp) = each($clean_data) )
169
  {
170
  if( trim($EnclosureURL) == trim($episode_data_temp['url']) )
171
  {
@@ -233,9 +233,9 @@ if( !function_exists('add_action') )
233
  $Import = ( !empty( $_POST['Import']) ? $_POST['Import'] : array() );
234
  $PodPressData = powerpress_get_podpress_episodes(true);
235
 
236
- while( list($post_id, $podpress_episode_feeds) = each($Import) )
237
  {
238
- while( list($podpress_index, $feed_slug) = each($podpress_episode_feeds) )
239
  {
240
  if( $feed_slug )
241
  {
@@ -315,7 +315,7 @@ if( !function_exists('add_action') )
315
 
316
  if( is_array($Settings['custom_feeds']) )
317
  {
318
- while( list($feed_slug,$value) = each($Settings['custom_feeds']) )
319
  {
320
  if( $feed_slug != 'podcast' )
321
  $data['feed-'.$feed_slug] = __('Feed', 'powerpress') .': ('.$feed_slug.')';
@@ -492,7 +492,7 @@ function select_all(index,value)
492
  $ImportableEpisodes = 0;
493
 
494
  $count = 0;
495
- while( list($post_id, $import_data) = each($results ) )
496
  {
497
  $edit_link = get_edit_post_link( $post_id );
498
  if( $post_id == 'feeds_required' )
@@ -504,7 +504,7 @@ function select_all(index,value)
504
 
505
  if( is_array($Settings['custom_feeds']) )
506
  {
507
- while( list($feed_slug,$value) = each($Settings['custom_feeds']) )
508
  {
509
  if( $feed_slug == 'podcast' )
510
  $enclosure_data = get_post_meta($post_id, 'enclosure', true);
@@ -522,7 +522,7 @@ function select_all(index,value)
522
  }
523
 
524
  $found = false;
525
- while( list($episode_index,$episode_data) = each($import_data['podpress_data']) )
526
  {
527
  if( $episode_data['url'] == $CurrentEnclosures[ $feed_slug ]['url'] )
528
  {
@@ -578,7 +578,7 @@ function select_all(index,value)
578
  echo '</strong><br />';
579
  echo '<div style="margin-left: 10px;">';
580
  $index = 1;
581
- while( list($episode_index,$episode_data) = each($import_data['podpress_data']) )
582
  {
583
  $Parts = parse_url($episode_data['url']);
584
  $filename = substr($Parts['path'], strrpos($Parts['path'], '/')+1 );
@@ -634,7 +634,7 @@ function select_all(index,value)
634
  if( isset($CurrentEnclosures[$feed_slug]) && $CurrentEnclosures[$feed_slug]['imported'] )
635
  {
636
  $index = 1;
637
- while( list($episode_index,$episode_data) = each($import_data['podpress_data']) )
638
  {
639
  echo "File $index: ";
640
  if( $CurrentEnclosures[$feed_slug]['url'] == $episode_data['url'] )
@@ -654,7 +654,7 @@ function select_all(index,value)
654
  else
655
  {
656
  $index = 1;
657
- while( list($episode_index,$episode_data) = each($import_data['podpress_data']) )
658
  {
659
  echo __('File', 'powerpress') ."&nbsp;$index:&nbsp;";
660
  if( !empty($episode_data['imported']) )
@@ -712,7 +712,7 @@ function select_all(index,value)
712
  <p style="margin: 0 0 0 40px; padding: 0;">
713
  File <?php echo ($number+1); ?>:
714
  <?php
715
- while( list($feed_slug,$feed_title) = each($Settings['custom_feeds']) )
716
  {
717
  echo '<a href="javascript:void()" onclick="select_all('. $number .',\''. $feed_slug .'\');return false;">'. htmlspecialchars($feed_title) .'</a> | ';
718
  }
75
  $results_data = $wpdb->get_results($query, ARRAY_A);
76
  if( $results_data )
77
  {
78
+ foreach( $results_data as $null => $row )
79
  {
80
  //$return = $row;
81
  $podpress_data = @unserialize($row['meta_value']);
120
  }
121
 
122
  $clean_data = array();
123
+ foreach( $podpress_data as $episode_index => $episode_data )
124
  {
125
  if( trim($episode_data['URI']) != '' )
126
  {
165
  list($EnclosureURL,$null) = explode("\n", $enclosure_data);
166
  $return[ $row['ID'] ]['enclosure'] = $enclosure_data;
167
 
168
+ foreach( $clean_data as $episode_index_temp => $episode_data_temp )
169
  {
170
  if( trim($EnclosureURL) == trim($episode_data_temp['url']) )
171
  {
233
  $Import = ( !empty( $_POST['Import']) ? $_POST['Import'] : array() );
234
  $PodPressData = powerpress_get_podpress_episodes(true);
235
 
236
+ foreach( $Import as $post_id => $podpress_episode_feeds )
237
  {
238
+ foreach( $podpress_episode_feeds as $podpress_index => $feed_slug )
239
  {
240
  if( $feed_slug )
241
  {
315
 
316
  if( is_array($Settings['custom_feeds']) )
317
  {
318
+ foreach( $Settings['custom_feeds'] as $feed_slug => $value )
319
  {
320
  if( $feed_slug != 'podcast' )
321
  $data['feed-'.$feed_slug] = __('Feed', 'powerpress') .': ('.$feed_slug.')';
492
  $ImportableEpisodes = 0;
493
 
494
  $count = 0;
495
+ foreach( $results as $post_id => $import_data )
496
  {
497
  $edit_link = get_edit_post_link( $post_id );
498
  if( $post_id == 'feeds_required' )
504
 
505
  if( is_array($Settings['custom_feeds']) )
506
  {
507
+ foreach( $Settings['custom_feeds'] as $feed_slug => $value )
508
  {
509
  if( $feed_slug == 'podcast' )
510
  $enclosure_data = get_post_meta($post_id, 'enclosure', true);
522
  }
523
 
524
  $found = false;
525
+ foreach( $import_data['podpress_data'] as $episode_index => $episode_data )
526
  {
527
  if( $episode_data['url'] == $CurrentEnclosures[ $feed_slug ]['url'] )
528
  {
578
  echo '</strong><br />';
579
  echo '<div style="margin-left: 10px;">';
580
  $index = 1;
581
+ foreach( $import_data['podpress_data'] as $episode_index => $episode_data )
582
  {
583
  $Parts = parse_url($episode_data['url']);
584
  $filename = substr($Parts['path'], strrpos($Parts['path'], '/')+1 );
634
  if( isset($CurrentEnclosures[$feed_slug]) && $CurrentEnclosures[$feed_slug]['imported'] )
635
  {
636
  $index = 1;
637
+ foreach( $import_data['podpress_data'] as $episode_index => $episode_data )
638
  {
639
  echo "File $index: ";
640
  if( $CurrentEnclosures[$feed_slug]['url'] == $episode_data['url'] )
654
  else
655
  {
656
  $index = 1;
657
+ foreach( $import_data['podpress_data'] as $episode_index => $episode_data )
658
  {
659
  echo __('File', 'powerpress') ."&nbsp;$index:&nbsp;";
660
  if( !empty($episode_data['imported']) )
712
  <p style="margin: 0 0 0 40px; padding: 0;">
713
  File <?php echo ($number+1); ?>:
714
  <?php
715
+ foreach( $Settings['custom_feeds'] as $feed_slug => $feed_title )
716
  {
717
  echo '<a href="javascript:void()" onclick="select_all('. $number .',\''. $feed_slug .'\');return false;">'. htmlspecialchars($feed_title) .'</a> | ';
718
  }
powerpressadmin-posttypefeeds.php CHANGED
@@ -70,13 +70,13 @@ function powerpress_admin_posttypefeeds()
70
  <?php
71
 
72
  $count = 0;
73
- while( list($null, $post_type) = each($post_types) )
74
  {
75
  $PostTypeSettingsArray = get_option('powerpress_posttype_'. $post_type );
76
  if( !$PostTypeSettingsArray )
77
  continue;
78
 
79
- while( list($feed_slug, $PostTypeSettings) = each($PostTypeSettingsArray) )
80
  {
81
  $feed_title = ( !empty($PostTypeSettings['title']) ? $PostTypeSettings['title'] : '(blank)');
82
  // $post_type
@@ -191,7 +191,7 @@ function powerpress_admin_posttypefeeds()
191
 
192
 
193
  reset($post_types);
194
- while( list($null,$post_type) = each($post_types) ) {
195
  if( $post_type == 'post' )
196
  continue;
197
 
70
  <?php
71
 
72
  $count = 0;
73
+ foreach( $post_types as $null => $post_type )
74
  {
75
  $PostTypeSettingsArray = get_option('powerpress_posttype_'. $post_type );
76
  if( !$PostTypeSettingsArray )
77
  continue;
78
 
79
+ foreach( $PostTypeSettingsArray as $feed_slug => $PostTypeSettings )
80
  {
81
  $feed_title = ( !empty($PostTypeSettings['title']) ? $PostTypeSettings['title'] : '(blank)');
82
  // $post_type
191
 
192
 
193
  reset($post_types);
194
+ foreach( $post_types as $null => $post_type ) {
195
  if( $post_type == 'post' )
196
  continue;
197
 
powerpressadmin-pts.php CHANGED
@@ -151,7 +151,7 @@ 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
  }
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
  }
powerpressadmin-rss-import.php CHANGED
@@ -186,7 +186,7 @@ class PowerPress_RSS_Podcast_Import extends WP_Importer {
186
  <?php
187
 
188
  asort($Feeds, SORT_STRING); // Sort feeds
189
- while( list($feed_slug, $feed_title) = each($Feeds) ) {
190
 
191
  echo "\t<option value=\"$feed_slug\">$feed_title ($feed_slug)</option>\n";
192
  }
@@ -249,7 +249,7 @@ if( !empty($PowerPressTaxonomies) ) { // If taxonomy podcasting feeds exist..
249
  $tt_ids = '';
250
 
251
  $SelectOptions = array();
252
- while( list($tt_id, $null) = each($PowerPressTaxonomies) ) {
253
  if( !empty($tt_ids) )
254
  $tt_ids .= ',';
255
  $tt_ids .= $tt_id;
@@ -265,7 +265,7 @@ if( !empty($PowerPressTaxonomies) ) { // If taxonomy podcasting feeds exist..
265
  <option value=""><?php echo __('Select Taxonomy Podcast', ''); ?></option>
266
  <?php
267
 
268
- while( list($tt_id, $label) = each($SelectOptions) )
269
  {
270
  echo "\t<option value=\"$tt_id\">". htmlspecialchars($label). "</option>\n";
271
  }
@@ -356,7 +356,7 @@ jQuery(document).ready( function() {
356
  <select id="import_post_status" name="import_post_status" class="medium-text">
357
  <?php
358
  $post_statuses = get_post_statuses();
359
- while( list($post_status_slug, $post_status_label) = each($post_statuses) ) {
360
 
361
  echo "\t<option value=\"$post_status_slug\"". ($post_status_slug=='publish'?' selected':'') .">". htmlspecialchars("$post_status_label ($post_status_slug)") . "</option>\n";
362
  }
@@ -587,7 +587,7 @@ jQuery(document).ready( function() {
587
  $cats_by_title = array_flip( $Categories );
588
 
589
  $FoundCategories = array();
590
- while( list($index,$category) = each($itunes_categories) )
591
  {
592
  $category = str_replace('&amp;', '&', $category);
593
  $category = strtolower($category);
@@ -599,7 +599,7 @@ jQuery(document).ready( function() {
599
  // this logic rebuilds the categorires in the correct order no matter what method the service stacked them
600
  $FinalCats = array(1=>'', 2=>'', 3=>'');
601
  $last_category_index = 1;
602
- while( list($index,$cat_id) = each($FoundCategories) )
603
  {
604
  if( !empty($FinalCats[$last_category_index]) ) // Do we need to increment to the next category position
605
  {
@@ -620,7 +620,7 @@ jQuery(document).ready( function() {
620
  $FinalCats[ $last_category_index ] = $cat_id;
621
  }
622
 
623
- while( list($field_no, $cat_id) = each($FinalCats) ) {
624
  if( empty( $cat_id) )
625
  continue;
626
  $field = sprintf('itunes_cat_%d', $field_no);
@@ -674,7 +674,7 @@ jQuery(document).ready( function() {
674
  echo '<hr />';
675
  echo '<p><strong>'. __('Program information imported', 'powerpress') .'</strong></p>';
676
  echo '<ul class="ul-disc">';
677
- while( list($field,$value) = each($NewSettings) )
678
  {
679
  if( $field == 'rss2_image' )
680
  continue;
@@ -1137,7 +1137,7 @@ jQuery(document).ready( function() {
1137
  }
1138
 
1139
  $add_urls = '';
1140
- while( list($meta_id, $url) = each($GLOBALS['pp_migrate_media_urls']) )
1141
  {
1142
  if( empty($QueuedFiles[ $meta_id ]) ) { // Add to the array if not already added
1143
  $QueuedFiles[ $meta_id ] = $url;
@@ -1321,8 +1321,7 @@ jQuery(document).ready( function() {
1321
  $results = $wpdb->get_results($query, ARRAY_A);
1322
  if( !empty($results) )
1323
  {
1324
- if( list($null,$row) = each($results) )
1325
- {
1326
  return $row['ID'];
1327
  }
1328
  }
186
  <?php
187
 
188
  asort($Feeds, SORT_STRING); // Sort feeds
189
+ foreach( $Feeds as $feed_slug => $feed_title ) {
190
 
191
  echo "\t<option value=\"$feed_slug\">$feed_title ($feed_slug)</option>\n";
192
  }
249
  $tt_ids = '';
250
 
251
  $SelectOptions = array();
252
+ foreach( $PowerPressTaxonomies as $tt_id => $null ) {
253
  if( !empty($tt_ids) )
254
  $tt_ids .= ',';
255
  $tt_ids .= $tt_id;
265
  <option value=""><?php echo __('Select Taxonomy Podcast', ''); ?></option>
266
  <?php
267
 
268
+ foreach( $SelectOptions as $tt_id => $label )
269
  {
270
  echo "\t<option value=\"$tt_id\">". htmlspecialchars($label). "</option>\n";
271
  }
356
  <select id="import_post_status" name="import_post_status" class="medium-text">
357
  <?php
358
  $post_statuses = get_post_statuses();
359
+ foreach( $post_statuses as $post_status_slug => $post_status_label ) {
360
 
361
  echo "\t<option value=\"$post_status_slug\"". ($post_status_slug=='publish'?' selected':'') .">". htmlspecialchars("$post_status_label ($post_status_slug)") . "</option>\n";
362
  }
587
  $cats_by_title = array_flip( $Categories );
588
 
589
  $FoundCategories = array();
590
+ foreach( $itunes_categories as $index => $category )
591
  {
592
  $category = str_replace('&amp;', '&', $category);
593
  $category = strtolower($category);
599
  // this logic rebuilds the categorires in the correct order no matter what method the service stacked them
600
  $FinalCats = array(1=>'', 2=>'', 3=>'');
601
  $last_category_index = 1;
602
+ foreach( $FoundCategories as $index => $cat_id )
603
  {
604
  if( !empty($FinalCats[$last_category_index]) ) // Do we need to increment to the next category position
605
  {
620
  $FinalCats[ $last_category_index ] = $cat_id;
621
  }
622
 
623
+ foreach( $FinalCats as $field_no => $cat_id ) {
624
  if( empty( $cat_id) )
625
  continue;
626
  $field = sprintf('itunes_cat_%d', $field_no);
674
  echo '<hr />';
675
  echo '<p><strong>'. __('Program information imported', 'powerpress') .'</strong></p>';
676
  echo '<ul class="ul-disc">';
677
+ foreach( $NewSettings as $field => $value )
678
  {
679
  if( $field == 'rss2_image' )
680
  continue;
1137
  }
1138
 
1139
  $add_urls = '';
1140
+ foreach( $GLOBALS['pp_migrate_media_urls'] as $meta_id => $url )
1141
  {
1142
  if( empty($QueuedFiles[ $meta_id ]) ) { // Add to the array if not already added
1143
  $QueuedFiles[ $meta_id ] = $url;
1321
  $results = $wpdb->get_results($query, ARRAY_A);
1322
  if( !empty($results) )
1323
  {
1324
+ foreach( $results as $null => $row ) {
 
1325
  return $row['ID'];
1326
  }
1327
  }
powerpressadmin-taxonomyfeeds.php CHANGED
@@ -77,7 +77,7 @@ function powerpress_admin_taxonomyfeeds()
77
 
78
 
79
  $count = 0;
80
- while( list($tt_id, $null) = each($PowerPressTaxonomies) )
81
  {
82
  $taxonomy_type = '';
83
  $term_ID = '';
@@ -201,7 +201,7 @@ function powerpress_admin_taxonomyfeeds()
201
  $taxonomies=get_taxonomies('','names');
202
 
203
 
204
- while( list($null,$taxonomy) = each($taxonomies) ) {
205
  if( $taxonomy == 'category' )
206
  continue;
207
  $taxonomy = htmlspecialchars($taxonomy);
77
 
78
 
79
  $count = 0;
80
+ foreach( $PowerPressTaxonomies as $tt_id => $null )
81
  {
82
  $taxonomy_type = '';
83
  $term_ID = '';
201
  $taxonomies=get_taxonomies('','names');
202
 
203
 
204
+ foreach( $taxonomies as $null => $taxonomy ) {
205
  if( $taxonomy == 'category' )
206
  continue;
207
  $taxonomy = htmlspecialchars($taxonomy);
powerpressadmin.php CHANGED
@@ -7,8 +7,9 @@ function powerpress_esc_html($escape)
7
  {
8
  if( is_array($escape) )
9
  {
10
- while( list($index,$value) = each($escape) )
11
  $escape[ $index ] = powerpress_esc_html($value);
 
12
  }
13
  return esc_html($escape);
14
  }
@@ -71,11 +72,12 @@ function powerpress_admin_init()
71
  add_thickbox(); // we use the thckbox for some settings
72
  wp_enqueue_script('jquery');
73
  wp_enqueue_script('jquery-ui-core'); // Now including the library at Google
74
- wp_enqueue_script('jquery-ui-tabs');
75
 
76
  // Powerpress page
77
  if( isset($_GET['page']) && strstr($_GET['page'], 'powerpress' ) !== false )
78
  {
 
 
79
  //wp_enqueue_script('jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js');
80
  if( preg_match('/powerpressadmin_(mobile|audio|video)player/', $_GET['page']) )
81
  {
@@ -674,7 +676,7 @@ function powerpress_admin_init()
674
  update_option('powerpress_track_number', $_POST['PowerPressTrackNumber']);
675
  }
676
  // Set all the tag values...
677
- while( list($key,$value) = each($GeneralPosted) )
678
  {
679
  if( substr($key, 0, 4) == 'tag_' )
680
  {
@@ -700,7 +702,7 @@ function powerpress_admin_init()
700
  {
701
  $json_data = false;
702
  $api_url_array = powerpress_get_api_array();
703
- while( list($index,$api_url) = each($api_url_array) )
704
  {
705
  $req_url = sprintf('%s/media/%s/coverart.json?url=%s', rtrim($api_url, '/'), $GeneralSettingsTemp['blubrry_program_keyword'], urlencode($TagValues['tag_coverart']) );
706
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
@@ -803,7 +805,9 @@ function powerpress_admin_init()
803
  if( isset($GeneralSettingsTemp['episode_box_background_color']) )
804
  $SaveEpisdoeBoxBGColor['episode_box_background_color'] = $GeneralSettingsTemp['episode_box_background_color']; // copy previous settings
805
 
806
- list($feed_slug_temp, $background_color) = each($_POST['EpisodeBoxBGColor']);
 
 
807
  $SaveEpisdoeBoxBGColor['episode_box_background_color'][ $feed_slug_temp ] = $background_color;
808
  powerpress_save_settings($SaveEpisdoeBoxBGColor);
809
  }
@@ -1230,7 +1234,7 @@ function powerpress_admin_init()
1230
  check_admin_referer('powerpress-add-caps');
1231
 
1232
  $users = array('administrator','editor', 'author'); // , 'contributor', 'subscriber');
1233
- while( list($null,$user) = each($users) )
1234
  {
1235
  $role = get_role($user);
1236
  if( !empty($role) )
@@ -1251,7 +1255,7 @@ function powerpress_admin_init()
1251
  check_admin_referer('powerpress-remove-caps');
1252
 
1253
  $users = array('administrator','editor', 'author', 'contributor', 'subscriber');
1254
- while( list($null,$user) = each($users) )
1255
  {
1256
  $role = get_role($user);
1257
  if( !empty($role) )
@@ -1280,7 +1284,7 @@ function powerpress_admin_init()
1280
  }
1281
 
1282
  $users = array('administrator','editor', 'author'); // , 'contributor', 'subscriber');
1283
- while( list($null,$user) = each($users) )
1284
  {
1285
  $role = get_role($user);
1286
  if( !empty($role) )
@@ -1299,7 +1303,7 @@ function powerpress_admin_init()
1299
  check_admin_referer('powerpress-remove-feed-caps');
1300
 
1301
  $users = array('administrator','editor', 'author', 'contributor', 'subscriber', 'premium_subscriber', 'powerpress');
1302
- while( list($null,$user) = each($users) )
1303
  {
1304
  $role = get_role($user);
1305
  if( !empty($role) )
@@ -1387,7 +1391,7 @@ function powerpress_admin_notices()
1387
  // Clear the SG cachepress plugin:
1388
  if (function_exists('sg_cachepress_purge_cache')) { sg_cachepress_purge_cache(); }
1389
 
1390
- while( list($null, $error) = each($errors) )
1391
  {
1392
  ?>
1393
  <div class="updated"><p style="line-height: 125%;"><strong><?php echo $error; ?></strong></p></div>
@@ -1412,8 +1416,9 @@ function powerpress_save_settings($SettingsNew=false, $field = 'powerpress_gener
1412
  $Settings = get_option($field);
1413
  if( !is_array($Settings) )
1414
  $Settings = array();
1415
- while( list($key,$value) = each($SettingsNew) )
1416
  $Settings[$key] = $value;
 
1417
  if( $field == 'powerpress_general' && !isset($Settings['timestamp']) )
1418
  $Settings['timestamp'] = time();
1419
 
@@ -1544,7 +1549,7 @@ function powerpress_htmlspecialchars($data)
1544
  return $data;
1545
  if( is_array($data) )
1546
  {
1547
- while( list($key,$value) = each($data) )
1548
  {
1549
  if( $key == 'itunes_summary' )
1550
  continue; // Skip this one as we escape it in the form.
@@ -1566,7 +1571,7 @@ function powerpress_stripslashes($data)
1566
  if( !is_array($data) )
1567
  return stripslashes($data);
1568
 
1569
- while( list($key,$value) = each($data) )
1570
  {
1571
  if( is_array($value) )
1572
  $data[$key] = powerpress_stripslashes($value);
@@ -1584,7 +1589,7 @@ function powerpress_admin_get_post_types($capability_type = 'post')
1584
 
1585
  $return = array();
1586
  $post_types = get_post_types();
1587
- while( list($index,$post_type) = each($post_types) )
1588
  {
1589
  if( $post_type == 'redirect_rule' || $post_type == 'attachment' || $post_type == 'nav_menu_item' || $post_type == 'revision' || $post_type == 'action' )
1590
  continue;
@@ -1609,13 +1614,13 @@ function powerpress_rebuild_posttype_podcasting()
1609
  // array( feed-slugs => array('posttype1'=>'post type 1 title', 'posttype2'=>post type 2 title', ...) );
1610
  $post_types = get_post_types();
1611
  $FeedSlugPostTypeArray = array();
1612
- while( list($index, $post_type) = each($post_types) )
1613
  {
1614
  $PostTypeSettingsArray = get_option('powerpress_posttype_'. $post_type );
1615
  if( !$PostTypeSettingsArray )
1616
  continue;
1617
 
1618
- while( list($feed_slug, $PostTypeSettings) = each($PostTypeSettingsArray) )
1619
  {
1620
  $FeedSlugPostTypeArray[ $feed_slug ][ $post_type ] = ( empty($PostTypeSettings['title'])? $feed_slug : $PostTypeSettings['title'] );
1621
  }
@@ -1649,7 +1654,7 @@ function powerpress_admin_menu()
1649
  if( empty($Powerpress['posttype_podcasting']) )
1650
  $page_types = powerpress_admin_get_post_types('page'); // Get pages by capability type
1651
 
1652
- while( list($null,$page_type) = each($page_types) )
1653
  {
1654
  if( empty($FeedSlugPostTypesArray[ 'podcast' ][ $page_type ]) )
1655
  add_meta_box('powerpress-podcast', __('Podcast Episode', 'powerpress'), 'powerpress_meta_box', $page_type, 'normal');
@@ -1673,9 +1678,9 @@ function powerpress_admin_menu()
1673
  if( empty($FeedSlugPostTypesArray) )
1674
  $FeedSlugPostTypesArray = array();
1675
 
1676
- while( list($feed_slug, $FeedSlugPostTypes) = each($FeedSlugPostTypesArray) )
1677
  {
1678
- while( list($post_type, $type_title) = each($FeedSlugPostTypes) )
1679
  {
1680
  if ( $feed_slug != 'podcast' || $post_type != 'post' ) // No the default podcast feed
1681
  {
@@ -1693,7 +1698,7 @@ function powerpress_admin_menu()
1693
  {
1694
  $FeedDefaultPodcast = get_option('powerpress_feed_podcast');
1695
 
1696
- while( list($null,$post_type) = each($post_types) )
1697
  {
1698
  // Make sure this post type can edit the default podcast channel...
1699
  if( !empty($FeedDefaultPodcast['custom_post_type']) && $FeedDefaultPodcast['custom_post_type'] != $post_type )
@@ -1703,7 +1708,7 @@ function powerpress_admin_menu()
1703
  add_meta_box('powerpress-podcast', __('Podcast Episode (default)', 'powerpress'), 'powerpress_meta_box', $post_type, 'normal');
1704
  }
1705
 
1706
- while( list($feed_slug, $feed_title) = each($Powerpress['custom_feeds']) )
1707
  {
1708
  if( $feed_slug == 'podcast' )
1709
  continue;
@@ -1713,7 +1718,7 @@ function powerpress_admin_menu()
1713
 
1714
 
1715
  reset($post_types);
1716
- while( list($null,$post_type) = each($post_types) )
1717
  {
1718
  // Make sure this post type can edit the default podcast channel...
1719
  if( !empty($FeedCustom['custom_post_type']) && $FeedCustom['custom_post_type'] != $post_type )
@@ -1728,7 +1733,7 @@ function powerpress_admin_menu()
1728
  else // This handles all podcast post types and default 'post'. if post type podcasting enabled.
1729
  {
1730
  reset($post_types);
1731
- while( list($null,$post_type) = each($post_types) )
1732
  {
1733
  if( empty($FeedSlugPostTypesArray[ 'podcast' ][ $post_type ]) )
1734
  add_meta_box('powerpress-podcast', __('Podcast Episode', 'powerpress'), 'powerpress_meta_box', $post_type, 'normal');
@@ -1741,7 +1746,7 @@ function powerpress_admin_menu()
1741
  $post_types = powerpress_admin_get_post_types( POWERPRESS_CUSTOM_CAPABILITY_TYPE );
1742
  if( !empty($post_types) )
1743
  {
1744
- while( list($feed_slug, $feed_title) = each($Powerpress['custom_feeds']) )
1745
  {
1746
  if( $feed_slug == 'podcast' )
1747
  continue;
@@ -1749,7 +1754,7 @@ function powerpress_admin_menu()
1749
  $FeedCustom = get_option('powerpress_feed_'.$feed_slug);
1750
 
1751
  reset($post_types);
1752
- while( list($null,$post_type) = each($post_types) )
1753
  {
1754
  if( !empty($FeedCustom['custom_post_type']) && $FeedCustom['custom_post_type'] != $post_type )
1755
  continue;
@@ -1794,7 +1799,7 @@ function powerpress_admin_menu()
1794
 
1795
  add_submenu_page($parent_slug, __('Import podcast feed from SoundCloud, LibSyn, PodBean or other podcast service.', 'powerpress'), __('Import Podcast', 'powerpress'), POWERPRESS_CAPABILITY_EDIT_PAGES, 'powerpress/powerpressadmin_import_feed.php', 'powerpress_admin_page_import_feed');
1796
  add_submenu_page($parent_slug, __('Migrate media files to Blubrry Podcast Media Hosting with only a few clicks.', 'powerpress'), __('Migrate Media', 'powerpress'), POWERPRESS_CAPABILITY_EDIT_PAGES, 'powerpress/powerpressadmin_migrate.php', 'powerpress_admin_page_migrate');
1797
- add_submenu_page($parent_slug, __('PowerPress Podcasting SEO', 'powerpress'), '<span style="color:#f18500">'. __('Podcasting SEO', 'powerpress') .'</span> '.powerpressadmin_new('font-weight: bold; color: #ffffff;') .'', POWERPRESS_CAPABILITY_EDIT_PAGES, 'powerpress/powerpressadmin_search.php', 'powerpress_admin_page_search');
1798
 
1799
  add_submenu_page($parent_slug, __('PowerPress Audio Player Options', 'powerpress'), __('Audio Player', 'powerpress'), POWERPRESS_CAPABILITY_EDIT_PAGES, 'powerpress/powerpressadmin_player.php', 'powerpress_admin_page_players');
1800
  add_submenu_page($parent_slug, __('PowerPress Video Player Options', 'powerpress'), __('Video Player', 'powerpress'), POWERPRESS_CAPABILITY_EDIT_PAGES, 'powerpress/powerpressadmin_videoplayer.php', 'powerpress_admin_page_videoplayers');
@@ -1838,7 +1843,7 @@ function powerpress_edit_post($post_ID, $post)
1838
 
1839
  if( $Episodes )
1840
  {
1841
- while( list($feed_slug,$Powerpress) = each($Episodes) )
1842
  {
1843
  $field = 'enclosure';
1844
  if( $feed_slug != 'podcast' )
@@ -2101,7 +2106,7 @@ function powerpress_edit_post($post_ID, $post)
2101
  $FeatureEpisodes = array();
2102
 
2103
  $PowerpressFeature = $_POST['PowerpressFeature'];
2104
- while( list($feed_slug,$set_featured) = each($PowerpressFeature) )
2105
  {
2106
  if( !empty($set_featured) )
2107
  $FeatureEpisodes[ $feed_slug ] = $post_ID;
@@ -2483,7 +2488,7 @@ function powerpress_check_url(url)
2483
  {
2484
  if( validChars.indexOf( url.charAt(x) ) == -1 )
2485
  {
2486
- jQuery( '#'+DestDiv ).text('<?php echo __('Media URL contains characters that may cause problems for some clients. For maximum compatibility, only use letters, numbers, dash - and underscore _ characters only.', 'powerpress'); ?>');
2487
  jQuery( '#'+DestDiv ).css('display', 'block');
2488
  return false;
2489
  }
@@ -2911,7 +2916,7 @@ function powerpress_create_subscribe_page()
2911
  $languages[] = 'en_US'; // fallback to the en_US version
2912
 
2913
  $template_content = false;
2914
- while( list($index,$lang) = each($languages) )
2915
  {
2916
  $template_content = powerpress_remote_fopen( $template_url . $lang . '.txt' );
2917
  if( empty($template_content) ) { // Lets force cURL and see if that helps...
@@ -3438,7 +3443,7 @@ function powerpress_remote_fopen($url, $basic_auth = false, $post_args = array()
3438
  if( count($post_args) > 0 )
3439
  {
3440
  $post_query = '';
3441
- while( list($name,$value) = each($post_args) )
3442
  {
3443
  if( $post_query != '' )
3444
  $post_query .= '&';
@@ -3553,14 +3558,14 @@ function powerpress_process_hosting($post_ID, $post_title)
3553
  if( !empty($Settings['posttype_podcasting']) )
3554
  {
3555
  $FeedSlugPostTypesArray = get_option('powerpress_posttype-podcasting');
3556
- while( list($feed_slug, $null) = each($FeedSlugPostTypesArray) )
3557
  {
3558
  if( empty($CustomFeeds[$feed_slug]) )
3559
  $CustomFeeds[$feed_slug] = $feed_slug;
3560
  }
3561
  }
3562
 
3563
- while( list($feed_slug,$null) = each($CustomFeeds) )
3564
  {
3565
  $field = 'enclosure';
3566
  if( $feed_slug != 'podcast' )
@@ -3644,7 +3649,7 @@ function powerpress_process_hosting($post_ID, $post_title)
3644
  set_time_limit(60*20); // give it 20 minutes just in case
3645
  $json_data = false;
3646
  $api_url_array = powerpress_get_api_array();
3647
- while( list($index,$api_url) = each($api_url_array) )
3648
  {
3649
  $req_url = sprintf('%s/media/%s/%s?format=json&publish=true', rtrim($api_url, '/'), urlencode($Settings['blubrry_program_keyword']), urlencode($EnclosureURL) );
3650
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
@@ -3953,7 +3958,9 @@ function powerpress_admin_episodes_per_feed($feed_slug, $post_type='post')
3953
  if ( $results = $wpdb->get_results("SELECT COUNT(post_id) AS episodes_total FROM $wpdb->postmeta WHERE meta_key = '$field'", ARRAY_A) ) {
3954
  if( count($results) )
3955
  {
3956
- list($key,$row) = each($results);
 
 
3957
  if( $row['episodes_total'] )
3958
  return $row['episodes_total'];
3959
  }
@@ -4032,7 +4039,7 @@ function powerpress_write_tags($file, $post_title)
4032
 
4033
  $PostArgs = array();
4034
  $Fields = array('title','artist','album','genre','year','track','composer','copyright','url');
4035
- while( list($null,$field) = each($Fields) )
4036
  {
4037
  if( !empty($Settings[ 'tag_'.$field ]) )
4038
  {
@@ -4083,7 +4090,7 @@ function powerpress_write_tags($file, $post_title)
4083
 
4084
  // Get meta info via API
4085
  $api_url_array = powerpress_get_api_array();
4086
- while( list($index,$api_url) = each($api_url_array) )
4087
  {
4088
  $req_url = sprintf('%s/media/%s/%s?format=json&id3=true', rtrim($api_url, '/'), urlencode($Settings['blubrry_program_keyword']), urlencode($file) );
4089
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
@@ -4110,7 +4117,7 @@ function powerpress_get_media_info($file)
4110
  $Settings = get_option('powerpress_general');
4111
  $content = false;
4112
  $api_url_array = powerpress_get_api_array();
4113
- while( list($index,$api_url) = each($api_url_array) )
4114
  {
4115
  $req_url = sprintf('%s/media/%s/%s?format=json&info=true', rtrim($api_url, '/'), urlencode($Settings['blubrry_program_keyword']), urlencode($file) );
4116
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
@@ -4248,7 +4255,7 @@ function powerpress_get_media_info_local($media_file, $content_type='', $file_si
4248
  if( empty($GeneralSettings['hide_warnings']) && count( $Mp3Info->GetWarnings() ) > 0 )
4249
  {
4250
  $Warnings = $Mp3Info->GetWarnings();
4251
- while( list($null, $warning) = each($Warnings) )
4252
  {
4253
  $warning = sprintf( __('Warning, Media URL %s', 'powerpress'), $media_file) .': '. $warning .' [<a href="http://create.blubrry.com/resources/powerpress/using-powerpress/warning-messages-explained/" target="_blank">'. __('PowerPress Warnings Explained', 'powerpress') .'</a>]';
4254
  if( $return_warnings )
@@ -4301,7 +4308,7 @@ function powerpress_get_media_info_local($media_file, $content_type='', $file_si
4301
  if( count( $Mp3Info->GetWarnings() ) > 0 )
4302
  {
4303
  $Warnings = $Mp3Info->GetWarnings();
4304
- while( list($null, $warning) = each($Warnings) )
4305
  powerpress_add_error( sprintf( __('Warning, Media URL %s', 'powerpress'), $media_file) .': '. $warning .' [<a href="http://create.blubrry.com/resources/powerpress/using-powerpress/warning-messages-explained/" target="_blank">'. __('PowerPress Warnings Explained', 'powerpress') .'</a>]' );
4306
  }
4307
  }
@@ -4385,7 +4392,7 @@ function powerpress_print_options($options,$selected=null, $return=false)
4385
  if( $return )
4386
  {
4387
  $html = '';
4388
- while( list($key,$value) = each($options) )
4389
  {
4390
  $html .= '<option value="'. esc_attr($key) .'"'. ( ($selected !== null && strcmp($selected, $key) == 0 )?' selected':'') .'>';
4391
  $html .= htmlspecialchars($value);
@@ -4394,7 +4401,7 @@ function powerpress_print_options($options,$selected=null, $return=false)
4394
 
4395
  return $html;
4396
  }
4397
- while( list($key,$value) = each($options) )
4398
  {
4399
  echo '<option value="'. esc_attr($key) .'"'. ( ($selected !== null && strcmp($selected, $key) == 0 )?' selected':'') .'>';
4400
  echo htmlspecialchars($value);
@@ -4466,7 +4473,7 @@ function powerpressadmin_community_news($items=3)
4466
  else
4467
  {
4468
  $first_item = true;
4469
- while( list($null,$item) = each($rss_items) )
4470
  {
4471
  $enclosure = $item->get_enclosure();
4472
  echo '<li>';
@@ -4563,8 +4570,7 @@ function powerpressadmin_community_highlighted($items=8)
4563
  }
4564
  else
4565
  {
4566
-
4567
- while( list($null,$item) = each($rss_items) )
4568
  {
4569
  echo '<li>';
4570
  echo '<a class="rsswidget" href="'.esc_url( $item->get_permalink(), $protocolls=null, 'display' ).'" target="_blank">'. esc_html( $item->get_title() ) .'</a>';
7
  {
8
  if( is_array($escape) )
9
  {
10
+ foreach( $escape as $index => $value ) {
11
  $escape[ $index ] = powerpress_esc_html($value);
12
+ }
13
  }
14
  return esc_html($escape);
15
  }
72
  add_thickbox(); // we use the thckbox for some settings
73
  wp_enqueue_script('jquery');
74
  wp_enqueue_script('jquery-ui-core'); // Now including the library at Google
 
75
 
76
  // Powerpress page
77
  if( isset($_GET['page']) && strstr($_GET['page'], 'powerpress' ) !== false )
78
  {
79
+ wp_enqueue_script('jquery-ui-tabs');
80
+
81
  //wp_enqueue_script('jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js');
82
  if( preg_match('/powerpressadmin_(mobile|audio|video)player/', $_GET['page']) )
83
  {
676
  update_option('powerpress_track_number', $_POST['PowerPressTrackNumber']);
677
  }
678
  // Set all the tag values...
679
+ foreach( $GeneralPosted as $key => $value )
680
  {
681
  if( substr($key, 0, 4) == 'tag_' )
682
  {
702
  {
703
  $json_data = false;
704
  $api_url_array = powerpress_get_api_array();
705
+ foreach( $api_url_array as $index => $api_url )
706
  {
707
  $req_url = sprintf('%s/media/%s/coverart.json?url=%s', rtrim($api_url, '/'), $GeneralSettingsTemp['blubrry_program_keyword'], urlencode($TagValues['tag_coverart']) );
708
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
805
  if( isset($GeneralSettingsTemp['episode_box_background_color']) )
806
  $SaveEpisdoeBoxBGColor['episode_box_background_color'] = $GeneralSettingsTemp['episode_box_background_color']; // copy previous settings
807
 
808
+ foreach( $_POST['EpisodeBoxBGColor'] as $feed_slug_temp => $background_color ) {
809
+ break;
810
+ }
811
  $SaveEpisdoeBoxBGColor['episode_box_background_color'][ $feed_slug_temp ] = $background_color;
812
  powerpress_save_settings($SaveEpisdoeBoxBGColor);
813
  }
1234
  check_admin_referer('powerpress-add-caps');
1235
 
1236
  $users = array('administrator','editor', 'author'); // , 'contributor', 'subscriber');
1237
+ foreach( $users as $null => $user )
1238
  {
1239
  $role = get_role($user);
1240
  if( !empty($role) )
1255
  check_admin_referer('powerpress-remove-caps');
1256
 
1257
  $users = array('administrator','editor', 'author', 'contributor', 'subscriber');
1258
+ foreach( $users as $null => $user )
1259
  {
1260
  $role = get_role($user);
1261
  if( !empty($role) )
1284
  }
1285
 
1286
  $users = array('administrator','editor', 'author'); // , 'contributor', 'subscriber');
1287
+ foreach( $users as $null => $user )
1288
  {
1289
  $role = get_role($user);
1290
  if( !empty($role) )
1303
  check_admin_referer('powerpress-remove-feed-caps');
1304
 
1305
  $users = array('administrator','editor', 'author', 'contributor', 'subscriber', 'premium_subscriber', 'powerpress');
1306
+ foreach( $users as $null => $user )
1307
  {
1308
  $role = get_role($user);
1309
  if( !empty($role) )
1391
  // Clear the SG cachepress plugin:
1392
  if (function_exists('sg_cachepress_purge_cache')) { sg_cachepress_purge_cache(); }
1393
 
1394
+ foreach( $errors as $null => $error )
1395
  {
1396
  ?>
1397
  <div class="updated"><p style="line-height: 125%;"><strong><?php echo $error; ?></strong></p></div>
1416
  $Settings = get_option($field);
1417
  if( !is_array($Settings) )
1418
  $Settings = array();
1419
+ foreach( $SettingsNew as $key => $value ) {
1420
  $Settings[$key] = $value;
1421
+ }
1422
  if( $field == 'powerpress_general' && !isset($Settings['timestamp']) )
1423
  $Settings['timestamp'] = time();
1424
 
1549
  return $data;
1550
  if( is_array($data) )
1551
  {
1552
+ foreach( $data as $key => $value )
1553
  {
1554
  if( $key == 'itunes_summary' )
1555
  continue; // Skip this one as we escape it in the form.
1571
  if( !is_array($data) )
1572
  return stripslashes($data);
1573
 
1574
+ foreach( $data as $key => $value )
1575
  {
1576
  if( is_array($value) )
1577
  $data[$key] = powerpress_stripslashes($value);
1589
 
1590
  $return = array();
1591
  $post_types = get_post_types();
1592
+ foreach( $post_types as $index => $post_type )
1593
  {
1594
  if( $post_type == 'redirect_rule' || $post_type == 'attachment' || $post_type == 'nav_menu_item' || $post_type == 'revision' || $post_type == 'action' )
1595
  continue;
1614
  // array( feed-slugs => array('posttype1'=>'post type 1 title', 'posttype2'=>post type 2 title', ...) );
1615
  $post_types = get_post_types();
1616
  $FeedSlugPostTypeArray = array();
1617
+ foreach( $post_types as $index => $post_type )
1618
  {
1619
  $PostTypeSettingsArray = get_option('powerpress_posttype_'. $post_type );
1620
  if( !$PostTypeSettingsArray )
1621
  continue;
1622
 
1623
+ foreach( $PostTypeSettingsArray as $feed_slug => $PostTypeSettings )
1624
  {
1625
  $FeedSlugPostTypeArray[ $feed_slug ][ $post_type ] = ( empty($PostTypeSettings['title'])? $feed_slug : $PostTypeSettings['title'] );
1626
  }
1654
  if( empty($Powerpress['posttype_podcasting']) )
1655
  $page_types = powerpress_admin_get_post_types('page'); // Get pages by capability type
1656
 
1657
+ foreach( $page_types as $null => $page_type )
1658
  {
1659
  if( empty($FeedSlugPostTypesArray[ 'podcast' ][ $page_type ]) )
1660
  add_meta_box('powerpress-podcast', __('Podcast Episode', 'powerpress'), 'powerpress_meta_box', $page_type, 'normal');
1678
  if( empty($FeedSlugPostTypesArray) )
1679
  $FeedSlugPostTypesArray = array();
1680
 
1681
+ foreach( $FeedSlugPostTypesArray as $feed_slug => $FeedSlugPostTypes )
1682
  {
1683
+ foreach( $FeedSlugPostTypes as $post_type => $type_title )
1684
  {
1685
  if ( $feed_slug != 'podcast' || $post_type != 'post' ) // No the default podcast feed
1686
  {
1698
  {
1699
  $FeedDefaultPodcast = get_option('powerpress_feed_podcast');
1700
 
1701
+ foreach( $post_types as $null => $post_type )
1702
  {
1703
  // Make sure this post type can edit the default podcast channel...
1704
  if( !empty($FeedDefaultPodcast['custom_post_type']) && $FeedDefaultPodcast['custom_post_type'] != $post_type )
1708
  add_meta_box('powerpress-podcast', __('Podcast Episode (default)', 'powerpress'), 'powerpress_meta_box', $post_type, 'normal');
1709
  }
1710
 
1711
+ foreach( $Powerpress['custom_feeds'] as $feed_slug => $feed_title )
1712
  {
1713
  if( $feed_slug == 'podcast' )
1714
  continue;
1718
 
1719
 
1720
  reset($post_types);
1721
+ foreach( $post_types as $null => $post_type )
1722
  {
1723
  // Make sure this post type can edit the default podcast channel...
1724
  if( !empty($FeedCustom['custom_post_type']) && $FeedCustom['custom_post_type'] != $post_type )
1733
  else // This handles all podcast post types and default 'post'. if post type podcasting enabled.
1734
  {
1735
  reset($post_types);
1736
+ foreach( $post_types as $null => $post_type )
1737
  {
1738
  if( empty($FeedSlugPostTypesArray[ 'podcast' ][ $post_type ]) )
1739
  add_meta_box('powerpress-podcast', __('Podcast Episode', 'powerpress'), 'powerpress_meta_box', $post_type, 'normal');
1746
  $post_types = powerpress_admin_get_post_types( POWERPRESS_CUSTOM_CAPABILITY_TYPE );
1747
  if( !empty($post_types) )
1748
  {
1749
+ foreach( $Powerpress['custom_feeds'] as $feed_slug => $feed_title )
1750
  {
1751
  if( $feed_slug == 'podcast' )
1752
  continue;
1754
  $FeedCustom = get_option('powerpress_feed_'.$feed_slug);
1755
 
1756
  reset($post_types);
1757
+ foreach( $post_types as $null => $post_type )
1758
  {
1759
  if( !empty($FeedCustom['custom_post_type']) && $FeedCustom['custom_post_type'] != $post_type )
1760
  continue;
1799
 
1800
  add_submenu_page($parent_slug, __('Import podcast feed from SoundCloud, LibSyn, PodBean or other podcast service.', 'powerpress'), __('Import Podcast', 'powerpress'), POWERPRESS_CAPABILITY_EDIT_PAGES, 'powerpress/powerpressadmin_import_feed.php', 'powerpress_admin_page_import_feed');
1801
  add_submenu_page($parent_slug, __('Migrate media files to Blubrry Podcast Media Hosting with only a few clicks.', 'powerpress'), __('Migrate Media', 'powerpress'), POWERPRESS_CAPABILITY_EDIT_PAGES, 'powerpress/powerpressadmin_migrate.php', 'powerpress_admin_page_migrate');
1802
+ add_submenu_page($parent_slug, __('PowerPress Podcasting SEO', 'powerpress'), '<span style="color:#f18500">'. __('Podcasting SEO', 'powerpress') .'</span> ', POWERPRESS_CAPABILITY_EDIT_PAGES, 'powerpress/powerpressadmin_search.php', 'powerpress_admin_page_search');
1803
 
1804
  add_submenu_page($parent_slug, __('PowerPress Audio Player Options', 'powerpress'), __('Audio Player', 'powerpress'), POWERPRESS_CAPABILITY_EDIT_PAGES, 'powerpress/powerpressadmin_player.php', 'powerpress_admin_page_players');
1805
  add_submenu_page($parent_slug, __('PowerPress Video Player Options', 'powerpress'), __('Video Player', 'powerpress'), POWERPRESS_CAPABILITY_EDIT_PAGES, 'powerpress/powerpressadmin_videoplayer.php', 'powerpress_admin_page_videoplayers');
1843
 
1844
  if( $Episodes )
1845
  {
1846
+ foreach( $Episodes as $feed_slug => $Powerpress )
1847
  {
1848
  $field = 'enclosure';
1849
  if( $feed_slug != 'podcast' )
2106
  $FeatureEpisodes = array();
2107
 
2108
  $PowerpressFeature = $_POST['PowerpressFeature'];
2109
+ foreach( $PowerpressFeature as $feed_slug => $set_featured )
2110
  {
2111
  if( !empty($set_featured) )
2112
  $FeatureEpisodes[ $feed_slug ] = $post_ID;
2488
  {
2489
  if( validChars.indexOf( url.charAt(x) ) == -1 )
2490
  {
2491
+ jQuery( '#'+DestDiv ).text('<?php echo esc_js( __('Media URL contains characters that may cause problems for some clients. For maximum compatibility, only use letters, numbers, dash - and underscore _ characters only.', 'powerpress')); ?>');
2492
  jQuery( '#'+DestDiv ).css('display', 'block');
2493
  return false;
2494
  }
2916
  $languages[] = 'en_US'; // fallback to the en_US version
2917
 
2918
  $template_content = false;
2919
+ foreach( $languages as $index => $lang )
2920
  {
2921
  $template_content = powerpress_remote_fopen( $template_url . $lang . '.txt' );
2922
  if( empty($template_content) ) { // Lets force cURL and see if that helps...
3443
  if( count($post_args) > 0 )
3444
  {
3445
  $post_query = '';
3446
+ foreach( $post_args as $name => $value )
3447
  {
3448
  if( $post_query != '' )
3449
  $post_query .= '&';
3558
  if( !empty($Settings['posttype_podcasting']) )
3559
  {
3560
  $FeedSlugPostTypesArray = get_option('powerpress_posttype-podcasting');
3561
+ foreach( $FeedSlugPostTypesArray as $feed_slug => $null )
3562
  {
3563
  if( empty($CustomFeeds[$feed_slug]) )
3564
  $CustomFeeds[$feed_slug] = $feed_slug;
3565
  }
3566
  }
3567
 
3568
+ foreach( $CustomFeeds as $feed_slug => $null )
3569
  {
3570
  $field = 'enclosure';
3571
  if( $feed_slug != 'podcast' )
3649
  set_time_limit(60*20); // give it 20 minutes just in case
3650
  $json_data = false;
3651
  $api_url_array = powerpress_get_api_array();
3652
+ foreach( $api_url_array as $index => $api_url )
3653
  {
3654
  $req_url = sprintf('%s/media/%s/%s?format=json&publish=true', rtrim($api_url, '/'), urlencode($Settings['blubrry_program_keyword']), urlencode($EnclosureURL) );
3655
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
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 ) {
3962
+ break;
3963
+ }
3964
  if( $row['episodes_total'] )
3965
  return $row['episodes_total'];
3966
  }
4039
 
4040
  $PostArgs = array();
4041
  $Fields = array('title','artist','album','genre','year','track','composer','copyright','url');
4042
+ foreach( $Fields as $null => $field )
4043
  {
4044
  if( !empty($Settings[ 'tag_'.$field ]) )
4045
  {
4090
 
4091
  // Get meta info via API
4092
  $api_url_array = powerpress_get_api_array();
4093
+ foreach( $api_url_array as $index => $api_url )
4094
  {
4095
  $req_url = sprintf('%s/media/%s/%s?format=json&id3=true', rtrim($api_url, '/'), urlencode($Settings['blubrry_program_keyword']), urlencode($file) );
4096
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
4117
  $Settings = get_option('powerpress_general');
4118
  $content = false;
4119
  $api_url_array = powerpress_get_api_array();
4120
+ foreach( $api_url_array as $index => $api_url )
4121
  {
4122
  $req_url = sprintf('%s/media/%s/%s?format=json&info=true', rtrim($api_url, '/'), urlencode($Settings['blubrry_program_keyword']), urlencode($file) );
4123
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'&'. POWERPRESS_BLUBRRY_API_QSA:'');
4255
  if( empty($GeneralSettings['hide_warnings']) && count( $Mp3Info->GetWarnings() ) > 0 )
4256
  {
4257
  $Warnings = $Mp3Info->GetWarnings();
4258
+ foreach( $Warnings as $null => $warning )
4259
  {
4260
  $warning = sprintf( __('Warning, Media URL %s', 'powerpress'), $media_file) .': '. $warning .' [<a href="http://create.blubrry.com/resources/powerpress/using-powerpress/warning-messages-explained/" target="_blank">'. __('PowerPress Warnings Explained', 'powerpress') .'</a>]';
4261
  if( $return_warnings )
4308
  if( count( $Mp3Info->GetWarnings() ) > 0 )
4309
  {
4310
  $Warnings = $Mp3Info->GetWarnings();
4311
+ foreach( $Warnings as $null => $warning )
4312
  powerpress_add_error( sprintf( __('Warning, Media URL %s', 'powerpress'), $media_file) .': '. $warning .' [<a href="http://create.blubrry.com/resources/powerpress/using-powerpress/warning-messages-explained/" target="_blank">'. __('PowerPress Warnings Explained', 'powerpress') .'</a>]' );
4313
  }
4314
  }
4392
  if( $return )
4393
  {
4394
  $html = '';
4395
+ foreach( $options as $key=> $value )
4396
  {
4397
  $html .= '<option value="'. esc_attr($key) .'"'. ( ($selected !== null && strcmp($selected, $key) == 0 )?' selected':'') .'>';
4398
  $html .= htmlspecialchars($value);
4401
 
4402
  return $html;
4403
  }
4404
+ foreach( $options as $key=> $value )
4405
  {
4406
  echo '<option value="'. esc_attr($key) .'"'. ( ($selected !== null && strcmp($selected, $key) == 0 )?' selected':'') .'>';
4407
  echo htmlspecialchars($value);
4473
  else
4474
  {
4475
  $first_item = true;
4476
+ foreach( $rss_items as $null=> $item)
4477
  {
4478
  $enclosure = $item->get_enclosure();
4479
  echo '<li>';
4570
  }
4571
  else
4572
  {
4573
+ foreach( $rss_items as $null=> $item)
 
4574
  {
4575
  echo '<li>';
4576
  echo '<a class="rsswidget" href="'.esc_url( $item->get_permalink(), $protocolls=null, 'display' ).'" target="_blank">'. esc_html( $item->get_title() ) .'</a>';
readme.txt CHANGED
@@ -1,14 +1,14 @@
1
  === PowerPress Podcasting plugin by Blubrry ===
2
  Contributors: amandato, blubrry
3
- Tags: podcasting, podcast, podcaster, powerpress, itunes, google play music, google play, enclosure, professional, apple, apple tv, ipad, iphone, soundcloud, squarespace, youtube, viddler, ustream, podcasting, audio, video, rss2, feed, player, media, rss, mp3, music, embed, feedburner, statistics, stats, flv, flash, id3, episodes, blubrry, mp4, m4v, wordpressmu, mu, wordpress mu, multisite, multi site, mediacaster, post, plugin, posts, simple, social, dashboard, TSG, Buzzsprout, MTR, WP-boxCast, CastMyBlog, tgs podcasting, simple podcasting, seriously simple podcasting, seriously-simple-podcasting, serious, seriously, ssp, podlove, podcast.de, clammr, clammr radio, audio player, stitcher, 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: 4.9.1
7
- Stable tag: 7.2
8
- Donate link: https://www.patreon.com/blubrry?ty=h
9
  License: GPLv2 or later
10
 
11
- No. 1 Podcasting plugin for WordPress, with simple & advanced modes, players, subscribe tools, and more! Supports iTunes, Google Play, Stitcher...
12
 
13
  == Description ==
14
 
@@ -16,22 +16,22 @@ No. 1 Podcasting plugin for WordPress, with simple & advanced modes, players, su
16
 
17
  [youtube https://www.youtube.com/watch?v=twqKrVehY3o]
18
 
19
- Developed by podcasters for podcasters; features include Simple and Advanced modes, multiple audio/video player options, subscribe to podcast page embeds and sidebar widgets, podcasting SEO features, and more! Fully supports iTunes, Google Play, Stitcher, TuneIn and Blubrry Podcasting directories, as well as all podcast applications and clients.
20
 
21
  = Simple Mode =
22
  If you are just getting started or feel overwelmed with all the settings and options, switch to Simple mode! PowerPress's Simple Mode will walk you through getting started in 3 easy steps.
23
 
24
  1. Setup your Podcast quickly with only the essential settings
25
  1. Create your first Episode
26
- 1. Submit your podcast to iTunes
27
 
28
  When you're ready you can switch to Advanced mode to tap into all the options professionals would want.
29
 
30
  = PowerPress Key Features =
31
- - Full iTunes & Google Play support: Adds iTunes compliant podcast feeds to your WordPress site.
32
  - Integrated HTML5 Media Players: Audio/video Web players with embed support from sites such as YouTube.
33
  - Subscribe tools: Create subscribe page with our exclusive subscribe shortcode embed and subscribe sidebar widget optimized for responsive websites, high-resolution screens and Apple Retina displays.
34
- - Podcasting SEO: Improve discovery of your podcast on search engines such as Google, and with the iTunes podcast directory.
35
  - Podcast Importing: Import your podcast from SoundCloud, LibSyn, PodBean, Squarespace, or other podcast RSS feed.
36
  - Migration tools: Quickly migrate from PodPress, TGS Podcasting, Seriously Simple Podcasting, Blogger, or Movable Type without losing episodes.
37
  - Multi-podcast support: Create separate podcasts by category (Category Podcasting) or by media format (Podcast Channels).
@@ -39,17 +39,17 @@ When you're ready you can switch to Advanced mode to tap into all the options pr
39
  - *Media Statistics: Get FREE Blubrry Media Statistics from your WordPress dashboard.
40
  - Multi-languages and locales: See [PowerPress in your language](http://create.blubrry.com/resources/powerpress/powerpress-language/) for details.
41
 
42
- = Includes Full iTunes Support! =
43
- Blubrry PowerPress fully supports iTunes, which is required for podcasting. PowerPress comes with the following iTunes specific features:
44
 
45
- * iTunes compliant podcast feeds: The appropriate tags are added to your feeds so your iTunes listing looks great.
46
- * Optimized iTunes summary: Converts your blog-post content to a format suited for viewing in iTunes ([learn more](http://create.blubrry.com/resources/powerpress/powerpress-settings/itunes/)).
47
- * Tunes artwork: Upload and manage your iTunes artwork directly from within PowerPress settings.
48
- * iTunes podcasting: Fully supported, including the latest [Apple iTunes podcasting specifications](http://www.powerpresspodcast.com/2012/05/10/itunes-podcasting-specifications-changed-may-2012-what-that-means-for-podcasting/).
49
- * Feed Episode Maximizer: Increase the number of episodes viewed on iTunes while decreasing the byte size of your feeds.
50
 
51
- = Includes Full Google Play Music Support! =
52
- Blubrry PowerPress 6.1+ fully supports Google Play Music podcast directory.
53
 
54
  = Integrated Media Players =
55
  Blubrry PowerPress includes extensive Web player options to display your podcast audio and video in your Web pages.
@@ -68,9 +68,9 @@ Blubrry PowerPress includes extensive Web player options to display your podcast
68
  A Blubrry PowerPress exclusive, podcast subscribe tools help you convert Web visitors into podcast subscribers. Subscribe options include:
69
 
70
  * [Subscribe page](http://create.blubrry.com/resources/powerpress/advanced-tools-and-options/subscribe-page/): Instantly create a subscribe page with simplified instructions on how to subscribe to your podcast using the PowerPress subscribe page shortcode.
71
- * [Subscribe page shortcode](http://create.blubrry.com/resources/powerpress/advanced-tools-and-options/powerpress-subscribe-shortcode/): Add the `[powerpress_subscribe]` shortcode to include a mobile-device optimized subscribe embed in any post or page that includes buttons to subscribe on iTunes, [Subscribe on Android](http://www.subscribeonandroid.com), [Subscribe by Email](http://www.subscribebyemail.com), Stitcher, tuneIn, via RSS, and an special textbox to easily copy and paste your podcast feed into any podcast application.
72
- * Subscribe sidebar widget: Mobile device optimized sidebar buttons to subscribe on iTunes, [Subscribe on Android](http://www.subscribeonandroid.com), Stitcher, tuneIn, subscribe by RSS, and a "more subscribe options" button linked to your podcast's subscribe page.
73
- * Subscribe links: Subscribe on iTunes, [Subscribe on Android](http://www.subscribeonandroid.com), subscribe by RSS and a link to your custom subscribe page below every player.
74
  * Retina enabled: Subscribe button images optimized for high resolution displays including Apple Retina displays.
75
  * Responsive: Subscribe tools are designed for any screen and optimized for touch screens by providing custom buttons that are indrustry standard 48 pixels in height optimized for touch screen use.
76
 
@@ -90,7 +90,7 @@ The Blubrry basic statistics service is FREE. Our [Premium Statistics Service](h
90
  = Advanced Features for those who need more =
91
  Want more? We've got more! With a simple click you can enable advanced features and options. Check out some of the advanced features:
92
 
93
- * [Podcasting SEO settings](http://create.blubrry.com/resources/powerpress/advanced-tools-and-options/podcasting-seo-settings/): Utilize the iTunes features that improve the discovery of your podcasts and include the necessary meta data in your blog pages for search engines to discover.
94
  * Embeds: Provide embeds your audience can take with them (just like YouTube embeds)
95
  * Media size and duration detection: Enter your media URL and let the PowerPress do the rest.
96
  * Category Casting: Add podcast support to your WordPress category feeds.
@@ -103,7 +103,7 @@ Want more? We've got more! With a simple click you can enable advanced features
103
  * WordPress MultiSite: Blubrry PowerPress is compatible with WordPress MultiSite and can be extended using the [Blubrry PowerPress MultiSite add-on plugin](https://wordpress.org/plugins/powerpress-multisite/).
104
  * *Supported syndication formats: mp3, m4a, mp4, m4v, webm, ogg, oga, ogv, wma, ra, mp4a, m4v, mp4v, mpg, asf, avi, wmv, flv, swf, mov, divx, 3gp, midi, wav, aa, pdf, torrent, m4b, m4r, epub.
105
 
106
- *Apple iTunes only supports mp3, m4a, mp4, m4v, pdf and epub.
107
 
108
  = Migrating from PodPress or other podcasting plugin? =
109
  Switching to from PodPress to PowerPress is seamless. Simply enable PowerPress then disable PodPress and you're done! PowerPress will continue where plugin your old plugin left off by including your previously created episodes in your feeds and Web pages.
@@ -166,11 +166,10 @@ If you are having a problem specifically with the player and links, try the "Hav
166
  * [Eli's PowerPress Addon Widget](http://wordpress.org/extend/plugins/podpress-addons/) - Adds a sidebar widget that lists your podcast episodes linked to the play in a new window PowerPress player.
167
  * [PowerPress Posts From MySQL](http://wordpress.org/extend/plugins/powerpress-posts-from-mysql/developers/) - Creates blog posts with PowerPress podcast episode information from a MySQL table.
168
  * [Featured Podcast Widget](http://wordpress.org/plugins/featured-podcast-widget/), [Home Page](http://www.richardfarrar.com/featured-podcast-widget-for-wordpress/) - A widget that enables you to display your latest podcast from a category or featured podcast utilising the PowerPress plugin's default player.
169
- * [Subscribe Sidebar plugin by Blubrry](http://wordpress.org/extend/plugins/subscribe-sidebar/) - A sidebar widget that provides a list of "Subscribe" links to your sidebar.
170
-
171
 
172
  = Why doesn't Blubrry PowerPress support multiple enclosures in one feed item/post? =
173
- Blubrry PowerPress does not allow you to include multiple media files for one feed item (blog post). This is because each podcatcher handles multiple enclosures in feeds differently. iTunes will download the first enclosure that it sees in the feed ignoring the rest. Other podcatchers and podcasting directories either pick up the first enclosure or the last in each post item. This inconsistency combined with the fact that [Dave Winer does not recommend multiple enclosures](http://www.reallysimplesyndication.com/2004/12/21) and the [FeedValidator.org recommendation against it](http://www.feedvalidator.org/docs/warning/DuplicateEnclosure.html) is why the Blubrry PowerPress does not support them.
174
 
175
  As a alternative, PowerPress allows you to create additional Custom Podcast Feeds to associate any magnitude of media format and/or length in a blog post to specific custom feeds. For example, you can create one blog post associated to separate video and audio podcast feeds saving you time from entering your show notes twice.
176
 
@@ -228,12 +227,23 @@ To install Blubrry PowerPress manually, follow these steps:
228
  == Changelog ==
229
 
230
  = Next Major Release Announcements =
231
- * Facebook Instant Articles for podcasting coming in next release!
232
  * 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#feedback) with your name and email.
233
 
234
  = Fan of PowerPress and want to show your support? =
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
  = 7.2 =
238
  * Released on 12/13/2017
239
  * Added code to allow customization of Blubrry player style and colors.
@@ -373,225 +383,6 @@ If you are a fan of PowerPress, we would greatly appreciate it if you could take
373
  * Embed link now toggles embed box when clicked multiple times.
374
  * ATTENTION: The 1 pixel out audio player will be removed from PowerPress 7.1.
375
 
376
-
377
- = 6.3.3 =
378
- * Released on 4/2/2016
379
- * Improved feed import for PodBean users (they appear to be blocking user agents like SquareSpace)
380
- * Adding `<br />` to new lines for iTunes summary so new lines appear on iTunes desktop app (Thanks Daniel for input!)
381
- * Added additional code to handle ajax verify media URL errors.
382
- * Added Feed setting option `Do not allow other plugins to modify podcast feeds.`.
383
- * Added Feed setting option `Include RSS Image in feeds.`, default is enabled. For themes that set their own site icon in the feeds.
384
- * Added logic to handle post type podcast only feeds. (Thanks Alan for helping us debug!)
385
- * Added logic to prevent featured episode from appearing on custom post type feeds.
386
- * Fixed bug with post type podcasting channel level feed settings not applying correctly when using slug `podcast`. (Thanks Joe for pointing out the issue)
387
- * Fixed bug with enhanced itunes summary not displaying in some circumstances. (Thanks Filip for bringing to our attention!)
388
- * Podcast Subscribe sidebar widget category podcasting option now accepts category slug values (in addition to the category numeric ID)
389
- * Added define option `POWERPRESS_FEED_AUTH_PRINT_WP_ERRORS` to print `wp_authentication` error message when password protected feed authentication fails. This is useful for debugging purposes.
390
- * Fixed typos in RSS import page. (Thanks Robin!)
391
-
392
-
393
- = 6.3.2 =
394
- * Released on 2/21/2016
395
- * Added import podcast from Squarespace option (thanks Steve for bringing to our attention that importing from Squarespace requires added logic)
396
- * The itunes:summary tag values can now use CDATA encapsulation. Note updated that `<itunes:summary>` may not contain HTML, except for hyperlinks. (Thanks Apple iTunes team!)
397
- * Added checkbox to enable wrapping iTunes summary values with `<![CDATA[ ... ]]>` tags. This may become a permanent feature.
398
- * Added new define option `POWERPRESS_FEED_TEMPLATE`. (Thanks Ron for the suggestion!)
399
- * Added new define option `POWERPRESS_PREMIUM_GROUPS_PLUGIN`, for premium podcasting with Groups plugin commonly paired with WooCommerce.
400
- * Removed iTunes explicit 'no' value from `<itunes:explicit>` tag. (iTunes change - February, 2016)
401
- * Updated iTunes recommended image size to 3000 x 3000 saved in a compressed format such as JPG. (iTunes change - February, 2016)
402
- * Fixed notice message from appearing when using the playlist player (Thanks chefjoef for bringing to our attention).
403
- * Added width and height attributes to img tag for the HTML5 audio player image. (Thanks Eduard for the patch and information about the Accelerated Mobile Pages Project!)
404
- * Fixed tab control styling when other themes or plugins use newer versions of jquery-ui.
405
- * Added dismissable notification message to alert PowerPress users of the latest iTunes changes.
406
- * Enhanced iTunes summary option now formats new lines with <br /> tag for use on iOS podcasts app.
407
-
408
-
409
- = 6.3.1 =
410
- * Released on 1/6/2016
411
- * Fixed messages that could occur the first time you select a video player when PHP notices enabled on server. (Thanks Paul Bearne for bringing to our attention!)
412
- * Fixed date issue when importing feeds. (Thanks tiptopolive for bringing to our attention!)
413
- * Set item limit advanced option added for podcast importing.
414
-
415
-
416
- = 6.3 =
417
- * Released on 12/14/2015
418
- * Import Podcast by feed added. You can now migrate your podcast from any service such as SoundCloud, LibSyn or PodBean into your own WordPress site powered by PowerPress!. With only a couple clicks you can import your program information, artwork and episodes.
419
- **NOTE: Import feature was planned for PowerPress 7.0. Based on requests and rumors we are releasing this feature now.
420
- * Import podcast feature includes program level information (Thanks Daniel Lewis for your feedback!)
421
- * Import podcast feature downloads iTunes artwork.
422
- * Import podcast feature advanced options: Allow duplicate episode titles and dates, Overwrite podcast program information, and include blog posts.
423
- * Import podcast feature only imports your feed and meta information. Media files may be migrated using the Media Migration tool or manually.
424
- * Fixed bug with podcast titles not displaying in some situations when using WordPress versions older than 4.4. (Thanks Daniel Lewis for pointing out the issue)
425
- * Fixed bug with image title not matching feed title (Thanks EntBuddha for the heads up!)
426
- * Happy Holidays! [Jeff Buckley cover of Everyday People](https://www.youtube.com/watch?v=6CHwqGCnh7E)
427
-
428
-
429
- = 6.2.2 =
430
- * Released on 12/9/2015
431
- * WordPress 4.4 has changed how feed titles are set. Please update PowerPress immediately to avoid feed title issues.
432
- * Feed titles in WP 4.4 no longer use the `get_bloginfo_rss` filter. All other feed fields appear to still be using the `get_bloginfo_rss` filter at this time. We will be taking additional measures in future releases of PowerPress assuming WordPress core will be abandoning the `get_bloginfo_rss` filter for all other feed fields.
433
- * YOU MUST UPDATE POWERPRESS TO 6.2.2 IF YOU ARE USING WORDPRESS 4.4
434
- * Tested latest changes does not break backwards compatibility with WordPRess 4.3 or older.
435
- * Fixed Clammr typos (Thanks Robin for the heads up!)
436
- * Increased fields with maxlength 250 to 255 for iTunes settings (Thanks Robin for pointing out limit!)
437
-
438
-
439
- = 6.2.1 =
440
- * Released on 11/22/2015
441
- * Removed logic added in last updated to call the do_shortcode function. We originally added this code to solve a theme conflict, it appears to have cause problems for others so we're reverting back.
442
- If your theme overrides the audio player shortcode (player will only appear correctly when calling `do_shortcode('[audio]')`), then you must include the following define in your wp-config.php: `POWERPRESS_DO_SHORTCODE`.
443
- * Added new `itunes_subtitle="true"` attribute for `powerpress_subscribe` shortcode, will put your itunes subtitle below your podcast title in the subscribe widget. (Thanks Robert for the feature suggestion!)
444
- * Added new `subtitle="your custom subtitle"` attribute for `powerpress_subscribe` shortcode, you can now customize a subtitle that goes below your title. (Again thanks Robert!)
445
- * Added logic to use cURL library when native HTTP library in WordPress fails. (Thanks Zuke for helping us debug the problem!)
446
- * Added new logic to check for `the_content`/`the_excerpt` used in the http head. Should fix issue for folks using Yoast's SEO plugin with Facebook social enabled.
447
- * Added code for the Clammr audio player to work in the "play in new window".
448
- * Added new "Having Issues?" option, "wp_head check", will not add player and links if within the wp_head function call.
449
- * Updated links for submitting to iTunes and Google Play Music Podcast Portal.
450
-
451
-
452
- = 6.2 =
453
- * Released on 11/16/2015
454
- * Clammr Audio Player option added to PowerPress.
455
- * Added logic to call the do_shortcode function when themes override the audio shortcode.
456
- * Fixed bug in the media redirect url function when switching between sites for a MultiSite. (Thanks Avi for the patch!)
457
- * HTML output will only append a "\n" when in debug mode. This will prevent situation where some plugins convert new lines into `<br>` tags. (Thanks Avi for bringing to our attention)
458
- * Added new define option `POWERPRESS_DO_SHORTCODE`, when set in your wp-config.php the `do_shortcode` is used rather than calling the `wp_audio_shortcode` function.
459
- * Moved the `wp_enqueue_style` for subscribe widget within the shortcode. Shortcode can now be used outside of `the_content`. (Thanks Robert for letting us know about the bug!)
460
-
461
-
462
- = 6.1 =
463
- * Released on 10/30/2015
464
- * Added Google Play Music podcast directory support.
465
- * Added Donate Link option under Feed settings tab.
466
- * Removed the enqueuing of mediaelement.js scripts and styles for the player and links in theme pages. PowerPress's player.min.js will only be included on pages with the player or player links. (Thanks wadehammes for bringing to our attention).
467
- * Updated iTunes subtitle and summary values to treat utf8mb4 data as utf8.
468
- * Added better logic for checking for UTF8 values for iTunes attributes.
469
- * Added the text domain setting in the powerpress.php file for [translate.wordpress.org](http://translate.wordpress.org) use.
470
- * Enhanced iTunes summary bug where some iTunes summaries were getting cut to 255 characters fixed.
471
- * Code updated to support PHP7.
472
-
473
-
474
- = 6.0.5 =
475
- * Released on 9/8/2015
476
- * Changed the Play in New Window logic to support WordPress MultiSite `switch_to_blog()` function calls (Thanks Avi for the patch!)
477
- * Removed the pp_flashembed JavaScript function from the player.js include (we are no longer using flash for fallback).
478
- * Minified version of player.min.js updated.
479
- * Fixed possible XSS vulnerability with the settings tab control.
480
- * Added new `POWERPRESS_CURL` define option for wp-config.php. When set, PowerPress will use it's own cURL logic rather than use the `wp_remote_get()`/`wp_remote_post()` functions.
481
-
482
-
483
- = 6.0.4 =
484
- * Released on 8/27/2015
485
- * Added new Subscribe by Email option to Subscribe Links feature. By default this new feature is not enabled. Go to "PowerPress Settings" > "Media Appearance" to enable Subscribe by Email.
486
- * Enhanced iTunes Summary feature now maintains <a> links.
487
- * Added check for null values returned from `get_role` function.
488
- * HTTPS URL warnings have been removed. The past year usage of podcast applications that do not support https is now negligible.
489
- * Added support for https:// media URLs for Blubrry and RawVoice statistics services.
490
- * Verify media URL option now verifies SSL certificates and hostnames for https URLs.
491
- * Added Podcast subscribe link support to post type podcasting.
492
- * Links to Feed Validator have been temporarily removed, service does not correctly validate secure podcast feeds. We are working on an alternative.
493
- * Moved defines for customizing links within the `plugins_loaded` action after translations are loaded.
494
- * Fixed bug with linking blubrry account displayed HTML syntax for sign-in errors.
495
- * Added logic to the Subscribe to Podcast sidebar widget to only display category, feed slug and post type settings when appropriate.
496
- * Added new define option `POWERPRESS_NO_THE_EXCERPT`, allows you to remove PowerPress's the_excerpt filter for special situations that warrant it. (Thanks Avi for the code)
497
- * Changed logic for the `powerpress_get_the_excerpt_rss` function. (Thanks Avi for the code)
498
- * Added 'mov' file extensions to the list of migrate-able media files.
499
- * Updated migrate media logic to allow for resetting of migration.
500
- * Improved error reporting for blubrry.com API calls.
501
- * Tweaked how Blubrry account linking is presented in plugin to make it easier.
502
-
503
-
504
- = 6.0.3 =
505
- * Released on 5/7/2015
506
- * Added define option `POWERPRESS_DEFAULT_MEDIA_URL` to enable the default media URL field.
507
- * Fixed notice messages being printed when populating category podcasting settings (thanks slapdashcast for bringing to our attention)
508
- * iTunes image requirements updated, 3000x3000 is now the maximum (previously 2048x2048) for iTunes artwork. 1400x1400 is still the recommended size.
509
- * 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.
510
- * PowerPress Playlist Player SQLi injection vulnerability fixed (Thanks Ben Bidner, Security Wrangler @ Automattic.com!)
511
- * Subscribe tools now use the esc_attr, esc_url and esc_html native WordPress functions (rather than htmlspecialchars).
512
-
513
-
514
- = 6.0.2 =
515
- * Released on 3/21/2015
516
- * 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.
517
- * Added wp-config define option `POWERPRESS_DISABLE_ITUNES_UTF8`, when set to true PowerPress will not convert iTunes values to UTF-8. This is for the very small number of folks who are not using UTF-8 in their website.
518
- * The subscribe shortcode embed attributes are now strictly enforced. If you enter a category or a podcast channel and it does not exist, the shortcode will be empty and will no longer fall-back to the main podcast settings.
519
- * The subscribe shortcode embed specifying a category not displaying category fixed (thanks elembemedia for bringing to our attention)
520
- * Subscribe links below player for category podcasts now works but only if you select 1 category. 2 or more categories complicates things.
521
- * Added logic to fix situation with JetPack and automatic excerpts. Manual excerpts or regular content pages are not affected. (Thanks grahamharper for the details!)
522
- * Added new "Having Issues?" option "Yes, excluding excerpts", will apply player and links fix logic except when the_excerpt filter is called first.
523
- * AudioObject and VideoObject descriptions are now set using the blog post if no itunes subtitle is set.
524
- * Fixed Episode Titles bug, if you did not set a custom episode title the program title was not appended.
525
- * Fixed "Feature Episode" bug, unchecking the option will now properly save.
526
- * Fixed playlist player date attribute not applying when set to false (thanks trb310 for pointing out the issue!)
527
- * Danish translation updated, thanks [Team Blogos](http://wordpress.blogos.dk/s%C3%B8g-efter-downloads/?did=280)!
528
- * Added new subscribe embed attribute "heading", you can now customize the "Subscribe to" label, e.g. add "the" to the Subscribe to label `[powerpress_subscribe heading="Subscribe to the"`
529
- * Added new define `POWERPRESS_DEBUG` for PowerPress debugging.
530
- * Coming in PowerPress 6.1 we will allow podcasters who use category podcasting to set one of their category podcasts as the "Default". This podcast category will replace the default podcast feed. This will solve a number of complications Category podcasting has in regards to slug name collisions as well as in-page features like the subscribe links.
531
- * Coming in PowerPress 6.1 Podcasting SEO field options will be customizable.
532
-
533
-
534
- = 6.0.1 =
535
- * Released on 1/25/2015
536
- * Duration detection option now works for sites running PHP 5.2 (If you can, please upgrade your PHP, but we understand that some situations warrant running outdated software)
537
- * Tweaked CSS for subscribe sidebar widget font color to always be white.
538
- * Changed the new 6.0 logic that prevents players from being added until after the wp_head is called, we now ignore when having theme issues option is selected to fix custom theme logic that may happen before wp_head.
539
- * Added additional "Having Theme Issues" option, alternative logic to try to fix the situation where the player and/or links does not appear with some themes and plugins.
540
- * Even though PowerPress 6.0 requires WordPress 3.6+, code has been added to prevent error messages in the event plugin updated on older version of WordPress.
541
- * Fixed bug where malicious code could be injected into the edit existing category podcasting page. Thanks [Netsparker](https://www.netsparker.com) for reporting the issue.
542
- * Fixed bug with Podcasting SEO settings where Episode Titles could not be disabled.
543
- * Fixed bug where Godaddy customers using PHP 5.4 were getting a blank screen for the PowerPress Settings page due to a bug in the stristr() function. Godaddy is aware of the problem and working on a fix. In the mean time we've replaced calls to stristr() with preg_match().
544
- * Podcast Republic now uses the podcast feed URL for subscriptions (rather than the iTunes URL).
545
-
546
-
547
- = 6.0 =
548
- * Released on 12/19/2014
549
- * You must have WordPress 3.6 or newer and PHP 5.2 or newer for PowerPress 6.0.
550
- * NEW FEATURE: Playlist player, utilizes WordPress built-in playlist specifically for podcasting. [Learn more](http://create.blubrry.com/resources/powerpress/advanced-tools-and-options/powerpress-playlist-shortcode/)
551
- * NEW FEATURE: Subscribe links, adds subscribe on iTunes and via RSS links below the player and links.
552
- * NEW FEATURE: Subscribe page template and `[powerpress_subscribe]` page shortcode added. Create a "Subscribe to podcast" page for your podcast.
553
- * NEW FEATURE: Subscribe to podcast widget, adds subscribe on iTunes and via RSS links to side bar, with optional link to subscribe to podcast page.
554
- * NEW FEATURE: Podcasting SEO settings. Includes options to customize podcast feed titles, AudioObjects, VideoObjects, and highlight key iTunes fields.
555
- * NEW FEATURE: Migrate to Blubrry Podcast Hosting in 3 easy steps added.
556
- * iTunes image requirements updated, 1400x1400 minimum size is now "required" and 2048x2048 is now the maximum size for iTunes artwork.
557
- * iTunes category and subcategory selection updated for latest iTunes category selection rules.
558
- * Enhnaced iTunes Summary is back! The feature actually never left, but for the past few years links were not formatted in the iOS app. Now that they are, we now recommend the feature.
559
- * Fixed bug where Feed Maximizer option only worked when Podcast Channels was enabled (Thanks Daniel Lewis for bringing to our attention!)
560
- * Fixed bug where player and links would not appear if Yoast's WordPress SEO plugin option "Add Open Graph meta data" was enabled.
561
- * iTunes keywords feature has been removed, feature was deprecated last year by Apple. The iTunes keywords field will appear for previous episodes that used the feature.
562
- * Added support for Opus audio with content type audio/ogg. (Thanks thebugcast for the heads up!)
563
- * Files with 'ogg' file extension are now treated as audio/ogg, unless the following define is added to your wp-config.php: `define('POWERPRESS_OGG_VIDEO', true);` (Thanks thebugcast for pointing out the default!)
564
- * Updated the Find and Replace episode URLs tool to use native WordPress MySQL query functions.
565
- * Changed the logic for HEAD requests for HTTP authentication. Default WordPress behavior is to exit all HEAD requests. (Thanks thebugcast!)
566
- * Changed all content types to either use the site default or use UTF8 (applies to play in new window and 401 Unauthorized HTML pages).
567
- * Added new `powerpress_premium_content_authorized` filter for premium plugins to override the default behavior which uses roles and capabilities.
568
- * Updated the getid3 library to latest version, PowerPress now includes ogg duration detection support for "Speex" or "vorbis".
569
- * We are no longer detecting if the sample rate is optimal, we're no longer worried about Flash playback.
570
- * Removed Flow Player, Simple Flash, AudioPlay and Flash Mp3 Maxi players. These flash players are no longer supported.
571
- * New MediaElement.js Audio player max width setting added. Player will now display full width otherwise. Player is now responsive, the width will shrink or stretch for the screen.
572
- * Improved MediaElement.js Video player width and height settings. Player will now display full width, or as styled by the theme's CSS if width and height are blank. Player is now responsive, the width will shrink or stretch for the screen, the height can be set with a blank width to allow for the player to fit different screens.
573
- * We are now warning users not to use Flash based players in the player selection screens.
574
- * Added option to set stats redirect at the channel/post type level. Requires a define `CHANNEL_STATS_REDIRECT` and/or `POST_TYPE_STATS_REDIRECT` in the wp-config.php file.
575
- * FeedBurner feed URL when set will be used in the new subscribe page and subscribe sidebar widget (Thanks Daniel Lewis for bringing to our attention)
576
- * Playlist Player no longer includes the play time when it is zero. (Thanks Daniel Lewis for bringing to our attention)
577
- * Program Titles with double quotes in the general settings was not escaped correctly, it is now fixed. (Thanks Robin for bringing to our attention)
578
- * Edit value fields now use the `esc_attr()` wordpress function rather than the `htmlspecialchars()` native PHP function.
579
- * Added `powerpress_admin_capabilities` filter for premium capabilities. (Thanks Blair Williams for the suggestion)
580
- * Made subscribe sidebar and subscribe embed button icons Retina screen compatible
581
- * Re-added the blubrry folder icon for blubrry podcast hosting customers.
582
- * Tweaked wording and updated documentation for SEO settings (Thanks Daniel Lewis for the feedback!)
583
- * Tweaked updated documentation for the PowerPress Playlist (Thanks Daniel Lewis for asking questions, it helped us better document the features)
584
- * Fixed subscribe links always displaying (thanks Thiago Miro for pointing out the bug)
585
- * Fixed upload itunes image and poster image episode functions to use selected image size when "Link URL" is blank (Thanks Daniel Lewis for bringing to our attention)
586
- * Added a learn more link to the SEO page.
587
- * Added code for the new Subscribe embed so the subscribe embed CSS is only loaded when the shortcode is used in a page.
588
- * Added the wp-video and wp-video-shortcode classes to the MEJS video player so latest CSS styling in WordPress is again applied 100% of the time to the MEJS player packaged in PowerPress.
589
- * Playlist player will now use the iTunes episode image if one is set for each episode. Program level image is used if no image is set.
590
- * Playlist player taxonomy podcasting now accepts the term_taxonomy_id, making it more efficient.
591
- * Moved the Shortcodes into their own section in Media Appearance settings, they are now included in Podcast Channels, Category Podcasting, Post Type podcasting and Taxonomy podcasting with the appropriate attributes set for convenience.
592
- * Brazilian Portuguese translation for v6.0+ by [Leo Lopes from Radiofobia](http://radiofobia.com.br/).
593
-
594
-
595
  = Additional PowerPress Version History =
596
  Please visit the [PowerPress Version History](http://create.blubrry.com/resources/powerpress/advanced-tools-and-options/powerpress-version-history/) page for history prior to version 6.0.
597
 
@@ -614,7 +405,7 @@ Nicolas Bouliane, [Personal Blog](http://nicolasbouliane.com/) - contributed cod
614
 
615
  == Translators ==
616
  * Danish translation for v1.0.11+ by [Team Blogos](http://wordpress.blogos.dk/s%C3%B8g-efter-downloads/?did=280) - Latest translation available [here](http://wordpress.blogos.dk/s%C3%B8g-efter-downloads/?did=280)
617
- * French translation for v1.0.11+ by [Aureien Denis](http://wpchannel.com/) - Aur�lien is looking for assistance maintaining the French translation, email wpchannel [at] gmail.com if interested.
618
  * Simplified Chinese for v1.0.12+ by [webmote](http://codeex.cn) - From webmote: Welcome to use the plugin. Very good! and then hope you to access my site.
619
  * Italian translation for v2.0.4+ by [Umberto Sartori](http://veneziadoc.net/)
620
  * Romanian translation for v2.0.4+ by Alexander Ovsov (Web Geek Sciense: http://webhostinggeeks.com/science/)
1
  === PowerPress Podcasting plugin by Blubrry ===
2
  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: 4.9.7
7
+ Stable tag: 7.3
8
+ Donate link: https://create.blubrry.com/resources/podcast-media-hosting/
9
  License: GPLv2 or later
10
 
11
+ No. 1 Podcasting plugin for WordPress, with simple & advanced modes, players, subscribe tools, and more! Supports Apple Podcasts, Google, Spotify,..
12
 
13
  == Description ==
14
 
16
 
17
  [youtube https://www.youtube.com/watch?v=twqKrVehY3o]
18
 
19
+ Developed by podcasters for podcasters; features include Simple and Advanced modes, multiple audio/video player options, subscribe to podcast page embeds and sidebar widgets, podcasting SEO features, and more! Fully supports Apple Podcasts, Google Podcasts, Stitcher, TuneIn and Blubrry Podcasting directories, as well as all podcast applications and clients. PowerPress users who use Blubrry Podcast Hosting may also [submit their shows to Spotify](https://create.blubrry.com/manual/podcast-promotion/submit-podcast-to-spotify/).
20
 
21
  = Simple Mode =
22
  If you are just getting started or feel overwelmed with all the settings and options, switch to Simple mode! PowerPress's Simple Mode will walk you through getting started in 3 easy steps.
23
 
24
  1. Setup your Podcast quickly with only the essential settings
25
  1. Create your first Episode
26
+ 1. Submit your podcast to Apple Podcasts (previously iTunes Podcasts)
27
 
28
  When you're ready you can switch to Advanced mode to tap into all the options professionals would want.
29
 
30
  = PowerPress Key Features =
31
+ - Full Apple Podcasts (previously iTunes Podcasts) & Google Podcasts support: Adds Apple Podcast compliant podcast feeds to your WordPress site.
32
  - Integrated HTML5 Media Players: Audio/video Web players with embed support from sites such as YouTube.
33
  - Subscribe tools: Create subscribe page with our exclusive subscribe shortcode embed and subscribe sidebar widget optimized for responsive websites, high-resolution screens and Apple Retina displays.
34
+ - Podcasting SEO: Improve discovery of your podcast on search engines such as Google, and with the Apple Podcasts directory.
35
  - Podcast Importing: Import your podcast from SoundCloud, LibSyn, PodBean, Squarespace, or other podcast RSS feed.
36
  - Migration tools: Quickly migrate from PodPress, TGS Podcasting, Seriously Simple Podcasting, Blogger, or Movable Type without losing episodes.
37
  - Multi-podcast support: Create separate podcasts by category (Category Podcasting) or by media format (Podcast Channels).
39
  - *Media Statistics: Get FREE Blubrry Media Statistics from your WordPress dashboard.
40
  - Multi-languages and locales: See [PowerPress in your language](http://create.blubrry.com/resources/powerpress/powerpress-language/) for details.
41
 
42
+ = Includes Full Apple Podcasts Support! =
43
+ Blubrry PowerPress fully supports Apple Podcasts (previously iTunes podcasts), which is required for podcasting. PowerPress comes with the following Apple Podcasts specific features:
44
 
45
+ * Apple Podcasts compliant podcast feeds: The appropriate tags are added to your feeds so your Apple Podcasts listing looks great.
46
+ * Optimized Apple Podcasts summary: Converts your blog-post content to a format suited for viewing in Apple Podcasts ([learn more](http://create.blubrry.com/resources/powerpress/powerpress-settings/itunes/)).
47
+ * Tunes artwork: Upload and manage your Apple Podcasts artwork directly from within PowerPress settings.
48
+ * Apple Podcasts: Fully supported, including the latest [Apple Podcasts specifications](http://www.powerpresspodcast.com/2012/05/10/itunes-podcasting-specifications-changed-may-2012-what-that-means-for-podcasting/).
49
+ * Feed Episode Maximizer: Increase the number of episodes viewed on Apple Podcasts while decreasing the byte size of your feeds.
50
 
51
+ = Includes Full Google Podcasts Support! =
52
+ Blubrry PowerPress fully supports the newly launched Google Podcasts directory built into Google search, Google Home smart speakers and Google Podcasts Android app.
53
 
54
  = Integrated Media Players =
55
  Blubrry PowerPress includes extensive Web player options to display your podcast audio and video in your Web pages.
68
  A Blubrry PowerPress exclusive, podcast subscribe tools help you convert Web visitors into podcast subscribers. Subscribe options include:
69
 
70
  * [Subscribe page](http://create.blubrry.com/resources/powerpress/advanced-tools-and-options/subscribe-page/): Instantly create a subscribe page with simplified instructions on how to subscribe to your podcast using the PowerPress subscribe page shortcode.
71
+ * [Subscribe page shortcode](http://create.blubrry.com/resources/powerpress/advanced-tools-and-options/powerpress-subscribe-shortcode/): Add the `[powerpress_subscribe]` shortcode to include a mobile-device optimized subscribe embed in any post or page that includes buttons to subscribe on Apple Podcasts, [Subscribe on Android](http://www.subscribeonandroid.com), [Subscribe by Email](http://www.subscribebyemail.com), Stitcher, tuneIn, Spotify, Google Podcasts, via RSS, and an special textbox to easily copy and paste your podcast feed into any podcast application.
72
+ * Subscribe sidebar widget: Mobile device optimized sidebar buttons to subscribe on Apple Podcasts, [Subscribe on Android](http://www.subscribeonandroid.com), Stitcher, tuneIn, Spotify, Google Podcasts, subscribe by RSS, and a "more subscribe options" button linked to your podcast's subscribe page.
73
+ * Subscribe links: Subscribe on Apple Podcasts, [Subscribe on Android](http://www.subscribeonandroid.com), [Subscribe by Email](https://www.subscribebyemail.com), subscribe by RSS and a link to your custom subscribe page below every player.
74
  * Retina enabled: Subscribe button images optimized for high resolution displays including Apple Retina displays.
75
  * Responsive: Subscribe tools are designed for any screen and optimized for touch screens by providing custom buttons that are indrustry standard 48 pixels in height optimized for touch screen use.
76
 
90
  = Advanced Features for those who need more =
91
  Want more? We've got more! With a simple click you can enable advanced features and options. Check out some of the advanced features:
92
 
93
+ * [Podcasting SEO settings](http://create.blubrry.com/resources/powerpress/advanced-tools-and-options/podcasting-seo-settings/): Utilize the Apple and Google feed and HTML tags to improve the discovery of your podcasts and include the necessary meta data in your blog pages for search engines to discover.
94
  * Embeds: Provide embeds your audience can take with them (just like YouTube embeds)
95
  * Media size and duration detection: Enter your media URL and let the PowerPress do the rest.
96
  * Category Casting: Add podcast support to your WordPress category feeds.
103
  * WordPress MultiSite: Blubrry PowerPress is compatible with WordPress MultiSite and can be extended using the [Blubrry PowerPress MultiSite add-on plugin](https://wordpress.org/plugins/powerpress-multisite/).
104
  * *Supported syndication formats: mp3, m4a, mp4, m4v, webm, ogg, oga, ogv, wma, ra, mp4a, m4v, mp4v, mpg, asf, avi, wmv, flv, swf, mov, divx, 3gp, midi, wav, aa, pdf, torrent, m4b, m4r, epub.
105
 
106
+ *Apple Podcasts only supports mp3, m4a, mp4, m4v, pdf and epub.
107
 
108
  = Migrating from PodPress or other podcasting plugin? =
109
  Switching to from PodPress to PowerPress is seamless. Simply enable PowerPress then disable PodPress and you're done! PowerPress will continue where plugin your old plugin left off by including your previously created episodes in your feeds and Web pages.
166
  * [Eli's PowerPress Addon Widget](http://wordpress.org/extend/plugins/podpress-addons/) - Adds a sidebar widget that lists your podcast episodes linked to the play in a new window PowerPress player.
167
  * [PowerPress Posts From MySQL](http://wordpress.org/extend/plugins/powerpress-posts-from-mysql/developers/) - Creates blog posts with PowerPress podcast episode information from a MySQL table.
168
  * [Featured Podcast Widget](http://wordpress.org/plugins/featured-podcast-widget/), [Home Page](http://www.richardfarrar.com/featured-podcast-widget-for-wordpress/) - A widget that enables you to display your latest podcast from a category or featured podcast utilising the PowerPress plugin's default player.
169
+
 
170
 
171
  = Why doesn't Blubrry PowerPress support multiple enclosures in one feed item/post? =
172
+ Blubrry PowerPress does not allow you to include multiple media files for one feed item (blog post). This is because each podcatcher handles multiple enclosures in feeds differently. Apple Podcasts will download the first enclosure that it sees in the feed ignoring the rest. Other podcatchers and podcasting directories either pick up the first enclosure or the last in each post item. This inconsistency combined with the fact that [Dave Winer does not recommend multiple enclosures](http://www.reallysimplesyndication.com/2004/12/21) and the [FeedValidator.org recommendation against it](http://www.feedvalidator.org/docs/warning/DuplicateEnclosure.html) is why the Blubrry PowerPress does not support them.
173
 
174
  As a alternative, PowerPress allows you to create additional Custom Podcast Feeds to associate any magnitude of media format and/or length in a blog post to specific custom feeds. For example, you can create one blog post associated to separate video and audio podcast feeds saving you time from entering your show notes twice.
175
 
227
  == Changelog ==
228
 
229
  = Next Major Release Announcements =
 
230
  * 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#feedback) with your name and email.
231
 
232
  = Fan of PowerPress and want to show your support? =
233
  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!
234
 
235
+ = 7.3 =
236
+ * Released on 07/10/2018
237
+ * Spotify and Google Podcasts subscribe links added to Destinations.
238
+ * PowerPress users using [Blubrry Podcast Hosting](https://create.blubrry.com/resources/podcast-media-hosting/) may now submit shows to Spotify!
239
+ * Added PodcastMirror setting, a modern alternative to FeedBurner. Learn more about [PodcastMirror](https://podcastmirror.com/) at [podcastmirror.com](https://podcastmirror.com/)
240
+ * Converted loop logic from each() to foreach() for PHP 7.3+ / 8.0+ compatibility.
241
+ * Improved logic for playlist player to appear better when certain settings are not set.
242
+ * Moved the enqueue script ('jquery-ui-tabs') logic so it only loads in the powerpress admin pages. (Thanks @keenanpayne for the code change!)
243
+ * Added define option `POWERPRESS_POSTTYPE_MIXING`, when set to true podcast channels for the default podcast feed will mix all post types of type post with the default podcast feed. (Thanks @eos-rose for bringing to our attention)
244
+ * Fixed bug with translation and javascript alert messages. (Thanks Enrico for reporting the bug!)
245
+
246
+
247
  = 7.2 =
248
  * Released on 12/13/2017
249
  * Added code to allow customization of Blubrry player style and colors.
383
  * Embed link now toggles embed box when clicked multiple times.
384
  * ATTENTION: The 1 pixel out audio player will be removed from PowerPress 7.1.
385
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
386
  = Additional PowerPress Version History =
387
  Please visit the [PowerPress Version History](http://create.blubrry.com/resources/powerpress/advanced-tools-and-options/powerpress-version-history/) page for history prior to version 6.0.
388
 
405
 
406
  == Translators ==
407
  * Danish translation for v1.0.11+ by [Team Blogos](http://wordpress.blogos.dk/s%C3%B8g-efter-downloads/?did=280) - Latest translation available [here](http://wordpress.blogos.dk/s%C3%B8g-efter-downloads/?did=280)
408
+ * French translation for v1.0.11+ by [Aur�lien Denis](http://wpchannel.com/) - Aur�lien is looking for assistance maintaining the French translation, email wpchannel [at] gmail.com if interested.
409
  * Simplified Chinese for v1.0.12+ by [webmote](http://codeex.cn) - From webmote: Welcome to use the plugin. Very good! and then hope you to access my site.
410
  * Italian translation for v2.0.4+ by [Umberto Sartori](http://veneziadoc.net/)
411
  * Romanian translation for v2.0.4+ by Alexander Ovsov (Web Geek Sciense: http://webhostinggeeks.com/science/)
views/settings_tab_appearance.php CHANGED
@@ -132,7 +132,7 @@
132
  <p class="description">
133
  <?php echo __('Note: When specifying a URL to media in the powerpress shortcode, only the player is included. The Media Links will <u>NOT</u> be included since there is not enough meta information to display them.', 'powerpress'); ?>
134
  </p>
135
- <h3><?php echo __('PowerPress Playlist Shortcode', 'powerpress'); ?> <?php echo powerpressadmin_new(); ?></h3>
136
  <?php if( empty($GeneralSettings['playlist_player']) ) { // Either not set or set on
137
  ?>
138
  <p style="margin-bottom: 20px; margin-left: 40px;">
@@ -150,7 +150,7 @@
150
  <?php echo sprintf(__('Please visit the %s page for additional options.', 'powerpress'), '<a href="http://create.blubrry.com/resources/powerpress/advanced-tools-and-options/powerpress-playlist-shortcode/" target="_blank">'. __('PowerPress Playlist Shortcode', 'powerpress') .'</a>' ); ?>
151
  </p>
152
 
153
- <h3><?php echo __('PowerPress Subscribe Shortcode', 'powerpress'); ?> <?php echo powerpressadmin_new(); ?></h3>
154
  <p>
155
  <?php echo '<code>'.$shortcode['powerpress_subscribe'].'</code>'; ?>
156
  </p>
132
  <p class="description">
133
  <?php echo __('Note: When specifying a URL to media in the powerpress shortcode, only the player is included. The Media Links will <u>NOT</u> be included since there is not enough meta information to display them.', 'powerpress'); ?>
134
  </p>
135
+ <h3><?php echo __('PowerPress Playlist Shortcode', 'powerpress'); ?></h3>
136
  <?php if( empty($GeneralSettings['playlist_player']) ) { // Either not set or set on
137
  ?>
138
  <p style="margin-bottom: 20px; margin-left: 40px;">
150
  <?php echo sprintf(__('Please visit the %s page for additional options.', 'powerpress'), '<a href="http://create.blubrry.com/resources/powerpress/advanced-tools-and-options/powerpress-playlist-shortcode/" target="_blank">'. __('PowerPress Playlist Shortcode', 'powerpress') .'</a>' ); ?>
151
  </p>
152
 
153
+ <h3><?php echo __('PowerPress Subscribe Shortcode', 'powerpress'); ?> </h3>
154
  <p>
155
  <?php echo '<code>'.$shortcode['powerpress_subscribe'].'</code>'; ?>
156
  </p>
views/settings_tab_destinations.php CHANGED
@@ -32,14 +32,16 @@
32
 
33
  if( empty($FeedSettings['itunes_url']) )
34
  $FeedSettings['itunes_url'] = '';
35
- if( empty($FeedSettings['googleplay_url']) )
36
- $FeedSettings['googleplay_url'] = '';
37
  if( empty($FeedSettings['blubrry_url']) )
38
  $FeedSettings['blubrry_url'] = '';
39
  if( empty($FeedSettings['stitcher_url']) )
40
  $FeedSettings['stitcher_url'] = '';
41
  if( empty($FeedSettings['tunein_url']) )
42
  $FeedSettings['tunein_url'] = '';
 
 
 
 
43
  ?>
44
 
45
 
@@ -62,24 +64,25 @@
62
  <p><?php echo __('Listing URLs are used by player subscribe links, subscribe sidebar widgets and subscribe to podcast page shortcodes.', 'powerpress'); ?></p>
63
  <table class="form-table">
64
  <tr valign="top">
65
- <th scope="row"><?php echo __('iTunes', 'powerpress'); ?></th>
66
  <td>
67
- <p><strong><a href="http://create.blubrry.com/manual/podcast-promotion/submit-podcast-to-itunes/?podcast-feed=<?php echo urlencode($feed_url); ?>" target="_blank"><?php echo __('Submit podcast to iTunes', 'powerpress'); ?></a></strong></p>
68
- <label for="itunes_url" style="font-size: 120%; display: block; font-weight: bold;"><?php echo __('iTunes Subscription URL', 'powerpress'); ?></label>
69
  <input type="text" style="width: 80%;" id="itunes_url" name="Feed[itunes_url]" value="<?php echo esc_attr($FeedSettings['itunes_url']); ?>" maxlength="255" />
70
  <p class="description"><?php echo sprintf(__('e.g. %s', 'powerpress'), 'http://itunes.apple.com/podcast/title-of-podcast/id<strong>000000000</strong>'); ?></p>
71
- <p><?php echo __('iTunes will email your Subscription URL to your <em>iTunes Email</em> when your podcast is accepted into the iTunes Directory.', 'powerpress'); ?></p>
72
  </td>
73
  </tr>
74
  </table>
75
 
76
  <table class="form-table">
77
  <tr valign="top">
78
- <th scope="row"><?php echo __('Google Play Music', 'powerpress'); ?></th>
79
  <td>
80
- <p><strong><a href="http://create.blubrry.com/manual/podcast-promotion/publish-podcast-google-play-music-podcast-portal/?podcast-feed=<?php echo urlencode($feed_url); ?>" target="_blank"><?php echo __('Submit podcast to Google Play Music', 'powerpress'); ?></a></strong></p>
81
- <label for="googleplay_url" style="font-size: 120%; display: block; font-weight: bold;"><?php echo __('Google Play Music Listing URL', 'powerpress'); ?></label>
82
- <input type="text" class="bpp-input-normal" id="googleplay_url" name="Feed[googleplay_url]" value="<?php echo esc_attr($FeedSettings['googleplay_url']); ?>" maxlength="255" />
 
83
  </td>
84
  </tr>
85
  </table>
@@ -126,4 +129,17 @@
126
  </tr>
127
  </table>
128
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  <br />
32
 
33
  if( empty($FeedSettings['itunes_url']) )
34
  $FeedSettings['itunes_url'] = '';
 
 
35
  if( empty($FeedSettings['blubrry_url']) )
36
  $FeedSettings['blubrry_url'] = '';
37
  if( empty($FeedSettings['stitcher_url']) )
38
  $FeedSettings['stitcher_url'] = '';
39
  if( empty($FeedSettings['tunein_url']) )
40
  $FeedSettings['tunein_url'] = '';
41
+ if( empty($FeedSettings['spotify_url']) )
42
+ $FeedSettings['spotify_url'] = '';
43
+
44
+ $googleUrl = 'https://www.google.com/podcasts?feed='.base64_encode($feed_url);
45
  ?>
46
 
47
 
64
  <p><?php echo __('Listing URLs are used by player subscribe links, subscribe sidebar widgets and subscribe to podcast page shortcodes.', 'powerpress'); ?></p>
65
  <table class="form-table">
66
  <tr valign="top">
67
+ <th scope="row"><?php echo __('Apple', 'powerpress'); ?></th>
68
  <td>
69
+ <p><strong><a href="http://create.blubrry.com/manual/podcast-promotion/submit-podcast-to-itunes/?podcast-feed=<?php echo urlencode($feed_url); ?>" target="_blank"><?php echo __('Submit podcast to Apple', 'powerpress'); ?></a></strong></p>
70
+ <label for="itunes_url" style="font-size: 120%; display: block; font-weight: bold;"><?php echo __('Apple Subscription URL', 'powerpress'); ?></label>
71
  <input type="text" style="width: 80%;" id="itunes_url" name="Feed[itunes_url]" value="<?php echo esc_attr($FeedSettings['itunes_url']); ?>" maxlength="255" />
72
  <p class="description"><?php echo sprintf(__('e.g. %s', 'powerpress'), 'http://itunes.apple.com/podcast/title-of-podcast/id<strong>000000000</strong>'); ?></p>
73
+ <p><?php echo __('Apple will email your Subscription URL to your <em>Apple Email</em> when your podcast is accepted into the Apple Podcasts Directory.', 'powerpress'); ?></p>
74
  </td>
75
  </tr>
76
  </table>
77
 
78
  <table class="form-table">
79
  <tr valign="top">
80
+ <th scope="row"><?php echo __('Google', 'powerpress'); ?> <?php echo powerpressadmin_new(); ?></th>
81
  <td>
82
+ <p><strong><a href="http://create.blubrry.com/manual/podcast-promotion/submit-podcast-google-podcasts/?podcast-feed=<?php echo urlencode($feed_url); ?>" target="_blank"><?php echo __('Learn more about Google Podcasts', 'powerpress'); ?></a></strong></p>
83
+ <label for="googleplay_url" style="font-size: 120%; display: block; font-weight: bold;"><?php echo __('Google Listing URL', 'powerpress'); ?></label>
84
+ <input type="text" class="bpp-input-normal" id="googleplay_url" name="Null[google_url]" value="<?php echo esc_attr($googleUrl); ?>" maxlength="255" readOnly onclick="javascript: this.select();" onfocus="javascript: this.select();" />
85
+ <p><?php echo __('Google Podcasts directory is available through Google search, Google Home smart speakers, and the new Google Podcasts app for Android. As long as your podcast website is discoverable by Google search, your podcast will be included in this directory.', 'powerpress'); ?></p>
86
  </td>
87
  </tr>
88
  </table>
129
  </tr>
130
  </table>
131
 
132
+ <table class="form-table">
133
+ <tr valign="top">
134
+ <th scope="row"><?php echo __('Spotify', 'powerpress'); ?> <?php echo powerpressadmin_new(); ?></th>
135
+ <td>
136
+ <p><strong><a href="http://create.blubrry.com/manual/podcast-promotion/submit-podcast-to-spotify/?podcast-feed=<?php echo urlencode($feed_url); ?>" target="_blank"><?php echo __('Submit podcast to Spotify', 'powerpress'); ?></a></strong></p>
137
+ <label for="tunein_url" style="font-size: 120%; display: block; font-weight: bold;"><?php echo __('Spotify Listing URL', 'powerpress'); ?></label>
138
+ <input type="text" class="bpp-input-normal" id="spotify_url" name="Feed[spotify_url]" value="<?php echo esc_attr($FeedSettings['spotify_url']); ?>" maxlength="255" />
139
+ <p class="description"><?php echo sprintf(__('e.g. %s', 'powerpress'), 'https://open.spotify.com/show/abcdefghijklmnopqrstu'); ?></p>
140
+
141
+ </td>
142
+ </tr>
143
+ </table>
144
+
145
  <br />
views/settings_tab_other.php CHANGED
@@ -105,7 +105,7 @@
105
  $actual_premium_value = $FeedSettings['premium'];
106
 
107
  echo '<option value="">'. __('None', 'powerpress') .'</option>';
108
- while( list($value,$desc) = each($caps) )
109
  echo "\t<option value=\"$value\"". ($actual_premium_value==$value?' selected':''). ">".htmlspecialchars($desc)."</option>\n";
110
  ?>
111
  </select></div>
@@ -204,7 +204,7 @@ function powerpress_default_premium_label(event)
204
  $custom_post_type = $FeedSettings['custom_post_type'];
205
 
206
  echo '<option value="">'. __('All Post Types (default)', 'powerpress') .'</option>';
207
- while( list($index,$value) = each($post_types) )
208
  {
209
  $desc = $value;
210
  // TODO: See if we can get a post type label somehow
@@ -219,7 +219,7 @@ function powerpress_default_premium_label(event)
219
  $post_types = powerpress_admin_get_post_types( POWERPRESS_CUSTOM_CAPABILITY_TYPE );
220
  if( !empty($post_types) )
221
  {
222
- while( list($index,$value) = each($post_types) )
223
  {
224
  $desc = $value;
225
  // TODO: See if we can get a post type label somehow
105
  $actual_premium_value = $FeedSettings['premium'];
106
 
107
  echo '<option value="">'. __('None', 'powerpress') .'</option>';
108
+ foreach( $caps as $value => $desc )
109
  echo "\t<option value=\"$value\"". ($actual_premium_value==$value?' selected':''). ">".htmlspecialchars($desc)."</option>\n";
110
  ?>
111
  </select></div>
204
  $custom_post_type = $FeedSettings['custom_post_type'];
205
 
206
  echo '<option value="">'. __('All Post Types (default)', 'powerpress') .'</option>';
207
+ foreach( $post_types as $index => $value )
208
  {
209
  $desc = $value;
210
  // TODO: See if we can get a post type label somehow
219
  $post_types = powerpress_admin_get_post_types( POWERPRESS_CUSTOM_CAPABILITY_TYPE );
220
  if( !empty($post_types) )
221
  {
222
+ foreach( $post_types as $index => $value )
223
  {
224
  $desc = $value;
225
  // TODO: See if we can get a post type label somehow