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 } }
/** * 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(); }
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']) . " — " . 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; }
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'] . '.'); } } } } }
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; }
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; }
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; }