| 1 | <?php |
|---|
| 2 | |
|---|
| 3 | |
|---|
| 4 | |
|---|
| 5 | |
|---|
| 6 | |
|---|
| 7 | |
|---|
| 8 | |
|---|
| 9 | |
|---|
| 10 | |
|---|
| 11 | |
|---|
| 12 | |
|---|
| 13 | |
|---|
| 14 | |
|---|
| 15 | |
|---|
| 16 | |
|---|
| 17 | |
|---|
| 18 | |
|---|
| 19 | |
|---|
| 20 | |
|---|
| 21 | |
|---|
| 22 | |
|---|
| 23 | |
|---|
| 24 | |
|---|
| 25 | |
|---|
| 26 | |
|---|
| 27 | |
|---|
| 28 | require("mvblog.php"); |
|---|
| 29 | $mvblog = new MvBlog(); |
|---|
| 30 | |
|---|
| 31 | |
|---|
| 32 | if (array_key_exists("HTTPS", $_SERVER) && $_SERVER["HTTPS"] == "on") { $proto = "https"; } else { $proto = "http"; } |
|---|
| 33 | $url = $proto."://".$_SERVER["SERVER_NAME"].(substr($_SERVER["REQUEST_URI"], 0, strpos($_SERVER["REQUEST_URI"], "common/"))); |
|---|
| 34 | |
|---|
| 35 | |
|---|
| 36 | $max_time = mktime(0, 0, 0, date("m"), date("d")+1, date("Y")); |
|---|
| 37 | |
|---|
| 38 | if (!array_key_exists("mode", $_REQUEST)) |
|---|
| 39 | $_REQUEST["mode"] = ""; |
|---|
| 40 | |
|---|
| 41 | switch ($_REQUEST["mode"]) { |
|---|
| 42 | case "comments" : |
|---|
| 43 | $sql = "SELECT c.id AS commentid, c.comment AS body, c.date AS date, c.name AS name, a.title AS title, a.id AS id, a.categories_ids AS categories_id"; |
|---|
| 44 | $sql .= " FROM comments c, articles a WHERE a.active=1 AND a.public=1 AND a.id=c.articles_id"; |
|---|
| 45 | if (array_key_exists("articleid", $_REQUEST)) { |
|---|
| 46 | $sql .= sprintf(" AND a.id = %d", $_REQUEST["articleid"]); |
|---|
| 47 | } |
|---|
| 48 | $sql .= " ORDER BY c.date DESC"; |
|---|
| 49 | $comments = true; |
|---|
| 50 | break; |
|---|
| 51 | case "category" : |
|---|
| 52 | if (!array_key_exists("cat_id", $_REQUEST)) |
|---|
| 53 | die("no category given"); |
|---|
| 54 | $sql = sprintf("SELECT * FROM articles WHERE date <= %1\$d AND active=1 AND public=1 AND ( |
|---|
| 55 | categories_ids = '%2\$d' OR categories_ids like '%%,%2\$d' OR categories_ids like '%2\$d,%%' OR categories_ids like '%%,%2\$d,%%' |
|---|
| 56 | ) ORDER BY date DESC", $max_time, $_REQUEST["cat_id"]); |
|---|
| 57 | $comments = false; |
|---|
| 58 | break; |
|---|
| 59 | case "author" : |
|---|
| 60 | if (!array_key_exists("author_id", $_REQUEST)) |
|---|
| 61 | die("no author given"); |
|---|
| 62 | $sql = sprintf("SELECT * FROM articles WHERE date <= %d AND active=1 AND public=1 AND authors_id = %d ORDER BY date DESC", $max_time, $_REQUEST["author_id"]); |
|---|
| 63 | $comments = false; |
|---|
| 64 | break; |
|---|
| 65 | case "dossier" : |
|---|
| 66 | if (!array_key_exists("dossier_id", $_REQUEST)) { |
|---|
| 67 | |
|---|
| 68 | $sql = "SELECT id, name AS title, 0 AS authors_id, ".$mvblog->db_quote("desc")." AS body, '".mktime()."' AS date FROM dossiers WHERE public = 1 AND active = 1 ORDER BY name"; |
|---|
| 69 | } else { |
|---|
| 70 | |
|---|
| 71 | $sql = sprintf("SELECT * FROM articles WHERE active = 1 AND public = 1 AND dossier_id = %d", $_REQUEST["dossier_id"]); |
|---|
| 72 | } |
|---|
| 73 | $comments = false; |
|---|
| 74 | break; |
|---|
| 75 | default : |
|---|
| 76 | $sql = sprintf("SELECT * FROM articles WHERE date <= %d AND active=1 AND public=1 ORDER BY date DESC", $max_time); |
|---|
| 77 | $comments = false; |
|---|
| 78 | break; |
|---|
| 79 | } |
|---|
| 80 | $mvblog->db->setLimit(20); |
|---|
| 81 | $res =& $mvblog->db->query($sql); |
|---|
| 82 | |
|---|
| 83 | if (PEAR::isError($res)) { |
|---|
| 84 | die($res->getUserInfo()); |
|---|
| 85 | } |
|---|
| 86 | header("Content-Type: text/xml"); |
|---|
| 87 | echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"; |
|---|
| 88 | echo "<rss version=\"2.0\">\n"; |
|---|
| 89 | echo "\t<channel>\n"; |
|---|
| 90 | echo "\t\t<title>".$mvblog->settings["blogtitle"]."</title>\n"; |
|---|
| 91 | echo "\t\t<link>".$url."</link>\n"; |
|---|
| 92 | echo "\t\t<description>".htmlentities($mvblog->settings["blogdescription"])."</description>\n"; |
|---|
| 93 | echo "\t\t<generator>MvBlog ".$mvblog->version."</generator>\n"; |
|---|
| 94 | echo "\t\t<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n"; |
|---|
| 95 | echo "\t\t<ttl>1440</ttl>\n"; |
|---|
| 96 | while ($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC)) { |
|---|
| 97 | if ($comments) { |
|---|
| 98 | $row["title"] = "Comment on ".$row["title"]." by: ".$row["name"]; |
|---|
| 99 | $link = "#comment".$row["commentid"]; |
|---|
| 100 | } else { |
|---|
| 101 | $link = ""; |
|---|
| 102 | } |
|---|
| 103 | echo "\t\t<item>\n"; |
|---|
| 104 | echo "\t\t\t<title>".htmlspecialchars($row["title"])."</title>\n"; |
|---|
| 105 | if (array_key_exists("aside", $row) && $row["aside"] == 1) { |
|---|
| 106 | echo "\t\t\t<link>".$url."index.php</link>\n"; |
|---|
| 107 | echo "\t\t\t<category>asides</category>\n"; |
|---|
| 108 | echo "\t\t\t<guid isPermaLink=\"false\">".$url."index.php?aside=".$row["id"]."</guid>\n"; |
|---|
| 109 | echo "\t\t\t<author>".htmlspecialchars($mvblog->authors[$row["authors_id"]]["email"])." (".htmlspecialchars($mvblog->authors[$row["authors_id"]]["fullname"]).")</author>\n"; |
|---|
| 110 | } else { |
|---|
| 111 | if (array_key_exists("mode", $_REQUEST) && $_REQUEST["mode"] == "dossier" && !array_key_exists("dossier_id", $_REQUEST)) |
|---|
| 112 | echo "\t\t\t<link>".$url."index.php?action=viewdossier&id=".$row["id"]."$link</link>\n"; |
|---|
| 113 | else |
|---|
| 114 | echo "\t\t\t<link>".$url."index.php?action=view&id=".$row["id"]."$link</link>\n"; |
|---|
| 115 | if (array_key_exists("categories_ids", $row)) |
|---|
| 116 | $categories = explode(",", $row["categories_ids"]); |
|---|
| 117 | else |
|---|
| 118 | $categories = array(); |
|---|
| 119 | echo "\t\t\t<category>"; |
|---|
| 120 | $category_names = array(); |
|---|
| 121 | foreach ($categories as $v) { |
|---|
| 122 | if (array_key_exists($v, $mvblog->categories)) |
|---|
| 123 | $category_names[] = $mvblog->categories[$v]["name"]; |
|---|
| 124 | } |
|---|
| 125 | echo implode(", ", $category_names); |
|---|
| 126 | echo "</category>\n"; |
|---|
| 127 | if (array_key_exists("mode", $_REQUEST) && $_REQUEST["mode"] == "dossier" && !array_key_exists("dossier_id", $_REQUEST)) |
|---|
| 128 | echo "\t\t\t<guid isPermaLink=\"true\">".$url."index.php?action=viewdossier&id=".$row["id"]."$link</guid>\n"; |
|---|
| 129 | else |
|---|
| 130 | echo "\t\t\t<guid isPermaLink=\"true\">".$url."index.php?action=view&id=".$row["id"]."$link</guid>\n"; |
|---|
| 131 | if (!$comments) { |
|---|
| 132 | echo "\t\t\t<comments>".$url."index.php?action=view&id=".$row["id"]."#comments</comments>\n"; |
|---|
| 133 | echo "\t\t\t<author>".htmlspecialchars($mvblog->authors[$row["authors_id"]]["email"])." (".htmlspecialchars($mvblog->authors[$row["authors_id"]]["fullname"]).")</author>\n"; |
|---|
| 134 | } |
|---|
| 135 | } |
|---|
| 136 | echo "\t\t\t<description>".htmlentities($mvblog->strip_bbcode(strip_tags(str_replace("##BREAKPOINT##", "", stripslashes($row["body"])))))."</description>\n"; |
|---|
| 137 | echo "\t\t\t<pubDate>".date("r", $row["date"])."</pubDate>\n"; |
|---|
| 138 | |
|---|
| 139 | echo "\t\t</item>\n"; |
|---|
| 140 | } |
|---|
| 141 | echo "\t</channel>\n"; |
|---|
| 142 | echo "</rss>"; |
|---|
| 143 | ?> |
|---|