Example #1
0
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;
}
Example #2
0
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;
}