[web-news] master: Show descriptions for each newsgroup (#21)
| From: | Jim Winstead via GitHub | Date: | Fri, 23 Aug 2024 23:13:20 +0000 |
| Subject: | [web-news] master: Show descriptions for each newsgroup (#21) | ||
| Groups: | php.webmaster | ||
| Request: | Send a blank email to php-webmaster+get-31994@lists.php.net to get a copy of this message | ||
Author: Jim Winstead (jimwins)
Committer: GitHub (web-flow)
Pusher: jimwins
Date: 2024-08-23T16:12:29-07:00
Commit: https://github.com/php/web-news/commit/7bf968e47b586ec625391c8bc546d71aa74b7a69
Raw diff: https://github.com/php/web-news/commit/7bf968e47b586ec625391c8bc546d71aa74b7a69.diff
Show descriptions for each newsgroup (#21)
Changed paths:
M index.php
M lib/Web/News/Nntp.php
Diff:
diff --git a/index.php b/index.php
index 64a9541..278b703 100644
--- a/index.php
+++ b/index.php
@@ -5,6 +5,7 @@
try {
$nntpClient = new \Web\News\Nntp($NNTP_HOST);
$groups = $nntpClient->listGroups();
+ $descriptions = $nntpClient->listGroupDescriptions();
/* Reorder so it's moderated, active, and inactive */
$order = [ 'm' => 1, 'y' => 2, 'n' => 3 ];
uasort($groups, function ($a, $b) use ($order) {
@@ -38,24 +39,26 @@
<table class="standard">
<tr>
<th>name</th>
+ <th>description</th>
<th>messages</th>
<th>rss</th>
<th>rdf</th>
</tr>
<tr>
- <th colspan="4">Moderated Lists</th>
+ <th colspan="5">Moderated Lists</th>
</tr>
<?php
$last_status = 'm';
foreach ($groups as $group => $details) {
if ($details['status'] != $last_status) {
$last_status = $details['status'];
- echo '<tr><th colspan="4">',
+ echo '<tr><th colspan="5">',
$last_status == 'y' ? 'Discussion Lists' : 'Inactive
Lists',
"</th></tr>\n";
}
echo " <tr>\n";
echo " <td><a class=\"active{$details['status']}\"
href=\"/$group\">$group</a></td>\n";
+ echo " <td>", htmlspecialchars($descriptions[$group]),
"</td>\n";
echo " <td class=\"align-right\">", $details['high']
- $details['low'] + 1, "</td>\n";
echo " <td>";
if ($details['status'] != 'n') {
diff --git a/lib/Web/News/Nntp.php b/lib/Web/News/Nntp.php
index 10d7c55..e76902d 100644
--- a/lib/Web/News/Nntp.php
+++ b/lib/Web/News/Nntp.php
@@ -85,6 +85,34 @@ public function listGroups()
return $list;
}
+ /**
+ * Sends the LIST NEWSGROUPS command to the server and returns an array of
+ * groups descriptions
+ *
+ * @return array
+ */
+ public function listGroupDescriptions()
+ {
+ $list = [];
+
+ $response = $this->sendCommand('LIST NEWSGROUPS', 215);
+
+ if ($response !== false) {
+ while ($line = fgets($this->connection)) {
+ if ($line == ".\r\n") {
+ break;
+ }
+
+ $line = rtrim($line);
+ list($group, $description) = explode(' ', $line, 2);
+
+ $list[$group] = $description;
+ }
+ }
+
+ return $list;
+ }
+
/**
* Sets the active group at the server and returns details about the group
*