settings['protectFeed'] && !$aggressive) { return $input; } $result = htmlentities($input, ENT_NOQUOTES, 'UTF-8'); if($aggressive) { $result = str_replace(array('&', '<', '>', '&'), '', $result); } return $result; } function podPress_rss2_ns() { echo 'xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"'."\n"; //echo ' xmlns:dtvmedia="http://participatoryculture.org/RSSModules/dtv/1.0"'."\n"; echo ' xmlns:media="http://search.yahoo.com/mrss/"'."\n"; } function podPress_rss2_head() { GLOBAL $podPress, $post, $post_meta_cache, $blog_id; if($podPress->settings['enablePremiumContent']) { podPress_reloadCurrentUser(); } if(is_array($post_meta_cache[$blog_id])) { foreach($post_meta_cache[$blog_id] as $key=>$val) { if(isset($post_meta_cache[$blog_id][$key]['enclosure']) && isset($post_meta_cache[$blog_id][$key]['podPressMedia'])) { $post_meta_cache[$blog_id][$key]['enclosure_podPressHold'] = $post_meta_cache[$blog_id][$post->ID]['enclosure']; unset($post_meta_cache[$blog_id][$key]['enclosure']); } } } if(!isset($podPress->settings['category_data'])) { podPress_feed_getCategory(); } $data = $podPress->settings['iTunes']; $data['podcastFeedURL'] = $podPress->settings['podcastFeedURL']; $data['rss_image'] = get_option('rss_image'); $data['admin_email'] = stripslashes(get_option('admin_email')); if($podPress->settings['category_data']['categoryCasting'] == 'true') { $data['podcastFeedURL'] = $podPress->settings['category_data']['podcastFeedURL']; if($podPress->settings['category_data']['iTunesNewFeedURL'] != '##Global##') { $data['new-feed-url'] = $podPress->settings['category_data']['iTunesNewFeedURL']; } if($podPress->settings['category_data']['iTunesSummaryChoice'] == 'Custom') { $data['summary'] = $podPress->settings['category_data']['iTunesSummary']; } if($podPress->settings['category_data']['iTunesSubtitleChoice'] == 'Custom') { $data['subtitle'] = $podPress->settings['category_data']['iTunesSubtitle']; } if($podPress->settings['category_data']['iTunesKeywordsChoice'] == 'Custom') { $data['keywords'] = $podPress->settings['category_data']['iTunesKeywords']; } if($podPress->settings['category_data']['iTunesAuthorChoice'] == 'Custom' && !empty($podPress->settings['category_data']['iTunesAuthor'])) { $data['author'] = $podPress->settings['category_data']['iTunesAuthor']; } if($podPress->settings['category_data']['iTunesAuthorEmailChoice'] == 'Custom') { $data['admin_email'] = $podPress->settings['category_data']['iTunesAuthorEmail']; } if($podPress->settings['category_data']['iTunesBlock'] != '##Global##' && !empty($podPress->settings['category_data']['iTunesBlock'])) { $data['block'] = $podPress->settings['category_data']['iTunesBlock']; } if($podPress->settings['category_data']['iTunesExplicit'] != '##Global##' && !empty($podPress->settings['category_data']['iTunesExplicit'])) { $data['explicit'] = $podPress->settings['category_data']['iTunesExplicit']; } if($podPress->settings['category_data']['iTunesImageChoice'] == 'Custom') { $data['image'] = $podPress->settings['category_data']['iTunesImage']; } if($podPress->settings['category_data']['rss_imageChoice'] == 'Custom') { $data['rss_image'] = $podPress->settings['category_data']['rss_image']; } if($podPress->settings['category_data']['rss_copyrightChoice'] == 'Custom') { $data['rss_copyright'] = $podPress->settings['category_data']['rss_copyright']; } } $data['rss_ttl'] = get_option('rss_ttl'); if(!empty($data['rss_ttl']) && $data['rss_ttl'] < 1440) { $data['rss_ttl'] = 1440; } echo ' '."\n"; echo ' ©'.podPress_feedSafeContent($data['author']).' '.podPress_feedSafeContent($data['rss_copyright']).''."\n"; if($data['new-feed-url'] == 'Enable') { if(!empty($data['podcastFeedURL']) && !strpos(strtolower($data['podcastFeedURL']), 'phobos.apple.com') && !strpos(strtolower($data['podcastFeedURL']), 'itpc://')) { echo ' '.podPress_feedSafeContent($data['podcastFeedURL']).''."\n"; } } echo ' '.podPress_feedSafeContent(stripslashes(get_option('admin_email'))).' ('.podPress_feedSafeContent($podPress->settings['iTunes']['author']).')'."\n"; echo ' '.podPress_feedSafeContent(get_option('admin_email')).'('.podPress_feedSafeContent($data['author']).')'."\n"; echo ' '.podPress_feedSafeContent($podPress->settings['rss_category']).''."\n"; if(!empty($data['rss_ttl'])) { echo ' '.$data['rss_ttl'].''."\n"; } echo ' '.podPress_stringLimiter(podPress_feedSafeContent($data['keywords'], true), 255).''."\n"; echo ' '.podPress_stringLimiter(podPress_feedSafeContent($data['subtitle'], true), 255).''."\n"; echo ' '.podPress_stringLimiter(podPress_feedSafeContent($data['summary'], true), 4000).''."\n"; echo ' '.podPress_feedSafeContent($data['author']).''."\n"; echo ' ' .podPress_getiTunesCategoryTags(); echo ' '."\n"; echo ' '.stripslashes(podPress_feedSafeContent($data['author'])).''."\n"; echo ' '.podPress_feedSafeContent($data['admin_email']).''."\n"; echo ' '."\n"; if(empty($data['block'])) { $data['block'] = 'No'; } echo ' '.$data['block'].''."\n"; echo ' '.podPress_feedSafeContent(strtolower($data['explicit'])).''."\n"; echo ' '."\n"; echo ' '."\n"; echo ' '.podPress_feedSafeContent($data['rss_image']).''."\n"; echo ' '; bloginfo_rss('name'); echo ''."\n"; echo ' '; bloginfo_rss('url'); echo ''."\n"; echo ' 144'."\n"; echo ' 144'."\n"; echo ' '."\n"; } function podPress_rss2_item() { GLOBAL $podPress, $post, $post_meta_cache, $blog_id; $enclosureTag = podPress_getEnclosureTags(); if($enclosureTag != '') // if no enclosure tag, no need for iTunes tags { echo ' ' . $enclosureTag; if($post->podPressPostSpecific['itunes:subtitle'] == '##PostExcerpt##') { ob_start(); the_content_rss('', false, 0, 25); $data = ob_get_contents(); ob_end_clean(); $post->podPressPostSpecific['itunes:subtitle'] = substr(ltrim($data), 0, 254); } if(empty($post->podPressPostSpecific['itunes:subtitle'])) { $post->podPressPostSpecific['itunes:subtitle'] = get_the_title_rss(); } echo ' '.podPress_feedSafeContent($post->podPressPostSpecific['itunes:subtitle'], true).''."\n"; if($post->podPressPostSpecific['itunes:summary'] == '##Global##') { $post->podPressPostSpecific['itunes:summary'] = $podPress->settings['iTunes']['summary']; } if(empty($post->podPressPostSpecific['itunes:summary']) || $post->podPressPostSpecific['itunes:summary'] == '##PostExcerpt##') { ob_start(); the_content_rss('', false, 0, '', 2); $data = ob_get_contents(); ob_end_clean(); $post->podPressPostSpecific['itunes:summary'] = substr(ltrim($data), 0, 4000); } if(empty($post->podPressPostSpecific['itunes:summary'])) { $post->podPressPostSpecific['itunes:summary'] = $podPress->settings['iTunes']['summary']; } echo ' '.podPress_stringLimiter(podPress_feedSafeContent($post->podPressPostSpecific['itunes:summary'], true), 4000).''."\n"; if($post->podPressPostSpecific['itunes:keywords'] == '##WordPressCats##') { $categories = get_the_category(); $post->podPressPostSpecific['itunes:keywords'] = ''; if(is_array($categories)) { foreach ($categories as $category) { $category->cat_name = $category->cat_name; if($post->podPressPostSpecific['itunes:keywords'] != '') { $post->podPressPostSpecific['itunes:keywords'] .= ', '; } $post->podPressPostSpecific['itunes:keywords'] .= $category->cat_name; } $post->podPressPostSpecific['itunes:keywords'] = trim($post->podPressPostSpecific['itunes:keywords']); } } elseif($post->podPressPostSpecific['itunes:keywords'] == '##Global##') { $post->podPressPostSpecific['itunes:keywords'] = $podPress->settings['iTunes']['keywords']; } echo ' '.podPress_stringLimiter(podPress_feedSafeContent(str_replace(' ', ',', $post->podPressPostSpecific['itunes:keywords']), true), 255).''."\n"; if($post->podPressPostSpecific['itunes:author'] == '##Global##') { $post->podPressPostSpecific['itunes:author'] = $podPress->settings['iTunes']['author']; if(empty($post->podPressPostSpecific['itunes:author'])) { $post->podPressPostSpecific['itunes:author'] = stripslashes(get_option('admin_email')); } } echo ' '.podPress_feedSafeContent($post->podPressPostSpecific['itunes:author'], true).''."\n"; if($post->podPressPostSpecific['itunes:explicit'] == 'Default') { $post->podPressPostSpecific['itunes:explicit'] = $podPress->settings['iTunes']['explicit']; if(empty($post->podPressPostSpecific['itunes:explicit'])) { $post->podPressPostSpecific['itunes:explicit'] = 'No'; } } echo ' '.podPress_feedSafeContent(strtolower($post->podPressPostSpecific['itunes:explicit'])).''."\n"; if($post->podPressPostSpecific['itunes:block'] == 'Default') { $post->podPressPostSpecific['itunes:block'] = $podPress->settings['iTunes']['block']; if(empty($post->podPressPostSpecific['itunes:block'])) { $post->podPressPostSpecific['itunes:block'] = 'No'; } } if(empty($post->podPressPostSpecific['itunes:block'])) { $post->podPressPostSpecific['itunes:block'] = 'No'; } echo ' '.podPress_feedSafeContent($post->podPressPostSpecific['itunes:block']).''."\n"; //echo ''. get_comments_link() .''."\n"; } if(isset($post_meta_cache[$blog_id][$post->ID]['enclosure_podPressHold'])) { $post_meta_cache[$blog_id][$post->ID]['enclosure'] = $post_meta_cache[$blog_id][$post->ID]['enclosure_podPressHold']; unset($post_meta_cache[$blog_id][$post->ID]['enclosure_podPressHold']); } } function podPress_atom_head() { GLOBAL $podPress; if(!isset($podPress->settings['category_data'])) { podPress_feed_getCategory(); } echo ' '."\n"; if($podPress->settings['category_data']['categoryCasting'] == 'true' && $podPress->settings['category_data']['rss_imageChoice'] == 'Custom') { echo ' '.podPress_feedSafeContent($podPress->settings['category_data']['rss_image']).''."\n"; } else { echo ' '.podPress_feedSafeContent(get_option('rss_image')).''."\n"; } } function podPress_atom_entry() { $enclosureTag = podPress_getEnclosureTags('atom'); if($enclosureTag != '') // if no enclosure tag, no need for iTunes tags { echo ' ' . $enclosureTag; } } function podPress_xspf_playlist() { GLOBAL $more, $posts, $m; header("HTTP/1.0 200 OK"); header('Content-type: application/xspf+xml; charset=' . get_settings('blog_charset'), true); $more = 1; echo '\n"; echo ''."\n"; echo " "; bloginfo_rss('name'); echo "\n"; echo " \n"; echo " "; the_author(); echo "\n"; echo " "; bloginfo_rss('url'); echo "\n"; echo " http://creativecommons.org/licenses/by-sa/1.0/\n"; echo " \n"; if ($posts) { foreach ($posts as $post) { start_wp(); $enclosureTag = podPress_getEnclosureTags('xspf'); if($enclosureTag != '') // if no enclosure tag, no need for track tags { echo " \n"; echo $enclosureTag; echo " \n"; } } } echo " \n"; echo "\n"; exit; } function podPress_getEnclosureTags($feedtype = 'rss2') { GLOBAL $podPress, $post; $result = ''; $hasMediaFileAccessible = false; if(is_array($post->podPressMedia)) { $foundPreferred = false; reset($post->podPressMedia); while (list($key, $val) = each($post->podPressMedia)) { $preferredFormat = false; if(!$post->podPressMedia[$key]['authorized']) { if($podPress->settings['premiumContentFakeEnclosure']) { $post->podPressMedia[$key]['URI'] = 'podPress_Protected_Content.mp3'; } else { continue; } } if(defined('PODPRESS_TORRENTCAST') && !empty($post->podPressMedia[$key]['authorized']['URI_torrent'])) { $post->podPressMedia[$key]['URI'] = $post->podPressMedia[$key]['URI_torrent']; } $hasMediaFileAccessible = true; if(isset($_GET['onlyformat']) && $_GET['onlyformat'] != $post->podPressMedia[$key]['ext']) { continue; } if(isset($_GET['format']) && $_GET['format'] == $post->podPressMedia[$key]['ext']) { $preferredFormat = true; } if($post->podPressMedia[$key]['rss'] == 'on' || $post->podPressMedia[$key]['atom'] == 'on' || $preferredFormat == true) { if($feedtype == 'atom' && $post->podPressMedia[$key]['atom'] == 'on') { $post->podPressMedia[$key]['URI'] = $podPress->convertPodcastFileNameToWebPath($post->ID, $key, $post->podPressMedia[$key]['URI'], 'feed'); $result .= ''."\n"; } elseif($feedtype == 'xspf') { $post->podPressMedia[$key]['URI'] = $podPress->convertPodcastFileNameToValidWebPath($post->podPressMedia[$key]['URI']); if(podPress_getFileExt($post->podPressMedia[$key]['URI']) == 'mp3') { $result .= ' '.$post->podPressMedia[$key]['URI']."\n"; if(!empty($post->podPressMedia[$key]['title'])) { $result .= ' '.podPress_feedSafeContent($post->podPressMedia[$key]['title'])."\n"; $result .= ' '.podPress_feedSafeContent($post->podPressMedia[$key]['title'])."\n"; } else { $result .= ' '.podPress_feedSafeContent($post->post_title)."\n"; $result .= ' '.podPress_feedSafeContent($post->post_title)."\n"; } if(!empty($post->podPressMedia[$key]['previewImage'])) { $result .= ' '.$post->podPressMedia[$key]['previewImage']."\n"; } } } elseif($feedtype == 'rss2') { $post->podPressMedia[$key]['URI'] = $podPress->convertPodcastFileNameToWebPath($post->ID, $key, $post->podPressMedia[$key]['URI'], 'feed'); if(!isset($post->podPressMedia[$key]['duration']) || !preg_match("/([0-9]):([0-9])/", $post->podPressMedia[$key]['duration'])) { $post->podPressMedia[$key]['duration'] = '00:01:01'; } $durationTag = ''.$post->podPressMedia[$key]['duration'].''."\n"; if($post->podPressMedia[$key]['rss'] == 'on') { if(!$preferredFormat && $foundPreferred) { continue; } elseif($preferredFormat) { $foundPreferred = true; } $result = ''."\n"; $result .= $durationTag; } elseif($preferredFormat && !$foundPreferred) { $result = ''."\n"; $result .= $durationTag; $foundPreferred = true; } } } } } if($hasMediaFileAccessible && $result == '' && $feedtype != 'xspf') { echo "\n"; } return $result; } function podPress_getiTunesCategoryTags() { GLOBAL $podPress, $post; $result = ''; $data = array(); if($podPress->settings['category_data']['categoryCasting'] == 'true' && is_array($podPress->settings['category_data']['iTunesCategory'])) { foreach ($podPress->settings['category_data']['iTunesCategory'] as $key=>$value) { if($value == '##Global##') { if(!empty($podPress->settings['iTunes']['category'][$key])) { $data[] = $podPress->settings['iTunes']['category'][$key]; } } else { $data[] = $value; } } } if(empty($data)) { $data = $podPress->settings['iTunes']['category']; } if(is_array($data)) { foreach($data as $thiscat) { if(strstr($thiscat, ':')) { list($cat, $subcat) = explode(":", $thiscat); $result .= ''."\n"; $result .= ' '."\n"; $result .= ''."\n"; } elseif(!empty($thiscat)) { $result .= ''."\n"; } } } if(empty($result)) { $result .= ''."\n"; } return $result; } function podPress_feed_getCategory() { GLOBAL $podPress, $wpdb, $wp_query; if(!is_category()) { $podPress->settings['category_data'] = false; return $podPress->settings['category_data']; } $current_catid = $wp_query->get('cat'); $category = get_category($current_catid); $data = podPress_get_option('podPress_category_'.$category->cat_ID); $data['id'] = $category->cat_ID; $data['blogname'] = $category->cat_name; $data['blogdescription'] = $category->category_description; $podPress->settings['category_data'] = $data; return $podPress->settings['category_data']; // old version of this function if(!is_category()) { //return false; } $byName = single_cat_title('', false); $categories = get_the_category(); if(is_array($categories)) { foreach ($categories as $category) { $thisisit = false; if($byName == $category->cat_name) { $thisisit = true; } if($thisisit) { $data = podPress_get_option('podPress_category_'.$category->cat_ID); $data['id'] = $category->cat_ID; $data['blogname'] = $category->cat_name; $data['blogdescription'] = $category->category_description; $podPress->settings['category_data'] = $data; return $podPress->settings['category_data']; } } } $podPress->settings['category_data'] = false; return $podPress->settings['category_data']; } function podPress_getCategoryCastingFeedData ($selection, $input) { GLOBAL $podPress, $feed; if(!isset($podPress->settings['category_data'])) { podPress_feed_getCategory(); } if(empty($feed) || $podPress->settings['category_data'] === false) { return $input; } else { if(empty($podPress->settings['category_data']['categoryCasting'])) { $podPress->settings['category_data']['categoryCasting'] = 'true'; } switch($selection) { case 'blogname': switch($podPress->settings['category_data']['blognameChoice']) { case 'CategoryName': if(empty($podPress->settings['category_data']['blogname'])) { return $input; } else { return $podPress->settings['category_data']['blogname']; } break; case 'Append': if(empty($podPress->settings['category_data']['blogname'])) { return $input; } else { return $input.' : '.$podPress->settings['category_data']['blogname']; } break; default: return $input; break; } break; case 'blogdescription': if($podPress->settings['category_data']['blogdescriptionChoice'] == 'CategoryDescription' && !empty($podPress->settings['category_data']['blogdescription'])) { return $podPress->settings['category_data']['blogdescription']; } return $input; break; case 'rss_language': if($podPress->settings['category_data']['rss_language'] == '##Global##' || empty($podPress->settings['category_data']['rss_language'])) { return $input; } else { return $podPress->settings['category_data']['rss_language']; } break; case 'rss_image': if($podPress->settings['category_data']['rss_imageChoice'] == 'Global' || empty($podPress->settings['category_data']['rss_image'])) { return $input; } else { return $podPress->settings['category_data']['rss_image']; } break; default: return $input; break; } } } function podPress_feedBlogName ($input) { return podPress_getCategoryCastingFeedData('blogname', $input); } function podPress_feedBlogDescription ($input) { return podPress_getCategoryCastingFeedData('blogdescription', $input); } function podPress_feedBlogRssLanguage ($input) { return podPress_getCategoryCastingFeedData('rss_language', $input); } function podPress_feedBlogRssImage ($input) { return podPress_getCategoryCastingFeedData('rss_image', $input); }