PowerPress Podcasting plugin by Blubrry - Version 1.0.3

Version Description

  • Released on 10/28/2008
  • Added oga, spx, ogv and ogx (variations of ogg) to list of media file extensions detected.
  • Added note with remove option below Media URL when media file is hosted by blubrry.com.
  • Added Video Cover Image option for those who want to specify a URL to an image to display in place of the default play video box for QuickTime formatted video (m4v, mov, etc...).
  • Added link to enable Category Podcasting from the Categories page in WordPress. Added 'Podcast Settings' and 'Add Podcasting' links under Categories table listing.
  • Retitled Category Casting to Category Podcasting to clear up confusion.
  • Simple Mode option retitled to 'Advanced Mode' to clear up confusion.
  • Fixed bug where Media URL value starting with a slash '/' resulted in 2 slashes when the Default Media URL was added.
  • Fixed bug with Verify button setting minutes in hour field and seconds in minute field for media hosted by blubrry.com.
  • Fixed sufficient permissions to access this page bug when selecting players in Simple Mode. (Thanks Ben!)
  • Fixed bug with Mp3 flash maxi player where
    container was not closed properly. (Thanks JWM!)
  • Fixed bug with PowerPress conflicting with the headspace2 plugin in the blog dashboard. (Thanks digigirl!)
  • Fixed Protected Content link by adding slash before wp-login.php. (Thanks Grant!)
  • Updated tags for player embeds so they are XML complaint. (Thanks billhector!)
  • Removed unneeded javascript include to audio-player.js. (thanks Mark!)
  • Added alt tags to images to support XHTML.
Download this release

Release Info

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

Code changes from version 1.0.2 to 1.0.3

powerpress-player.php CHANGED
@@ -103,13 +103,13 @@ function powerpressplayer_build($media_url, $Settings, $ExtraData = array())
103
  }
104
  // TODO: Add audio-player player here
105
  $content .= '<div class="powerpress_player" id="powerpress_player_'. $g_powerpress_player_id .'">';
106
- $content .= '<script language="JavaScript" src="'.powerpressplayer_get_root_url().'audio-player.js"></script>'.PHP_EOL;
107
  $content .= '<object type="application/x-shockwave-flash" data="'.powerpressplayer_get_root_url().'audio-player.swf" id="'.$g_powerpress_player_id.'" height="24" width="290">'.PHP_EOL;
108
- $content .= '<param name="movie" value="'.powerpressplayer_get_root_url().'/audio-player.swf">'.PHP_EOL;
109
- $content .= '<param name="FlashVars" value="playerID='.$g_powerpress_player_id.'&amp;soundFile='.$media_url.$flashvars.'">'.PHP_EOL;
110
- $content .= '<param name="quality" value="high">'.PHP_EOL;
111
- $content .= '<param name="menu" value="false">'.PHP_EOL;
112
- $content .= '<param name="wmode" value="transparent">'.PHP_EOL;
113
  $content .= '</object>'.PHP_EOL;
114
  $content .= '</div>'.PHP_EOL;
115
 
@@ -215,7 +215,7 @@ function powerpressplayer_build($media_url, $Settings, $ExtraData = array())
215
 
216
 
217
  // TODO: Add flashmp3-maxi player here
218
- $content = '<div class="powerpress_player" id="powerpress_player_'. $g_powerpress_player_id .'"></div>'.PHP_EOL;
219
  $content .= '<object type="application/x-shockwave-flash" data="'. powerpressplayer_get_root_url().'player_mp3_maxi.swf" id="'.$g_powerpress_player_id.'" width="'. $width.'" height="'. $height .'">'.PHP_EOL;
220
  $content .= '<param name="movie" value="'. powerpressplayer_get_root_url().'player_mp3_maxi.swf" />'.PHP_EOL;
221
  $content .= $transparency.PHP_EOL;
103
  }
104
  // TODO: Add audio-player player here
105
  $content .= '<div class="powerpress_player" id="powerpress_player_'. $g_powerpress_player_id .'">';
106
+ //$content .= '<script language="JavaScript" src="'.powerpressplayer_get_root_url().'audio-player.js"></script>'.PHP_EOL;
107
  $content .= '<object type="application/x-shockwave-flash" data="'.powerpressplayer_get_root_url().'audio-player.swf" id="'.$g_powerpress_player_id.'" height="24" width="290">'.PHP_EOL;
108
+ $content .= '<param name="movie" value="'.powerpressplayer_get_root_url().'/audio-player.swf" />'.PHP_EOL;
109
+ $content .= '<param name="FlashVars" value="playerID='.$g_powerpress_player_id.'&amp;soundFile='.$media_url.$flashvars.'" />'.PHP_EOL;
110
+ $content .= '<param name="quality" value="high" />'.PHP_EOL;
111
+ $content .= '<param name="menu" value="false" />'.PHP_EOL;
112
+ $content .= '<param name="wmode" value="transparent" />'.PHP_EOL;
113
  $content .= '</object>'.PHP_EOL;
114
  $content .= '</div>'.PHP_EOL;
115
 
215
 
216
 
217
  // TODO: Add flashmp3-maxi player here
218
+ $content = '<div class="powerpress_player" id="powerpress_player_'. $g_powerpress_player_id .'">'.PHP_EOL;
219
  $content .= '<object type="application/x-shockwave-flash" data="'. powerpressplayer_get_root_url().'player_mp3_maxi.swf" id="'.$g_powerpress_player_id.'" width="'. $width.'" height="'. $height .'">'.PHP_EOL;
220
  $content .= '<param name="movie" value="'. powerpressplayer_get_root_url().'player_mp3_maxi.swf" />'.PHP_EOL;
221
  $content .= $transparency.PHP_EOL;
powerpress.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Blubrry PowerPress
4
  Plugin URI: http://www.blubrry.com/powerpress/
5
  Description: <a href="http://www.blubrry.com/powerpress/" target="_blank">Blubrry PowerPress</a> adds podcasting support to your blog. Features include: media player, 3rd party statistics, iTunes integration, Blubrry Services (Media Statistics and Hosting) integration and a lot more.
6
- Version: 1.0.2
7
  Author: Blubrry
8
  Author URI: http://www.blubrry.com/
9
  Change Log:
@@ -33,7 +33,7 @@ if( !function_exists('add_action') )
33
  die("access denied.");
34
 
35
  // WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
36
- define('POWERPRESS_VERSION', '1.0.2' );
37
 
38
  /////////////////////////////////////////////////////
39
  // The following define options should be placed in your
@@ -211,7 +211,13 @@ function powerpress_content($content)
211
  if( $EpisodeData && isset($EpisodeData['embed']) )
212
  $new_content .= $EpisodeData['embed'];
213
  if( !isset($EpisodeData['no_player']) )
214
- $new_content .= apply_filters('powerpress_player', '', powerpress_add_flag_to_redirect_url($EpisodeData['url'], 'p'), array('feed'=>$feed_slug, 'type'=>$EpisodeData['type']) );
 
 
 
 
 
 
215
  }
216
 
217
  $new_content .= powerpress_get_player_links($post->ID, $feed_slug, $EpisodeData);
@@ -1237,7 +1243,7 @@ function powerpress_player_filter($content, $media_url, $ExtraData = array() )
1237
  $content .= '<a href="'. $media_url .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" onclick="';
1238
  $content .= "return powerpress_embed_quicktime('powerpress_player_{$g_powerpress_player_id}', '{$media_url}', {$player_width}, {$player_height}, '{$GeneralSettings['player_scale']}' );";
1239
  $content .= '">';
1240
- $content .= '<img src="'. $cover_image .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" />';
1241
  $content .= '</a>';
1242
  $content .= "</div>\n";
1243
  }
@@ -1274,13 +1280,11 @@ function powerpress_player_filter($content, $media_url, $ExtraData = array() )
1274
  if( $cover_image == '' )
1275
  $cover_image = powerpress_get_root_url() . 'play_video_default.jpg';
1276
 
1277
- $content .= '<div class="powerpress_player" id="powerpress_player_'. $g_powerpress_player_id .'">'.PHP_EOL;
1278
  $content .= '<a href="'. $media_url .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" onclick="';
1279
  $content .= "return powerpress_embed_winplayer('powerpress_player_{$g_powerpress_player_id}', '{$media_url}', {$player_width}, {$player_height} );";
1280
  $content .= '">';
1281
- $content .= '<img src="'. $cover_image .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" border="0" />';
1282
  $content .= '</a>';
1283
- $content .= "</div>\n";
1284
  }
1285
 
1286
  if( $firefox )
@@ -1307,7 +1311,7 @@ function powerpress_player_filter($content, $media_url, $ExtraData = array() )
1307
  $content .= '<a href="'. $media_url .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" onclick="';
1308
  $content .= "return powerpress_embed_swf('powerpress_player_{$g_powerpress_player_id}', '{$media_url}', {$player_width}, {$player_height} );";
1309
  $content .= '">';
1310
- $content .= '<img src="'. $cover_image .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" />';
1311
  $content .= '</a>';
1312
  }
1313
  $content .= "</div>\n";
@@ -1328,7 +1332,7 @@ function powerpress_player_filter($content, $media_url, $ExtraData = array() )
1328
 
1329
  $content .= '<div class="powerpress_player" id="powerpress_player_'. $g_powerpress_player_id .'">';
1330
  $content .= '<a href="'. $media_url .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'"'. ($autoplay?'':' target="_blank"') .'>';
1331
- $content .= '<img src="'. $cover_image .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" border="0" />';
1332
  $content .= '</a>';
1333
  $content .= "</div>\n";
1334
 
@@ -1371,7 +1375,10 @@ function powerpress_shortcode_handler( $attributes, $content = null )
1371
  $EpisodeData = powerpress_get_enclosure_data($post->ID, $feed);
1372
  if( isset($EpisodeData['embed']) && $EpisodeData['embed'] )
1373
  $return = $EpisodeData['embed'];
1374
-
 
 
 
1375
  if( !isset($EpisodeData['no_player']) )
1376
  {
1377
  if( isset($GeneralSettings['premium_caps']) && $GeneralSettings['premium_caps'] && !powerpress_premium_content_authorized($feed) )
@@ -1404,6 +1411,10 @@ function powerpress_shortcode_handler( $attributes, $content = null )
1404
 
1405
  if( isset($EpisodeData['embed']) && $EpisodeData['embed'] )
1406
  $return .= $EpisodeData['embed'];
 
 
 
 
1407
 
1408
  if( isset($GeneralSettings['premium_caps']) && $GeneralSettings['premium_caps'] && !powerpress_premium_content_authorized($GeneralSettings) )
1409
  {
@@ -1413,7 +1424,7 @@ function powerpress_shortcode_handler( $attributes, $content = null )
1413
 
1414
  if( !isset($EpisodeData['no_player']) )
1415
  {
1416
- $return .= apply_filters('powerpress_player', '', powerpress_add_flag_to_redirect_url($EpisodeData['url'], 'p'), array('feed'=>$feed_slug, 'image'=>$image, 'type'=>$EpisodeData['type']) );
1417
  $return .= powerpress_get_player_links($post->ID, $feed_slug, $EpisodeData );
1418
  }
1419
  }
@@ -1539,8 +1550,15 @@ function powerpress_get_contenttype($file, $use_wp_check_filetype = true)
1539
  return 'audio/m4b';
1540
  case 'm4r': // iPhone ringtone format
1541
  return 'audio/m4r';
 
1542
  case 'ogg':
 
 
1543
  return 'audio/ogg';
 
 
 
 
1544
  case 'wma':
1545
  return 'audio/x-ms-wma';
1546
  case 'wax':
@@ -2217,7 +2235,7 @@ function powerpress_premium_content_message($post_id, $feed_slug, $EpisodeData =
2217
  if( isset($FeedSettings['premium_label']) && $FeedSettings['premium_label'] != '' ) // User has a custom label
2218
  return '<p class="powerpress_links powerpress_links_'. $extension .'">'. $FeedSettings['premium_label'] . '</p>'.PHP_EOL;
2219
 
2220
- return '<p class="powerpress_links powerpress_links_'. $extension .'">'. htmlspecialchars($FeedSettings['title']) .': <a href="'. get_bloginfo('home') .'wp-login.php" title="Protected Content">(Protected Content)</a></p>'.PHP_EOL;
2221
  }
2222
  /*
2223
  End Helper Functions
3
  Plugin Name: Blubrry PowerPress
4
  Plugin URI: http://www.blubrry.com/powerpress/
5
  Description: <a href="http://www.blubrry.com/powerpress/" target="_blank">Blubrry PowerPress</a> adds podcasting support to your blog. Features include: media player, 3rd party statistics, iTunes integration, Blubrry Services (Media Statistics and Hosting) integration and a lot more.
6
+ Version: 1.0.3
7
  Author: Blubrry
8
  Author URI: http://www.blubrry.com/
9
  Change Log:
33
  die("access denied.");
34
 
35
  // WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
36
+ define('POWERPRESS_VERSION', '1.0.3' );
37
 
38
  /////////////////////////////////////////////////////
39
  // The following define options should be placed in your
211
  if( $EpisodeData && isset($EpisodeData['embed']) )
212
  $new_content .= $EpisodeData['embed'];
213
  if( !isset($EpisodeData['no_player']) )
214
+ {
215
+ $image = '';
216
+ if( isset($EpisodeData['image']) && $EpisodeData['image'] != '' )
217
+ $image = $EpisodeData['image'];
218
+
219
+ $new_content .= apply_filters('powerpress_player', '', powerpress_add_flag_to_redirect_url($EpisodeData['url'], 'p'), array('feed'=>$feed_slug, 'image'=>$image, 'type'=>$EpisodeData['type']) );
220
+ }
221
  }
222
 
223
  $new_content .= powerpress_get_player_links($post->ID, $feed_slug, $EpisodeData);
1243
  $content .= '<a href="'. $media_url .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" onclick="';
1244
  $content .= "return powerpress_embed_quicktime('powerpress_player_{$g_powerpress_player_id}', '{$media_url}', {$player_width}, {$player_height}, '{$GeneralSettings['player_scale']}' );";
1245
  $content .= '">';
1246
+ $content .= '<img src="'. $cover_image .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" />';
1247
  $content .= '</a>';
1248
  $content .= "</div>\n";
1249
  }
1280
  if( $cover_image == '' )
1281
  $cover_image = powerpress_get_root_url() . 'play_video_default.jpg';
1282
 
 
1283
  $content .= '<a href="'. $media_url .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" onclick="';
1284
  $content .= "return powerpress_embed_winplayer('powerpress_player_{$g_powerpress_player_id}', '{$media_url}', {$player_width}, {$player_height} );";
1285
  $content .= '">';
1286
+ $content .= '<img src="'. $cover_image .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" />';
1287
  $content .= '</a>';
 
1288
  }
1289
 
1290
  if( $firefox )
1311
  $content .= '<a href="'. $media_url .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" onclick="';
1312
  $content .= "return powerpress_embed_swf('powerpress_player_{$g_powerpress_player_id}', '{$media_url}', {$player_width}, {$player_height} );";
1313
  $content .= '">';
1314
+ $content .= '<img src="'. $cover_image .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" />';
1315
  $content .= '</a>';
1316
  }
1317
  $content .= "</div>\n";
1332
 
1333
  $content .= '<div class="powerpress_player" id="powerpress_player_'. $g_powerpress_player_id .'">';
1334
  $content .= '<a href="'. $media_url .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'"'. ($autoplay?'':' target="_blank"') .'>';
1335
+ $content .= '<img src="'. $cover_image .'" title="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS_PLAY_TEXT) .'" />';
1336
  $content .= '</a>';
1337
  $content .= "</div>\n";
1338
 
1375
  $EpisodeData = powerpress_get_enclosure_data($post->ID, $feed);
1376
  if( isset($EpisodeData['embed']) && $EpisodeData['embed'] )
1377
  $return = $EpisodeData['embed'];
1378
+
1379
+ if( $image == '' && isset($EpisodeData['image']) && $EpisodeData['image'] )
1380
+ $image = $EpisodeData['image'];
1381
+
1382
  if( !isset($EpisodeData['no_player']) )
1383
  {
1384
  if( isset($GeneralSettings['premium_caps']) && $GeneralSettings['premium_caps'] && !powerpress_premium_content_authorized($feed) )
1411
 
1412
  if( isset($EpisodeData['embed']) && $EpisodeData['embed'] )
1413
  $return .= $EpisodeData['embed'];
1414
+
1415
+ $image_current = $image;
1416
+ if( $image_current == '' && isset($EpisodeData['image']) && $EpisodeData['image'] )
1417
+ $image_current = $EpisodeData['image'];
1418
 
1419
  if( isset($GeneralSettings['premium_caps']) && $GeneralSettings['premium_caps'] && !powerpress_premium_content_authorized($GeneralSettings) )
1420
  {
1424
 
1425
  if( !isset($EpisodeData['no_player']) )
1426
  {
1427
+ $return .= apply_filters('powerpress_player', '', powerpress_add_flag_to_redirect_url($EpisodeData['url'], 'p'), array('feed'=>$feed_slug, 'image'=>$image_current, 'type'=>$EpisodeData['type']) );
1428
  $return .= powerpress_get_player_links($post->ID, $feed_slug, $EpisodeData );
1429
  }
1430
  }
1550
  return 'audio/m4b';
1551
  case 'm4r': // iPhone ringtone format
1552
  return 'audio/m4r';
1553
+ // OGG Internet contnet types as set forth by rfc5334 (http://tools.ietf.org/html/rfc5334)
1554
  case 'ogg':
1555
+ case 'oga':
1556
+ case 'spx':
1557
  return 'audio/ogg';
1558
+ case 'ogv':
1559
+ return 'video/ogg';
1560
+ case 'ogx':
1561
+ return 'application/ogg';
1562
  case 'wma':
1563
  return 'audio/x-ms-wma';
1564
  case 'wax':
2235
  if( isset($FeedSettings['premium_label']) && $FeedSettings['premium_label'] != '' ) // User has a custom label
2236
  return '<p class="powerpress_links powerpress_links_'. $extension .'">'. $FeedSettings['premium_label'] . '</p>'.PHP_EOL;
2237
 
2238
+ return '<p class="powerpress_links powerpress_links_'. $extension .'">'. htmlspecialchars($FeedSettings['title']) .': <a href="'. get_bloginfo('home') .'/wp-login.php" title="Protected Content">(Protected Content)</a></p>'.PHP_EOL;
2239
  }
2240
  /*
2241
  End Helper Functions
powerpressadmin-basic.php CHANGED
@@ -106,8 +106,8 @@ function SelectEntryBox(mode)
106
  <h3>Advanced Options</h3>
107
  <div style="margin-left: 50px;">
108
  <div>
109
- <input type="checkbox" name="General[advanced_mode]" value="0" <?php echo ($General['advanced_mode']==0?' checked':''); ?>/> <strong>Simple Mode</strong> -
110
- Display only the essential settings. Perfect for folks who may feel overwelmed.
111
  </div>
112
  <div>
113
  <input type="checkbox" name="General[player_options]" value="1" <?php echo ($General['player_options']?' checked':''); ?>/> <strong>Audio Player Options</strong> -
@@ -118,7 +118,7 @@ function SelectEntryBox(mode)
118
  Manage multiple media files and/or formats to one blog post. <span style="font-size: 85%;">(feature will appear in left menu when enabled)</span>
119
  </div>
120
  <div>
121
- <input type="checkbox" name="General[cat_casting]" value="1" <?php echo ($General['cat_casting']?' checked':''); ?>/> <strong>Category Casting</strong> -
122
  Manage category podcast feeds. <span style="font-size: 85%;">(feature will appear in left menu when enabled)</span>
123
  </div>
124
  </div>
@@ -201,6 +201,9 @@ function powerpressadmin_edit_entry_options($General)
201
  (Enter embed code from sites such as YouTube, Viddler and Blip.tv)</p>
202
  <p style="margin-top: 15px;"><input id="episode_box_no_player" class="episode_box_option" name="General[episode_box_no_player]" type="checkbox" value="1"<?php if( $General['episode_box_no_player'] ) echo ' checked'; ?> /> No Player Option
203
  (Disable player on a per episode basis)</p>
 
 
 
204
 
205
  <p style="margin-top: 15px;"><input id="episode_box_keywords" class="episode_box_option" name="General[episode_box_keywords]" type="checkbox" value="1"<?php if( $General['episode_box_keywords'] ) echo ' checked'; ?> /> iTunes Keywords Field
206
  (Leave unchecked to use your blog post tags)</p>
@@ -677,30 +680,7 @@ while( list($value,$desc) = each($playeroptions) )
677
  </tr>
678
  </table>
679
 
680
- <div id="new_window_settings" style="display: <?php echo ( $General['player_function']==1 || $General['player_function']==3 ?'block':'none'); ?>">
681
- <table class="form-table">
682
 
683
- <tr valign="top">
684
- <th scope="row">
685
- <?php echo __("New Window Width"); ?>
686
- </th>
687
- <td>
688
- <input type="text" name="General[new_window_width]" style="width: 50px;" onkeyup="javascript:this.value=this.value.replace(/[^0-9]/g, '');" value="<?php echo $General['new_window_width']; ?>" maxlength="4" />
689
- Width of new window (leave blank for 320 default)
690
- </td>
691
- </tr>
692
-
693
- <tr valign="top">
694
- <th scope="row">
695
- <?php echo __("New Window Height"); ?>
696
- </th>
697
- <td>
698
- <input type="text" name="General[new_window_height]" style="width: 50px;" onkeyup="javascript:this.value=this.value.replace(/[^0-9]/g, '');" value="<?php echo $General['new_window_height']; ?>" maxlength="4" />
699
- Height of new window (leave blank for 240 default)
700
- </td>
701
- </tr>
702
- </table>
703
- </div>
704
 
705
 
706
  <table class="form-table">
@@ -741,14 +721,45 @@ while( list($value,$desc) = each($linkoptions) )
741
 
742
  ?>
743
  </select>
744
- <p style="margin-top: 5px;">
745
  Use this option if you are having problems with the players not appearing in your pages.
746
  </p>
747
  </td>
748
  </tr>
749
  </table>
750
 
 
 
 
 
 
 
 
751
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
752
 
753
  <h3><?php echo __("Video Player Settings"); ?></h3>
754
 
@@ -798,7 +809,7 @@ while( list($value,$desc) = each($scale_options) )
798
  <span id="player_scale_custom" style="display: <?php echo (is_numeric($General['player_scale'])?'inline':'none'); ?>">
799
  Scale: <input type="text" name="PlayerScaleCustom" style="width: 50px;" onkeyup="javascript:this.value=this.value.replace(/[^0-9.]/g, '');" value="<?php echo (is_numeric($General['player_scale'])?$General['player_scale']:''); ?>" maxlength="4" /> e.g. 1.5
800
  </span>
801
- <p style="margin-top: 5px;">
802
  If you do not see video, adjust the width, height and scale settings above.
803
  </p>
804
  </td>
106
  <h3>Advanced Options</h3>
107
  <div style="margin-left: 50px;">
108
  <div>
109
+ <input type="checkbox" name="General[advanced_mode]" value="1" <?php echo ($General['advanced_mode']==1?' checked':''); ?>/> <strong>Advanced Mode</strong> -
110
+ Uncheck to display only the essential settings for podcasting.
111
  </div>
112
  <div>
113
  <input type="checkbox" name="General[player_options]" value="1" <?php echo ($General['player_options']?' checked':''); ?>/> <strong>Audio Player Options</strong> -
118
  Manage multiple media files and/or formats to one blog post. <span style="font-size: 85%;">(feature will appear in left menu when enabled)</span>
119
  </div>
120
  <div>
121
+ <input type="checkbox" name="General[cat_casting]" value="1" <?php echo ($General['cat_casting']?' checked':''); ?>/> <strong>Category Podcasting</strong> -
122
  Manage category podcast feeds. <span style="font-size: 85%;">(feature will appear in left menu when enabled)</span>
123
  </div>
124
  </div>
201
  (Enter embed code from sites such as YouTube, Viddler and Blip.tv)</p>
202
  <p style="margin-top: 15px;"><input id="episode_box_no_player" class="episode_box_option" name="General[episode_box_no_player]" type="checkbox" value="1"<?php if( $General['episode_box_no_player'] ) echo ' checked'; ?> /> No Player Option
203
  (Disable player on a per episode basis)</p>
204
+
205
+ <p style="margin-top: 15px;"><input id="episode_box_cover_image" class="episode_box_option" name="General[episode_box_cover_image]" type="checkbox" value="1"<?php if( $General['episode_box_cover_image'] ) echo ' checked'; ?> /> Video Cover Image
206
+ (specify URL to image to display in place of QuickTime video)</p>
207
 
208
  <p style="margin-top: 15px;"><input id="episode_box_keywords" class="episode_box_option" name="General[episode_box_keywords]" type="checkbox" value="1"<?php if( $General['episode_box_keywords'] ) echo ' checked'; ?> /> iTunes Keywords Field
209
  (Leave unchecked to use your blog post tags)</p>
680
  </tr>
681
  </table>
682
 
 
 
683
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
684
 
685
 
686
  <table class="form-table">
721
 
722
  ?>
723
  </select>
724
+ <p style="margin-top: 5px; margin-bottom:0;">
725
  Use this option if you are having problems with the players not appearing in your pages.
726
  </p>
727
  </td>
728
  </tr>
729
  </table>
730
 
731
+ <?php
732
+ if( @$General['advanced_mode'] )
733
+ {
734
+ ?>
735
+ <div id="new_window_settings" style="display: <?php echo ( $General['player_function']==1 || $General['player_function']==3 ?'block':'none'); ?>">
736
+ <h3>Play in New Window Settings</h3>
737
+ <table class="form-table">
738
 
739
+ <tr valign="top">
740
+ <th scope="row">
741
+ <?php echo __("New Window Width"); ?>
742
+ </th>
743
+ <td>
744
+ <input type="text" name="General[new_window_width]" style="width: 50px;" onkeyup="javascript:this.value=this.value.replace(/[^0-9]/g, '');" value="<?php echo $General['new_window_width']; ?>" maxlength="4" />
745
+ Width of new window (leave blank for 320 default)
746
+ </td>
747
+ </tr>
748
+
749
+ <tr valign="top">
750
+ <th scope="row">
751
+ <?php echo __("New Window Height"); ?>
752
+ </th>
753
+ <td>
754
+ <input type="text" name="General[new_window_height]" style="width: 50px;" onkeyup="javascript:this.value=this.value.replace(/[^0-9]/g, '');" value="<?php echo $General['new_window_height']; ?>" maxlength="4" />
755
+ Height of new window (leave blank for 240 default)
756
+ </td>
757
+ </tr>
758
+ </table>
759
+ </div>
760
+ <?php
761
+ }
762
+ ?>
763
 
764
  <h3><?php echo __("Video Player Settings"); ?></h3>
765
 
809
  <span id="player_scale_custom" style="display: <?php echo (is_numeric($General['player_scale'])?'inline':'none'); ?>">
810
  Scale: <input type="text" name="PlayerScaleCustom" style="width: 50px;" onkeyup="javascript:this.value=this.value.replace(/[^0-9.]/g, '');" value="<?php echo (is_numeric($General['player_scale'])?$General['player_scale']:''); ?>" maxlength="4" /> e.g. 1.5
811
  </span>
812
+ <p style="margin-top: 5px; margin-bottom: 0;">
813
  If you do not see video, adjust the width, height and scale settings above.
814
  </p>
815
  </td>
powerpressadmin-categoryfeeds.php CHANGED
@@ -20,10 +20,10 @@ function powerpress_admin_categoryfeeds()
20
 
21
 
22
  ?>
23
- <h2><?php echo __("Category Podcast Feeds"); ?></h2>
24
  <p>
25
- Category podcast feeds add custom podcast settings to specific blog category feeds.
26
- Category podcast feeds allow you to organize episodes by topic.
27
  </p>
28
  <p>
29
  If you are looking to organize episodes by file or format, please use <a href="<?php echo admin_url('admin.php?page=powerpress/powerpressadmin_customfeeds.php'); ?>" title="Custom Podcast Feeds">Custom Podcast Feeds</a>.
20
 
21
 
22
  ?>
23
+ <h2><?php echo __("Category Podcasting"); ?></h2>
24
  <p>
25
+ Category Podcasting adds custom podcast settings to specific blog category feeds.
26
+ Category Podcasting allows you to organize episodes by topic.
27
  </p>
28
  <p>
29
  If you are looking to organize episodes by file or format, please use <a href="<?php echo admin_url('admin.php?page=powerpress/powerpressadmin_customfeeds.php'); ?>" title="Custom Podcast Feeds">Custom Podcast Feeds</a>.
powerpressadmin-dashboard.php CHANGED
@@ -100,7 +100,7 @@ function powerpress_dashboard_stats_content()
100
  {
101
  ?>
102
  <div id="blubrry_stats_media_show">
103
- <a href="<?php echo admin_url(); ?>?action=powerpress-jquery-stats&KeepThis=true&TB_iframe=true" title="Blubrry Media statistics" class="thickbox">more</a>
104
  </div>
105
  <?php } ?>
106
  </div>
100
  {
101
  ?>
102
  <div id="blubrry_stats_media_show">
103
+ <a href="<?php echo admin_url(); ?>?action=powerpress-jquery-stats&amp;KeepThis=true&amp;TB_iframe=true&amp;modal=true" title="Blubrry Media statistics" class="thickbox">more</a>
104
  </div>
105
  <?php } ?>
106
  </div>
powerpressadmin-diagnostics.php CHANGED
@@ -410,7 +410,7 @@
410
  </tr>
411
  </table>
412
 
413
- <form enctype="multipart/form-data" method="get" action="<?php echo admin_url( ($GeneralSettings['advanced_mode']==1?'admin':'options-general') .'.php'); ?>">
414
  <input type="hidden" name="action" value="powerpress-diagnostics" />
415
  <input type="hidden" name="page" value="powerpress/powerpressadmin_<?php echo ($GeneralSettings['advanced_mode']==1?'tools':'basic'); ?>.php" />
416
  <?php
410
  </tr>
411
  </table>
412
 
413
+ <form enctype="multipart/form-data" method="get" action="<?php echo admin_url('admin.php'); ?>">
414
  <input type="hidden" name="action" value="powerpress-diagnostics" />
415
  <input type="hidden" name="page" value="powerpress/powerpressadmin_<?php echo ($GeneralSettings['advanced_mode']==1?'tools':'basic'); ?>.php" />
416
  <?php
powerpressadmin-editfeed.php CHANGED
@@ -191,6 +191,12 @@ function powerpress_admin_editfeed($feed_slug=false, $cat_ID =false)
191
  }
192
 
193
  echo '<h2>'. $FeedTitle .'</h2>';
 
 
 
 
 
 
194
  ?>
195
  <div id="powerpress_settings_page" class="powerpress_tabbed_content">
196
  <ul class="powerpress_settings_tabs">
@@ -292,7 +298,7 @@ function powerpressadmin_edit_feed_general($FeedSettings, $General)
292
  <li>
293
  <ul>
294
  <li>Adds podcasting support to all feeds</li>
295
- <li>Allows for Category Casting (Visitors may subscribe to your categories as a podcast)</li>
296
  <li>Allows for Tag/Keyword Casting (Visitors may subscribe to your tags as a podcast)</li>
297
  </ul>
298
  </li>
@@ -326,7 +332,7 @@ function powerpressadmin_edit_feed_general($FeedSettings, $General)
326
  <tr valign="top">
327
  <th scope="row">
328
 
329
- <?php _e("Your Podcast Feeds"); ?></th>
330
  <td>
331
  <?php
332
 
191
  }
192
 
193
  echo '<h2>'. $FeedTitle .'</h2>';
194
+
195
+ if( $cat_ID && (isset($_GET['from_categories']) || isset($_POST['from_categories'])) )
196
+ {
197
+ echo '<input type="hidden" name="from_categories" value="1" />';
198
+ }
199
+
200
  ?>
201
  <div id="powerpress_settings_page" class="powerpress_tabbed_content">
202
  <ul class="powerpress_settings_tabs">
298
  <li>
299
  <ul>
300
  <li>Adds podcasting support to all feeds</li>
301
+ <li>Allows for Category Podcasting (Visitors may subscribe to your categories as a podcast)</li>
302
  <li>Allows for Tag/Keyword Casting (Visitors may subscribe to your tags as a podcast)</li>
303
  </ul>
304
  </li>
332
  <tr valign="top">
333
  <th scope="row">
334
 
335
+ <?php _e("Podcast Channel Feeds"); ?></th>
336
  <td>
337
  <?php
338
 
powerpressadmin-jquery.php CHANGED
@@ -157,6 +157,7 @@ function SelectMedia(File)
157
  self.parent.document.getElementById('powerpress_url_<?php echo $FeedSlug; ?>').value=File;
158
  self.parent.document.getElementById('powerpress_hosting_<?php echo $FeedSlug; ?>').value='1';
159
  self.parent.document.getElementById('powerpress_url_<?php echo $FeedSlug; ?>').readOnly='true';
 
160
  self.parent.tb_remove();
161
  }
162
  function DeleteMedia(File)
@@ -570,6 +571,8 @@ function powerpress_admin_jquery_header($title, $jquery = false)
570
  <title><?php bloginfo('name') ?> &rsaquo; <?php echo $title; ?> &#8212; WordPress</title>
571
  <?php
572
 
 
 
573
 
574
  wp_admin_css( 'css/global' );
575
  wp_admin_css();
157
  self.parent.document.getElementById('powerpress_url_<?php echo $FeedSlug; ?>').value=File;
158
  self.parent.document.getElementById('powerpress_hosting_<?php echo $FeedSlug; ?>').value='1';
159
  self.parent.document.getElementById('powerpress_url_<?php echo $FeedSlug; ?>').readOnly='true';
160
+ self.parent.document.getElementById('powerpress_hosting_note_<?php echo $FeedSlug; ?>').style.display='block';
161
  self.parent.tb_remove();
162
  }
163
  function DeleteMedia(File)
571
  <title><?php bloginfo('name') ?> &rsaquo; <?php echo $title; ?> &#8212; WordPress</title>
572
  <?php
573
 
574
+ // In case these functions haven't been included yet...
575
+ require_once(ABSPATH . 'wp-admin/includes/admin.php');
576
 
577
  wp_admin_css( 'css/global' );
578
  wp_admin_css();
powerpressadmin-metabox.php CHANGED
@@ -12,6 +12,7 @@ function powerpress_meta_box($object, $box)
12
  $EnclosureURL = '';
13
  $EnclosureLength = '';
14
  $Embed = '';
 
15
  $iTunesKeywords = '';
16
  $iTunesSubtitle = '';
17
  $iTunesSummary = '';
@@ -24,6 +25,7 @@ function powerpress_meta_box($object, $box)
24
  $GeneralSettings['set_duration'] = 0;
25
  if( !isset($GeneralSettings['episode_box_embed']) )
26
  $GeneralSettings['episode_box_embed'] = 0;
 
27
 
28
  if( $object->ID )
29
  {
@@ -51,6 +53,8 @@ function powerpress_meta_box($object, $box)
51
  $NoPlayer = $ExtraData['no_player'];
52
  if( $ExtraData && isset($ExtraData['explicit']) )
53
  $iTunesExplicit = $ExtraData['explicit'];
 
 
54
  }
55
 
56
 
@@ -105,14 +109,17 @@ function powerpress_meta_box($object, $box)
105
  <div class="powerpress_row">
106
  <label for="Powerpress[<?php echo $FeedSlug; ?>][url]">Media URL</label>
107
  <div class="powerpress_row_content">
108
- <input id="powerpress_url_<?php echo $FeedSlug; ?>" name="Powerpress[<?php echo $FeedSlug; ?>][url]" value="<?php echo $EnclosureURL; ?>" onchange="powerpress_check_url(this.value,'powerpress_warning_<?php echo $FeedSlug; ?>')" style="width: 70%; font-size: 90%;" />
109
  <?php if( @$GeneralSettings['blubrry_hosting'] == 1 ) { ?>
110
  <a href="<?php echo admin_url(); ?>?action=powerpress-jquery-media&podcast-feed=<?php echo $FeedSlug; ?>&KeepThis=true&TB_iframe=true&modal=true" title="Select Media File" class="thickbox"><img src="<?php echo powerpress_get_root_url(); ?>/images/blubrry_folder.png" alt="Browse Media Files" /></a>
111
  <?php } ?>
112
  <input type="button" id="powerpress_check_<?php echo $FeedSlug; ?>_button" name="powerpress_check_<?php echo $FeedSlug; ?>_button" value="Verify" onclick="powerpress_get_media_info('<?php echo $FeedSlug; ?>');" alt="Verify Media" />
113
  <img id="powerpress_check_<?php echo $FeedSlug; ?>" src="<?php echo admin_url(); ?>images/loading.gif" style="vertical-align:text-top; display: none;" alt="Checking Media" />
114
 
115
- <input type="hidden" id="powerpress_hosting_<?php echo $FeedSlug; ?>" name="Powerpress[<?php echo $FeedSlug; ?>][hosting]" value="0" />
 
 
 
116
  <?php
117
 
118
  if( $GeneralSettings['episode_box_mode'] == 2 && $GeneralSettings['episode_box_no_player'] )
@@ -182,6 +189,21 @@ function powerpress_meta_box($object, $box)
182
  </div>
183
  <?php
184
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
 
186
  if( $GeneralSettings['episode_box_keywords'] )
187
  {
12
  $EnclosureURL = '';
13
  $EnclosureLength = '';
14
  $Embed = '';
15
+ $CoverImage = '';
16
  $iTunesKeywords = '';
17
  $iTunesSubtitle = '';
18
  $iTunesSummary = '';
25
  $GeneralSettings['set_duration'] = 0;
26
  if( !isset($GeneralSettings['episode_box_embed']) )
27
  $GeneralSettings['episode_box_embed'] = 0;
28
+ $ExtraData = array();
29
 
30
  if( $object->ID )
31
  {
53
  $NoPlayer = $ExtraData['no_player'];
54
  if( $ExtraData && isset($ExtraData['explicit']) )
55
  $iTunesExplicit = $ExtraData['explicit'];
56
+ if( $ExtraData && isset($ExtraData['image']) )
57
+ $CoverImage = $ExtraData['image'];
58
  }
59
 
60
 
109
  <div class="powerpress_row">
110
  <label for="Powerpress[<?php echo $FeedSlug; ?>][url]">Media URL</label>
111
  <div class="powerpress_row_content">
112
+ <input id="powerpress_url_<?php echo $FeedSlug; ?>" name="Powerpress[<?php echo $FeedSlug; ?>][url]" value="<?php echo $EnclosureURL; ?>" onchange="powerpress_check_url(this.value,'powerpress_warning_<?php echo $FeedSlug; ?>')" <?php echo (@$ExtraData['hosting']==1?'readOnly':''); ?> style="width: 70%; font-size: 90%;" />
113
  <?php if( @$GeneralSettings['blubrry_hosting'] == 1 ) { ?>
114
  <a href="<?php echo admin_url(); ?>?action=powerpress-jquery-media&podcast-feed=<?php echo $FeedSlug; ?>&KeepThis=true&TB_iframe=true&modal=true" title="Select Media File" class="thickbox"><img src="<?php echo powerpress_get_root_url(); ?>/images/blubrry_folder.png" alt="Browse Media Files" /></a>
115
  <?php } ?>
116
  <input type="button" id="powerpress_check_<?php echo $FeedSlug; ?>_button" name="powerpress_check_<?php echo $FeedSlug; ?>_button" value="Verify" onclick="powerpress_get_media_info('<?php echo $FeedSlug; ?>');" alt="Verify Media" />
117
  <img id="powerpress_check_<?php echo $FeedSlug; ?>" src="<?php echo admin_url(); ?>images/loading.gif" style="vertical-align:text-top; display: none;" alt="Checking Media" />
118
 
119
+ <input type="hidden" id="powerpress_hosting_<?php echo $FeedSlug; ?>" name="Powerpress[<?php echo $FeedSlug; ?>][hosting]" value="<?php echo (@$ExtraData['hosting']==1?'1':'0'); ?>" />
120
+ <div id="powerpress_hosting_note_<?php echo $FeedSlug; ?>" style="margin-left: 2px; padding-bottom: 2px; padding-top: 2px; display: <?php echo (@$ExtraData['hosting']==1?'block':'none'); ?>"><em>Media file hosted by blubrry.com.
121
+ (<a href="javascript:void();" title="Remove blubrry hosted media file" onclick="powerpress_remove_hosting('<?php echo $FeedSlug; ?>');return false;">remove</a>)
122
+ </em></div>
123
  <?php
124
 
125
  if( $GeneralSettings['episode_box_mode'] == 2 && $GeneralSettings['episode_box_no_player'] )
189
  </div>
190
  <?php
191
  }
192
+
193
+ if( @$GeneralSettings['episode_box_cover_image'] )
194
+ {
195
+ ?>
196
+ <div class="powerpress_row">
197
+ <label for "Powerpress[<?php echo $FeedSlug; ?>][image]">Cover Image</label>
198
+ <div class="powerpress_row_content">
199
+ <input id="powerpress_image_<?php echo $FeedSlug; ?>" name="Powerpress[<?php echo $FeedSlug; ?>][image]" value="<?php echo htmlspecialchars($CoverImage); ?>" style="width: 90%; font-size: 90%;" size="250" />
200
+ </div>
201
+ <div class="powerpress_row_content">
202
+ <em>Cover image for Quicktime (m4v, mov, etc..) video only. e.g. http://example.com/path/to/image.jpg</em>
203
+ </div>
204
+ </div>
205
+ <?php
206
+ }
207
 
208
  if( $GeneralSettings['episode_box_keywords'] )
209
  {
powerpressadmin-player-page.php CHANGED
@@ -166,11 +166,11 @@ function powerpress_activate_player(Player)
166
  <p>
167
  <script language="JavaScript" src="<?php echo powerpressplayer_get_root_url();?>audio-player.js"></script>
168
  <object type="application/x-shockwave-flash" data="<?php echo powerpressplayer_get_root_url();?>audio-player.swf" id="audioplayer1" height="24" width="290">
169
- <param name="movie" value="<?php echo powerpressplayer_get_root_url();?>/audio-player.swf">
170
- <param name="FlashVars" value="playerID=1&amp;soundFile=<?php echo $Audio['audio-player']; ?>">
171
- <param name="quality" value="high">
172
- <param name="menu" value="false">
173
- <param name="wmode" value="transparent">
174
  </object> </p>
175
  <p>
176
  1 Pixel Out Audio Player is a popular customizable audio (mp3 only) flash player.
@@ -250,7 +250,7 @@ function powerpress_activate_player(Player)
250
  {
251
  ?>
252
  <h2><?php _e("Configure Player"); ?></h2>
253
- <p style="margin-bottom: 20px;"><strong><a href="<?php echo admin_url(( @$General['advanced_mode']?'admin':'options-general').".php?page=powerpress/powerpressadmin_player.php&amp;sp=1"); ?>" title="Select a different flash player">Select a different flash player</a></strong></p>
254
  <?php
255
  // Start adding logic here to display options based on the player selected...
256
  switch( $General['player'] )
@@ -461,10 +461,10 @@ function audio_player_defaults()
461
  <td>
462
  <div id="player_preview">
463
  <object type="application/x-shockwave-flash" data="<?php echo powerpressplayer_get_root_url();?>audio-player.swf" id="audioplayer1" height="24" width="<?php echo $PlayerSettings['width']; ?>">
464
- <param name="movie" value="<?php echo powerpressplayer_get_root_url();?>/audio-player.swf">
465
- <param name="FlashVars" value="playerID=1&amp;soundFile=<?php echo $Audio['audio-player']; ?><?php echo $flashvars;?>">
466
- <param name="quality" value="high">
467
- <param name="menu" value="false">
468
  <?php echo $transparency; ?>
469
  </object>
470
  </div>
166
  <p>
167
  <script language="JavaScript" src="<?php echo powerpressplayer_get_root_url();?>audio-player.js"></script>
168
  <object type="application/x-shockwave-flash" data="<?php echo powerpressplayer_get_root_url();?>audio-player.swf" id="audioplayer1" height="24" width="290">
169
+ <param name="movie" value="<?php echo powerpressplayer_get_root_url();?>/audio-player.swf" />
170
+ <param name="FlashVars" value="playerID=1&amp;soundFile=<?php echo $Audio['audio-player']; ?>" />
171
+ <param name="quality" value="high" />
172
+ <param name="menu" value="false" />
173
+ <param name="wmode" value="transparent" />
174
  </object> </p>
175
  <p>
176
  1 Pixel Out Audio Player is a popular customizable audio (mp3 only) flash player.
250
  {
251
  ?>
252
  <h2><?php _e("Configure Player"); ?></h2>
253
+ <p style="margin-bottom: 20px;"><strong><a href="<?php echo admin_url("admin.php?page=powerpress/powerpressadmin_player.php&amp;sp=1"); ?>" title="Select a different flash player">Select a different flash player</a></strong></p>
254
  <?php
255
  // Start adding logic here to display options based on the player selected...
256
  switch( $General['player'] )
461
  <td>
462
  <div id="player_preview">
463
  <object type="application/x-shockwave-flash" data="<?php echo powerpressplayer_get_root_url();?>audio-player.swf" id="audioplayer1" height="24" width="<?php echo $PlayerSettings['width']; ?>">
464
+ <param name="movie" value="<?php echo powerpressplayer_get_root_url();?>/audio-player.swf" />
465
+ <param name="FlashVars" value="playerID=1&amp;soundFile=<?php echo $Audio['audio-player']; ?><?php echo $flashvars;?>" />
466
+ <param name="quality" value="high" />
467
+ <param name="menu" value="false" />
468
  <?php echo $transparency; ?>
469
  </object>
470
  </div>
powerpressadmin.php CHANGED
@@ -220,6 +220,8 @@ function powerpress_admin_init()
220
  $General['episode_box_embed'] = 0;
221
  if( !isset($General['episode_box_no_player'] ) )
222
  $General['episode_box_no_player'] = 0;
 
 
223
  if( !isset($General['episode_box_keywords'] ) )
224
  $General['episode_box_keywords'] = 0;
225
  if( !isset($General['episode_box_subtitle'] ) )
@@ -237,7 +239,7 @@ function powerpress_admin_init()
237
  if( !isset($General['channels'] ) )
238
  $General['channels'] = 0;
239
  if( !isset($General['advanced_mode']) )
240
- $General['advanced_mode'] = 1;
241
  }
242
 
243
  if( $_POST['action'] == 'powerpress-save-tags' )
@@ -424,7 +426,8 @@ function powerpress_admin_init()
424
  }; break;
425
  case 'powerpress-addcategoryfeed': {
426
  check_admin_referer('powerpress-add-category-feed');
427
- $cat_ID = $_POST['cat'];
 
428
  $Settings = get_option('powerpress_general');
429
  /*
430
  $key = sanitize_title($_POST['feed_slug']);
@@ -504,6 +507,44 @@ function powerpress_admin_init()
504
  {
505
  switch( $_GET['action'] )
506
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
507
  case 'powerpress-delete-feed': {
508
  $delete_slug = $_GET['feed_slug'];
509
  $force_deletion = @$_GET['force'];
@@ -655,6 +696,13 @@ function powerpress_admin_init()
655
  }
656
  }
657
 
 
 
 
 
 
 
 
658
  $GeneralSettings = get_option('powerpress_general');
659
  if( @$GeneralSettings['player_options'] )
660
  {
@@ -797,7 +845,7 @@ function powerpress_admin_menu()
797
  if( $Powerpress['channels'] )
798
  add_submenu_page('powerpress/powerpressadmin_basic.php', __('PowerPress Custom Podcast Channels'), __('Podcast Channels'), 1, 'powerpress/powerpressadmin_customfeeds.php', 'powerpress_admin_page_customfeeds');
799
  if( $Powerpress['cat_casting'] )
800
- add_submenu_page('powerpress/powerpressadmin_basic.php', __('PowerPress Category Podcast Feeds'), __('Category Casting'), 1, 'powerpress/powerpressadmin_categoryfeeds.php', 'powerpress_admin_page_categoryfeeds');
801
  if( @$Powerpress['podpress_stats'] )
802
  add_submenu_page('powerpress/powerpressadmin_basic.php', __('PodPress Stats'), __('PodPress Stats'), 1, 'powerpress/powerpressadmin_podpress-stats.php', 'powerpress_admin_page_podpress_stats');
803
 
@@ -855,14 +903,14 @@ function powerpress_edit_post($post_ID, $post)
855
  {
856
  if( strpos($MediaURL, 'http://') !== 0 && strpos($MediaURL, 'https://') !== 0 && $Powerpress['hosting'] != 1 ) // If the url entered does not start with a http:// or https://
857
  {
858
- $MediaURL = rtrim(@$GeneralSettings['default_url'], '/') .'/'. $MediaURL;
859
  }
860
  }
861
  else
862
  {
863
  if( strpos($MediaURL, 'http://') !== 0 && $Powerpress['hosting'] != 1 ) // If the url entered does not start with a http://
864
  {
865
- $MediaURL = rtrim(@$GeneralSettings['default_url'], '/') .'/'. $MediaURL;
866
  }
867
  }
868
 
@@ -952,9 +1000,11 @@ function powerpress_edit_post($post_ID, $post)
952
  // If we made if this far, we have the content type and file size...
953
  $EnclosureData = $MediaURL . "\n" . $FileSize . "\n". $ContentType;
954
  $ToSerialize = array();
955
- // iTunes duration
956
  if( $Powerpress['hosting'] )
957
  $ToSerialize['hosting'] = 1;
 
 
958
  if( $Duration )
959
  $ToSerialize['duration'] = $Duration; // regular expression '/^(\d{1,2}\:)?\d{1,2}\:\d\d$/i' (examples: 1:23, 12:34, 1:23:45, 12:34:56)
960
  // iTunes Subtitle (FUTURE USE)
@@ -978,6 +1028,8 @@ function powerpress_edit_post($post_ID, $post)
978
  // Player Embed
979
  if( isset($Powerpress['embed']) && trim($Powerpress['embed']) != '' )
980
  $ToSerialize['embed'] = stripslashes($Powerpress['embed']); // we have to strip slahes if they are present befure we serialize the data
 
 
981
  if( isset($Powerpress['no_player']) && $Powerpress['no_player'] )
982
  $ToSerialize['no_player'] = 1;
983
  if( $Powerpress['set_duration'] == -1 )
@@ -1348,6 +1400,17 @@ function powerpress_get_media_info(FeedSlug)
1348
  }
1349
  }
1350
 
 
 
 
 
 
 
 
 
 
 
 
1351
  </script>
1352
  <?php
1353
  }
@@ -1397,7 +1460,7 @@ function powerpress_media_info_ajax()
1397
  echo "$feed_slug\n";
1398
  echo "OK\n";
1399
  echo "{$MediaInfo['length']}\n";
1400
- echo "{$MediaInfo['duration']}\n";
1401
  if( isset($MediaInfo['warnings']) )
1402
  echo $MediaInfo['warnings'];
1403
  exit;
@@ -1414,6 +1477,72 @@ function powerpress_media_info_ajax()
1414
  add_action('wp_ajax_powerpress_media_info', 'powerpress_media_info_ajax');
1415
 
1416
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1417
  // Admin page, header
1418
  function powerpress_admin_page_header($page=false, $nonce_field = 'powerpress-edit', $simple_mode=false)
1419
  {
@@ -1425,7 +1554,7 @@ function powerpress_admin_page_header($page=false, $nonce_field = 'powerpress-ed
1425
  if( $nonce_field )
1426
  {
1427
  ?>
1428
- <form enctype="multipart/form-data" method="post" action="<?php echo admin_url( ($simple_mode?'options-general':'admin') .'.php?page='.$page) ?>">
1429
  <?php
1430
  wp_nonce_field($nonce_field);
1431
  }
220
  $General['episode_box_embed'] = 0;
221
  if( !isset($General['episode_box_no_player'] ) )
222
  $General['episode_box_no_player'] = 0;
223
+ if( !isset($General['episode_box_cover_image'] ) )
224
+ $General['episode_box_cover_image'] = 0;
225
  if( !isset($General['episode_box_keywords'] ) )
226
  $General['episode_box_keywords'] = 0;
227
  if( !isset($General['episode_box_subtitle'] ) )
239
  if( !isset($General['channels'] ) )
240
  $General['channels'] = 0;
241
  if( !isset($General['advanced_mode']) )
242
+ $General['advanced_mode'] = 0;
243
  }
244
 
245
  if( $_POST['action'] == 'powerpress-save-tags' )
426
  }; break;
427
  case 'powerpress-addcategoryfeed': {
428
  check_admin_referer('powerpress-add-category-feed');
429
+ $cat_ID = ( isset($_POST['cat'])? $_POST['cat'] : $_GET['cat'] );
430
+
431
  $Settings = get_option('powerpress_general');
432
  /*
433
  $key = sanitize_title($_POST['feed_slug']);
507
  {
508
  switch( $_GET['action'] )
509
  {
510
+ case 'powerpress-enable-categorypodcasting': {
511
+ check_admin_referer('powerpress-enable-categorypodcasting');
512
+
513
+ $Settings = get_option('powerpress_general');
514
+ $Settings['cat_casting'] = 1;
515
+ powerpress_save_settings($Settings);
516
+
517
+ wp_redirect('categories.php?message=3');
518
+ exit;
519
+
520
+ }; break;
521
+ case 'powerpress-addcategoryfeed': {
522
+ check_admin_referer('powerpress-add-category-feed');
523
+ $cat_ID = $_GET['cat'];
524
+
525
+ $Settings = get_option('powerpress_general');
526
+ $category = get_category($cat_ID);
527
+ if( $category == false )
528
+ {
529
+ powerpress_page_message_add_error( __('Error obtaining category information.') );
530
+ }
531
+ else
532
+ {
533
+ if( !is_array($Settings['custom_cat_feeds']) )
534
+ $Settings['custom_cat_feeds'] = array();
535
+
536
+ if( !in_array($cat_ID, @$Settings['custom_cat_feeds']) )
537
+ {
538
+ $Settings['custom_cat_feeds'][] = $cat_ID;
539
+ powerpress_save_settings($Settings);
540
+ }
541
+
542
+ powerpress_page_message_add_notice( __('Please configure your category podcast feed now.') );
543
+
544
+ $_GET['action'] = 'powerpress-editcategoryfeed';
545
+ $_GET['cat'] = $cat_ID;
546
+ }
547
+ }; break;
548
  case 'powerpress-delete-feed': {
549
  $delete_slug = $_GET['feed_slug'];
550
  $force_deletion = @$_GET['force'];
696
  }
697
  }
698
 
699
+ // Handle edit from category page
700
+ if( isset($_POST['from_categories']) )
701
+ {
702
+ wp_redirect('categories.php?message=3');
703
+ exit;
704
+ }
705
+
706
  $GeneralSettings = get_option('powerpress_general');
707
  if( @$GeneralSettings['player_options'] )
708
  {
845
  if( $Powerpress['channels'] )
846
  add_submenu_page('powerpress/powerpressadmin_basic.php', __('PowerPress Custom Podcast Channels'), __('Podcast Channels'), 1, 'powerpress/powerpressadmin_customfeeds.php', 'powerpress_admin_page_customfeeds');
847
  if( $Powerpress['cat_casting'] )
848
+ add_submenu_page('powerpress/powerpressadmin_basic.php', __('PowerPress Category Podcasting'), __('Category Podcasting'), 1, 'powerpress/powerpressadmin_categoryfeeds.php', 'powerpress_admin_page_categoryfeeds');
849
  if( @$Powerpress['podpress_stats'] )
850
  add_submenu_page('powerpress/powerpressadmin_basic.php', __('PodPress Stats'), __('PodPress Stats'), 1, 'powerpress/powerpressadmin_podpress-stats.php', 'powerpress_admin_page_podpress_stats');
851
 
903
  {
904
  if( strpos($MediaURL, 'http://') !== 0 && strpos($MediaURL, 'https://') !== 0 && $Powerpress['hosting'] != 1 ) // If the url entered does not start with a http:// or https://
905
  {
906
+ $MediaURL = rtrim(@$GeneralSettings['default_url'], '/') .'/'. ltrim($MediaURL, '/');
907
  }
908
  }
909
  else
910
  {
911
  if( strpos($MediaURL, 'http://') !== 0 && $Powerpress['hosting'] != 1 ) // If the url entered does not start with a http://
912
  {
913
+ $MediaURL = rtrim(@$GeneralSettings['default_url'], '/') .'/'. ltrim($MediaURL, '/');
914
  }
915
  }
916
 
1000
  // If we made if this far, we have the content type and file size...
1001
  $EnclosureData = $MediaURL . "\n" . $FileSize . "\n". $ContentType;
1002
  $ToSerialize = array();
1003
+
1004
  if( $Powerpress['hosting'] )
1005
  $ToSerialize['hosting'] = 1;
1006
+
1007
+ // iTunes duration
1008
  if( $Duration )
1009
  $ToSerialize['duration'] = $Duration; // regular expression '/^(\d{1,2}\:)?\d{1,2}\:\d\d$/i' (examples: 1:23, 12:34, 1:23:45, 12:34:56)
1010
  // iTunes Subtitle (FUTURE USE)
1028
  // Player Embed
1029
  if( isset($Powerpress['embed']) && trim($Powerpress['embed']) != '' )
1030
  $ToSerialize['embed'] = stripslashes($Powerpress['embed']); // we have to strip slahes if they are present befure we serialize the data
1031
+ if( isset($Powerpress['image']) && trim($Powerpress['image']) != '' )
1032
+ $ToSerialize['image'] = stripslashes($Powerpress['image']);
1033
  if( isset($Powerpress['no_player']) && $Powerpress['no_player'] )
1034
  $ToSerialize['no_player'] = 1;
1035
  if( $Powerpress['set_duration'] == -1 )
1400
  }
1401
  }
1402
 
1403
+ function powerpress_remove_hosting(FeedSlug)
1404
+ {
1405
+ if( confirm('Are you sure you want to remove this media file?') )
1406
+ {
1407
+ jQuery( '#powerpress_url_'+FeedSlug ).attr("readOnly", false);
1408
+ jQuery( '#powerpress_url_'+FeedSlug ).val('');
1409
+ jQuery( '#powerpress_hosting_'+FeedSlug ).val(0);
1410
+ jQuery( '#powerpress_hosting_note_'+FeedSlug ).css('display', 'none');
1411
+ }
1412
+ }
1413
+
1414
  </script>
1415
  <?php
1416
  }
1460
  echo "$feed_slug\n";
1461
  echo "OK\n";
1462
  echo "{$MediaInfo['length']}\n";
1463
+ echo powerpress_readable_duration($MediaInfo['duration'], true) ."\n";
1464
  if( isset($MediaInfo['warnings']) )
1465
  echo $MediaInfo['warnings'];
1466
  exit;
1477
  add_action('wp_ajax_powerpress_media_info', 'powerpress_media_info_ajax');
1478
 
1479
 
1480
+ function powerpress_cat_row_actions($actions, $category)
1481
+ {
1482
+ $General = get_option('powerpress_general');
1483
+ if( !isset($General['cat_casting']) || $General['cat_casting'] == 0 )
1484
+ return $actions;
1485
+
1486
+ if( isset($General['custom_cat_feeds']) && is_array($General['custom_cat_feeds']) && in_array($category->cat_ID, $General['custom_cat_feeds']) )
1487
+ {
1488
+ $edit_link = admin_url('admin.php?page=powerpress/powerpressadmin_categoryfeeds.php&amp;from_categories=1&amp;action=powerpress-editcategoryfeed&amp;cat=') . $category->cat_ID;
1489
+ $actions['powerpress'] = '<a href="' . $edit_link . '" title="'. _('Edit Blubrry PowerPress Podcast Settings') .'">' . __('Podcast&nbsp;Settings') . '</a>';
1490
+ }
1491
+ else
1492
+ {
1493
+ $edit_link = admin_url() . wp_nonce_url("admin.php?page=powerpress/powerpressadmin_categoryfeeds.php&amp;from_categories=1&amp;action=powerpress-addcategoryfeed&amp;cat=".$category->cat_ID, 'powerpress-add-category-feed');
1494
+ $actions['powerpress'] = '<a href="' . $edit_link . '" title="'. _('Add Blubrry PowerPress Podcasting Settings') .'">' . __('Add&nbsp;Podcasting') . '</a>';
1495
+ }
1496
+ return $actions;
1497
+ }
1498
+
1499
+ add_filter('cat_row_actions', 'powerpress_cat_row_actions', 1,2);
1500
+
1501
+ function powerpress_delete_category($cat_ID)
1502
+ {
1503
+ $Settings = get_option('powerpress_general');
1504
+ $key = array_search($cat_ID, $Settings['custom_cat_feeds']);
1505
+ if( $key !== false )
1506
+ {
1507
+ unset( $Settings['custom_cat_feeds'][$key] );
1508
+ powerpress_save_settings($Settings); // Delete the feed from the general settings
1509
+ }
1510
+ delete_option('powerpress_cat_feed_'.$cat_ID); // Delete the actual feed settings
1511
+ }
1512
+
1513
+ add_action('delete_category', 'powerpress_delete_category');
1514
+
1515
+
1516
+ function powerpress_edit_category_form($cat)
1517
+ {
1518
+ if( empty($cat) || !isset( $cat->cat_ID ) )
1519
+ {
1520
+ ?>
1521
+ <div>
1522
+ <?php
1523
+ $General = get_option('powerpress_general');
1524
+ if( !isset($General['cat_casting']) || $General['cat_casting'] == 0 )
1525
+ {
1526
+ $enable_link = admin_url() . wp_nonce_url('categories.php?action=powerpress-enable-categorypodcasting', 'powerpress-enable-categorypodcasting');
1527
+ ?>
1528
+ <h2>PowerPress Category Podcasting</h2>
1529
+ <p><a href="<?php echo $enable_link; ?>" title="Enable Category Podcasting">Enable Category Podcasting</a> if you would like to add specific podcasting settings to your blog categories.</p>
1530
+ <?php
1531
+ }
1532
+ else
1533
+ {
1534
+ ?>
1535
+ <h2>PowerPress Category Podcasting</h2>
1536
+ <p>PowerPress Category Podcasting is enabled. Select <u>Add Podcasting</u> to add podcasting settings. Select <u>Podcast Settings</u> to edit existing podcast settings.</p>
1537
+ <?php
1538
+ }
1539
+ ?>
1540
+ </div>
1541
+ <?php
1542
+ }
1543
+ }
1544
+ add_action('edit_category_form', 'powerpress_edit_category_form');
1545
+
1546
  // Admin page, header
1547
  function powerpress_admin_page_header($page=false, $nonce_field = 'powerpress-edit', $simple_mode=false)
1548
  {
1554
  if( $nonce_field )
1555
  {
1556
  ?>
1557
+ <form enctype="multipart/form-data" method="post" action="<?php echo admin_url( 'admin.php?page='.$page) ?>">
1558
  <?php
1559
  wp_nonce_field($nonce_field);
1560
  }
readme.txt CHANGED
@@ -2,19 +2,19 @@
2
  Contributors: Angelo Mandato, Blubrry.com
3
  Tags: podcasting, podcast, podcaster, itunes, enclosure, zune, iphone, youtube, viddler, blip.tv, ustream, podcasting, audio, video, rss2, feed, player, media, rss, mp3, music, embed, feedburner, statistics, stats, flv, flash, id3, episodes, blubrry, wordpressmu, mu, wordpress mu
4
  Requires at least: 2.6.0
5
- Tested up to: 2.8.4
6
- Stable tag: 1.0.2
7
 
8
  Blubrry PowerPress brings the essential features for podcasting to WordPress including full iTunes support, web audio/video media players and more.
9
 
10
  == Description ==
11
 
12
- Blubrry PowerPress brings the essential features for podcasting to WordPress. Developed by podcasters for podcasters, PowerPress offers full iTunes support, the Update iTunes Listing feature, web audio/video media players and more.
13
 
14
- *PowerPress is developed and maintained by [Blubrry](http://www.blubrry.com), a podcasting company and community providing tools and resources for podcasters to measure, monetize, publish and host podcasts. Although we'd like you to become a member, **no membership is required** to use this free open source podcasting plugin.*
15
 
16
  = Key Features =
17
- - Full iTunes Support: Adds iTunes complaint podcast feeds to your WordPress blog.
18
  - Integrated Media Players: Audio/video web players with video embed support from sites such as YouTube and Ustream.tv.
19
  - Media Modifiers: Easily add, modify and remove podcasts form blog posts and pages.
20
  - Migration tools: Quickly migrate from PodPress, Blogger or Movable Type without losing episodes.
@@ -126,6 +126,25 @@ To install Blubrry PowerPress manually, follow these steps:
126
 
127
  == Changelog ==
128
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  = 1.0.2 =
130
  * Released on 10/13/2009
131
  * Added 4 new mp3 flash players: 1 Pixel Out Audio Player, Mp3 Player Maxi, Simple Flash MP3 Player and AudioPlay player.
@@ -308,7 +327,7 @@ Fixed bug with line 930 printing warning in podcast feeds.
308
  Fixed bug with merging custom feed settings with regular feed settings, fixed bug where exerpt not used as itunes summary, added new error reporting when editing posts/pages and integrated Blubrry Services (optional), Added multi-language support to the custom podcast feeds. Added better listing of custom feeds on the main feed settings page. Add new feature under Tools section for adding Update Services / Ping sites relevant to podcasting. Added new select mode screen for new installations. Added podcast category feeds. Added statistics view to WordPress Dashboard. Write mp3 ID3 edit screen added for Blubrry Hosting users.
309
 
310
  0.7.3 released on 4/21/2009
311
- Fixed POWERPRESS _CONTENT _ACTION _PRIORITY define typo, incremented version check (PowerPress now requires WordPress 2.6.x), fixed bug where player.js was not included in the header if simple mode was used, made the enhanced itunes summary set on by default for new installations, detecting additional file types, add new import episodes previously created in Blogger/Movable Type, fix bug where channel link matches image link, no longer including empty duration values in feeds, fixed bug with curl-setopt function printing a PHP warning in some situations, added warning when user enters an unknown media redirect url.
312
 
313
  0.7.2 released on 3/26/2009
314
  Re-ordered change log so latest release is listed first rather than last. Fixed powerpress_bloginfo_rss() warning message that occurred for some users, Updated the itunes_url setting to handle the latest itunes URL itunes.apple.com, No longer including revision posts in the PodPress import episode utility, Fixed bug with iTunes author setting not getting applied to feeds, display player in excerpts checkbox bug fixed, no longer including player code in HTML headers if not necessary, fixed duration bug with 1:00:60 which now reports 1:01:00, feed settings are now used for custom feeds that do not have settings of their own, added additional fix for FeedSmith when permalinks is not enabled, fixed bug where feed settings were not being applied to podcast feed in simple mode under some situations, fixed bug with enhance podcast only and main site feed only setting, fixed bug with pinging iTunes with CURL missing SSL certificates, and fixed itunes ping for latest itunes.apple.com one click subscribe links.
@@ -377,10 +396,12 @@ Angelo Mandato, CIO [RawVoice](http://www.rawvoice.com) - Plugin founder, archit
377
 
378
  Pat McSweeny, Developer for [RawVoice](http://www.rawvoice.com) - Developed initial version (v0.1.0) of plugin
379
 
380
- Jerry Stephens, Way of the Geek [wayofthegeek.org](http://wayofthegeek.org) - Contributed initial code fix for excerpt bug resolved in v0.6.1
381
 
382
  Darcy Fiander, Rooty Radio (http://rootyradio.com) - Fixed bug with category links to FeedValidator.org and category title warning when validating category feeds.
383
 
 
 
384
 
385
  == Feedback ==
386
  http://www.blubrry.com/powerpress/
2
  Contributors: Angelo Mandato, Blubrry.com
3
  Tags: podcasting, podcast, podcaster, itunes, enclosure, zune, iphone, youtube, viddler, blip.tv, ustream, podcasting, audio, video, rss2, feed, player, media, rss, mp3, music, embed, feedburner, statistics, stats, flv, flash, id3, episodes, blubrry, wordpressmu, mu, wordpress mu
4
  Requires at least: 2.6.0
5
+ Tested up to: 2.8.5
6
+ Stable tag: 1.0.3
7
 
8
  Blubrry PowerPress brings the essential features for podcasting to WordPress including full iTunes support, web audio/video media players and more.
9
 
10
  == Description ==
11
 
12
+ Blubrry PowerPress brings the essential features for podcasting to WordPress. Developed by podcasters for podcasters, PowerPress offers full iTunes support, the Update iTunes Listing feature, web audio/video media players and more. PowerPress is designed as an upgrade to PodPress.
13
 
14
+ *PowerPress is developed and maintained by [Blubrry](http://www.blubrry.com), a podcasting company and community providing tools and resources for podcasters to measure, monetize, publish and host podcasts. Although we'd like you to become a member of [Blubrry](http://www.blubrry.com/createaccount.php), **no membership is required** to use this free open source podcasting plugin.*
15
 
16
  = Key Features =
17
+ - Full iTunes Support: Adds iTunes compliant podcast feeds to your WordPress blog.
18
  - Integrated Media Players: Audio/video web players with video embed support from sites such as YouTube and Ustream.tv.
19
  - Media Modifiers: Easily add, modify and remove podcasts form blog posts and pages.
20
  - Migration tools: Quickly migrate from PodPress, Blogger or Movable Type without losing episodes.
126
 
127
  == Changelog ==
128
 
129
+ = 1.0.3 =
130
+ * Released on 10/28/2008
131
+ * Added oga, spx, ogv and ogx (variations of ogg) to list of media file extensions detected.
132
+ * Added note with remove option below Media URL when media file is hosted by blubrry.com.
133
+ * Added Video Cover Image option for those who want to specify a URL to an image to display in place of the default play video box for QuickTime formatted video (m4v, mov, etc...).
134
+ * Added link to enable Category Podcasting from the Categories page in WordPress. Added 'Podcast Settings' and 'Add Podcasting' links under Categories table listing.
135
+ * Retitled Category Casting to Category Podcasting to clear up confusion.
136
+ * Simple Mode option retitled to 'Advanced Mode' to clear up confusion.
137
+ * Fixed bug where Media URL value starting with a slash '/' resulted in 2 slashes when the Default Media URL was added.
138
+ * Fixed bug with Verify button setting minutes in hour field and seconds in minute field for media hosted by blubrry.com.
139
+ * Fixed sufficient permissions to access this page bug when selecting players in Simple Mode. (Thanks Ben!)
140
+ * Fixed bug with Mp3 flash maxi player where <div> container was not closed properly. (Thanks JWM!)
141
+ * Fixed bug with PowerPress conflicting with the headspace2 plugin in the blog dashboard. (Thanks digigirl!)
142
+ * Fixed Protected Content link by adding slash before wp-login.php. (Thanks Grant!)
143
+ * Updated <param> tags for player embeds so they are XML complaint. (Thanks billhector!)
144
+ * Removed unneeded javascript include to audio-player.js. (thanks Mark!)
145
+ * Added alt tags to images to support XHTML.
146
+
147
+
148
  = 1.0.2 =
149
  * Released on 10/13/2009
150
  * Added 4 new mp3 flash players: 1 Pixel Out Audio Player, Mp3 Player Maxi, Simple Flash MP3 Player and AudioPlay player.
327
  Fixed bug with merging custom feed settings with regular feed settings, fixed bug where exerpt not used as itunes summary, added new error reporting when editing posts/pages and integrated Blubrry Services (optional), Added multi-language support to the custom podcast feeds. Added better listing of custom feeds on the main feed settings page. Add new feature under Tools section for adding Update Services / Ping sites relevant to podcasting. Added new select mode screen for new installations. Added podcast category feeds. Added statistics view to WordPress Dashboard. Write mp3 ID3 edit screen added for Blubrry Hosting users.
328
 
329
  0.7.3 released on 4/21/2009
330
+ Fixed `POWERPRESS_CONTENT_ACTION_PRIORITY` define typo, incremented version check (PowerPress now requires WordPress 2.6.x), fixed bug where player.js was not included in the header if simple mode was used, made the enhanced itunes summary set on by default for new installations, detecting additional file types, add new import episodes previously created in Blogger/Movable Type, fix bug where channel link matches image link, no longer including empty duration values in feeds, fixed bug with curl-setopt function printing a PHP warning in some situations, added warning when user enters an unknown media redirect url.
331
 
332
  0.7.2 released on 3/26/2009
333
  Re-ordered change log so latest release is listed first rather than last. Fixed powerpress_bloginfo_rss() warning message that occurred for some users, Updated the itunes_url setting to handle the latest itunes URL itunes.apple.com, No longer including revision posts in the PodPress import episode utility, Fixed bug with iTunes author setting not getting applied to feeds, display player in excerpts checkbox bug fixed, no longer including player code in HTML headers if not necessary, fixed duration bug with 1:00:60 which now reports 1:01:00, feed settings are now used for custom feeds that do not have settings of their own, added additional fix for FeedSmith when permalinks is not enabled, fixed bug where feed settings were not being applied to podcast feed in simple mode under some situations, fixed bug with enhance podcast only and main site feed only setting, fixed bug with pinging iTunes with CURL missing SSL certificates, and fixed itunes ping for latest itunes.apple.com one click subscribe links.
396
 
397
  Pat McSweeny, Developer for [RawVoice](http://www.rawvoice.com) - Developed initial version (v0.1.0) of plugin
398
 
399
+ Jerry Stephens, Way of the Geek [wayofthegeek.org](http://wayofthegeek.org) - Contributed initial code fix for excerpt bug resolved in v0.6.1, wrote initial code for the 4 new flash players.
400
 
401
  Darcy Fiander, Rooty Radio (http://rootyradio.com) - Fixed bug with category links to FeedValidator.org and category title warning when validating category feeds.
402
 
403
+ Joel Haasnoot, (http://waarisdetrein.nl/joelhaasnoot/) - Developed PodPress archive statistics.
404
+
405
 
406
  == Feedback ==
407
  http://www.blubrry.com/powerpress/