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 " \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);
}