Пример #1
0
function powerpress_meta_box($object, $box)
{
    $FeedSlug = str_replace('powerpress-', '', $box['id']);
    $DurationHH = '';
    $DurationMM = '';
    $DurationSS = '';
    $EnclosureURL = '';
    $EnclosureLength = '';
    $Embed = '';
    $CoverImage = '';
    $iTunesDuration = false;
    $iTunesKeywords = '';
    $iTunesSubtitle = '';
    $iTunesSummary = '';
    $iTunesAuthor = '';
    $iTunesExplicit = '';
    $iTunesCC = false;
    $iTunesOrder = false;
    $FeedAlways = false;
    $iTunesBlock = false;
    $NoPlayer = false;
    $NoLinks = false;
    $IsHD = false;
    $IsVideo = false;
    $Width = false;
    $Height = false;
    $WebMSrc = false;
    $GeneralSettings = get_option('powerpress_general');
    if (!isset($GeneralSettings['set_size'])) {
        $GeneralSettings['set_size'] = 0;
    }
    if (!isset($GeneralSettings['set_duration'])) {
        $GeneralSettings['set_duration'] = 0;
    }
    if (!isset($GeneralSettings['episode_box_embed'])) {
        $GeneralSettings['episode_box_embed'] = 0;
    }
    if (!empty($GeneralSettings['blubrry_hosting']) && $GeneralSettings['blubrry_hosting'] === 'false') {
        $GeneralSettings['blubrry_hosting'] = false;
    }
    $ExtraData = array();
    if ($object->ID) {
        if ($FeedSlug == 'podcast') {
            $enclosureArray = get_post_meta($object->ID, 'enclosure', true);
        } else {
            $enclosureArray = get_post_meta($object->ID, '_' . $FeedSlug . ':enclosure', true);
        }
        $EnclosureURL = '';
        $EnclosureLength = '';
        $EnclosureType = '';
        $EnclosureSerialized = false;
        if ($enclosureArray) {
            // list($EnclosureURL, $EnclosureLength, $EnclosureType, $EnclosureSerialized) =  explode("\n", $enclosureArray, 4);
            $MetaParts = explode("\n", $enclosureArray, 4);
            if (count($MetaParts) > 0) {
                $EnclosureURL = $MetaParts[0];
            }
            if (count($MetaParts) > 1) {
                $EnclosureLength = $MetaParts[1];
            }
            if (count($MetaParts) > 2) {
                $EnclosureType = $MetaParts[2];
            }
            if (count($MetaParts) > 3) {
                $EnclosureSerialized = $MetaParts[3];
            }
        }
        $EnclosureURL = trim($EnclosureURL);
        $EnclosureLength = trim($EnclosureLength);
        $EnclosureType = trim($EnclosureType);
        if ($EnclosureSerialized) {
            $ExtraData = @unserialize($EnclosureSerialized);
            if ($ExtraData) {
                if (isset($ExtraData['duration'])) {
                    $iTunesDuration = $ExtraData['duration'];
                } else {
                    if (isset($ExtraData['length'])) {
                        // Podcasting plugin support
                        $iTunesDuration = $ExtraData['length'];
                    }
                }
                if (isset($ExtraData['embed'])) {
                    $Embed = $ExtraData['embed'];
                }
                if (isset($ExtraData['keywords'])) {
                    $iTunesKeywords = $ExtraData['keywords'];
                }
                if (isset($ExtraData['subtitle'])) {
                    $iTunesSubtitle = $ExtraData['subtitle'];
                }
                if (isset($ExtraData['summary'])) {
                    $iTunesSummary = $ExtraData['summary'];
                }
                if (isset($ExtraData['author'])) {
                    $iTunesAuthor = $ExtraData['author'];
                }
                if (isset($ExtraData['no_player'])) {
                    $NoPlayer = $ExtraData['no_player'];
                }
                if (isset($ExtraData['no_links'])) {
                    $NoLinks = $ExtraData['no_links'];
                }
                if (isset($ExtraData['explicit'])) {
                    $iTunesExplicit = $ExtraData['explicit'];
                }
                if (isset($ExtraData['cc'])) {
                    $iTunesCC = $ExtraData['cc'];
                }
                if (isset($ExtraData['order'])) {
                    $iTunesOrder = $ExtraData['order'];
                }
                if (isset($ExtraData['always'])) {
                    $FeedAlways = $ExtraData['always'];
                }
                if (isset($ExtraData['block'])) {
                    $iTunesBlock = $ExtraData['block'];
                }
                if (isset($ExtraData['image'])) {
                    $CoverImage = $ExtraData['image'];
                }
                if (isset($ExtraData['ishd'])) {
                    $IsHD = $ExtraData['ishd'];
                }
                if (isset($ExtraData['height'])) {
                    $Height = $ExtraData['height'];
                }
                if (isset($ExtraData['width'])) {
                    $Width = $ExtraData['width'];
                }
                if (isset($ExtraData['webm_src'])) {
                    $WebMSrc = $ExtraData['webm_src'];
                }
            }
        }
        if (defined('POWERPRESS_AUTO_DETECT_ONCE') && POWERPRESS_AUTO_DETECT_ONCE != false) {
            if ($EnclosureLength) {
                $GeneralSettings['set_size'] = 1;
            }
            // specify
            if ($iTunesDuration) {
                $GeneralSettings['set_duration'] = 1;
            }
            // specify
        }
        if ($FeedSlug == 'podcast' && !$iTunesDuration) {
            // Get the iTunes duration the old way (very old way)
            $iTunesDuration = get_post_meta($object->ID, 'itunes:duration', true);
        }
        if ($iTunesDuration) {
            $iTunesDuration = powerpress_readable_duration($iTunesDuration, true);
            list($DurationHH, $DurationMM, $DurationSS) = explode(':', $iTunesDuration);
            if (ltrim($DurationHH, '0') == 0) {
                $DurationHH = '';
            }
            if ($DurationHH == '' && ltrim($DurationMM, '0') == 0) {
                $DurationMM = '';
            }
            if ($DurationHH == '' && $DurationMM == '' && ltrim($DurationSS, '0') == 0) {
                $DurationSS = '';
            }
        }
        // Check for HD Video formats
        if (preg_match('/\\.(mp4|m4v|webm|ogg|ogv)$/i', $EnclosureURL)) {
            $IsVideo = true;
        }
    }
    if ($EnclosureURL) {
        ?>
<div>
	<input type="checkbox" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][change_podcast]" id="powerpress_change" value="1"  onchange="javascript:document.getElementById('powerpress_podcast_box_<?php 
        echo $FeedSlug;
        ?>
').style.display=(this.checked?'block':'none');" />
	<?php 
        echo __('Modify existing podcast episode', 'powerpress');
        ?>
</div>
<?php 
    } else {
        echo '<input type="hidden" name="Powerpress[' . $FeedSlug . '][new_podcast]" value="1" />' . PHP_EOL;
    }
    ?>

<div class="powerpress_podcast_box" id="powerpress_podcast_box_<?php 
    echo $FeedSlug;
    ?>
"<?php 
    if ($EnclosureURL) {
        echo ' style="display:none;"';
    }
    ?>
>
<?php 
    if ($EnclosureURL) {
        ?>
	<div class="powerpress_row">
		<label><?php 
        echo __('Remove', 'powerpress');
        ?>
</label>
		<div class="powerpress_row_content">
			<input type="checkbox" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][remove_podcast]" id="powerpress_remove" value="1"  onchange="javascript:document.getElementById('powerpress_podcast_edit_<?php 
        echo $FeedSlug;
        ?>
').style.display=(this.checked?'none':'block');" />
			<?php 
        echo __('Podcast episode will be removed from this post upon save', 'powerpress');
        ?>
		</div>
	</div>
<?php 
    }
    ?>
	<div id="powerpress_podcast_edit_<?php 
    echo $FeedSlug;
    ?>
">
		<div class="error below-h2" id="powerpress_warning_<?php 
    echo $FeedSlug;
    ?>
" style="display:none;"></div>
		<div class="success below-h2" id="powerpress_success_<?php 
    echo $FeedSlug;
    ?>
" style="display:none;"></div>
		<div class="powerpress_row">
			<label for="Powerpress[<?php 
    echo $FeedSlug;
    ?>
][url]"><?php 
    echo __('Media URL', 'powerpress');
    ?>
</label>
			<div class="powerpress_row_content">
				<input id="powerpress_url_<?php 
    echo $FeedSlug;
    ?>
" class="powerpress-url" name="Powerpress[<?php 
    echo $FeedSlug;
    ?>
][url]" value="<?php 
    echo $EnclosureURL;
    ?>
" <?php 
    echo !empty($ExtraData['hosting']) ? 'readOnly' : '';
    ?>
 style="width: 70%; font-size: 90%;" />
				<?php 
    if (!empty($GeneralSettings['blubrry_hosting']) && $GeneralSettings['blubrry_hosting'] !== 'false' || empty($GeneralSettings['no_media_url_folder'])) {
        ?>
				<a href="<?php 
        echo admin_url('admin.php');
        ?>
?action=powerpress-jquery-media&podcast-feed=<?php 
        echo $FeedSlug;
        ?>
&KeepThis=true&TB_iframe=true&modal=true" title="<?php 
        echo __('Browse Media File', 'powerpress');
        ?>
" class="thickbox"><img src="<?php 
        echo powerpress_get_root_url();
        ?>
/images/blubrry_folder.png" alt="<?php 
        echo __('Browse Media Files', 'powerpress');
        ?>
" /></a>
				<?php 
    }
    ?>
				<input type="button" id="powerpress_check_<?php 
    echo $FeedSlug;
    ?>
_button" name="powerpress_check_<?php 
    echo $FeedSlug;
    ?>
_button" value="<?php 
    echo __('Verify', 'powerpress');
    ?>
" onclick="powerpress_get_media_info('<?php 
    echo $FeedSlug;
    ?>
');" alt="<?php 
    echo __('Verify Media', 'powerpress');
    ?>
" class="button" />
				<img id="powerpress_check_<?php 
    echo $FeedSlug;
    ?>
" src="<?php 
    echo admin_url();
    ?>
images/loading.gif" style="vertical-align:text-top; display: none;" alt="<?php 
    echo __('Checking Media', 'powerpress');
    ?>
" />
				
				<input type="hidden" id="powerpress_hosting_<?php 
    echo $FeedSlug;
    ?>
" name="Powerpress[<?php 
    echo $FeedSlug;
    ?>
][hosting]" value="<?php 
    echo !empty($ExtraData['hosting']) ? '1' : '0';
    ?>
" />
				<div id="powerpress_hosting_note_<?php 
    echo $FeedSlug;
    ?>
" style="margin-left: 2px; padding-bottom: 2px; padding-top: 2px; display: <?php 
    echo !empty($ExtraData['hosting']) ? 'block' : 'none';
    ?>
"><em><?php 
    echo __('Media file hosted by blubrry.com.', 'powerpress');
    ?>
					(<a href="#" title="<?php 
    echo __('Remove Blubrry.com hosted media file', 'powerpress');
    ?>
" onclick="powerpress_remove_hosting('<?php 
    echo $FeedSlug;
    ?>
');return false;"><?php 
    echo __('remove', 'powerpress');
    ?>
</a>)
				</em></div>
				

				<div style="padding-bottom: 2px; padding-top: 2px;">
					<span id="powerpress_ishd_<?php 
    echo $FeedSlug;
    ?>
_span" style="margin-left: 20px; display: <?php 
    echo $IsVideo ? 'inline' : 'none';
    ?>
; "><input id="powerpress_ishd_<?php 
    echo $FeedSlug;
    ?>
" name="Powerpress[<?php 
    echo $FeedSlug;
    ?>
][ishd]" value="1" type="checkbox" <?php 
    echo $IsHD == 1 ? 'checked' : '';
    ?>
 /> <?php 
    echo __('Video is HD (720p/1080i/1080p)', 'powerpress');
    ?>
</span>
<?php 
    if (!empty($GeneralSettings['episode_box_no_player']) || !empty($GeneralSettings['episode_box_no_links']) || !empty($GeneralSettings['episode_box_no_player_and_links'])) {
        if (!empty($GeneralSettings['episode_box_no_player_and_links'])) {
            ?>
		<span style="margin-left: 20px;"><input id="powerpress_no_player_and_links_<?php 
            echo $FeedSlug;
            ?>
" name="Powerpress[<?php 
            echo $FeedSlug;
            ?>
][no_player_and_links]" value="1" type="checkbox" <?php 
            echo $NoPlayer == 1 && $NoLinks == 1 ? 'checked' : '';
            ?>
 /> <?php 
            echo __('Do not display player and media links', 'powerpress');
            ?>
</span>
		<?php 
        }
        if (!empty($GeneralSettings['episode_box_no_player'])) {
            ?>
		<span style="margin-left: 20px;"><input id="powerpress_no_player_<?php 
            echo $FeedSlug;
            ?>
" name="Powerpress[<?php 
            echo $FeedSlug;
            ?>
][no_player]" value="1" type="checkbox" <?php 
            echo $NoPlayer == 1 ? 'checked' : '';
            ?>
 /> <?php 
            echo __('Do not display player', 'powerpress');
            ?>
</span>
		<?php 
        }
        if (!empty($GeneralSettings['episode_box_no_links'])) {
            ?>
		<span style="margin-left: 20px;"><input id="powerpress_no_links_<?php 
            echo $FeedSlug;
            ?>
" name="Powerpress[<?php 
            echo $FeedSlug;
            ?>
][no_links]" value="1" type="checkbox" <?php 
            echo $NoLinks == 1 ? 'checked' : '';
            ?>
 /> <?php 
            echo __('Do not display media links', 'powerpress');
            ?>
</span>
		<?php 
        }
    }
    ?>
				</div>
			</div><!-- end powerpress_row_content -->
		</div><!-- end powerpress_row -->
		<div class="powerpress_row" id="powerpress_webm_<?php 
    echo $FeedSlug;
    ?>
" style="display: <?php 
    echo $WebMSrc != '' || preg_match('/\\.(mp4|m4v)$/i', $EnclosureURL) ? 'block' : 'none';
    ?>
;">
			<label for="Powerpress[<?php 
    echo $FeedSlug;
    ?>
][webm_src]"><?php 
    echo __('Alt WebM URL', 'powerpress');
    ?>
</label>
			<div class="powerpress_row_content">
				<input id="powerpress_webm_src_<?php 
    echo $FeedSlug;
    ?>
" class="powerpress-webm-src" name="Powerpress[<?php 
    echo $FeedSlug;
    ?>
][webm_src]" value="<?php 
    echo $WebMSrc;
    ?>
" style="width: 70%; font-size: 90%;" />
			</div>
			<div class="powerpress_row_content">
				<em><?php 
    echo __('For HTML5 Video fallback, enter an alternative WebM media URL above. (optional)', 'powerpress');
    ?>
</em>
			</div>
		</div>
<?php 
    if (empty($GeneralSettings['episode_box_mode']) || $GeneralSettings['episode_box_mode'] != 1) {
        ?>
		<div class="powerpress_row">
			<label><?php 
        echo __('File Size', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<div style="margin-bottom: 4px;">
					<input id="powerpress_set_size_0_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][set_size]" value="0" type="radio" <?php 
        echo $GeneralSettings['set_size'] == 0 ? 'checked' : '';
        ?>
 /> 
					<?php 
        echo __('Auto detect file size', 'powerpress');
        ?>
				</div>
				<div>
					<input id="powerpress_set_size_1_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][set_size]" value="1" type="radio" <?php 
        echo $GeneralSettings['set_size'] == 1 ? 'checked' : '';
        ?>
 />
					<?php 
        echo __('Specify', 'powerpress') . ': ';
        ?>
					<input id="powerpress_size_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][size]" value="<?php 
        echo $EnclosureLength;
        ?>
" style="width: 110px; font-size: 90%;" onchange="javascript:jQuery('#powerpress_set_size_1_<?php 
        echo $FeedSlug;
        ?>
').attr('checked', true);"  />
					<?php 
        echo __('in bytes', 'powerpress');
        ?>
				</div>
			</div>
		</div>
		<div class="powerpress_row">
			<label><?php 
        echo __('Duration', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<div style="margin-bottom: 4px;">
					<input id="powerpress_set_duration_0_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][set_duration]" value="0" type="radio" <?php 
        echo $GeneralSettings['set_duration'] == 0 ? 'checked' : '';
        ?>
 />
					<?php 
        echo __('Auto detect duration (mp3\'s only)', 'powerpress');
        ?>
				</div>
				<div style="margin-bottom: 4px;">
					<input id="powerpress_set_duration_1_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][set_duration]" value="1" type="radio" <?php 
        echo $GeneralSettings['set_duration'] == 1 ? 'checked' : '';
        ?>
 />
					<?php 
        echo __('Specify', 'powerpress') . ': ';
        ?>
					<input id="powerpress_duration_hh_<?php 
        echo $FeedSlug;
        ?>
" class="powerpress-duration-hh" placeholder="HH" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][duration_hh]" maxlength="2" value="<?php 
        echo $DurationHH;
        ?>
" style="width: 36px; font-size: 90%; text-align: right;" onchange="javascript:jQuery('#powerpress_set_duration_1_<?php 
        echo $FeedSlug;
        ?>
').attr('checked', true);" /><strong>:</strong> 
					<input id="powerpress_duration_mm_<?php 
        echo $FeedSlug;
        ?>
" class="powerpress-duration-mm" placeholder="MM" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][duration_mm]" maxlength="2" value="<?php 
        echo $DurationMM;
        ?>
" style="width: 36px; font-size: 90%; text-align: right;" onchange="javascript:jQuery('#powerpress_set_duration_1_<?php 
        echo $FeedSlug;
        ?>
').attr('checked', true);" /><strong>:</strong> 
					<input id="powerpress_duration_ss_<?php 
        echo $FeedSlug;
        ?>
" class="powerpress-duration-ss" placeholder="SS" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][duration_ss]" maxlength="10" value="<?php 
        echo $DurationSS;
        ?>
" style="width: 36px; font-size: 90%; text-align: right;" onchange="javascript:jQuery('#powerpress_set_duration_1_<?php 
        echo $FeedSlug;
        ?>
').attr('checked', true);" />
				</div>
				<div>
					<input id="powerpress_set_duration_2_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][set_duration]" value="-1" type="radio" <?php 
        echo $GeneralSettings['set_duration'] == -1 ? 'checked' : '';
        ?>
 />
					<?php 
        echo __('Not specified', 'powerpress');
        ?>
				</div>
			</div>
		</div>
<?php 
    } else {
        ?>
<input id="powerpress_set_size_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][set_size]" value="0" type="hidden" />
<input id="powerpress_set_duration_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][set_duration]" value="0" type="hidden" />
<?php 
    }
    // Video Coverart Image (Poster)
    if (!empty($GeneralSettings['episode_box_cover_image']) || $CoverImage) {
        $form_action_url = admin_url("media-upload.php?type=powerpress_image&tab=type&post_id={$object->ID}&powerpress_feed={$FeedSlug}&TB_iframe=true&width=450&height=200");
        ?>
		<div class="powerpress_row">
			<label for="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][image]"><?php 
        echo __('Poster Image', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<input id="powerpress_image_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][image]" value="<?php 
        echo htmlspecialchars($CoverImage);
        ?>
" placeholder="<?php 
        echo htmlspecialchars(__('e.g. http://example.com/path/to/image.jpg', 'powerpress'));
        ?>
" style="width: 70%; font-size: 90%;" size="250" />
				<a href="<?php 
        echo $form_action_url;
        ?>
" class="thickbox powerpress-image-browser" id="powerpress_image_browser_<?php 
        echo $FeedSlug;
        ?>
" title="<?php 
        echo __('Select Poster Image', 'powerpress');
        ?>
"><img src="images/media-button-image.gif" /></a>
			</div>
			<div class="powerpress_row_content">
				<em><?php 
        echo __('Poster image for video (m4v, mp4, ogv, webm, etc..)', 'powerpress');
        ?>
</em>
			</div>
		</div>
<?php 
    }
    // Player width/height
    if (!empty($GeneralSettings['episode_box_player_size']) || $Width || $Height) {
        ?>
		<div class="powerpress_row">
			<label><?php 
        echo __('Player Size', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<input id="powerpress_player_width_<?php 
        echo $FeedSlug;
        ?>
" class="powerpress-player-width" placeholder="<?php 
        echo htmlspecialchars(__('Width', 'powerpress'));
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][width]" value="<?php 
        echo htmlspecialchars($Width);
        ?>
" style="width: 50px; font-size: 90%;" size="5" />
				x
				<input id="powerpress_player_height_<?php 
        echo $FeedSlug;
        ?>
" class="powerpress-player-height" placeholder="<?php 
        echo htmlspecialchars(__('Height', 'powerpress'));
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][height]" value="<?php 
        echo htmlspecialchars($Height);
        ?>
" style="width: 50px; font-size: 90%;" size="5" />
			</div>
		</div>
<?php 
    }
    // Embed option, enter your own embed code provided by sites such as YouTube, Viddler and Blip.tv
    if (!empty($GeneralSettings['episode_box_embed']) || $Embed) {
        ?>
		<div class="powerpress_row">
			<label for="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][embed]"><?php 
        echo __('Media Embed', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<textarea class="powerpress-embed" id="powerpress_embed_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][embed]" style="width: 90%; height: 80px; font-size: 90%;" onfocus="this.select();"><?php 
        echo htmlspecialchars($Embed);
        ?>
</textarea>
			</div>
		</div>
<?php 
    }
    if (!empty($GeneralSettings['episode_box_keywords']) || $iTunesKeywords) {
        ?>
		<div class="powerpress_row">
			<label for="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][keywords]"><?php 
        echo __('iTunes Keywords', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<input id="powerpress_keywords_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][keywords]" value="<?php 
        echo htmlspecialchars($iTunesKeywords);
        ?>
" style="width: 90%; font-size: 90%;" size="250" />
			</div>
			<div class="powerpress_row_content">
				<em><?php 
        echo __('Enter up to 12 keywords separated by commas. Leave blank to use your blog post tags.', 'powerpress');
        ?>
</em>
			</div>
		</div>
<?php 
    }
    if (!empty($GeneralSettings['episode_box_subtitle']) || $iTunesSubtitle) {
        ?>
		<div class="powerpress_row">
			<label for="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][subtitle]"><?php 
        echo __('iTunes Subtitle', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<input id="powerpress_subtitle_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][subtitle]" value="<?php 
        echo htmlspecialchars($iTunesSubtitle);
        ?>
" style="width: 90%; font-size: 90%;" size="250" />
			</div>
			<div class="powerpress_row_content">
				<em><?php 
        echo __('Your subtitle may not contain HTML and cannot exceed 250 characters in length. Leave blank to use the first 250 characters of your blog post.', 'powerpress');
        ?>
</em>
			</div>
		</div>
<?php 
    }
    if (!empty($GeneralSettings['episode_box_summary']) || $iTunesSummary) {
        ?>
		<div class="powerpress_row">
			<label for="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][summary]"><?php 
        echo __('iTunes Summary', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<textarea id="powerpress_summary_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][summary]" style="width: 90%; height: 80px; font-size: 90%;"><?php 
        echo htmlspecialchars($iTunesSummary);
        ?>
</textarea>
			</div>	
			<div class="powerpress_row_content">
				<em><?php 
        echo __('Your summary may not contain HTML and cannot exceed 4,000 characters in length. Leave blank to use your blog post.', 'powerpress');
        ?>
</em>
			</div>
		</div>
<?php 
    }
    if (!empty($GeneralSettings['episode_box_author']) || $iTunesAuthor) {
        ?>
		<div class="powerpress_row">
			<label for="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][author]"><?php 
        echo __('iTunes Author', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<input id="powerpress_author_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][author]" value="<?php 
        echo htmlspecialchars($iTunesAuthor);
        ?>
" style="width: 60%; font-size: 90%;" size="250" />
			</div>
			<div class="powerpress_row_content">
				<em><?php 
        echo __('Leave blank to use post author name.', 'powerpress');
        ?>
</em>
			</div>
		</div>
<?php 
    }
    if (!empty($GeneralSettings['episode_box_explicit']) || $iTunesExplicit) {
        ?>
		<div class="powerpress_row">
			<label for="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][explicit]"><?php 
        echo __('iTunes Explicit', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<select id="powerpress_explicit_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][explicit]" style="width: 220px;">
<?php 
        $explicit_array = array('' => __('Use feed\'s explicit setting', 'powerpress'), 0 => __('no - display nothing', 'powerpress'), 1 => __('yes - explicit content', 'powerpress'), 2 => __('clean - no explicit content', 'powerpress'));
        while (list($value, $desc) = each($explicit_array)) {
            echo "\t<option value=\"{$value}\"" . ($iTunesExplicit == $value ? ' selected' : '') . ">{$desc}</option>\n";
        }
        ?>
					</select>
			</div>	
		</div>
<?php 
    }
    if (!empty($GeneralSettings['episode_box_closed_captioned']) || $iTunesCC) {
        ?>
		<div class="powerpress_row">
			<label for="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][cc]"><?php 
        echo __('iTunes CC', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<select id="powerpress_cc_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][cc]" style="width: 220px;">
<?php 
        $cc_array = array('' => __('No Closed Captioning', 'powerpress'), 1 => __('Yes, Closed Captioned media', 'powerpress'));
        while (list($value, $desc) = each($cc_array)) {
            echo "\t<option value=\"{$value}\"" . ($iTunesCC == $value ? ' selected' : '') . ">{$desc}</option>\n";
        }
        unset($cc_array);
        ?>
					</select>
			</div>	
		</div>
<?php 
    }
    if (!empty($GeneralSettings['episode_box_order']) || $iTunesOrder) {
        ?>
		<div class="powerpress_row">
			<label for="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][order]"><?php 
        echo __('iTunes Order', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<input id="powerpress_order_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][order]" value="<?php 
        echo htmlspecialchars($iTunesOrder);
        ?>
" style="width: 60px; font-size: 90%;" size="250" />
			</div>	
		</div>
<?php 
    }
    if (!empty($GeneralSettings['episode_box_feature_in_itunes'])) {
        $iTunesFeatured = get_option('powerpress_itunes_featured');
        $FeaturedChecked = false;
        if (!empty($object->ID) && !empty($iTunesFeatured[$FeedSlug]) && $iTunesFeatured[$FeedSlug] == $object->ID) {
            $FeaturedChecked = true;
        }
        ?>
		<div class="powerpress_row">
			<label for="PowerpressFeature[<?php 
        echo $FeedSlug;
        ?>
]"><?php 
        echo __('Feature Episode', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<input type="checkbox" id="powerpress_feature_<?php 
        echo $FeedSlug;
        ?>
" name="PowerpressFeature[<?php 
        echo $FeedSlug;
        ?>
]" value="1" <?php 
        echo $FeaturedChecked ? 'checked' : '';
        ?>
 />
				<?php 
        echo __('Episode will appear at the top of your episode list in the iTunes directory.', 'powerpress');
        ?>
			</div>	
		</div>
<?php 
    }
    if (!empty($GeneralSettings['episode_box_block']) || $iTunesBlock) {
        ?>
		<div class="powerpress_row">
			<label for="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][block]"><?php 
        echo __('iTunes Block', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<select id="powerpress_block_<?php 
        echo $FeedSlug;
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][block]" style="width: 220px;">
<?php 
        $block_array = array('' => __('No', 'powerpress'), 1 => __('Yes, Block episode from iTunes', 'powerpress'));
        while (list($value, $desc) = each($block_array)) {
            echo "\t<option value=\"{$value}\"" . ($iTunesBlock == $value ? ' selected' : '') . ">{$desc}</option>\n";
        }
        unset($block_array);
        ?>
					</select>
			</div>	
		</div>
<?php 
    }
    if (!empty($GeneralSettings['episode_box_itunes_image']) || !empty($ExtraData['itunes_image'])) {
        if (empty($ExtraData['itunes_image'])) {
            $ExtraData['itunes_image'] = '';
        }
        $form_action_url = admin_url("media-upload.php?type=powerpress_image&tab=type&post_id={$object->ID}&powerpress_feed={$FeedSlug}&TB_iframe=true&width=450&height=200");
        ?>
		<div class="powerpress_row">
			<label for="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][itunes_image]"><?php 
        echo __('iTunes Image', 'powerpress');
        ?>
</label>
			<div class="powerpress_row_content">
				<input id="powerpress_itunes_image_<?php 
        echo $FeedSlug;
        ?>
" placeholder="<?php 
        echo htmlspecialchars(__('e.g. http://example.com/path/to/image.jpg', 'powerpress'));
        ?>
" name="Powerpress[<?php 
        echo $FeedSlug;
        ?>
][itunes_image]" value="<?php 
        echo htmlspecialchars($ExtraData['itunes_image']);
        ?>
" style="width: 70%; font-size: 90%;" size="250" />
				<a href="<?php 
        echo $form_action_url;
        ?>
" class="thickbox powerpress-itunes-image-browser" id="powerpress_itunes_image_browser_<?php 
        echo $FeedSlug;
        ?>
" title="<?php 
        echo __('Select iTunes Image', 'powerpress');
        ?>
"><img src="images/media-button-image.gif" /></a>
			</div>
		</div>
<?php 
    }
    // Added filter for other plugins to add fields on a per podcast feed slug basis
    echo apply_filters('powerpress_metabox', '', $object, $FeedSlug);
    ?>
	</div><!-- end powerpress_podcast_edit_<?php 
    echo $FeedSlug;
    ?>
 -->
</div><!-- end powerpress_podcast_box -->
<?php 
    if (!empty($GeneralSettings['episode_box_background_color'][$FeedSlug])) {
        ?>
<script type="text/javascript"><!--
jQuery(document).ready(function($) {
	jQuery('#powerpress-<?php 
        echo $FeedSlug;
        ?>
').css( {'background-color' : '<?php 
        echo $GeneralSettings['episode_box_background_color'][$FeedSlug];
        ?>
' });
	jQuery('#powerpress-<?php 
        echo $FeedSlug;
        ?>
').css( {'background-image' : '-moz-linear-gradient(center top , <?php 
        echo $GeneralSettings['episode_box_background_color'][$FeedSlug];
        ?>
, <?php 
        echo $GeneralSettings['episode_box_background_color'][$FeedSlug];
        ?>
)' });
});
//-->
</script><?php 
    }
}
Пример #2
0
/**
 * The playlist shortcode.
 *
 * This implements the functionality of the playlist shortcode for displaying
 * a collection of podcast episodes in a post.
 *
 * @since 6.0
 *
 * @param array $attr Playlist shortcode attributes.
 * @return string Playlist output. Empty string if the passed type is unsupported.
 */
function powerpress_playlist_shortcode($attr)
{
    global $content_width;
    if (is_feed()) {
        return '';
    }
    static $instance = 0;
    $instance++;
    /*
    if ( ! empty( $attr['ids'] ) ) {
    	// 'ids' is explicitly ordered, unless you specify otherwise.
    	if ( empty( $attr['orderby'] ) ) {
    		$attr['orderby'] = 'post__in';
    	}
    	$attr['include'] = $attr['ids'];
    }
    */
    extract(shortcode_atts(array('type' => 'audio', 'style' => 'light', 'tracklist' => true, 'tracknumbers' => true, 'images' => true, 'image' => '', 'artists' => true, 'itunes_subtitle' => false, 'category' => '', 'term_id' => '', 'taxonomy' => '', 'term_taxonomy_id' => '', 'program_titles_by_taxonomy' => '', 'date' => true, 'title' => true, 'links' => true, 'slug' => '', 'feed' => '', 'channel' => '', 'post_type' => 'post', 'limit' => 10), $attr, 'powerpressplaylist'));
    if ($type !== 'audio') {
        $type = 'video';
    }
    $tracknumbers = false;
    //$images = true;
    $artists = true;
    // Program title
    $images = filter_var($images, FILTER_VALIDATE_BOOLEAN);
    $links = filter_var($links, FILTER_VALIDATE_BOOLEAN);
    $itunes_subtitle = filter_var($itunes_subtitle, FILTER_VALIDATE_BOOLEAN);
    $date = filter_var($date, FILTER_VALIDATE_BOOLEAN);
    if (empty($slug) && !empty($feed)) {
        $slug = $feed;
    }
    if (empty($slug) && !empty($channel)) {
        $slug = $channel;
    }
    if (empty($slug)) {
        $slug = 'podcast';
    }
    $args = array('limit' => $limit, 'slug' => $slug, 'post_type' => $post_type, 'category' => $category, 'term_id' => '', 'taxonomy' => '', 'term_taxonomy_id' => $term_taxonomy_id);
    $episodes = powerpress_playlist_episodes($args);
    if (empty($episodes)) {
        return '';
    }
    $ProgramSettings = false;
    // Get Podcast Settings...ssss
    if (!empty($post_type)) {
        $PostTypeSettingsArray = get_option('powerpress_posttype_' . $post_type);
        if (is_array($PostTypeSettingsArray[$slug])) {
            $ProgramSettings = $PostTypeSettingsArray[$slug];
        }
    }
    if (!empty($slug) && !$ProgramSettings) {
        $ProgramSettings = get_option('powerpress_feed_' . $slug);
    }
    if (!empty($term_taxonomy_id) && !$ProgramSettings) {
        $ProgramSettings = get_option('powerpress_taxonomy_' . $term_taxonomy_id);
    }
    if (empty($ProgramSettings)) {
        $ProgramSettings = get_option('powerpress_general');
    }
    $outer = 22;
    // default padding and border of wrapper
    $default_width = 640;
    $default_height = 360;
    $theme_width = empty($content_width) ? $default_width : $content_width - $outer;
    $theme_height = empty($content_width) ? $default_height : round($default_height * $theme_width / $default_width);
    $data = compact('type');
    if (!empty($images) && empty($image)) {
        if (!empty($ProgramSettings['rss2_image'])) {
            $image = $ProgramSettings['rss2_image'];
        } else {
            if (!empty($ProgramSettings['itunes_image'])) {
                $image = $ProgramSettings['itunes_image'];
            }
        }
    }
    // don't pass strings to JSON, will be truthy in JS
    // foreach ( array( 'tracklist', 'tracknumbers', 'images', 'artists' ) as $key ) {
    foreach (array('tracklist', 'tracknumbers', 'images', 'artists', 'date', 'itunes_subtitle') as $key) {
        $data[$key] = filter_var(${$key}, FILTER_VALIDATE_BOOLEAN);
    }
    // Set a global poster image
    if (!empty($image)) {
        $data['poster'] = array('src' => $image, 'width' => '144', 'height' => '144');
    }
    $tracks = array();
    foreach ($episodes as $episode) {
        //$url = wp_get_attachment_url( $attachment->ID );
        $url = $episode['enclosure']['url'];
        //$ftype = wp_check_filetype( $url, wp_get_mime_types() );
        $track = array('src' => $url, 'type' => $episode['enclosure']['type'], 'title' => $episode['post_title'], 'caption' => $episode['post_title'], 'description' => $episode['post_title']);
        //$image = false;
        $episode_image = $image;
        if ($images && !empty($episode['enclosure']['image'])) {
            $episode_image = $episode['enclosure']['image'];
        } else {
            if ($images && !empty($episode['enclosure']['itunes_image'])) {
                $episode_image = $episode['enclosure']['itunes_image'];
            }
        }
        // enclosure
        $track['meta'] = array();
        $track['meta']['artist'] = 'Talent Name';
        // TODO
        $track['meta']['album'] = 'Podcast Title here';
        // TODO
        if ($program_titles_by_taxonomy) {
            $ObjectTerms = wp_get_object_terms($episode['ID'], $program_titles_by_taxonomy);
            if (!empty($ObjectTerms) && !is_wp_error($ObjectTerms) && count($ObjectTerms) == 1) {
                $track['meta']['program_title'] = powerpress_get_program_title_by_taxonomy($ObjectTerms[0]->term_id, $program_titles_by_taxonomy);
            }
        }
        $track['meta']['title'] = $episode['post_title'];
        if (!empty($itunes_subtitle) && !empty($episode['enclosure']['subtitle'])) {
            $track['meta']['itunes_subtitle'] = $episode['enclosure']['subtitle'];
        }
        $track['meta']['genre'] = 'Podcast';
        $track['meta']['year'] = mysql2date('Y', $episode['post_date']);
        // Episode year
        if (!empty($date)) {
            $track['meta']['date'] = mysql2date(get_option('date_format'), $episode['post_date']);
        }
        // Get episode date
        $track['meta']['length_formatted'] = powerpress_readable_duration($episode['enclosure']['duration']);
        // $episode['enclosure']['duration'];
        if ($track['meta']['length_formatted'] == '0:00') {
            $track['meta']['length_formatted'] = '';
        }
        // Make it empty
        if (!empty($links)) {
            $track['meta']['link'] = get_permalink($episode['ID']);
        }
        // 'http://www.google.com/';
        if ($type == 'video') {
            $track['dimensions'] = array('original' => array('width' => '100%', 'height' => '100%'), 'resized' => array('width' => '100%', 'height' => '100%'));
        }
        /*
        //$meta = wp_get_attachment_metadata( $attachment->ID );
        $meta = false;
        if ( ! empty( $meta ) ) {
        
        	foreach ( wp_get_attachment_id3_keys( $attachment ) as $key => $label ) {
        		if ( ! empty( $meta[ $key ] ) ) {
        			$track['meta'][ $key ] = $meta[ $key ];
        		}
        	}
        
        	if ( 'video' === $type ) {
        		if ( ! empty( $meta['width'] ) && ! empty( $meta['height'] ) ) {
        			$width = $meta['width'];
        			$height = $meta['height'];
        			$theme_height = round( ( $height * $theme_width ) / $width );
        		} else {
        			$width = $default_width;
        			$height = $default_height;
        		}
        
        		$track['dimensions'] = array(
        			'original' => compact( 'width', 'height' ),
        			'resized' => array(
        				'width' => $theme_width,
        				'height' => $theme_height
        			)
        		);
        	}
        }
        */
        if (!empty($episode_image)) {
            $src = $episode_image;
            $width = 144;
            $height = 144;
            if ($type == 'video') {
                // image onlyl used for video
                $track['image'] = array('src' => $src, 'width' => '100%', 'height' => '100%');
            }
            //$track['thumb'] = compact( 'src', 'width', 'height' );
            $track['poster'] = compact('src', 'width', 'height');
        }
        $tracks[] = $track;
    }
    $data['tracks'] = $tracks;
    $safe_type = esc_attr($type);
    $safe_style = esc_attr($style);
    ob_start();
    if (1 === $instance) {
        do_action('powerpress_playlist_scripts', $type, $style);
    }
    ?>
<div class="wp-playlist wp-<?php 
    echo $safe_type;
    ?>
-playlist wp-playlist-<?php 
    echo $safe_style;
    ?>
">
	<?php 
    if ('audio' === $type) {
        ?>
	<div class="wp-playlist-current-item"></div>
	<?php 
    }
    ?>
	<<?php 
    echo $safe_type;
    ?>
 controls="controls" preload="none" width="<?php 
    echo (int) $theme_width;
    ?>
"<?php 
    if ('video' === $safe_type) {
        echo ' height="', (int) $theme_height, '"';
    }
    ?>
></<?php 
    echo $safe_type;
    ?>
>
	<div class="wp-playlist-next"></div>
	<div class="wp-playlist-prev"></div>
	<noscript>
	<ol><?php 
    // TODO
    //foreach ( $attachments as $att_id => $attachment ) {
    //	printf( '<li>%s</li>', wp_get_attachment_link( $att_id ) );
    //}
    ?>
</ol>
	</noscript>
	<script type="application/json" class="wp-playlist-script"><?php 
    echo json_encode($data);
    ?>
</script>
</div>
	<?php 
    return ob_get_clean();
}
Пример #3
0
function powerpressplayer_link_download($content, $media_url, $ExtraData = array())
{
    $GeneralSettings = get_option('powerpress_general');
    if (!isset($GeneralSettings['podcast_link'])) {
        $GeneralSettings['podcast_link'] = 1;
    }
    $player_links = '';
    if ($GeneralSettings['podcast_link'] == 1) {
        $player_links .= "<a href=\"{$media_url}\" class=\"powerpress_link_d\" title=\"" . POWERPRESS_DOWNLOAD_TEXT . "\" rel=\"nofollow\" download=\"" . htmlspecialchars(basename($media_url)) . "\">" . POWERPRESS_DOWNLOAD_TEXT . "</a>" . PHP_EOL;
    } else {
        if ($GeneralSettings['podcast_link'] == 2) {
            $player_links .= "<a href=\"{$media_url}\" class=\"powerpress_link_d\" title=\"" . POWERPRESS_DOWNLOAD_TEXT . "\" rel=\"nofollow\" download=\"" . htmlspecialchars(basename($media_url)) . "\">" . POWERPRESS_DOWNLOAD_TEXT . "</a> (" . powerpress_byte_size($ExtraData['size']) . ") " . PHP_EOL;
        } else {
            if ($GeneralSettings['podcast_link'] == 3) {
                if (!empty($ExtraData['duration']) && ltrim($ExtraData['duration'], '0:') != '') {
                    $player_links .= "<a href=\"{$media_url}\" class=\"powerpress_link_d\" title=\"" . POWERPRESS_DOWNLOAD_TEXT . "\" rel=\"nofollow\" download=\"" . htmlspecialchars(basename($media_url)) . "\">" . POWERPRESS_DOWNLOAD_TEXT . "</a> (" . htmlspecialchars(POWERPRESS_DURATION_TEXT) . ": " . powerpress_readable_duration($ExtraData['duration']) . " &#8212; " . powerpress_byte_size($ExtraData['size']) . ")" . PHP_EOL;
                } else {
                    $player_links .= "<a href=\"{$media_url}\" class=\"powerpress_link_d\" title=\"" . POWERPRESS_DOWNLOAD_TEXT . "\" rel=\"nofollow\" download=\"" . htmlspecialchars(basename($media_url)) . "\">" . POWERPRESS_DOWNLOAD_TEXT . "</a> (" . powerpress_byte_size($ExtraData['size']) . ")" . PHP_EOL;
                }
            }
        }
    }
    if ($player_links && !empty($content)) {
        $content .= ' ' . POWERPRESS_LINK_SEPARATOR . ' ';
    }
    return $content . $player_links;
}
Пример #4
0
function powerpressadmin_mt_do_import()
{
    $wp_remote_options = array();
    $wp_remote_options['user-agent'] = 'Blubrry PowerPress/' . POWERPRESS_VERSION;
    $wp_remote_options['httpversion'] = '1.1';
    $Import = isset($_POST['Import']) ? $_POST['Import'] : array();
    $Media = isset($_POST['Media']) ? $_POST['Media'] : array();
    $Titles = isset($_POST['Titles']) ? $_POST['Titles'] : array();
    set_time_limit(60 + 10 * count($Import));
    $DetectDuration = !empty($_POST['DetectDuration']) ? $_POST['DetectDuration'] : 0;
    if ($DetectDuration) {
        require_once POWERPRESS_ABSPATH . '/mp3info.class.php';
        $Mp3Info = new Mp3Info();
        if (defined('POWERPRESS_DOWNLOAD_BYTE_LIMIT')) {
            $Mp3Info->SetDownloadBytesLimit(POWERPRESS_DOWNLOAD_BYTE_LIMIT);
        }
    }
    while (list($post_id, $episode_feeds) = each($Import)) {
        while (list($media_index, $feed_slug) = each($episode_feeds)) {
            if ($feed_slug == '') {
                continue;
            }
            // User decoded not to import this one..
            $url = $Media[$post_id][$media_index];
            //$headers = wp_remote_head($url, array('httpversion' => 1.1));
            //$response = wp_remote_request($url, $options);
            $response = wp_remote_head($url, array('httpversion' => 1.1));
            // Redirect 1
            if (!is_wp_error($response) && ($response['response']['code'] == 301 || $response['response']['code'] == 302)) {
                $headers = wp_remote_retrieve_headers($response);
                $response = wp_remote_head($headers['location'], $wp_remote_options);
            }
            // Redirect 2
            if (!is_wp_error($response) && ($response['response']['code'] == 301 || $response['response']['code'] == 302)) {
                $headers = wp_remote_retrieve_headers($response);
                $response = wp_remote_head($headers['location'], $wp_remote_options);
            }
            // Redirect 3
            if (!is_wp_error($response) && ($response['response']['code'] == 301 || $response['response']['code'] == 302)) {
                $headers = wp_remote_retrieve_headers($response);
                $response = wp_remote_head($headers['location'], $wp_remote_options);
            }
            // Redirect 4
            if (!is_wp_error($response) && ($response['response']['code'] == 301 || $response['response']['code'] == 302)) {
                $headers = wp_remote_retrieve_headers($response);
                $response = wp_remote_head($headers['location'], $wp_remote_options);
            }
            $headers = wp_remote_retrieve_headers($response);
            if (is_wp_error($response)) {
                powerpressadmin_mt_import_log($Titles[$post_id], $url, $feed_slug, 'A system error occurred.');
            } else {
                if ($headers && $response['response']['code'] >= 200 && $response['response']['code'] < 300) {
                    $EpisodeData = array();
                    $EpisodeData['url'] = $url;
                    if ($headers['content-length']) {
                        $EpisodeData['size'] = (int) $headers['content-length'];
                    } else {
                        $EpisodeData['size'] = 0;
                    }
                    $EpisodeData['type'] = powerpress_get_contenttype($EpisodeData['url']);
                    $EpisodeData['duration'] = false;
                    if ($EpisodeData['type'] == 'audio/mpeg' && $DetectDuration) {
                        $Mp3Data = $Mp3Info->GetMp3Info($EpisodeData['url']);
                        if ($Mp3Data) {
                            $Duration = $Mp3Data['playtime_string'];
                            $EpisodeData['duration'] = powerpress_readable_duration($Duration, true);
                            // Fix so it looks better when viewed for editing
                        }
                    }
                    $EnclosureData = $EpisodeData['url'] . "\n" . $EpisodeData['size'] . "\n" . $EpisodeData['type'];
                    if ($EpisodeData['duration']) {
                        $EnclosureData .= "\n" . serialize(array('duration' => $EpisodeData['duration']));
                    }
                    // Save it here...
                    if ($feed_slug == 'podcast') {
                        add_post_meta($post_id, 'enclosure', $EnclosureData, true);
                    } else {
                        add_post_meta($post_id, '_' . $feed_slug . ':enclosure', $EnclosureData, true);
                    }
                    powerpressadmin_mt_import_log($Titles[$post_id], $EpisodeData['url'], $feed_slug);
                } else {
                    powerpressadmin_mt_import_log($Titles[$post_id], $url, $feed_slug, __('HTTP return code', 'powerpress') . ' ' . $response['response']['code'] . '.');
                }
            }
        }
    }
}
Пример #5
0
function powerpress_get_media_info_local($media_file, $content_type = '', $file_size = 0, $duration = '', $return_warnings = false)
{
    $error_msg = '';
    $warning_msg = '';
    if ($content_type == '') {
        $content_type = powerpress_get_contenttype($media_file);
    }
    if (isset($GLOBALS['objWPOSFLV']) && is_object($GLOBALS['objWPOSFLV'])) {
        return array('error' => __('The WP OS FLV plugin is not compatible with Blubrry PowerPress.', 'powerpress'));
    }
    $get_duration_info = ($content_type == 'audio/mpeg' || $content_type == 'audio/x-m4a' || $content_type == 'video/x-m4v' || $content_type == 'video/mp4' || $content_type == 'audio/ogg') && $duration === '';
    // Lets use the mp3info class:
    require_once POWERPRESS_ABSPATH . '/mp3info.class.php';
    $Mp3Info = new Mp3Info();
    if ($get_duration_info) {
        if (preg_match('/video/i', $content_type)) {
            if (defined('POWERPRESS_DOWNLOAD_BYTE_LIMIT_VIDEO')) {
                $Mp3Info->SetDownloadBytesLimit(POWERPRESS_DOWNLOAD_BYTE_LIMIT_VIDEO);
            }
        } else {
            if (defined('POWERPRESS_DOWNLOAD_BYTE_LIMIT')) {
                $Mp3Info->SetDownloadBytesLimit(POWERPRESS_DOWNLOAD_BYTE_LIMIT);
            }
        }
    }
    $Mp3Data = $Mp3Info->GetMp3Info($media_file, !$get_duration_info);
    if ($Mp3Data) {
        if ($Mp3Info->GetRedirectCount() > 5) {
            // Add a warning that the redirect count exceeded 5, which may prevent some podcatchers from downloading the media.
            $warning = sprintf(__('Warning, the Media URL %s contains %d redirects.', 'powerpress'), $media_file, $Mp3Info->GetRedirectCount());
            $warning .= ' [<a href="http://create.blubrry.com/resources/powerpress/using-powerpress/warning-messages-explained/" title="' . __('PowerPress Warnings Explained', 'powerpress') . '" target="_blank">' . __('PowerPress Warnings Explained') . '</a>]';
            if ($return_warnings) {
                $warning_msg .= $warning;
            } else {
                powerpress_add_error($warning);
            }
        }
        if ($file_size == 0) {
            $file_size = $Mp3Info->GetContentLength();
        }
        if ($get_duration_info) {
            $playtime_string = !empty($Mp3Data['playtime_string']) ? $Mp3Data['playtime_string'] : '';
            $duration = powerpress_readable_duration($playtime_string, true);
            // Fix so it looks better when viewed for editing
        }
        $GeneralSettings = get_option('powerpress_general');
        if (empty($GeneralSettings['hide_warnings']) && count($Mp3Info->GetWarnings()) > 0) {
            $Warnings = $Mp3Info->GetWarnings();
            while (list($null, $warning) = each($Warnings)) {
                $warning = sprintf(__('Warning, Media URL %s', 'powerpress'), $media_file) . ': ' . $warning . ' [<a href="http://create.blubrry.com/resources/powerpress/using-powerpress/warning-messages-explained/" target="_blank">' . __('PowerPress Warnings Explained', 'powerpress') . '</a>]';
                if ($return_warnings) {
                    $warning_msg .= $warning;
                } else {
                    powerpress_add_error($warning);
                }
            }
        }
    } else {
        if ($Mp3Info->GetError() != '') {
            return array('error' => $Mp3Info->GetError());
        } else {
            return array('error' => __('Error occurred obtaining media information.', 'powerpress'));
        }
    }
    if ($file_size == 0) {
        return array('error' => __('Error occurred obtaining media file size.', 'powerpress'));
    }
    if ($return_warnings && $warning_msg != '') {
        return array('content-type' => $content_type, 'length' => $file_size, 'duration' => $duration, 'warnings' => $warning_msg);
    }
    return array('content-type' => $content_type, 'length' => $file_size, 'duration' => $duration);
    // OLD CODE FOLLOWS:
    if ($content_type == 'audio/mpeg' && $duration === '') {
        // Lets use the mp3info class:
        require_once POWERPRESS_ABSPATH . '/mp3info.class.php';
        $Mp3Info = new Mp3Info();
        if (defined('POWERPRESS_DOWNLOAD_BYTE_LIMIT')) {
            $Mp3Info->SetDownloadBytesLimit(POWERPRESS_DOWNLOAD_BYTE_LIMIT);
        }
        $Mp3Data = $Mp3Info->GetMp3Info($media_file);
        if ($Mp3Data) {
            if ($Mp3Info->GetRedirectCount() > 5) {
                // Add a warning that the redirect count exceeded 5, which may prevent some podcatchers from downloading the media.
                powerpress_add_error(sprintf(__('Warning, the Media URL %s contains %d redirects.', 'powerpress'), $media_file, $Mp3Info->GetRedirectCount()) . ' [<a href="http://create.blubrry.com/resources/powerpress/using-powerpress/warning-messages-explained/" target="_blank">' . __('PowerPress Warnings Explained', 'powerpress') . '</a>]');
            }
            if ($file_size == 0) {
                $file_size = $Mp3Info->GetContentLength();
            }
            $playtime_string = !empty($Mp3Data['playtime_string']) ? $Mp3Data['playtime_string'] : '';
            $duration = powerpress_readable_duration($playtime_string, true);
            // Fix so it looks better when viewed for editing
            if (count($Mp3Info->GetWarnings()) > 0) {
                $Warnings = $Mp3Info->GetWarnings();
                while (list($null, $warning) = each($Warnings)) {
                    powerpress_add_error(sprintf(__('Warning, Media URL %s', 'powerpress'), $media_file) . ': ' . $warning . ' [<a href="http://create.blubrry.com/resources/powerpress/using-powerpress/warning-messages-explained/" target="_blank">' . __('PowerPress Warnings Explained', 'powerpress') . '</a>]');
                }
            }
        } else {
            if ($Mp3Info->GetError()) {
                return array('error' => $Mp3Info->GetError());
            } else {
                return array('error' => __('Error occurred obtaining media information.', 'powerpress'));
            }
        }
    }
    $wp_remote_options = array();
    $wp_remote_options['user-agent'] = 'Blubrry PowerPress/' . POWERPRESS_VERSION;
    $wp_remote_options['httpversion'] = '1.1';
    if ($content_type != '' && $file_size == 0) {
        $response = wp_remote_head($media_file, array('httpversion' => 1.1));
        // Redirect 1
        if (!is_wp_error($response) && ($response['response']['code'] == 301 || $response['response']['code'] == 302)) {
            $headers = wp_remote_retrieve_headers($response);
            $response = wp_remote_head($headers['location'], $wp_remote_options);
        }
        // Redirect 2
        if (!is_wp_error($response) && ($response['response']['code'] == 301 || $response['response']['code'] == 302)) {
            $headers = wp_remote_retrieve_headers($response);
            $response = wp_remote_head($headers['location'], $wp_remote_options);
        }
        // Redirect 3
        if (!is_wp_error($response) && ($response['response']['code'] == 301 || $response['response']['code'] == 302)) {
            $headers = wp_remote_retrieve_headers($response);
            $response = wp_remote_head($headers['location'], $wp_remote_options);
        }
        // Redirect 4
        if (!is_wp_error($response) && ($response['response']['code'] == 301 || $response['response']['code'] == 302)) {
            $headers = wp_remote_retrieve_headers($response);
            $response = wp_remote_head($headers['location'], $wp_remote_options);
        }
        if (is_wp_error($response)) {
            return array('error' => $response->get_error_message());
        }
        if (isset($response['response']['code']) && $response['response']['code'] < 200 || $response['response']['code'] > 290) {
            return array('error' => __('Error, HTTP', 'powerpress') . ' ' . $response['response']['code']);
        }
        $headers = wp_remote_retrieve_headers($response);
        if ($headers && $headers['content-length']) {
            $file_size = (int) $headers['content-length'];
        } else {
            return array('error' => __('Unable to obtain file size of media file.', 'powerpress'));
        }
    }
    if ($file_size == 0) {
        return array('error' => __('Error occurred obtaining media file size.', 'powerpress'));
    }
    return array('content-type' => $content_type, 'length' => $file_size, 'duration' => $duration);
}
function powerpress_metamarks_editrow_html($feed_slug, $next_row, $data = null)
{
    $feed_slug = esc_attr($feed_slug);
    $MarkTypes = powerpress_metamarks_get_types();
    $html = '<div class="pp-metamarks-row" id="powerpress_metamarks_row_' . $feed_slug . '_' . $next_row . '">';
    if (!is_array($data)) {
        $data = array();
        $data['type'] = '';
        $data['position'] = '';
        $data['duration'] = '';
        $data['link'] = '';
        $data['value'] = '';
    }
    $data['position'] = powerpress_readable_duration($data['position']);
    $data['duration'] = powerpress_readable_duration($data['duration']);
    if ($data['position'] == '0:00') {
        $data['position'] = '';
    }
    if ($data['duration'] == '0:00') {
        $data['duration'] = '';
    }
    $html .= '<select class="pp-metamark-type" type="text" name="MetaMarks[' . $feed_slug . '][' . $next_row . '][type]" style="width: 18%;">';
    $html .= powerpress_print_options(array('' => 'Select Type') + $MarkTypes, $data['type'], true);
    $html .= '</select>';
    $html .= '<input class="pp-metamark-position" type="text" name="MetaMarks[' . $feed_slug . '][' . $next_row . '][position]" value="' . htmlspecialchars($data['position']) . '" placeholder="' . htmlspecialchars(__('Position', 'powerpress')) . '" style="width: 10%;" />';
    $html .= '<input class="pp-metamark-duration" type="text" name="MetaMarks[' . $feed_slug . '][' . $next_row . '][duration]" value="' . htmlspecialchars($data['duration']) . '" placeholder="' . htmlspecialchars(__('Duration', 'powerpress')) . '" style="width: 10%;" />';
    $html .= '<input class="pp-metamark-link" type="text" name="MetaMarks[' . $feed_slug . '][' . $next_row . '][link]" value="' . htmlspecialchars($data['link']) . '" placeholder="' . htmlspecialchars(__('Link', 'powerpress')) . '" style="width: 25%;" />';
    $html .= '<textarea class="pp-metamark-value" name="MetaMarks[' . $feed_slug . '][' . $next_row . '][value]" style="width: 35%;" placeholder="' . htmlspecialchars(__('Value', 'powerpress')) . '">' . htmlspecialchars($data['value']) . '</textarea>';
    $html .= '<div class="pp-metamark-delete"><a href="#" onclick="return powerpress_metamarks_deleterow(\'powerpress_metamarks_row_' . $feed_slug . '_' . $next_row . '\');" title="' . __('Delete', 'powerpress') . '">';
    $html .= '</a></div>';
    $html .= '</div>';
    $html .= "\n";
    return $html;
}
Пример #7
0
function powerpress_get_enclosure_data($post_id, $feed_slug = 'podcast', $raw_data = false, $add_redirect = true)
{
    if ($raw_data) {
        $MetaData = $raw_data;
    } else {
        if ($feed_slug == 'podcast' || $feed_slug == '') {
            $MetaData = get_post_meta($post_id, 'enclosure', true);
        } else {
            $MetaData = get_post_meta($post_id, '_' . $feed_slug . ':enclosure', true);
        }
    }
    if (empty($MetaData)) {
        return false;
    }
    $MetaParts = explode("\n", $MetaData, 4);
    $Serialized = false;
    $Data = array();
    $Data['id'] = $post_id;
    $Data['feed'] = $feed_slug;
    $Data['url'] = '';
    $Data['duration'] = '';
    $Data['size'] = '';
    $Data['type'] = '';
    $Data['width'] = '';
    $Data['height'] = '';
    if (count($MetaParts) > 0) {
        if ($add_redirect) {
            $Data['url'] = powerpress_add_redirect_url(trim($MetaParts[0]), $Data['feed']);
        } else {
            $Data['url'] = trim($MetaParts[0]);
        }
    }
    if (count($MetaParts) > 1) {
        $Data['size'] = trim($MetaParts[1]);
    }
    if (count($MetaParts) > 2) {
        $Data['type'] = trim($MetaParts[2]);
    }
    if (count($MetaParts) > 3) {
        $Serialized = $MetaParts[3];
    }
    if ($Serialized) {
        $ExtraData = unserialize($Serialized);
        if ($ExtraData && is_array($ExtraData)) {
            while (list($key, $value) = each($ExtraData)) {
                $Data[$key] = $value;
            }
            if (isset($Data['length'])) {
                // Setting from the "Podcasting" plugin...
                $Data['duration'] = powerpress_readable_duration($Data['length'], true);
            }
            if (!empty($Data['webm_src'])) {
                if ($add_redirect) {
                    $Data['webm_src'] = powerpress_add_redirect_url(trim($Data['webm_src']), $Data['feed']);
                } else {
                    $Data['webm_src'] = trim($Data['webm_src']);
                }
            }
            if (strpos($MetaParts[0], 'http://') !== 0 && !empty($Data['hosting'])) {
                $post_status = get_post_status($post_id);
                switch ($post_status) {
                    case 'pending':
                    case 'draft':
                    case 'auto-draft':
                        // Determine if audio or video, then set the demo episode here...
                        $Data['url'] = 'http://media.blubrry.com/blubrry/content.blubrry.com/blubrry/preview.mp3';
                        // audio
                        if (strstr($Data['type'], 'video')) {
                            $Data['url'] = 'http://media.blubrry.com/blubrry/content.blubrry.com/blubrry/preview.mp4';
                        }
                        // video
                        break;
                }
            }
        }
    }
    // Check that the content type is a valid one...
    if (strstr($Data['type'], '/') == false) {
        $Data['type'] = powerpress_get_contenttype($Data['url']);
    }
    return $Data;
}
Пример #8
0
function powerpress_get_podpress_episodes($hide_errors = true)
{
    global $wpdb;
    $PodpressSettings = get_option('podPress_config');
    if (empty($PodpressSettings)) {
        $PodpressSettings = array();
        $PodpressSettings['mediaWebPath'] = '';
        $powerpress_settings = get_option('powerpress_general');
        if (!empty($powerpress_settings['default_url'])) {
            $PodpressSettings['mediaWebPath'] = $powerpress_settings['default_url'];
            powerpress_page_message_add_notice(sprintf(__('Unable to detect PodPress media URL setting. Using the PowerPress setting "Default Media URL" (%s) instead.', 'powerpress'), esc_attr($PodpressSettings['mediaWebPath'])));
        } else {
            // We need to print a warning that they need to configure their podPress settings as the settings are no longer found in the database.
            powerpress_page_message_add_error(__('Unable to detect PodPress media URL setting. Please set the "Default Media URL" setting in PowerPress to properly import podcast episodes.', 'powerpress'));
        }
    }
    $media_url = $PodpressSettings['mediaWebPath'];
    if (substr($media_url, 0, -1) != '/') {
        $media_url .= '/';
    }
    // Make sure the URL has a trailing slash
    $return = array();
    $return['feeds_required'] = 0;
    $query = "SELECT p.ID, p.post_title, p.post_date, pm.meta_value ";
    $query .= "FROM {$wpdb->posts} AS p ";
    $query .= "INNER JOIN {$wpdb->postmeta} AS pm ON p.ID = pm.post_id ";
    $query .= "WHERE (pm.meta_key = 'podPressMedia' OR pm.meta_key = '_podPressMedia') ";
    $query .= "AND p.post_type != 'revision' ";
    $query .= "GROUP BY p.ID ";
    $query .= "ORDER BY p.post_date DESC ";
    $results_data = $wpdb->get_results($query, ARRAY_A);
    if ($results_data) {
        while (list($null, $row) = each($results_data)) {
            //$return = $row;
            $podpress_data = @unserialize($row['meta_value']);
            if (!$podpress_data) {
                $podpress_data_serialized = powerpress_repair_serialize($row['meta_value']);
                $podpress_data = @unserialize($podpress_data_serialized);
                if (!is_array($podpress_data) && is_string($podpress_data)) {
                    $podpress_data_two = @unserialize($podpress_data);
                    if (!is_array($podpress_data_two)) {
                        $podpress_data_serialized = powerpress_repair_serialize($podpress_data);
                        $podpress_data_two = @unserialize($podPressMedia);
                    }
                    if (is_array($podpress_data_two)) {
                        $podpress_data = $podpress_data_two;
                    }
                }
            } else {
                if (is_string($podpress_data)) {
                    // May have been double serialized...
                    $podpress_unserialized = @unserialize($podpress_data);
                    if (!$podpress_unserialized) {
                        $podpress_data_serialized = powerpress_repair_serialize($podpress_data);
                        $podpress_unserialized = @unserialize($podpress_data_serialized);
                    }
                    $podpress_data = $podpress_unserialized;
                }
            }
            if ($podpress_data) {
                if (!is_array($podpress_data)) {
                    // display a warning here...
                    if ($hide_errors == false) {
                        powerpress_page_message_add_error(sprintf(__('Error decoding PodPress data for post "%s"', 'powerpress'), est_attr($row['post_title'])));
                    }
                    continue;
                }
                $clean_data = array();
                while (list($episode_index, $episode_data) = each($podpress_data)) {
                    if (trim($episode_data['URI']) != '') {
                        $MediaURL = $episode_data['URI'];
                        if (strtolower(substr($MediaURL, 0, 4)) != 'http') {
                            $MediaURL = $media_url . rtrim($episode_data['URI'], '/');
                        }
                        if (!powerpress_only_include_ext($MediaURL)) {
                            // Skip this media type
                            continue;
                        }
                        $clean_data[$episode_index] = array();
                        $clean_data[$episode_index]['url'] = $MediaURL;
                        $clean_data[$episode_index]['size'] = $episode_data['size'];
                        if (trim($episode_data['duration']) && $episode_data['duration'] != 'UNKNOWN') {
                            $clean_data[$episode_index]['duration'] = powerpress_readable_duration($episode_data['duration'], true);
                        }
                        $ContentType = powerpress_get_contenttype($episode_data['URI']);
                        if ($ContentType) {
                            $clean_data[$episode_index]['type'] = trim($ContentType);
                        }
                        if (!empty($episode_data['previewImage'])) {
                            $clean_data[$episode_index]['image'] = $episode_data['previewImage'];
                        }
                    }
                }
                if (count($clean_data) == 0) {
                    continue;
                }
                // Go to the next record...
                if ($return['feeds_required'] < count($clean_data)) {
                    $return['feeds_required'] = count($clean_data);
                }
                $return[$row['ID']] = array();
                $return[$row['ID']]['podpress_data'] = $clean_data;
                $return[$row['ID']]['post_title'] = $row['post_title'];
                $return[$row['ID']]['post_date'] = $row['post_date'];
                // Check that there is no other enclosure...
                $enclosure_data = get_post_meta($row['ID'], 'enclosure', true);
                if ($enclosure_data) {
                    $Included = false;
                    list($EnclosureURL, $null) = explode("\n", $enclosure_data);
                    $return[$row['ID']]['enclosure'] = $enclosure_data;
                    while (list($episode_index_temp, $episode_data_temp) = each($clean_data)) {
                        if (trim($EnclosureURL) == trim($episode_data_temp['url'])) {
                            $Included = true;
                            break;
                            // We found the media already.
                        } else {
                            if (trim($episode_data_temp['url']) == '') {
                                unset($clean_data[$episode_index_temp]);
                                // Empty URL, lets remove it so we don't accidently use it
                            }
                        }
                    }
                    reset($clean_data);
                    if ($Included == false && $return['feeds_required'] < count($clean_data) + 1) {
                        $return['feeds_required'] = count($clean_data) + 1;
                        // We can't remove this enclosure
                    }
                }
                // Check for additional itunes data in the database..
                if (false) {
                    $itunes_data = get_post_meta($row['ID'], 'podPressPostSpecific', true);
                    if ($itunes_data && is_array($itunes_data)) {
                        $return[$row['ID']]['itunes'] = array();
                        // Add iTunes stuff...
                        if ($itunes_data['itunes:subtitle'] != '##PostExcerpt##' && $itunes_data['itunes:subtitle'] != '') {
                            $return[$row['ID']]['itunes']['subtitle'] = $itunes_data['itunes:subtitle'];
                        }
                        if ($itunes_data['itunes:summary'] != '##PostExcerpt##' && $itunes_data['itunes:summary'] != '##Global##' && $itunes_data['itunes:summary'] != '') {
                            $return[$row['ID']]['itunes']['summary'] = $itunes_data['itunes:summary'];
                        }
                        if ($itunes_data['itunes:author'] != '##Global##' && $itunes_data['itunes:author'] != '') {
                            $return[$row['ID']]['itunes']['author'] = $itunes_data['itunes:author'];
                        }
                        if (strtolower($itunes_data['itunes:explicit']) == 'yes') {
                            $return[$row['ID']]['itunes']['explicit'] = 'yes';
                        }
                        if (strtolower($itunes_data['itunes:block']) == 'yes') {
                            $return[$row['ID']]['itunes']['block'] = 'yes';
                        }
                        if (count($return[$row['ID']]['itunes']) == 0) {
                            unset($return[$row['ID']]['itunes']);
                        }
                    }
                }
            }
        }
    }
    return $return;
}