echo " </item>\n"; break; case 'rdf': echo " <item>\n"; echo " <title>", format_subject($details['subject'], $charset), "</title>\n"; echo " <link>http://{$host}/{$group}/{$articleNumber}</link>\n"; echo " <description>", htmlspecialchars(format_author($details['author'], $charset), ENT_QUOTES, "UTF-8"), "</description>\n"; echo " <pubDate>{$date822}</pubDate>\n"; echo " </item>\n"; break; case 'html': default: echo " <tr>\n"; echo " <td><a href=\"/{$group}/{$articleNumber}\">{$articleNumber}</a></td>\n"; echo " <td><a href=\"/{$group}/{$articleNumber}\">"; echo format_subject($details['subject'], $charset); echo "</a></td>\n"; echo " <td vcard\">" . format_author($details['author'], $charset) . "</td>\n"; echo " <td align=\"center\"><tt>" . format_date($details['date']) . "</tt></td>\n"; echo " <td align=\"right\">{$details['lines']}</td>\n"; echo " </tr>\n"; } } switch ($format) { case 'rss': echo " </channel>\n</rss>\n"; break; case 'rdf': echo "</rdf:RDF>\n"; break; case 'html':
function start_article($mail, $refsResolved) { echo " <blockquote>\n"; echo ' <table border="0" cellpadding="2" cellspacing="2" width="100%">' . "\n"; # from echo ' <tr class="vcard">' . "\n"; echo ' <td class="headerlabel">From:</td>' . "\n"; echo ' <td class="headervalue">' . format_author($mail['headers']['from']['raw'], 'utf-8') . "</td>\n"; # date echo ' <td class="headerlabel">Date:</td>' . "\n"; echo ' <td class="headervalue">' . format_date($mail['headers']['date']) . "</td>\n"; echo " </tr>\n"; # subject echo ' <tr>' . "\n"; echo ' <td class="headerlabel">Subject:</td>' . "\n"; echo ' <td class="headervalue" colspan="3">' . format_subject($mail['headers']['subject'], 'utf-8') . "</td>\n"; echo " </tr>\n"; echo " <tr>\n"; # references if (!empty($refsResolved)) { echo ' <td class="headerlabel">References:</td>' . "\n"; echo ' <td class="headervalue">'; foreach ($refsResolved as $k => $ref) { echo "<a href=\"/" . urlencode($ref['group']) . '/' . urlencode($ref['articleId']) . "\">" . ($k + 1) . "</a> "; } echo "</td>\n"; } # groups if (!empty($mail['headers']['newsgroups'])) { echo ' <td class="headerlabel">Groups:</td>' . "\n"; echo ' <td class="headervalue">'; $r = explode(",", rtrim($mail['headers']['newsgroups'])); while (list($k, $v) = each($r)) { echo "<a href=\"/" . urlencode($v) . "\">" . htmlspecialchars($v) . "</a> "; } echo "</td>\n"; } echo " </tr>\n"; echo " </table>\n"; echo " </blockquote>\n"; echo " <blockquote>\n"; echo " <pre>\n"; }
function start_article($group, $headers, $charset) { echo " <blockquote>\n"; echo ' <table border="0" cellpadding="2" cellspacing="2" width="100%">' . "\n"; # from echo ' <tr class="vcard">' . "\n"; echo ' <td class="headerlabel">From:</td>' . "\n"; echo ' <td class="headervalue">' . format_author($headers['from'], $charset) . "</td>\n"; # date echo ' <td class="headerlabel">Date:</td>' . "\n"; echo ' <td class="headervalue">' . format_date($headers["date"]) . "</td>\n"; echo " </tr>\n"; # subject echo ' <tr>' . "\n"; echo ' <td class="headerlabel">Subject:</td>' . "\n"; echo ' <td class="headervalue" colspan="3">' . format_subject($headers["subject"], $charset) . "</td>\n"; echo " </tr>\n"; echo " <tr>\n"; # references if (!empty($headers['references']) || !empty($headers['in-reply-to'])) { $ref = $headers["references"] ? $headers["references"] : $headers["in-reply-to"]; echo ' <td class="headerlabel">References:</td>' . "\n"; echo ' <td class="headervalue">'; $r = explode(" ", $ref); $c = 1; $s = nntp_connect(NNTP_HOST) or die("failed to connect to news server"); while (list($k, $v) = each($r)) { if (!$v) { continue; } $v = trim($v); if (!preg_match("/^<.+>\$/", $v)) { continue; } if (strlen($v) > 504) { // 512 chars including CRLF continue; } $res2 = nntp_cmd($s, "XPATH {$v}", 223) or print "<!-- failed to get reference article id " . htmlspecialchars($v, ENT_QUOTES, "UTF-8") . " -->"; list(, $v) = split("/", trim($res2)); if (empty($v)) { continue; } echo "<a href=\"/{$group}/" . urlencode($v) . "\">" . $c++ . "</a> "; if ($c > REFERENCES_LIMIT) { printf('More than %d references', REFERENCES_LIMIT); break; } } echo "</td>\n"; } # groups if ($headers["newsgroups"]) { echo ' <td class="headerlabel">Groups:</td>' . "\n"; echo ' <td class="headervalue">'; $r = explode(",", chop($headers["newsgroups"])); while (list($k, $v) = each($r)) { echo "<a href=\"/" . urlencode($v) . "\">" . htmlspecialchars($v) . "</a> "; } echo "</td>\n"; } echo " </tr>\n"; //while (list($k,$v) = each($headers)) { // echo "<!-- ", htmlspecialchars($k),": ",preg_replace("/-+/", "-", htmlspecialchars($v))," -->\n"; //} echo " </table>\n"; echo " </blockquote>\n"; echo " <blockquote>\n"; echo " <pre>\n"; }
echo " </item>\n"; break; case 'rdf': echo " <item>\n"; echo " <title>", format_subject($subj, $charset), "</title>\n"; echo " <link>http://{$host}/{$group}/{$n}</link>\n"; echo " <description>", htmlspecialchars(format_author($author, $charset), ENT_QUOTES, "UTF-8"), "</description>\n"; echo " <pubDate>{$date822}</pubDate>\n"; echo " </item>\n"; break; case 'html': default: echo " <tr>\n"; echo " <td><a href=\"/{$group}/{$n}\">{$n}</a></td>\n"; echo " <td><a href=\"/{$group}/{$n}\">"; echo format_subject($subj, $charset); echo "</a></td>\n"; echo " <td vcard\">" . format_author($author, $charset) . "</td>\n"; echo " <td align=\"center\"><tt>" . format_date($odate) . "</tt></td>\n"; echo " <td align=\"right\">{$lines}</td>\n"; echo " </tr>\n"; } } switch ($format) { case 'rss': echo " </channel>\n</rss>\n"; break; case 'rdf': echo "</rdf:RDF>\n"; break; case 'html':