Version Description
- Released on 08/24/2017
- NOTE: There is no urgency to update to this version unless you can benefit from bug fixes listed.
- BETA COMING SOON: PowerPress 7.2 Beta will be available within 24-72 hours. Please visit https://create.blubrry.com/resources/powerpress/powerpress-beta/ for more details.
- Added logic to prevent the W3 Total Cache plugin from minifying podcast feeds. (Thanks @allimaple for bringing to our attention)
- Fixed warning messages in the getid3 library so they comply with PHP 7.1+. (Thanks @mahe for letting us know about the problem)
- Fixed error verifying URLs for file formats not supported by iTunes.
- Feed import now compatible with Spreaker podcast feeds.
- Added code when including the subscribe CSS file to make sure it's always included with various WordPress updates (Thanks Tim for the code fix!)
- Added checkbox in Blubrry Player configuration for making iTunes Episode image use optional with player. Unchecked by default.
Download this release
Release Info
Developer | amandato |
Plugin | PowerPress Podcasting plugin by Blubrry |
Version | 7.1.1 |
Comparing to | |
See all releases |
Code changes from version 7.1 to 7.1.1
- getid3/module.audio.mp3.php +28 -14
- mp3info.class.php +10 -6
- powerpress-player.php +4 -1
- powerpress-subscribe.php +1 -1
- powerpress.php +15 -2
- powerpressadmin-player-page.php +3 -3
- powerpressadmin-rss-import.php +2 -1
- readme.txt +14 -3
- views/settings_tab_destinations.php +1 -1
getid3/module.audio.mp3.php
CHANGED
@@ -72,7 +72,8 @@ class getid3_mp3 extends getid3_handler
|
|
72 |
}
|
73 |
|
74 |
}
|
75 |
-
|
|
|
76 |
|
77 |
}
|
78 |
|
@@ -134,7 +135,8 @@ class getid3_mp3 extends getid3_handler
|
|
134 |
break;
|
135 |
|
136 |
default:
|
137 |
-
|
|
|
138 |
break;
|
139 |
}
|
140 |
}
|
@@ -489,7 +491,8 @@ class getid3_mp3 extends getid3_handler
|
|
489 |
|
490 |
if ($thisfile_mpeg_audio['raw']['bitrate'] == 15) {
|
491 |
// http://www.hydrogenaudio.org/?act=ST&f=16&t=9682&st=0
|
492 |
-
|
|
|
493 |
$thisfile_mpeg_audio['raw']['bitrate'] = 0;
|
494 |
}
|
495 |
$thisfile_mpeg_audio['padding'] = (bool) $thisfile_mpeg_audio['raw']['padding'];
|
@@ -657,7 +660,8 @@ class getid3_mp3 extends getid3_handler
|
|
657 |
$used_filesize -= intval(@$info['id3v2']['headerlength']);
|
658 |
$used_filesize -= (isset($info['id3v1']) ? 128 : 0);
|
659 |
$used_filesize -= (isset($info['tag_offset_end']) ? $info['tag_offset_end'] - $info['tag_offset_start'] : 0);
|
660 |
-
|
|
|
661 |
}
|
662 |
|
663 |
$framelengthfloat = $used_filesize / $thisfile_mpeg_audio['VBR_frames'];
|
@@ -847,7 +851,8 @@ class getid3_mp3 extends getid3_handler
|
|
847 |
$thisfile_mpeg_audio_lame['preset_used_id'] = ($PresetSurroundBytes & 0x07FF);
|
848 |
$thisfile_mpeg_audio_lame['preset_used'] = self::LAMEpresetUsedLookup($thisfile_mpeg_audio_lame);
|
849 |
if (!empty($thisfile_mpeg_audio_lame['preset_used_id']) && empty($thisfile_mpeg_audio_lame['preset_used'])) {
|
850 |
-
|
|
|
851 |
}
|
852 |
if (($thisfile_mpeg_audio_lame['short_version'] == 'LAME3.90.') && !empty($thisfile_mpeg_audio_lame['preset_used_id'])) {
|
853 |
// this may change if 3.90.4 ever comes out
|
@@ -891,7 +896,8 @@ class getid3_mp3 extends getid3_handler
|
|
891 |
$thisfile_mpeg_audio['bitrate_mode'] = 'cbr';
|
892 |
}
|
893 |
if ($thisfile_mpeg_audio['bitrate_mode'] == 'vbr') {
|
894 |
-
|
|
|
895 |
}
|
896 |
}
|
897 |
|
@@ -923,7 +929,8 @@ class getid3_mp3 extends getid3_handler
|
|
923 |
// $info['warning'][] = 'Too much data in file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']).' ('.(($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes).' bytes too many)';
|
924 |
// }
|
925 |
} else {
|
926 |
-
|
|
|
927 |
}
|
928 |
}
|
929 |
}
|
@@ -1120,7 +1127,8 @@ class getid3_mp3 extends getid3_handler
|
|
1120 |
} else {
|
1121 |
|
1122 |
// next frame is not valid, note the error and fail, so scanning can contiue for a valid frame sequence
|
1123 |
-
|
|
|
1124 |
|
1125 |
return false;
|
1126 |
}
|
@@ -1166,7 +1174,8 @@ class getid3_mp3 extends getid3_handler
|
|
1166 |
$info['error'][] = 'Cannot find next free-format synch pattern ('.getid3_lib::PrintHexBytes($SyncPattern1).' or '.getid3_lib::PrintHexBytes($SyncPattern2).') after offset '.$offset;
|
1167 |
return false;
|
1168 |
} else {
|
1169 |
-
|
|
|
1170 |
$info['audio']['codec'] = 'LAME';
|
1171 |
$info['audio']['encoder'] = 'LAME3.88';
|
1172 |
$SyncPattern1 = substr($SyncPattern1, 0, 3);
|
@@ -1291,7 +1300,8 @@ class getid3_mp3 extends getid3_handler
|
|
1291 |
getid3_lib::safe_inc($Distribution['frequency'][$LongMPEGfrequencyLookup[$head4]]);
|
1292 |
if ($max_frames_scan && (++$frames_scanned >= $max_frames_scan)) {
|
1293 |
$pct_data_scanned = ($this->ftell() - $info['avdataoffset']) / ($info['avdataend'] - $info['avdataoffset']);
|
1294 |
-
|
|
|
1295 |
foreach ($Distribution as $key1 => $value1) {
|
1296 |
foreach ($value1 as $key2 => $value2) {
|
1297 |
$Distribution[$key1][$key2] = round($value2 / $pct_data_scanned);
|
@@ -1454,9 +1464,11 @@ class getid3_mp3 extends getid3_handler
|
|
1454 |
if ($this->decodeMPEGaudioHeader($GarbageOffsetEnd, $dummy, true, true)) {
|
1455 |
$info = $dummy;
|
1456 |
$info['avdataoffset'] = $GarbageOffsetEnd;
|
1457 |
-
|
|
|
1458 |
} else {
|
1459 |
-
|
|
|
1460 |
}
|
1461 |
}
|
1462 |
}
|
@@ -1549,7 +1561,8 @@ class getid3_mp3 extends getid3_handler
|
|
1549 |
}
|
1550 |
}
|
1551 |
if ($pct_data_scanned > 0) {
|
1552 |
-
|
|
|
1553 |
foreach ($info['mpeg']['audio'] as $key1 => $value1) {
|
1554 |
if (!preg_match('#_distribution$#i', $key1)) {
|
1555 |
continue;
|
@@ -1561,7 +1574,8 @@ class getid3_mp3 extends getid3_handler
|
|
1561 |
}
|
1562 |
|
1563 |
if ($SynchErrorsFound > 0) {
|
1564 |
-
|
|
|
1565 |
//return false;
|
1566 |
}
|
1567 |
|
72 |
}
|
73 |
|
74 |
}
|
75 |
+
//$info['warning'][] = $synchoffsetwarning;
|
76 |
+
$this->warning($synchoffsetwarning);
|
77 |
|
78 |
}
|
79 |
|
135 |
break;
|
136 |
|
137 |
default:
|
138 |
+
//$info['warning'][] = 'Expecting [audio][dataformat] to be mp1/mp2/mp3 when fileformat == mp3, [audio][dataformat] actually "'.$info['audio']['dataformat'].'"';
|
139 |
+
$this->warning('Expecting [audio][dataformat] to be mp1/mp2/mp3 when fileformat == mp3, [audio][dataformat] actually "'.$info['audio']['dataformat'].'"');
|
140 |
break;
|
141 |
}
|
142 |
}
|
491 |
|
492 |
if ($thisfile_mpeg_audio['raw']['bitrate'] == 15) {
|
493 |
// http://www.hydrogenaudio.org/?act=ST&f=16&t=9682&st=0
|
494 |
+
//$info['warning'][] = 'Invalid bitrate index (15), this is a known bug in free-format MP3s encoded by LAME v3.90 - 3.93.1';
|
495 |
+
$this->warning('Invalid bitrate index (15), this is a known bug in free-format MP3s encoded by LAME v3.90 - 3.93.1');
|
496 |
$thisfile_mpeg_audio['raw']['bitrate'] = 0;
|
497 |
}
|
498 |
$thisfile_mpeg_audio['padding'] = (bool) $thisfile_mpeg_audio['raw']['padding'];
|
660 |
$used_filesize -= intval(@$info['id3v2']['headerlength']);
|
661 |
$used_filesize -= (isset($info['id3v1']) ? 128 : 0);
|
662 |
$used_filesize -= (isset($info['tag_offset_end']) ? $info['tag_offset_end'] - $info['tag_offset_start'] : 0);
|
663 |
+
//$info['warning'][] = 'MP3.Xing header missing VBR_bytes, assuming MPEG audio portion of file is '.number_format($used_filesize).' bytes';
|
664 |
+
$this->warning('MP3.Xing header missing VBR_bytes, assuming MPEG audio portion of file is '.number_format($used_filesize).' bytes');
|
665 |
}
|
666 |
|
667 |
$framelengthfloat = $used_filesize / $thisfile_mpeg_audio['VBR_frames'];
|
851 |
$thisfile_mpeg_audio_lame['preset_used_id'] = ($PresetSurroundBytes & 0x07FF);
|
852 |
$thisfile_mpeg_audio_lame['preset_used'] = self::LAMEpresetUsedLookup($thisfile_mpeg_audio_lame);
|
853 |
if (!empty($thisfile_mpeg_audio_lame['preset_used_id']) && empty($thisfile_mpeg_audio_lame['preset_used'])) {
|
854 |
+
//$info['warning'][] = 'Unknown LAME preset used ('.$thisfile_mpeg_audio_lame['preset_used_id'].') - please report to info@getid3.org';
|
855 |
+
$this->warning('Unknown LAME preset used ('.$thisfile_mpeg_audio_lame['preset_used_id'].') - please report to info@getid3.org');
|
856 |
}
|
857 |
if (($thisfile_mpeg_audio_lame['short_version'] == 'LAME3.90.') && !empty($thisfile_mpeg_audio_lame['preset_used_id'])) {
|
858 |
// this may change if 3.90.4 ever comes out
|
896 |
$thisfile_mpeg_audio['bitrate_mode'] = 'cbr';
|
897 |
}
|
898 |
if ($thisfile_mpeg_audio['bitrate_mode'] == 'vbr') {
|
899 |
+
//$info['warning'][] = 'VBR file with no VBR header. Bitrate values calculated from actual frame bitrates.';
|
900 |
+
$this->warning('VBR file with no VBR header. Bitrate values calculated from actual frame bitrates.');
|
901 |
}
|
902 |
}
|
903 |
|
929 |
// $info['warning'][] = 'Too much data in file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']).' ('.(($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes).' bytes too many)';
|
930 |
// }
|
931 |
} else {
|
932 |
+
//$info['warning'][] = 'Too much data in file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']).' ('.(($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes).' bytes too many)';
|
933 |
+
$this->warning('Too much data in file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']).' ('.(($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes).' bytes too many)');
|
934 |
}
|
935 |
}
|
936 |
}
|
1127 |
} else {
|
1128 |
|
1129 |
// next frame is not valid, note the error and fail, so scanning can contiue for a valid frame sequence
|
1130 |
+
//$info['warning'][] = 'Frame at offset ('.$offset.') is valid, but the next one at ('.$nextframetestoffset.') is not.';
|
1131 |
+
$this->warning('Frame at offset ('.$offset.') is valid, but the next one at ('.$nextframetestoffset.') is not.');
|
1132 |
|
1133 |
return false;
|
1134 |
}
|
1174 |
$info['error'][] = 'Cannot find next free-format synch pattern ('.getid3_lib::PrintHexBytes($SyncPattern1).' or '.getid3_lib::PrintHexBytes($SyncPattern2).') after offset '.$offset;
|
1175 |
return false;
|
1176 |
} else {
|
1177 |
+
//$info['warning'][] = 'ModeExtension varies between first frame and other frames (known free-format issue in LAME 3.88)';
|
1178 |
+
$this->warning('ModeExtension varies between first frame and other frames (known free-format issue in LAME 3.88)');
|
1179 |
$info['audio']['codec'] = 'LAME';
|
1180 |
$info['audio']['encoder'] = 'LAME3.88';
|
1181 |
$SyncPattern1 = substr($SyncPattern1, 0, 3);
|
1300 |
getid3_lib::safe_inc($Distribution['frequency'][$LongMPEGfrequencyLookup[$head4]]);
|
1301 |
if ($max_frames_scan && (++$frames_scanned >= $max_frames_scan)) {
|
1302 |
$pct_data_scanned = ($this->ftell() - $info['avdataoffset']) / ($info['avdataend'] - $info['avdataoffset']);
|
1303 |
+
//$info['warning'][] = 'too many MPEG audio frames to scan, only scanned first '.$max_frames_scan.' frames ('.number_format($pct_data_scanned * 100, 1).'% of file) and extrapolated distribution, playtime and bitrate may be incorrect.';
|
1304 |
+
$this->warning('too many MPEG audio frames to scan, only scanned first '.$max_frames_scan.' frames ('.number_format($pct_data_scanned * 100, 1).'% of file) and extrapolated distribution, playtime and bitrate may be incorrect.');
|
1305 |
foreach ($Distribution as $key1 => $value1) {
|
1306 |
foreach ($value1 as $key2 => $value2) {
|
1307 |
$Distribution[$key1][$key2] = round($value2 / $pct_data_scanned);
|
1464 |
if ($this->decodeMPEGaudioHeader($GarbageOffsetEnd, $dummy, true, true)) {
|
1465 |
$info = $dummy;
|
1466 |
$info['avdataoffset'] = $GarbageOffsetEnd;
|
1467 |
+
//$info['warning'][] = 'apparently-valid VBR header not used because could not find '.GETID3_MP3_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.'), but did find valid CBR stream starting at '.$GarbageOffsetEnd;
|
1468 |
+
$this->warning('apparently-valid VBR header not used because could not find '.GETID3_MP3_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.'), but did find valid CBR stream starting at '.$GarbageOffsetEnd);
|
1469 |
} else {
|
1470 |
+
//$info['warning'][] = 'using data from VBR header even though could not find '.GETID3_MP3_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.')';
|
1471 |
+
$this->warning('using data from VBR header even though could not find '.GETID3_MP3_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.')');
|
1472 |
}
|
1473 |
}
|
1474 |
}
|
1561 |
}
|
1562 |
}
|
1563 |
if ($pct_data_scanned > 0) {
|
1564 |
+
//$info['warning'][] = 'too many MPEG audio frames to scan, only scanned '.$frames_scanned.' frames in '.$max_scan_segments.' segments ('.number_format($pct_data_scanned * 100, 1).'% of file) and extrapolated distribution, playtime and bitrate may be incorrect.';
|
1565 |
+
$this->warning('too many MPEG audio frames to scan, only scanned '.$frames_scanned.' frames in '.$max_scan_segments.' segments ('.number_format($pct_data_scanned * 100, 1).'% of file) and extrapolated distribution, playtime and bitrate may be incorrect.');
|
1566 |
foreach ($info['mpeg']['audio'] as $key1 => $value1) {
|
1567 |
if (!preg_match('#_distribution$#i', $key1)) {
|
1568 |
continue;
|
1574 |
}
|
1575 |
|
1576 |
if ($SynchErrorsFound > 0) {
|
1577 |
+
//$info['warning'][] = 'Found '.$SynchErrorsFound.' synch errors in histogram analysis';
|
1578 |
+
$this->warning('Found '.$SynchErrorsFound.' synch errors in histogram analysis');
|
1579 |
//return false;
|
1580 |
}
|
1581 |
|
mp3info.class.php
CHANGED
@@ -362,7 +362,8 @@
|
|
362 |
{
|
363 |
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2 );
|
364 |
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true );
|
365 |
-
|
|
|
366 |
}
|
367 |
|
368 |
if ( !ini_get('safe_mode') && !ini_get('open_basedir') )
|
@@ -472,7 +473,8 @@
|
|
472 |
{
|
473 |
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2 );
|
474 |
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true );
|
475 |
-
|
|
|
476 |
}
|
477 |
|
478 |
if ( !ini_get('safe_mode') && !ini_get('open_basedir') )
|
@@ -558,7 +560,7 @@
|
|
558 |
$LocalFile = false;
|
559 |
|
560 |
// If the URL starts with a http:// or https:// and ends with an mp3, then lets try the smart id3 method...
|
561 |
-
if( preg_match('/^https?:\/\/.*\.mp3$/i', $File)
|
562 |
{
|
563 |
$LocalFile = $this->DownloadID3Headers($File);
|
564 |
if( $LocalFile === false )
|
@@ -767,8 +769,10 @@
|
|
767 |
|
768 |
if( defined('POWERPRESS_GETID3_LIBRARY') && is_file(POWERPRESS_GETID3_LIBRARY) )
|
769 |
require_once(POWERPRESS_GETID3_LIBRARY);
|
770 |
-
else
|
771 |
require_once(POWERPRESS_ABSPATH.'/getid3/getid3.php');
|
|
|
|
|
772 |
|
773 |
define('POWERPRESS_GETID3_LOADED', true);
|
774 |
return true;
|
@@ -788,7 +792,7 @@
|
|
788 |
/*
|
789 |
// Example usage:
|
790 |
$Mp3Info = new Mp3Info();
|
791 |
-
$file = 'http://
|
792 |
if( $Data = $Mp3Info->GetMp3Info($file) )
|
793 |
{
|
794 |
echo 'Success: ';
|
@@ -805,4 +809,4 @@
|
|
805 |
}
|
806 |
*/
|
807 |
|
808 |
-
|
362 |
{
|
363 |
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2 );
|
364 |
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true );
|
365 |
+
if( defined('ABSPATH') && defined('WPINC') )
|
366 |
+
curl_setopt($curl, CURLOPT_CAINFO, ABSPATH . WPINC . '/certificates/ca-bundle.crt');
|
367 |
}
|
368 |
|
369 |
if ( !ini_get('safe_mode') && !ini_get('open_basedir') )
|
473 |
{
|
474 |
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2 );
|
475 |
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true );
|
476 |
+
if( defined('ABSPATH') && defined('WPINC') )
|
477 |
+
curl_setopt($curl, CURLOPT_CAINFO, ABSPATH . WPINC . '/certificates/ca-bundle.crt');
|
478 |
}
|
479 |
|
480 |
if ( !ini_get('safe_mode') && !ini_get('open_basedir') )
|
560 |
$LocalFile = false;
|
561 |
|
562 |
// If the URL starts with a http:// or https:// and ends with an mp3, then lets try the smart id3 method...
|
563 |
+
if( preg_match('/^https?:\/\/.*\.mp3$/i', $File) != false )
|
564 |
{
|
565 |
$LocalFile = $this->DownloadID3Headers($File);
|
566 |
if( $LocalFile === false )
|
769 |
|
770 |
if( defined('POWERPRESS_GETID3_LIBRARY') && is_file(POWERPRESS_GETID3_LIBRARY) )
|
771 |
require_once(POWERPRESS_GETID3_LIBRARY);
|
772 |
+
else if( defined('POWERPRESS_ABSPATH') )
|
773 |
require_once(POWERPRESS_ABSPATH.'/getid3/getid3.php');
|
774 |
+
else if( file_exists( dirname(__FILE__) .'/getid3/getid3.php' ) )
|
775 |
+
require_once( dirname(__FILE__) .'/getid3/getid3.php');
|
776 |
|
777 |
define('POWERPRESS_GETID3_LOADED', true);
|
778 |
return true;
|
792 |
/*
|
793 |
// Example usage:
|
794 |
$Mp3Info = new Mp3Info();
|
795 |
+
$file = 'http://content.blubrry.com/geeknewscentral/GNC-2017-07-06.mp3';
|
796 |
if( $Data = $Mp3Info->GetMp3Info($file) )
|
797 |
{
|
798 |
echo 'Success: ';
|
809 |
}
|
810 |
*/
|
811 |
|
812 |
+
// eof
|
powerpress-player.php
CHANGED
@@ -1348,8 +1348,11 @@ function powerpressplayer_build_blubrryaudio($media_url, $EpisodeData=array(), $
|
|
1348 |
$url.= '&podcast_link='. urlencode($permalink);
|
1349 |
}
|
1350 |
if( !empty($EpisodeData['itunes_image']) ) {
|
1351 |
-
|
|
|
|
|
1352 |
}
|
|
|
1353 |
}
|
1354 |
return '<iframe src="'. $url .'" scrolling="no" width="100%" height="138px" frameborder="0"></iframe>';
|
1355 |
}
|
1348 |
$url.= '&podcast_link='. urlencode($permalink);
|
1349 |
}
|
1350 |
if( !empty($EpisodeData['itunes_image']) ) {
|
1351 |
+
$GeneralSettings = get_option('powerpress_general');
|
1352 |
+
if(isset($GeneralSettings['bp_episode_image']) && $GeneralSettings['bp_episode_image'] != false)
|
1353 |
+
$url.= '&artwork_url='. urlencode($EpisodeData['itunes_image']);
|
1354 |
}
|
1355 |
+
|
1356 |
}
|
1357 |
return '<iframe src="'. $url .'" scrolling="no" width="100%" height="138px" frameborder="0"></iframe>';
|
1358 |
}
|
powerpress-subscribe.php
CHANGED
@@ -457,7 +457,7 @@ function powerpress_subscribe_shortcode( $attr ) {
|
|
457 |
return '';
|
458 |
|
459 |
$Settings['itunes_url'] = powerpresssubscribe_get_itunes_url($Settings);
|
460 |
-
wp_enqueue_style( 'powerpress-subscribe-style' );
|
461 |
|
462 |
if( !empty($attr['itunes_button']) && !empty($Settings['itunes_url']) )
|
463 |
{
|
457 |
return '';
|
458 |
|
459 |
$Settings['itunes_url'] = powerpresssubscribe_get_itunes_url($Settings);
|
460 |
+
wp_enqueue_style( 'powerpress-subscribe-style', plugin_dir_url( __FILE__ ) . 'css/subscribe.css' );
|
461 |
|
462 |
if( !empty($attr['itunes_button']) && !empty($Settings['itunes_url']) )
|
463 |
{
|
powerpress.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Blubrry PowerPress
|
4 |
Plugin URI: http://create.blubrry.com/resources/powerpress/
|
5 |
Description: <a href="http://create.blubrry.com/resources/powerpress/" target="_blank">Blubrry PowerPress</a> is the No. 1 Podcasting plugin for WordPress. Developed by podcasters for podcasters; features include Simple and Advanced modes, multiple audio/video player options, subscribe to podcast tools, podcast SEO features, and more! Fully supports iTunes, Google Play, Stitcher, and Blubrry Podcasting directories, as well as all podcast applications and clients.
|
6 |
-
Version: 7.1
|
7 |
Author: Blubrry
|
8 |
Author URI: http://www.blubrry.com/
|
9 |
Requires at least: 3.6
|
@@ -32,7 +32,7 @@ if( !function_exists('add_action') )
|
|
32 |
die("access denied.");
|
33 |
|
34 |
// WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
|
35 |
-
define('POWERPRESS_VERSION', '7.1' );
|
36 |
|
37 |
// Translation support:
|
38 |
if ( !defined('POWERPRESS_ABSPATH') )
|
@@ -1647,6 +1647,14 @@ function powerpress_w3tc_can_print_comment($settings)
|
|
1647 |
return false;
|
1648 |
}
|
1649 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1650 |
// Load the general feed settings for feeds handled by powerpress
|
1651 |
function powerpress_load_general_feed_settings()
|
1652 |
{
|
@@ -1676,6 +1684,11 @@ function powerpress_load_general_feed_settings()
|
|
1676 |
add_filter( 'w3tc_can_print_comment', 'powerpress_w3tc_can_print_comment', 10, 1 );
|
1677 |
}
|
1678 |
|
|
|
|
|
|
|
|
|
|
|
1679 |
// If we're in advanced mode and we're dealing with a category feed we're extending, lets work with it...
|
1680 |
if( is_category() && isset($GeneralSettings['custom_cat_feeds']) && is_array($GeneralSettings['custom_cat_feeds']) && in_array( get_query_var('cat'), $GeneralSettings['custom_cat_feeds']) )
|
1681 |
{
|
3 |
Plugin Name: Blubrry PowerPress
|
4 |
Plugin URI: http://create.blubrry.com/resources/powerpress/
|
5 |
Description: <a href="http://create.blubrry.com/resources/powerpress/" target="_blank">Blubrry PowerPress</a> is the No. 1 Podcasting plugin for WordPress. Developed by podcasters for podcasters; features include Simple and Advanced modes, multiple audio/video player options, subscribe to podcast tools, podcast SEO features, and more! Fully supports iTunes, Google Play, Stitcher, and Blubrry Podcasting directories, as well as all podcast applications and clients.
|
6 |
+
Version: 7.1.1
|
7 |
Author: Blubrry
|
8 |
Author URI: http://www.blubrry.com/
|
9 |
Requires at least: 3.6
|
32 |
die("access denied.");
|
33 |
|
34 |
// WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
|
35 |
+
define('POWERPRESS_VERSION', '7.1.1' );
|
36 |
|
37 |
// Translation support:
|
38 |
if ( !defined('POWERPRESS_ABSPATH') )
|
1647 |
return false;
|
1648 |
}
|
1649 |
|
1650 |
+
// Disable minifying if W3TC is enabled
|
1651 |
+
function powerpress_w3tc_minify_enable($enable)
|
1652 |
+
{
|
1653 |
+
if( is_feed() )
|
1654 |
+
return false;
|
1655 |
+
return $enable;
|
1656 |
+
}
|
1657 |
+
|
1658 |
// Load the general feed settings for feeds handled by powerpress
|
1659 |
function powerpress_load_general_feed_settings()
|
1660 |
{
|
1684 |
add_filter( 'w3tc_can_print_comment', 'powerpress_w3tc_can_print_comment', 10, 1 );
|
1685 |
}
|
1686 |
|
1687 |
+
if( is_feed() && defined('W3TC') )
|
1688 |
+
{
|
1689 |
+
add_filter( 'w3tc_minify_enable', 'powerpress_w3tc_minify_enable');
|
1690 |
+
}
|
1691 |
+
|
1692 |
// If we're in advanced mode and we're dealing with a category feed we're extending, lets work with it...
|
1693 |
if( is_category() && isset($GeneralSettings['custom_cat_feeds']) && is_array($GeneralSettings['custom_cat_feeds']) && in_array( get_query_var('cat'), $GeneralSettings['custom_cat_feeds']) )
|
1694 |
{
|
powerpressadmin-player-page.php
CHANGED
@@ -978,14 +978,14 @@ function audio_player_defaults()
|
|
978 |
<td>
|
979 |
<?php print_blubrry_player_demo(); ?>
|
980 |
|
981 |
-
<!-- <p><input name="General[itunes_image_audio]" type="hidden" value="0"/><input name="General[itunes_image_audio]" type="checkbox" value="1" <?php echo ($General['itunes_image_audio']?'checked':''); ?> /> <?php echo __('Use episode iTunes image if set', 'powerpress'); ?> </p> -->
|
982 |
|
983 |
<p>
|
984 |
<?php echo __('Episode level iTunes image if set will be displayed in the player. The URLs to the images must be https:// in order to appear on social networking sites.', 'powerpress'); ?>
|
985 |
</p>
|
986 |
|
987 |
-
<p><input name="General[episode_box_itunes_image]" type="hidden" value="0"/><input name="General[episode_box_itunes_image]" type="checkbox" value="1" <?php echo ($General['episode_box_itunes_image']?'checked':''); ?> /> <?php echo __('Display iTunes episode image field', 'powerpress'); ?> </p>
|
988 |
-
|
989 |
</td>
|
990 |
</tr>
|
991 |
|
978 |
<td>
|
979 |
<?php print_blubrry_player_demo(); ?>
|
980 |
|
981 |
+
<!-- <p><input name="General[itunes_image_audio]" type="hidden" value="0"/><input name="General[itunes_image_audio]" type="checkbox" value="1" <?php echo ( !empty($General['itunes_image_audio'])?'checked':''); ?> /> <?php echo __('Use episode iTunes image if set', 'powerpress'); ?> </p> -->
|
982 |
|
983 |
<p>
|
984 |
<?php echo __('Episode level iTunes image if set will be displayed in the player. The URLs to the images must be https:// in order to appear on social networking sites.', 'powerpress'); ?>
|
985 |
</p>
|
986 |
|
987 |
+
<p><input name="General[episode_box_itunes_image]" type="hidden" value="0" /><input name="General[episode_box_itunes_image]" type="checkbox" value="1" <?php echo ( !empty($General['episode_box_itunes_image']) ?'checked':''); ?> /> <?php echo __('Display iTunes episode image field', 'powerpress'); ?> </p>
|
988 |
+
<p><input name="General[bp_episode_image]" type="hidden" value="0" /><input name="General[bp_episode_image]" type="checkbox" value="1" <?php echo ( !empty($General['bp_episode_image']) ?'checked':''); ?> /> <?php echo __('Use iTunes episode image with player', 'powerpress'); ?> </p>
|
989 |
</td>
|
990 |
</tr>
|
991 |
|
powerpressadmin-rss-import.php
CHANGED
@@ -725,8 +725,9 @@ jQuery(document).ready( function() {
|
|
725 |
|
726 |
// Look for an enclosure, if not found skip it...
|
727 |
$enclosure_data = false;
|
728 |
-
if( !preg_match('
|
729 |
echo sprintf(__('No Media found for item %d', 'powerpress'), $this->m_item_pos);
|
|
|
730 |
if( empty($import_blog_posts) ) {
|
731 |
$this->m_item_skipped_count++;
|
732 |
return false;
|
725 |
|
726 |
// Look for an enclosure, if not found skip it...
|
727 |
$enclosure_data = false;
|
728 |
+
if( !preg_match('#<enclosure(.*?)(/>|</enclosure>)#is', $post, $enclosure_data) ) {
|
729 |
echo sprintf(__('No Media found for item %d', 'powerpress'), $this->m_item_pos);
|
730 |
+
//echo '<pre>'.htmlspecialchars($post).'</pre>'; // Uncomment for debugging
|
731 |
if( empty($import_blog_posts) ) {
|
732 |
$this->m_item_skipped_count++;
|
733 |
return false;
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: amandato, blubrry
|
|
3 |
Tags: podcasting, podcast, podcaster, powerpress, itunes, google play music, google play, enclosure, professional, apple, apple tv, ipad, iphone, soundcloud, squarespace, youtube, viddler, ustream, podcasting, audio, video, rss2, feed, player, media, rss, mp3, music, embed, feedburner, statistics, stats, flv, flash, id3, episodes, blubrry, mp4, m4v, wordpressmu, mu, wordpress mu, multisite, multi site, mediacaster, post, plugin, posts, simple, social, dashboard, TSG, Buzzsprout, MTR, WP-boxCast, CastMyBlog, tgs podcasting, simple podcasting, seriously simple podcasting, seriously-simple-podcasting, serious, seriously, ssp, podlove, podcast.de, clammr, clammr radio, audio player, stitcher, tunein, show, shows, series, docs, documentation, support, free, add-ons, extensions, addons, libsyn, libsyn-podcasting, podbean, podomatic, spreaker
|
4 |
Requires at least: 3.6
|
5 |
Tested up to: 4.8.1
|
6 |
-
Stable tag: 7.1
|
7 |
Donate link: https://www.patreon.com/blubrry?ty=h
|
8 |
License: GPLv2 or later
|
9 |
|
@@ -228,11 +228,22 @@ To install Blubrry PowerPress manually, follow these steps:
|
|
228 |
|
229 |
= Next Major Release Announcements =
|
230 |
* Facebook Instant Articles for podcasting coming in next release!
|
231 |
-
* We are looking for beta testers! If you would like to beta test future versions of PowerPress, please [contact us](http://www.blubrry.com/contact.php) with your name and email.
|
232 |
|
233 |
= Fan of PowerPress and want to show your support? =
|
234 |
If you are a fan of PowerPress, we would greatly appreciate it if you could take a moment and [leave us a review on WordPress.org](https://wordpress.org/support/plugin/powerpress/reviews/?rate=5#new-post). Your support is greatly appreciated!
|
235 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
236 |
|
237 |
= 7.1 =
|
238 |
* Released on 7/11/2017
|
@@ -584,7 +595,7 @@ Nicolas Bouliane, [Personal Blog](http://nicolasbouliane.com/) - contributed cod
|
|
584 |
|
585 |
== Translators ==
|
586 |
* Danish translation for v1.0.11+ by [Team Blogos](http://wordpress.blogos.dk/s%C3%B8g-efter-downloads/?did=280) - Latest translation available [here](http://wordpress.blogos.dk/s%C3%B8g-efter-downloads/?did=280)
|
587 |
-
* French translation for v1.0.11+ by [Aureien Denis](http://wpchannel.com/) - Aur�lien is looking for assistance maintaining the French translation, email wpchannel [at] gmail.com if interested.
|
588 |
* Simplified Chinese for v1.0.12+ by [webmote](http://codeex.cn) - From webmote: Welcome to use the plugin. Very good! and then hope you to access my site.
|
589 |
* Italian translation for v2.0.4+ by [Umberto Sartori](http://veneziadoc.net/)
|
590 |
* Romanian translation for v2.0.4+ by Alexander Ovsov (Web Geek Sciense: http://webhostinggeeks.com/science/)
|
3 |
Tags: podcasting, podcast, podcaster, powerpress, itunes, google play music, google play, enclosure, professional, apple, apple tv, ipad, iphone, soundcloud, squarespace, youtube, viddler, ustream, podcasting, audio, video, rss2, feed, player, media, rss, mp3, music, embed, feedburner, statistics, stats, flv, flash, id3, episodes, blubrry, mp4, m4v, wordpressmu, mu, wordpress mu, multisite, multi site, mediacaster, post, plugin, posts, simple, social, dashboard, TSG, Buzzsprout, MTR, WP-boxCast, CastMyBlog, tgs podcasting, simple podcasting, seriously simple podcasting, seriously-simple-podcasting, serious, seriously, ssp, podlove, podcast.de, clammr, clammr radio, audio player, stitcher, tunein, show, shows, series, docs, documentation, support, free, add-ons, extensions, addons, libsyn, libsyn-podcasting, podbean, podomatic, spreaker
|
4 |
Requires at least: 3.6
|
5 |
Tested up to: 4.8.1
|
6 |
+
Stable tag: 7.1.1
|
7 |
Donate link: https://www.patreon.com/blubrry?ty=h
|
8 |
License: GPLv2 or later
|
9 |
|
228 |
|
229 |
= Next Major Release Announcements =
|
230 |
* Facebook Instant Articles for podcasting coming in next release!
|
231 |
+
* We are looking for beta testers! If you would like to beta test future versions of PowerPress, please [contact us](http://www.blubrry.com/contact.php#feedback) with your name and email.
|
232 |
|
233 |
= Fan of PowerPress and want to show your support? =
|
234 |
If you are a fan of PowerPress, we would greatly appreciate it if you could take a moment and [leave us a review on WordPress.org](https://wordpress.org/support/plugin/powerpress/reviews/?rate=5#new-post). Your support is greatly appreciated!
|
235 |
|
236 |
+
= 7.1.1 =
|
237 |
+
* Released on 08/24/2017
|
238 |
+
* NOTE: There is no urgency to update to this version unless you can benefit from bug fixes listed.
|
239 |
+
* BETA COMING SOON: PowerPress 7.2 Beta will be available within 24-72 hours. Please visit https://create.blubrry.com/resources/powerpress/powerpress-beta/ for more details.
|
240 |
+
* Added logic to prevent the W3 Total Cache plugin from minifying podcast feeds. (Thanks @allimaple for bringing to our attention)
|
241 |
+
* Fixed warning messages in the getid3 library so they comply with PHP 7.1+. (Thanks @mahe for letting us know about the problem)
|
242 |
+
* Fixed error verifying URLs for file formats not supported by iTunes.
|
243 |
+
* Feed import now compatible with Spreaker podcast feeds.
|
244 |
+
* Added code when including the subscribe CSS file to make sure it's always included with various WordPress updates (Thanks Tim for the code fix!)
|
245 |
+
* Added checkbox in Blubrry Player configuration for making iTunes Episode image use optional with player. Unchecked by default.
|
246 |
+
|
247 |
|
248 |
= 7.1 =
|
249 |
* Released on 7/11/2017
|
595 |
|
596 |
== Translators ==
|
597 |
* Danish translation for v1.0.11+ by [Team Blogos](http://wordpress.blogos.dk/s%C3%B8g-efter-downloads/?did=280) - Latest translation available [here](http://wordpress.blogos.dk/s%C3%B8g-efter-downloads/?did=280)
|
598 |
+
* French translation for v1.0.11+ by [Aureien Denis](http://wpchannel.com/) - Aur�lien is looking for assistance maintaining the French translation, email wpchannel [at] gmail.com if interested.
|
599 |
* Simplified Chinese for v1.0.12+ by [webmote](http://codeex.cn) - From webmote: Welcome to use the plugin. Very good! and then hope you to access my site.
|
600 |
* Italian translation for v2.0.4+ by [Umberto Sartori](http://veneziadoc.net/)
|
601 |
* Romanian translation for v2.0.4+ by Alexander Ovsov (Web Geek Sciense: http://webhostinggeeks.com/science/)
|
views/settings_tab_destinations.php
CHANGED
@@ -92,7 +92,7 @@
|
|
92 |
<p>
|
93 |
<?php echo __('The largest podcast directory in the World!', 'powerpress'); ?>
|
94 |
</p><p>
|
95 |
-
<?php echo sprintf(__('Once listed, %s to expand your podcast distribution to Blubrry\'s SmartTV Apps (e.g. Roku) and apply to be on Spotify.', 'powerpress'), '<a href="http://create.blubrry.com/resources/blubrry-podcast-directory/
|
96 |
</p>
|
97 |
<label for="blubrry_url" style="font-size: 120%; display: block; font-weight: bold;"><?php echo __('Blubrry Listing URL', 'powerpress'); ?></label>
|
98 |
<input type="text" class="bpp-input-normal" id="blubrry_url" name="Feed[blubrry_url]" value="<?php echo esc_attr($FeedSettings['blubrry_url']); ?>" maxlength="255" />
|
92 |
<p>
|
93 |
<?php echo __('The largest podcast directory in the World!', 'powerpress'); ?>
|
94 |
</p><p>
|
95 |
+
<?php echo sprintf(__('Once listed, %s to expand your podcast distribution to Blubrry\'s SmartTV Apps (e.g. Roku) and apply to be on Spotify.', 'powerpress'), '<a href="http://create.blubrry.com/resources/blubrry-podcast-directory/" target="_blank">'. __('Get Featured', 'powerpress').'</a>' ); ?>
|
96 |
</p>
|
97 |
<label for="blubrry_url" style="font-size: 120%; display: block; font-weight: bold;"><?php echo __('Blubrry Listing URL', 'powerpress'); ?></label>
|
98 |
<input type="text" class="bpp-input-normal" id="blubrry_url" name="Feed[blubrry_url]" value="<?php echo esc_attr($FeedSettings['blubrry_url']); ?>" maxlength="255" />
|