function powerpress_shortcode_handler($attributes, $content = null) { global $post, $g_powerpress_player_added; // We can't add flash players to feeds if (is_feed()) { return ''; } $return = ''; $feed = ''; $channel = ''; $slug = ''; // latest and preferred way to specify the feed slug $url = ''; $image = ''; $width = ''; $height = ''; extract(shortcode_atts(array('url' => '', 'feed' => '', 'channel' => '', 'slug' => '', 'image' => '', 'width' => '', 'height' => ''), $attributes)); if (empty($channel) && !empty($feed)) { // Feed for backward compat. $channel = $feed; } if (!empty($slug)) { // Foward compatibility $channel = $slug; } if (!$url && $content) { $content_url = trim($content); if (@parse_url($content_url)) { $url = $content_url; } } if ($url) { $url = powerpress_add_redirect_url($url); $content_type = ''; // Handle the URL differently... $return = apply_filters('powerpress_player', '', powerpress_add_flag_to_redirect_url($url, 'p'), array('image' => $image, 'type' => $content_type, 'width' => $width, 'height' => $height)); } else { if ($channel) { $EpisodeData = powerpress_get_enclosure_data($post->ID, $channel); if (!empty($EpisodeData['embed'])) { $return = $EpisodeData['embed']; } // Shortcode over-ride settings: if (!empty($image)) { $EpisodeData['image'] = $image; } if (!empty($width)) { $EpisodeData['width'] = $width; } if (!empty($height)) { $EpisodeData['height'] = $height; } if (isset($GeneralSettings['premium_caps']) && $GeneralSettings['premium_caps'] && !powerpress_premium_content_authorized($channel)) { $return .= powerpress_premium_content_message($post->ID, $channel, $EpisodeData); } else { // If the shortcode speciies a channel, than we definnitely wnat to include the player even if $EpisodeData['no_player'] is true... if (!isset($EpisodeData['no_player'])) { $return = apply_filters('powerpress_player', '', powerpress_add_flag_to_redirect_url($EpisodeData['url'], 'p'), array('id' => $post->ID, 'feed' => $channel, 'channel' => $channel, 'image' => $image, 'type' => $EpisodeData['type'], 'width' => $width, 'height' => $height)); } if (empty($EpisodeData['no_links'])) { $return .= apply_filters('powerpress_player_links', '', powerpress_add_flag_to_redirect_url($EpisodeData['url'], 'p'), $EpisodeData); } } } else { $GeneralSettings = get_option('powerpress_general'); if (!isset($GeneralSettings['custom_feeds']['podcast'])) { $GeneralSettings['custom_feeds']['podcast'] = 'Podcast Feed'; } // Fixes scenario where the user never configured the custom default podcast feed. // If we have post type podcasting enabled, then we need to use the podcast post type feeds instead here... if (!empty($GeneralSettings['posttype_podcasting'])) { $post_type = get_query_var('post_type'); // Get the feed slugs and titles for this post type $PostTypeSettingsArray = get_option('powerpress_posttype_' . $post_type); // Loop through this array... if (!empty($PostTypeSettingsArray)) { switch ($post_type) { case 'post': case 'page': // Do nothing!, we want the default podcast and channels to appear in these post types break; default: $GeneralSettings['custom_feeds'] = array(); // reset this array since we're working with a custom post type } while (list($feed_slug, $postTypeSettings) = each($PostTypeSettingsArray)) { if (!empty($postTypeSettings['title'])) { $GeneralSettings['custom_feeds'][$feed_slug] = $postTypeSettings['title']; } else { $GeneralSettings['custom_feeds'][$feed_slug] = $feed_slug; } } } } while (list($feed_slug, $feed_title) = each($GeneralSettings['custom_feeds'])) { if (isset($GeneralSettings['disable_player']) && isset($GeneralSettings['disable_player'][$feed_slug])) { continue; } $EpisodeData = powerpress_get_enclosure_data($post->ID, $feed_slug); if (!$EpisodeData && !empty($GeneralSettings['process_podpress']) && $feed_slug == 'podcast') { $EpisodeData = powerpress_get_enclosure_data_podpress($post->ID); } if (!$EpisodeData) { continue; } if (!empty($EpisodeData['embed'])) { $return .= $EpisodeData['embed']; } // Shortcode over-ride settings: if (!empty($image)) { $EpisodeData['image'] = $image; } if (!empty($width)) { $EpisodeData['width'] = $width; } if (!empty($height)) { $EpisodeData['height'] = $height; } if (isset($GeneralSettings['premium_caps']) && $GeneralSettings['premium_caps'] && !powerpress_premium_content_authorized($feed_slug)) { $return .= powerpress_premium_content_message($post->ID, $feed_slug, $EpisodeData); continue; } if (!isset($EpisodeData['no_player'])) { $return .= apply_filters('powerpress_player', '', powerpress_add_flag_to_redirect_url($EpisodeData['url'], 'p'), $EpisodeData); } if (!isset($EpisodeData['no_links'])) { $return .= apply_filters('powerpress_player_links', '', powerpress_add_flag_to_redirect_url($EpisodeData['url'], 'p'), $EpisodeData); } } } } return $return; }
function powerpress_get_enclosure_data_podpress($post_id, $mediaNum = 0, $include_premium = false) { $podPressMedia = powerpress_get_post_meta($post_id, 'podPressMedia'); if (!$podPressMedia) { $podPressMedia = powerpress_get_post_meta($post_id, '_podPressMedia'); } // handles latest verions of PodPress if ($podPressMedia) { if (!is_array($podPressMedia)) { // Sometimes the stored data gets messed up, we can fix it here: $podPressMedia = powerpress_repair_serialize($podPressMedia); $podPressMedia = @unserialize($podPressMedia); } // Do it a second time in case it is double serialized if (!is_array($podPressMedia)) { // Sometimes the stored data gets messed up, we can fix it here: $podPressMedia = powerpress_repair_serialize($podPressMedia); $podPressMedia = @unserialize($podPressMedia); } if (is_array($podPressMedia) && isset($podPressMedia[$mediaNum]) && isset($podPressMedia[$mediaNum]['URI'])) { if ($include_premium == false && isset($podPressMedia[$mediaNum]['premium_only']) && ($podPressMedia[$mediaNum]['premium_only'] == 'on' || $podPressMedia[$mediaNum]['premium_only'] == true)) { return false; } $Data = array(); $Data['id'] = $post_id; $Data['feed'] = 'podcast'; $Data['duration'] = 0; $Data['url'] = ''; $Data['size'] = 0; $Data['type'] = ''; $Data['width'] = ''; $Data['height'] = ''; $Data['url'] = $podPressMedia[$mediaNum]['URI']; if (isset($podPressMedia[$mediaNum]['size'])) { $Data['size'] = $podPressMedia[$mediaNum]['size']; } if (isset($PodPressSettings[$mediaNum]['duration'])) { $Data['duration'] = $podPressMedia[$mediaNum]['duration']; } if (isset($PodPressSettings[$mediaNum]['previewImage'])) { $Data['image'] = $podPressMedia[$mediaNum]['previewImage']; } if (strpos($Data['url'], 'http://') !== 0 && strpos($Data['url'], 'https://') !== 0) { $PodPressSettings = get_option('podPress_config'); if ($PodPressSettings && isset($PodPressSettings['mediaWebPath'])) { $Data['url'] = rtrim($PodpressSettings['mediaWebPath'], '/') . '/' . ltrim($Data['url'], '/'); } unset($PodPressSettings); } if (strpos($Data['url'], 'http://') !== 0 && strpos($Data['url'], 'https://') !== 0) { $Settings = get_option('powerpress_general'); if ($Settings && isset($Settings['default_url'])) { $Data['url'] = rtrim($Settings['default_url'], '/') . '/' . ltrim($Data['url'], '/'); } } if (strpos($Data['url'], 'http://') !== 0 && strpos($Data['url'], 'https://') !== 0) { return false; } $Data['type'] = powerpress_get_contenttype($Data['url']); // Detect the content type $Data['url'] = powerpress_add_redirect_url($Data['url'], $Data['feed']); // Add redirects to Media URL return $Data; } } return false; }