Index: scripts/conference_teaser =================================================================== RCS file: /repository/php-master-web/scripts/conference_teaser,v retrieving revision 1.2 diff -u -r1.2 conference_teaser --- scripts/conference_teaser 23 Feb 2007 16:51:22 -0000 1.2 +++ scripts/conference_teaser 3 Jun 2007 16:54:36 -0000 @@ -14,15 +14,26 @@ if (!$out) { die("unable to pregenerate conference teaser to '$outfile~'"); } // Load the RSS file and register used namespaces - $sxe = new SimpleXMLElement($rssfile, null, true, "http://purl.org/rss/1.0/"); - $sxe->registerXPathNamespace("dc", "http://purl.org/dc/elements/1.1/"); + $sxe = new SimpleXMLElement($rssfile, $GLOBALS["XML_OPTIONS"], true); + $sxe->registerXPathNamespace("php", "http://php.net/ns/news"); // Loop over the items and store them in a array - foreach($sxe->item as $item) { - $url = (string)$item->link[0]; - $url = str_replace("http://www.php.net", "", $url); // /relative/path/to/item - $subject = (string)current($item->xpath("dc:subject")); - $title = (string)$item->title[0]; + foreach($sxe->entry as $item) { + $url = (string)$item->link["href"]; + $subject = (string)$item->category["term"]; + if($subject == "conferences") { + $subject = "conference"; + } + elseif($subject != "cfp") { + // This is neither a conf announcement nor cfp, skip it + continue; + } + $title = (string)$item->title; + $lastDate = current($item->xpath("php:finalTeaserDate")); + if(strtotime($lastDate) < strtotime("tomorrow")) { + // finalTeaserDate has passed, skip it + continue; + } $STORE[$subject][$url] = $title; } Index: scripts/rss_parser =================================================================== RCS file: /repository/php-master-web/scripts/rss_parser,v retrieving revision 1.20 diff -u -r1.20 rss_parser --- scripts/rss_parser 18 Feb 2007 16:26:37 -0000 1.20 +++ scripts/rss_parser 3 Jun 2007 16:54:36 -0000 @@ -231,7 +231,7 @@ return $RSS; } -$RSSNews = GenerateRSSFile($root, "http://www.php.net/"); -$RSSConf = GenerateRSSFile("$root/conferences", "http://www.php.net/conferences/"); +#$RSSNews = GenerateRSSFile($root, "http://www.php.net/"); +#$RSSConf = GenerateRSSFile("$root/conferences", "http://www.php.net/conferences/"); ?> Index: scripts/update-backend =================================================================== RCS file: /repository/php-master-web/scripts/update-backend,v retrieving revision 1.24 diff -u -r1.24 update-backend --- scripts/update-backend 18 Feb 2007 16:28:28 -0000 1.24 +++ scripts/update-backend 3 Jun 2007 16:54:36 -0000 @@ -35,7 +35,8 @@ // Run ip-to-country fetch code include "ip-to-country"; fetch_ip_to_country($root); - + +/* Old news system // Create RSS news feed file $dest = fopen("$root/news.rss", "w"); if (!$dest) { echo "failed to open $root/news.rss for writing"; } @@ -54,10 +55,15 @@ fclose($dest); } touch("$root/conferences/news.rss", @filemtime("$root/conferences/index.php")); +*/ +include "pregen_news"; +pregen_atom("$root/archive/2007.xml", "$root/feed.atom", "$root/include/pregen-news.inc"); +include "rss_parser"; +legacy_rss("$root/feed.atom", "$root/news.rss", "$root/conferences/news.rss"); // Pregenerate conference teaser include "conference_teaser"; -pregenerate_conf_teaser("$root/conferences/news.rss", "$root/include/pregen-confs.inc"); +pregenerate_conf_teaser("$root/feed.atom", "$root/include/pregen-confs.inc"); /* // Pregenerate version feed Index: scripts/pregen_news =================================================================== RCS file: scripts/pregen_news diff -N scripts/pregen_news --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ scripts/pregen_news 3 Jun 2007 16:57:09 -0000 @@ -0,0 +1,106 @@ +formatOutput = true; + $dom->preserveWhiteSpace = false; + $options = $GLOBALS["XML_OPTIONS"]; + + $dom->load($feed, $options); + $dom->save($feedDest, $options); + + $entrys = $dom->getElementsByTagNameNS("http://www.w3.org/2005/Atom", "entry"); + + $NEWS = array(); + foreach($entrys as $entry) { + $contentNode = $entry->getElementsByTagName("content")->item(0)->firstChild; + + foreach($entry->getElementsByTagName("link") as $link) { + if($link->getAttribute("rel") == "alternate") { + $self = $link->getAttribute("href"); + $fragment = parse_url("http://php.net" . $self, PHP_URL_FRAGMENT); + break; + } + } + + $dateNode = $entry->getElementsByTagName("published")->item(0)->firstChild; + $date = date("d-M-Y", strtotime($dom->saveXML($dateNode, $options))); + $dateSpanNode = $dom->createElement("span", "[$date]"); + $dateSpanNode->setAttribute("class", "newsdate"); + + $contentNode->insertBefore($dateSpanNode, $contentNode->firstChild); + $contentNode->removeAttributeNS("http://www.w3.org/1999/xhtml", ""); + + $content = $dom->saveXML($contentNode, $options); + $title = $dom->saveXML($entry->getElementsByTagName("title")->item(0)->firstChild, $options); + $image = $entry->getElementsByTagNameNS("http://php.net/ns/news", "newsImage"); + if($image->length > 0) { + $image = array( + "link" => $image->item(0)->getAttribute("link"), + "title" => $image->item(0)->getAttribute("title"), + "image" => $image->item(0)->nodeValue, + ); + } else { + $image = false; + } + + $newsEntry = array( + "fragment" => $fragment, + "title" => $title, + "content" => $content, + "image" => $image, + ); + $categories = $entry->getElementsByTagName("category"); + $c = array(); + for ($i=0; $i<$categories->length; $i++) { + $c[] = $categories->item($i)->getAttribute("term"); + } + if (in_array("cfp", $c) || in_array("conferences", $c)) { + $NEWS["conferences"][] = $newsEntry; + } + if (in_array("frontpage", $c)) { + $NEWS["frontpage"][] = $newsEntry; + } + } + + $write = 'entry as $entry) { + $item = ""; + $term = (string)$entry->category["term"]; + $type = $term != "frontpage" ? "conf" : "news"; + GenerateRSSItem( + $links[$type][]["link"] = "http://www.php.net" .$entry->link["href"], + (string)$entry->title, + ProcessText($entry->content->asXML()), + date("Y-m-d", strtotime((string)$entry->updated)), + $type == "conf" ? ($term == "conferences" ? "conference" : $term): null, + $item + ); + if($type == "conf") { + $CONF_ITEMS .= $item; + } else { + $NEWS_ITEMS .= $item; + } + } + GenerateRSSHeader($links["conf"], $CONF, "http://www.php.net/conferences/"); + GenerateRSSHeader($links["news"], $NEWS, "http://www.php.net/"); + + $CONF .= $CONF_ITEMS; + $NEWS .= $NEWS_ITEMS; + + GenerateRSSFooter($CONF); + GenerateRSSFooter($NEWS); + + file_put_contents($newsDest, $NEWS); + file_put_contents($confDest, $CONF); +} +