PowerPress Podcasting plugin by Blubrry - Version 9.6.1

Version Description

  • Released on 10/24/2022
  • Various bugfixes
  • Refactored Channels page and added missing ajax div
  • Refactored form submission on Category page
Download this release

Release Info

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

Code changes from version 9.6 to 9.6.1

powerpress.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Blubrry PowerPress
4
  Plugin URI: http://create.blubrry.com/resources/powerpress/
5
  Description: <a href="https://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: 9.6
7
  Author: Blubrry
8
  Author URI: https://blubrry.com/
9
  Requires at least: 3.6
@@ -35,7 +35,7 @@ if( !function_exists('add_action') ) {
35
  }
36
 
37
  // WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
38
- define('POWERPRESS_VERSION', '9.6' );
39
 
40
  // Translation support:
41
  if ( !defined('POWERPRESS_ABSPATH') )
3
  Plugin Name: Blubrry PowerPress
4
  Plugin URI: http://create.blubrry.com/resources/powerpress/
5
  Description: <a href="https://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: 9.6.1
7
  Author: Blubrry
8
  Author URI: https://blubrry.com/
9
  Requires at least: 3.6
35
  }
36
 
37
  // WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
38
+ define('POWERPRESS_VERSION', '9.6.1' );
39
 
40
  // Translation support:
41
  if ( !defined('POWERPRESS_ABSPATH') )
powerpressadmin-auth.class.php CHANGED
@@ -148,6 +148,7 @@ class PowerPressAuth {
148
  curl_setopt($curl, CURLOPT_URL, $url);
149
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
150
  curl_setopt($curl, CURLOPT_HEADER, 0);
 
151
 
152
  if ( version_compare( PHP_VERSION, '5.3.0') < 0 )
153
  {
148
  curl_setopt($curl, CURLOPT_URL, $url);
149
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
150
  curl_setopt($curl, CURLOPT_HEADER, 0);
151
+ curl_setopt( $curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
152
 
153
  if ( version_compare( PHP_VERSION, '5.3.0') < 0 )
154
  {
powerpressadmin-categoryfeeds.php CHANGED
@@ -38,9 +38,8 @@ function powerpress_admin_categoryfeeds(){
38
  </div>
39
 
40
  <p class="submit"><input style="background-color: white; color: #4e93d9; border: 1px solid #4e93d9" type="submit" class="powerpress_save_button_other pp-tools-button" name="submit" value="<?php echo __('ADD SETTINGS TO CATEGORY FEED', 'powerpress'); ?>"/></p>
41
-
42
-
43
  </div>
 
44
  <div class="pp-col-50">
45
  <div class="pp-row">
46
  <h2 class="pp-page-sub-header">Why would I use Podcast Categories?</h2>
@@ -57,46 +56,6 @@ function powerpress_admin_categoryfeeds(){
57
  </div>
58
  </div>
59
 
60
-
61
- <div class="pp-row pp-tools-row">
62
- <div class="pp-row" style="width: 100%;">
63
- <h2 class="pp-page-sub-header">Category Podcast Settings</h2>
64
- </div>
65
-
66
- <h3 style="width: 100%;">Strict Categories</h3>
67
- <p style="margin: 0;">
68
- <input type="hidden" name="cat_casting_strict" value="0" />
69
-
70
- <label>
71
- <input type="checkbox" name="cat_casting_strict" value="1" <?php echo ( !empty($General['cat_casting_strict']) ?'checked ':''); ?>/>
72
- <?php echo __('Select a specific category to each episode for statistics tracking and subscription links.', 'powerpress'); ?>
73
- </label>
74
- </p>
75
-
76
-
77
- <h3 style="width: 100%;">Podcast Only Feeds</h3>
78
- <p style="margin: 0;">
79
- <input type="hidden" name="cat_casting_podcast_feeds" value="0" />
80
-
81
- <label>
82
- <input type="checkbox" name="cat_casting_podcast_feeds" value="1" <?php echo ( !empty($General['cat_casting_podcast_feeds']) ?'checked ':''); ?>/>
83
- <?php echo __('Enable to separate blog posts from podcast episodes.', 'powerpress'); ?>
84
- </label>
85
- </p>
86
- </div>
87
-
88
- <div class="pp-row pp-tools-row">
89
- <p class="submit" style="margin: 0;"><input type="submit" class="powerpress_save_button_other pp-tools-button" name="submit" value="<?php echo __('Save Settings', 'powerpress'); ?>" /></p>
90
- </div>
91
-
92
- <hr>
93
-
94
- <div class="pp-row pp-tools-row" style="margin-top: 20px;">
95
- <div class="pp-row">
96
- <h2 class="pp-page-sub-header">List of Categories</h2>
97
- </div>
98
- </div>
99
-
100
  <div class="pp-row pp-tools-row" style="margin-top: 20px;">
101
  <table class="widefat fixed">
102
  <thead>
@@ -210,12 +169,49 @@ function powerpress_admin_categoryfeeds(){
210
  </tbody>
211
  </table>
212
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  </div>
214
 
 
 
215
  <style>
216
- .pp-col-50 {
217
- width: 50%;
218
- }
 
 
 
219
  </style>
220
 
221
- <?php } ?>
38
  </div>
39
 
40
  <p class="submit"><input style="background-color: white; color: #4e93d9; border: 1px solid #4e93d9" type="submit" class="powerpress_save_button_other pp-tools-button" name="submit" value="<?php echo __('ADD SETTINGS TO CATEGORY FEED', 'powerpress'); ?>"/></p>
 
 
41
  </div>
42
+
43
  <div class="pp-col-50">
44
  <div class="pp-row">
45
  <h2 class="pp-page-sub-header">Why would I use Podcast Categories?</h2>
56
  </div>
57
  </div>
58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  <div class="pp-row pp-tools-row" style="margin-top: 20px;">
60
  <table class="widefat fixed">
61
  <thead>
169
  </tbody>
170
  </table>
171
  </div>
172
+
173
+ <input type="hidden" name="action" value="powerpress-addcategoryfeed" />
174
+ <input type="hidden" name="taxonomy" value="category" />
175
+ <?php wp_nonce_field('powerpress-add-taxonomy-feed'); ?>
176
+
177
+ </form> <!-- closing form started on another page -->
178
+
179
+ <br>
180
+ <div class="pp-row pp-tools-row">
181
+ <form enctype="multipart/form-data" method="post" action="<?php echo admin_url( 'admin.php?page='. powerpress_admin_get_page() ) ?>">
182
+ <input type="hidden" name="action" value="powerpress-category-settings" />
183
+ <?php wp_nonce_field('powerpress-category-settings'); ?>
184
+
185
+ <div class="pp-row" style="width: 100%;">
186
+ <h2 class="pp-page-sub-header">Category Podcast Settings</h2>
187
+ </div>
188
+
189
+ <h3 style="width: 100%;">Strict Categories</h3>
190
+ <p><input type="hidden" name="cat_casting_strict" value="0" />
191
+ <label><input type="checkbox" name="cat_casting_strict" value="1" <?php echo ( !empty($General['cat_casting_strict']) ?'checked ':''); ?>/>
192
+ <?php echo __('Select a specific category to each episode for statistics tracking and subscription links.', 'powerpress'); ?></label></p>
193
+
194
+ <h3 style="width: 100%;">Podcast Only Feeds</h3>
195
+ <p><input type="hidden" name="cat_casting_podcast_feeds" value="0" />
196
+ <label><input type="checkbox" name="cat_casting_podcast_feeds" value="1" <?php echo ( !empty($General['cat_casting_podcast_feeds']) ?'checked ':''); ?>/>
197
+ <?php echo __('Enable to separate blog posts from podcast episodes.', 'powerpress'); ?></label></p>
198
+
199
+ <div class="pp-row" style="width: 100%;">
200
+ <p style="margin: 0;"><input type="submit" class="powerpress_save_button_other pp-tools-button" name="submit" value="<?php echo __('Save Settings', 'powerpress'); ?>" /></p>
201
+ </div>
202
+ </form>
203
+ </div>
204
  </div>
205
 
206
+ <br>
207
+
208
  <style>
209
+ .pp-col-50 { width: 50%; }
210
+ .column-url { width: 40%; }
211
+ .column-name { width: 30%; }
212
+ .column-feed-slug { width: 15%; }
213
+ .column-episode-count { width: 15%; }
214
+ .category-list { width: 100%; }
215
  </style>
216
 
217
+ <?php } ?>
powerpressadmin-customfeeds.php CHANGED
@@ -44,6 +44,7 @@ function powerpress_admin_customfeeds(){
44
  <div class="pp-row">
45
  <h4 style="margin: 0; padding-top: 10px;">MyPodcast.com/</h4>
46
  <input name="feed_slug" id="feed_slug" type="text" value="" size="40" style="width: 80%;"/>
 
47
  </div>
48
  <p><?php echo __('The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.', 'powerpress'); ?></p>
49
  </div>
@@ -72,16 +73,16 @@ function powerpress_admin_customfeeds(){
72
  <p style="margin: 0;"><strong><a href="<?php echo admin_url() . wp_nonce_url("admin.php?page=powerpress/powerpressadmin_customfeeds.php&amp;action=powerpress-remove-feed-caps", 'powerpress-remove-feed-caps'); ?>"><?php echo __('Remove Password Protection Capabilities for Control of Which Users can Access Your Podcasts', 'powerpress'); ?></a></strong> (<?php echo __('Also kown as Premium Content', 'powerpress'); ?>)</p>
73
 
74
  <p>
75
- <?php echo __('Password protection capabilities for custom podcast channel feeds lets you control who can listen and view your
76
- podcast. This feature allows you to password-protect custom podcast channels by adding a new role called "Premium
77
  Subscriber." Only users with the "Premium Subscriber" role have access to your password protected custom podcast
78
  channels. Due to this feature\'s complexity, it is not supported by Blubrry.com.', 'powerpress'); ?>
79
  </p>
80
  <?php } else { ?>
81
  <p style="margin: 0;"><strong><a href="<?php echo admin_url() . wp_nonce_url("admin.php?page=powerpress/powerpressadmin_customfeeds.php&amp;action=powerpress-add-feed-caps", 'powerpress-add-feed-caps'); ?>"><?php echo __('Add Password Protection Capabilities for Control of Which Users can Access Your Podcasts', 'powerpress'); ?></a></strong> (<?php echo __('Also known as Premium Content', 'powerpress'); ?>)</p>
82
  <p>
83
- <?php echo __('Adding password protection capabilities for custom podcast channel feeds lets you control who can listen and view your
84
- podcast. This feature allows you to password-protect custom podcast channels by adding a new role called "Premium
85
  Subscriber." Only users with the "Premium Subscriber" role have access to your password protected custom podcast
86
  channels. Due to this feature\'s complexity, it is not supported by Blubrry.com.', 'powerpress'); ?>
87
  </p>
@@ -97,113 +98,119 @@ function powerpress_admin_customfeeds(){
97
  <tr><?php print_column_headers('powerpressadmin_customfeeds'); ?></tr>
98
  </thead>
99
 
100
- <tfoot>
101
- <tr><?php print_column_headers('powerpressadmin_customfeeds', false); ?></tr>
102
- </tfoot>
103
-
104
  <tbody>
105
  <?php
106
- $Feeds = array('podcast'=>__('Podcast', 'powerpress') );
107
-
108
- if(isset($General['custom_feeds']['podcast'])){
109
- $Feeds = $General['custom_feeds'];
110
- } elseif( is_array($General['custom_feeds'])){
111
- $Feeds += $General['custom_feeds'];
112
- }
113
 
114
- asort($Feeds, SORT_STRING); // Sort feeds
115
- $count = 0;
 
 
 
116
 
117
- foreach($Feeds as $feed_slug => $feed_title){
118
- $feed_slug = esc_attr($feed_slug); // Precaution
119
- $episode_total = powerpress_admin_episodes_per_feed($feed_slug);
120
- $columns = powerpress_admin_customfeeds_columns();
121
- $hidden = array();
122
 
123
- if($feed_slug == 'podcast'){
124
- $feed_title = __('Podcast', 'powerpress');
125
- }
126
-
127
- if($count % 2 == 0){
128
- echo '<tr class="alternate">';
129
- } else {
130
- echo '<tr>';
131
- }
132
 
133
- foreach($columns as $column_name=>$column_display_name){
134
- $class = "class=\"column-$column_name\"";
135
- $edit_link = admin_url('admin.php?page='. powerpress_admin_get_page() .'&amp;action=powerpress-editfeed&amp;feed_slug=') . $feed_slug;
136
- $url = get_feed_link($feed_slug);
137
- $short_url = str_replace('http://', '', $url);
138
- $short_url = str_replace('www.', '', $short_url);
139
 
 
 
 
 
 
140
 
141
- if(strlen($short_url) > 35){
142
- $short_url = substr($short_url, 0, 32).'...';
143
- }
 
 
 
144
 
145
- switch($column_name){
146
- case 'feed-slug': {
147
- echo "<td $class>$feed_slug";
148
- echo "</td>";
149
- } break;
150
 
151
- case 'name': {
 
 
152
 
153
- echo '<td '.$class.'><strong><a class="row-title" href="'.$edit_link.'" title="' . esc_attr(sprintf(__('Edit "%s"', 'powerpress'), $feed_title)) . '">'. esc_html($feed_title) .'</a></strong>'. ( $feed_slug == 'podcast' ?' ('. __('default channel', 'powerpress') .')':'').'<br />';
154
- $actions = array();
155
- $actions['edit'] = '<a href="' . $edit_link . '">' . __('Edit', 'powerpress') . '</a>';
156
- $actions['delete'] = "<a class='submitdelete' href='". admin_url() . wp_nonce_url("admin.php?page=". powerpress_admin_get_page() ."&amp;action=powerpress-delete-feed&amp;feed_slug=$feed_slug", 'powerpress-delete-feed-' . $feed_slug) . "' onclick=\"if ( confirm('" . esc_js(sprintf( __("You are about to delete feed '%s'\n 'Cancel' to stop, 'OK' to delete.", 'powerpress'), esc_attr($feed_title) )) . "') ) { return true;}return false;\">" . __('Delete', 'powerpress') . "</a>";
157
- if(!isset($General['custom_feeds'][ $feed_slug ])){
158
- unset($actions['delete']);
159
- }
160
- $action_count = count($actions);
161
- $i = 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  echo '<div class="row-actions">';
163
- foreach ($actions as $action => $linkaction){
164
- ++$i;
165
- ($i == $action_count) ? $sep = '' : $sep = ' | ';
166
- echo '<span class="'.$action.'">'.$linkaction.$sep .'</span>';
167
  }
168
  echo '</div>';
169
- echo '</td>';
170
- } break;
171
-
172
- case 'url': {
173
- echo "<td $class><a href='$url' title='". esc_attr(sprintf(__('Visit %s', 'powerpress'), $feed_title))."' target=\"_blank\">". esc_html($short_url) ."</a>";
174
- echo '<div class="row-actions">';
175
- if(defined('POWERPRESS_FEEDVALIDATOR_URL')){
176
- echo '<span class="'.$action .'"><a href="'. POWERPRESS_FEEDVALIDATOR_URL . urlencode($url) .'" target="_blank">' . __('Validate Feed', 'powerpress') . '</a></span>';
177
- }
178
- echo '</div>';
179
- echo "</td>";
180
 
181
- } break;
182
 
183
- case 'episode-count': {
184
 
185
- echo "<td $class>$episode_total";
186
- echo "</td>";
187
 
188
- } break;
189
 
190
- default: {
191
- } break;
192
- }
193
  }
194
-
195
- echo "\n </tr>\n";
196
- $count++;
197
  }
198
- ?>
 
 
 
 
199
  </tbody>
200
- </table>
201
- </div>
202
 
203
- <style>
204
- .pp-col-50 {
205
- width: 50%;
206
- }
207
- </style>
 
208
 
209
- <?php } ?>
 
 
 
 
 
 
 
 
 
 
44
  <div class="pp-row">
45
  <h4 style="margin: 0; padding-top: 10px;">MyPodcast.com/</h4>
46
  <input name="feed_slug" id="feed_slug" type="text" value="" size="40" style="width: 80%;"/>
47
+
48
  </div>
49
  <p><?php echo __('The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.', 'powerpress'); ?></p>
50
  </div>
73
  <p style="margin: 0;"><strong><a href="<?php echo admin_url() . wp_nonce_url("admin.php?page=powerpress/powerpressadmin_customfeeds.php&amp;action=powerpress-remove-feed-caps", 'powerpress-remove-feed-caps'); ?>"><?php echo __('Remove Password Protection Capabilities for Control of Which Users can Access Your Podcasts', 'powerpress'); ?></a></strong> (<?php echo __('Also kown as Premium Content', 'powerpress'); ?>)</p>
74
 
75
  <p>
76
+ <?php echo __('Password protection capabilities for custom podcast channel feeds lets you control who can listen and view your
77
+ podcast. This feature allows you to password-protect custom podcast channels by adding a new role called "Premium
78
  Subscriber." Only users with the "Premium Subscriber" role have access to your password protected custom podcast
79
  channels. Due to this feature\'s complexity, it is not supported by Blubrry.com.', 'powerpress'); ?>
80
  </p>
81
  <?php } else { ?>
82
  <p style="margin: 0;"><strong><a href="<?php echo admin_url() . wp_nonce_url("admin.php?page=powerpress/powerpressadmin_customfeeds.php&amp;action=powerpress-add-feed-caps", 'powerpress-add-feed-caps'); ?>"><?php echo __('Add Password Protection Capabilities for Control of Which Users can Access Your Podcasts', 'powerpress'); ?></a></strong> (<?php echo __('Also known as Premium Content', 'powerpress'); ?>)</p>
83
  <p>
84
+ <?php echo __('Adding password protection capabilities for custom podcast channel feeds lets you control who can listen and view your
85
+ podcast. This feature allows you to password-protect custom podcast channels by adding a new role called "Premium
86
  Subscriber." Only users with the "Premium Subscriber" role have access to your password protected custom podcast
87
  channels. Due to this feature\'s complexity, it is not supported by Blubrry.com.', 'powerpress'); ?>
88
  </p>
98
  <tr><?php print_column_headers('powerpressadmin_customfeeds'); ?></tr>
99
  </thead>
100
 
 
 
 
 
101
  <tbody>
102
  <?php
103
+ $Feeds = array('podcast'=>__('Podcast', 'powerpress') );
 
 
 
 
 
 
104
 
105
+ if(isset($General['custom_feeds']['podcast'])){
106
+ $Feeds = $General['custom_feeds'];
107
+ } elseif( is_array($General['custom_feeds'])){
108
+ $Feeds += $General['custom_feeds'];
109
+ }
110
 
111
+ asort($Feeds, SORT_STRING); // Sort feeds
112
+ $count = 0;
 
 
 
113
 
114
+ foreach($Feeds as $feed_slug => $feed_title){
115
+ $feed_slug = esc_attr($feed_slug); // Precaution
116
+ $episode_total = powerpress_admin_episodes_per_feed($feed_slug);
117
+ $columns = powerpress_admin_customfeeds_columns();
118
+ $hidden = array();
 
 
 
 
119
 
120
+ if($feed_slug == 'podcast'){
121
+ $feed_title = __('Podcast', 'powerpress');
122
+ }
 
 
 
123
 
124
+ if($count % 2 == 0){
125
+ echo '<tr class="alternate">';
126
+ } else {
127
+ echo '<tr>';
128
+ }
129
 
130
+ foreach($columns as $column_name=>$column_display_name){
131
+ $class = "class=\"column-$column_name\"";
132
+ $edit_link = admin_url('admin.php?page='. powerpress_admin_get_page() .'&amp;action=powerpress-editfeed&amp;feed_slug=') . $feed_slug;
133
+ $url = get_feed_link($feed_slug);
134
+ $short_url = str_replace('http://', '', $url);
135
+ $short_url = str_replace('www.', '', $short_url);
136
 
 
 
 
 
 
137
 
138
+ if(strlen($short_url) > 35){
139
+ $short_url = substr($short_url, 0, 32).'...';
140
+ }
141
 
142
+ switch($column_name){
143
+ case 'feed-slug': {
144
+ echo "<td $class>$feed_slug";
145
+ echo "</td>";
146
+ } break;
147
+
148
+ case 'name': {
149
+
150
+ echo '<td '.$class.'><strong><a class="row-title" href="'.$edit_link.'" title="' . esc_attr(sprintf(__('Edit "%s"', 'powerpress'), $feed_title)) . '">'. esc_html($feed_title) .'</a></strong>'. ( $feed_slug == 'podcast' ?' ('. __('default channel', 'powerpress') .')':'').'<br />';
151
+ $actions = array();
152
+ $actions['edit'] = '<a href="' . $edit_link . '">' . __('Edit', 'powerpress') . '</a>';
153
+ $actions['delete'] = "<a class='submitdelete' href='". admin_url() . wp_nonce_url("admin.php?page=". powerpress_admin_get_page() ."&amp;action=powerpress-delete-feed&amp;feed_slug=$feed_slug", 'powerpress-delete-feed-' . $feed_slug) . "' onclick=\"if ( confirm('" . esc_js(sprintf( __("You are about to delete feed '%s'\n 'Cancel' to stop, 'OK' to delete.", 'powerpress'), esc_attr($feed_title) )) . "') ) { return true;}return false;\">" . __('Delete', 'powerpress') . "</a>";
154
+ if(!isset($General['custom_feeds'][ $feed_slug ])){
155
+ unset($actions['delete']);
156
+ }
157
+ $action_count = count($actions);
158
+ $i = 0;
159
+ echo '<div class="row-actions">';
160
+ foreach ($actions as $action => $linkaction){
161
+ ++$i;
162
+ ($i == $action_count) ? $sep = '' : $sep = ' | ';
163
+ echo '<span class="'.$action.'">'.$linkaction.$sep .'</span>';
164
+ }
165
+ echo '</div>';
166
+ echo '</td>';
167
+ } break;
168
+
169
+ case 'url': {
170
+ echo "<td $class><a href='$url' title='". esc_attr(sprintf(__('Visit %s', 'powerpress'), $feed_title))."' target=\"_blank\">". esc_html($short_url) ."</a>";
171
  echo '<div class="row-actions">';
172
+ if(defined('POWERPRESS_FEEDVALIDATOR_URL')){
173
+ echo '<span class="'.$action .'"><a href="'. POWERPRESS_FEEDVALIDATOR_URL . urlencode($url) .'" target="_blank">' . __('Validate Feed', 'powerpress') . '</a></span>';
 
 
174
  }
175
  echo '</div>';
176
+ echo "</td>";
 
 
 
 
 
 
 
 
 
 
177
 
178
+ } break;
179
 
180
+ case 'episode-count': {
181
 
182
+ echo "<td $class>$episode_total";
183
+ echo "</td>";
184
 
185
+ } break;
186
 
187
+ default: {
188
+ } break;
 
189
  }
 
 
 
190
  }
191
+
192
+ echo "\n </tr>\n";
193
+ $count++;
194
+ }
195
+ ?>
196
  </tbody>
197
+ </table>
 
198
 
199
+ <?php if(!isset($General['custom_feeds'][ $feed_slug ])) { ?>
200
+ <p style="margin-top: 20px;"><?php echo sprintf( __('Note: The default channel "Podcast" is currently using global PowerPress settings. Click %s to customize the default "Podcast" channel.', 'powerpress'),
201
+ '<a href="'. admin_url('admin.php?page='. powerpress_admin_get_page() .'&amp;action=powerpress-editfeed&amp;feed_slug=podcast') .'">'. __('Edit', 'powerpress') .'</a>'); ?>
202
+ </p>
203
+ <?php } ?>
204
+ </div>
205
 
206
+ <div id="ajax-response"></div>
207
+ <input type="hidden" name="action" value="powerpress-addfeed"/>
208
+ <?php } ?>
209
+
210
+ <style>
211
+ .pp-col-50 { width: 50%; }
212
+ .column-url { width: 40%; }
213
+ .column-name { width: 30%; }
214
+ .column-feed-slug { width: 15%; }
215
+ .column-episode-count { width: 15%; }
216
+ </style>
powerpressadmin-jquery.php CHANGED
@@ -273,11 +273,12 @@ function powerpress_admin_jquery_init()
273
  $Programs[$row['program_keyword']] = $row['program_title'];
274
  }
275
  }
 
276
  if( $Error ) {
277
  powerpress_page_message_add_notice($Error, 'inline', false);
278
- }
 
279
  $FeedSlug = sanitize_title($_GET['podcast-feed']);
280
- powerpress_admin_jquery_header( __('Select Media', 'powerpress'), true );
281
  ?>
282
  <style>
283
  .error {
@@ -574,7 +575,8 @@ window.onload = function() {
574
  echo '<p>';
575
  }
576
  ?>
577
- <?php } ?>
 
578
  <p style="text-align: center;"><a href="#" onclick="self.parent.tb_remove();"><?php echo __('Close', 'powerpress'); ?></a></p>
579
  </div>
580
 
273
  $Programs[$row['program_keyword']] = $row['program_title'];
274
  }
275
  }
276
+ powerpress_admin_jquery_header( __('Select Media', 'powerpress'), true );
277
  if( $Error ) {
278
  powerpress_page_message_add_notice($Error, 'inline', false);
279
+ powerpress_page_message_print();
280
+ } else {
281
  $FeedSlug = sanitize_title($_GET['podcast-feed']);
 
282
  ?>
283
  <style>
284
  .error {
575
  echo '<p>';
576
  }
577
  ?>
578
+ <?php }
579
+ }?>
580
  <p style="text-align: center;"><a href="#" onclick="self.parent.tb_remove();"><?php echo __('Close', 'powerpress'); ?></a></p>
581
  </div>
582
 
powerpressadmin.php CHANGED
@@ -2894,9 +2894,9 @@ function powerpress_check_url(url, DestDiv)
2894
  validChars = ':0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-_.?=&:';
2895
 
2896
  }
2897
- // for blubrry's programmatic ads, we include %s to encode the feed url in the query string
2898
- if (url.includes('mc.blubrry.com')) {
2899
- validChars = ':0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-_.?=&%:';
2900
  }
2901
  // for blubrry's programmatic ads, we include %s to encode the feed url in the query string
2902
  if (url.includes('mc.blubrry.com')) {
@@ -3255,6 +3255,12 @@ function powerpress_send_to_poster_image(url)
3255
 
3256
  add_action('admin_head', 'powerpress_admin_head');
3257
 
 
 
 
 
 
 
3258
  function powerpress_check_account_verified_popup($no_signout_link = false) {
3259
  $link_action_url = admin_url('admin.php?action=powerpress-jquery-account-verify');
3260
  $link_action = 'powerpress-jquery-account-verify';
@@ -3430,7 +3436,7 @@ function powerpress_create_subscribe_page()
3430
  }
3431
  }
3432
  $languages[] = 'en_US'; // fallback to the en_US version
3433
-
3434
  $template_content = false;
3435
  foreach( $languages as $index => $lang )
3436
  {
@@ -3452,6 +3458,10 @@ function powerpress_create_subscribe_page()
3452
  }
3453
  return false;
3454
  }
 
 
 
 
3455
 
3456
  // Create page here...
3457
  global $user_ID;
2894
  validChars = ':0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-_.?=&:';
2895
 
2896
  }
2897
+ // art19 urls have commas and %s
2898
+ if (url.includes('art19.com')) {
2899
+ validChars = ':0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-_.?=&,%:';
2900
  }
2901
  // for blubrry's programmatic ads, we include %s to encode the feed url in the query string
2902
  if (url.includes('mc.blubrry.com')) {
3255
 
3256
  add_action('admin_head', 'powerpress_admin_head');
3257
 
3258
+ // our sidebar widget throws an error in the block widget editor
3259
+ function example_theme_support() {
3260
+ remove_theme_support( 'widgets-block-editor' );
3261
+ }
3262
+ add_action( 'after_setup_theme', 'example_theme_support' );
3263
+
3264
  function powerpress_check_account_verified_popup($no_signout_link = false) {
3265
  $link_action_url = admin_url('admin.php?action=powerpress-jquery-account-verify');
3266
  $link_action = 'powerpress-jquery-account-verify';
3436
  }
3437
  }
3438
  $languages[] = 'en_US'; // fallback to the en_US version
3439
+
3440
  $template_content = false;
3441
  foreach( $languages as $index => $lang )
3442
  {
3458
  }
3459
  return false;
3460
  }
3461
+
3462
+ // delete heading stuff from template
3463
+ $template_array = explode('[powerpress_subscribe]', $template_content);
3464
+ $template_content = '[powerpress_subscribe]' . $template_array[1];
3465
 
3466
  // Create page here...
3467
  global $user_ID;
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: podcasting, podcast, podcaster, powerpress, itunes, apple, apple podcasts,
4
  Requires at least: 3.6
5
  Requires PHP: 5.2
6
  Tested up to: 6.0
7
- Stable tag: 9.6
8
  Donate link: https://create.blubrry.com/resources/podcast-media-hosting/
9
  License: GPLv2 or later
10
 
@@ -185,6 +185,12 @@ If you are a fan of PowerPress, we would greatly appreciate it if you could take
185
 
186
 
187
  == Changelog ==
 
 
 
 
 
 
188
  = 9.6 =
189
  * Released on 10/10/2022
190
  * Redesign pages for tools, channels, categories, taxonomies, and post types
4
  Requires at least: 3.6
5
  Requires PHP: 5.2
6
  Tested up to: 6.0
7
+ Stable tag: 9.6.1
8
  Donate link: https://create.blubrry.com/resources/podcast-media-hosting/
9
  License: GPLv2 or later
10
 
185
 
186
 
187
  == Changelog ==
188
+ = 9.6.1 =
189
+ * Released on 10/24/2022
190
+ * Various bugfixes
191
+ * Refactored Channels page and added missing ajax div
192
+ * Refactored form submission on Category page
193
+
194
  = 9.6 =
195
  * Released on 10/10/2022
196
  * Redesign pages for tools, channels, categories, taxonomies, and post types