function spiel_view_page($topic) { // $result = new MagpieRSS(file_get_contents("$_SERVER[FILE_ROOT]/spiels/$topic.rss")); $url = "http://planwatch.org/spiels/{$topic}.rss"; include_once 'plan_read.php'; $content = plan_read_simplepie_rss($url); /* $channel_info=$result->channel; $content.= "<h1>$channel_info[title]</h1>\n"; $content.= "<a href='$_SERVER[WEB_ROOT]/write/?autocontent=!spiel:$channel_info[title]:TITLE%20OF%20YOUR%20ENTRY!'>join the conversation</a><br />\n"; $content.= "<a href='$_SERVER[WEB_ROOT]/lists/add/spiels/$topic'>watch</a><br /><br />\n"; foreach($result->items as $item) { if ($item['items_title']) $content.= " <h3><a href='$item[link]'> $item[items_title] </a></h3>\n"; $dc=$item['dc']; if ($dc['items_date']) $timecodes="posted ".formattime(parse_w3cdtf($dc['items_date'])); $content.= "<span class='edit_links'>$dc[items_subject] | $dc[items_creator] | $timecodes</span><br />\n"; if ($item['items_description']) $content.= "$item[items_description]<br />"; $content.= "<br />\n\n"; } */ return $content; }
function plan_read_simplepie_rss($urls, $offset = 0, $item_count = 30) { if (IS_JOSH) { include_once 'simplepie.1.2.inc'; } else { include_once 'simplepie.inc'; } profile('rss_read'); $lastview = plan_get_last_view($urls); $multifeed = TRUE; if (is_string($urls)) { if (substr_count($urls, ",http") > 0) { $urls = explode(",http", $urls); foreach ($urls as $i => $url) { if (!strstr($url, 'http')) { $urls[$i] = "http" . $url; } } } else { $urls = array($urls); $multifeed = FALSE; } } preg_match("|\\/\\/(.*)@|", $urls[0], $match); if ($match[1]) { $_SERVER['DIGEST_USERINFO'] = $match[1]; $_SERVER['DIGEST_AUTH'] = TRUE; } profile("load feeds"); $feed = new SimplePie($urls); profile("load feeds"); $items = $feed->get_items(); usort($items, "plan_multifeed_sort_items"); $items = array_slice($items, $offset, $item_count); if (!is_object($items[0])) { // if(IS_JOSH) print_r($items); // do stuff to fix the url and try again preg_match("|.*://([^/]+)/|", $urls[0], $base_url_array); $base_link = "<a href='{$base_url_array['0']}'>{$base_url_array['1']}</a>"; if ($offset != "RECURSION") { $content = plan_read_simplepie_rss($base_url_array[0], "RECURSION"); } if (!$content) { $title = "Failed to read feed {$urls['0']}"; $content = "<h1>Plan Read Failed</h1> We tried <tt>{$urls['0']}</tt> and did not get a valid feed.<br />\n\t\t\tYou may want to try the site directly: {$base_link}<br />\n\t\t\tIf the feed address is incorrect, you can <a href='/lists/edit/watched'>edit your watched list</a> to correct it.<br /><br />\n\t\t\tStill have questions? Ask for <a href='mailto:help@planwatch.org'>help</a>."; $alternate_links = array_unique(array_merge(plan_feed_search(str_replace("http://", "http://www.", $base_url_array[0])), plan_feed_search($base_url_array[0]), plan_feed_search($urls[0]))); if ($alternate_links) { $content .= "<hr /><h2>Alternate Links</h2>Here are some possible alternate feed links:<ul>"; foreach ($alternate_links as $link) { $content .= "<li><a href='http://planwatch.org/read/{$link}'>{$link}</a></li>\n"; } } } } else { foreach ($items as $item) { unset($item_categories); $item_authors_string = ''; $entry_header = ''; $item_title = $item->get_title(); $item_link = $item->get_permalink(); $item_date = formattime($item->get_date('U')); $item_data = $item->get_content(); if ($item_category_list = $item->get_categories()) { foreach ($item_category_list as $category) { $item_categories .= " " . $category->get_label(); } } $item_authors = $item->get_authors(); $item_id = $item->get_id(); if ($item_authors) { foreach ($item_authors as $item_author) { if ($item_author->get_name()) { $item_authors_string .= "<a href='" . $item_author->get_link() . "'>" . $item_author->get_name() . "</a> "; } elseif ($item_author->get_email()) { $item_authors_string .= $item_author->get_email() . " "; } } } if ($item_title) { $feed = $item->get_feed(); $feed_title = $feed->get_title(); $feed_link = $feed->get_link(); $feed_url = $feed->feed_url; if ($multifeed) { $entry_header = "<a target='_self' href='/read/{$feed_url}'>{$feed_title}</a><br/><a target='_self' href='{$item_link}' class='entry_title'>{$item_title}</a>\n"; } else { $entry_header .= "<a target='_self' href='{$item_link}' class='entry_title'>{$item_title}</a>\n"; } } $entry_header .= "<span class='edit_links'>"; if ($item_categories) { $entry_header .= " {$item_categories}, "; } if ($item_date) { $entry_header .= " posted {$item_date} "; } if ($item_authors_string) { $entry_header .= "by {$item_authors_string} "; } $item_id_hash = md5($item_id); $entry_header .= "</span><br />\n"; //$entry_text=removeEvilTags($item_data); $entry_text = $item_data; $content .= "\n\t\t\t<div class='plan_entry' id='plan_entry_{$item_id_hash}'>\n\t\t\t{$entry_header}\n\t\t\t<div class='entry_content' id='entry_content_{$item_id_hash}'>"; $content .= str_replace("<a ", "<a target='_self' ", $entry_text); $content .= "\n\t\t\t</div>\n\t\t\t</div>\n\t\t\t"; } } if (!$multifeed && is_object($item)) { $feed = $item->get_feed(); $feed_title = $feed->get_title(); $feed_link = $feed->get_link(); $feed_description = $feed->get_description(); $content = "<h1><a href='{$feed_link}'>{$feed_title}</a></h1>{$feed_description}<br /><br />{$content}"; // if($urls[0]!=$feed_link) $content="<div class='message'><b>This feed is autodiscovered</b> based on the link you provided. It may keep working, but discovery is unpredictable. If you want to ".$content; } profile('rss_read'); return $content; }