Fix incorrect display of last post info for groups with zero posts.
This commit is contained in:
parent
adaab981af
commit
a12dc5414d
|
@ -707,12 +707,14 @@ function groups_show($gruppen)
|
||||||
$lastarticleinfo['name'] = $poster[0]['mailbox'];
|
$lastarticleinfo['name'] = $poster[0]['mailbox'];
|
||||||
}
|
}
|
||||||
$fromoutput[0] = $poster[0]['mailbox'] . "@" . $poster[0]['host'];
|
$fromoutput[0] = $poster[0]['mailbox'] . "@" . $poster[0]['host'];
|
||||||
|
$groupdisplay .= get_date_interval(date("D, j M Y H:i T", $lastarticleinfo['date']));
|
||||||
|
$groupdisplay .= '<table><tr><td>';
|
||||||
|
$groupdisplay .= '<font class="np_last_posted_date">by: ';
|
||||||
|
$groupdisplay .= create_name_link(mb_decode_mimeheader(html_entity_decode($lastarticleinfo['name'])), $lastarticleinfo['from']);
|
||||||
|
$groupdisplay .= '</td></tr></table>';
|
||||||
|
} else {
|
||||||
|
unset($lastarticleinfo);
|
||||||
}
|
}
|
||||||
$groupdisplay .= get_date_interval(date("D, j M Y H:i T", $lastarticleinfo['date']));
|
|
||||||
$groupdisplay .= '<table><tr><td>';
|
|
||||||
$groupdisplay .= '<font class="np_last_posted_date">by: ';
|
|
||||||
$groupdisplay .= create_name_link(mb_decode_mimeheader(html_entity_decode($lastarticleinfo['name'])), $lastarticleinfo['from']);
|
|
||||||
$groupdisplay .= '</td></tr></table>';
|
|
||||||
}
|
}
|
||||||
if (isset($groupdisplay)) {
|
if (isset($groupdisplay)) {
|
||||||
$groupdisplay .= "\n";
|
$groupdisplay .= "\n";
|
||||||
|
@ -2227,3 +2229,91 @@ function send_admin_message($admin, $from, $subject, $message)
|
||||||
$dbh = null;
|
$dbh = null;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
function delete_message($messageid, $group, $overview_dbh)
|
||||||
|
{
|
||||||
|
global $logfile, $config_dir, $spooldir, $CONFIG, $webserver_group;
|
||||||
|
/* Find section */
|
||||||
|
$menulist = file($config_dir . "menu.conf", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||||
|
foreach ($menulist as $menu) {
|
||||||
|
if ($menu[0] == '#') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$menuitem = explode(':', $menu);
|
||||||
|
$glfp = fopen($config_dir . $menuitem[0] . "/groups.txt", 'r');
|
||||||
|
while ($gl = fgets($glfp)) {
|
||||||
|
$group_name = preg_split("/( |\t)/", $gl, 2);
|
||||||
|
if (strtolower(trim($group)) == strtolower(trim($group_name[0]))) {
|
||||||
|
$config_name = $menuitem[0];
|
||||||
|
echo "\nFOUND: " . $group . " IN: " . $config_name;
|
||||||
|
file_put_contents($logfile, "\n" . format_log_date() . " " . $config_name . " FOUND: " . $group . " IN: " . $config_name, FILE_APPEND);
|
||||||
|
break 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($CONFIG['article_database'] == '1') {
|
||||||
|
$database = $spooldir . '/' . $group . '-articles.db3';
|
||||||
|
if (is_file($database)) {
|
||||||
|
$articles_dbh = article_db_open($database);
|
||||||
|
$articles_stmt = $articles_dbh->prepare('DELETE FROM articles WHERE msgid=:messageid');
|
||||||
|
$articles_stmt->execute([
|
||||||
|
'messageid' => $messageid
|
||||||
|
]);
|
||||||
|
$articles_dbh = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Handle overview and history
|
||||||
|
$overview_stmt_del = $overview_dbh->prepare('DELETE FROM overview WHERE newsgroup=:newsgroup AND msgid=:msgid');
|
||||||
|
$overview_query = $overview_dbh->prepare('SELECT * FROM overview WHERE newsgroup=:newsgroup AND msgid=:msgid');
|
||||||
|
$overview_query->execute([
|
||||||
|
':newsgroup' => $group,
|
||||||
|
':msgid' => $messageid
|
||||||
|
]);
|
||||||
|
$grouppath = preg_replace('/\./', '/', $group);
|
||||||
|
$status = "deleted";
|
||||||
|
$statusdate = time();
|
||||||
|
$statusreason = "nocem";
|
||||||
|
$statusnotes = null;
|
||||||
|
while ($row = $overview_query->fetch()) {
|
||||||
|
if (isset($row['number'])) {
|
||||||
|
echo "\nFOUND: " . $messageid . " IN: " . $group;
|
||||||
|
file_put_contents($logfile, "\n" . format_log_date() . " " . $config_name . " DELETING: " . $messageid . " IN: " . $group, FILE_APPEND);
|
||||||
|
}
|
||||||
|
if (is_file($spooldir . '/articles/' . $grouppath . '/' . $row['number'])) {
|
||||||
|
unlink($spooldir . '/articles/' . $grouppath . '/' . $row['number']);
|
||||||
|
}
|
||||||
|
delete_message_from_overboard($config_name, $group, $messageid);
|
||||||
|
add_to_history($group, $row['number'], $row['msgid'], $status, $statusdate, $statusreason, $statusnotes);
|
||||||
|
thread_cache_removearticle($group, $row['number']);
|
||||||
|
$overview_stmt_del->execute([
|
||||||
|
':newsgroup' => $group,
|
||||||
|
':msgid' => $messageid
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function delete_message_from_overboard($config_name, $group, $messageid)
|
||||||
|
{
|
||||||
|
GLOBAL $spooldir;
|
||||||
|
$cachefile = $spooldir . "/" . $config_name . "-overboard.dat";
|
||||||
|
if (is_file($cachefile)) {
|
||||||
|
$cached_overboard = unserialize(file_get_contents($cachefile));
|
||||||
|
if ($target = $cached_overboard['msgids'][$messageid]) {
|
||||||
|
unset($cached_overboard['threads'][$target['date']]);
|
||||||
|
unset($cached_overboard['msgids'][$messageid]);
|
||||||
|
unset($cached_overboard['threadlink'][$messageid]);
|
||||||
|
file_put_contents($cachefile, serialize($cached_overboard));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$cachefile = $spooldir . "/" . $group . "-overboard.dat";
|
||||||
|
if (is_file($cachefile)) {
|
||||||
|
$cached_overboard = unserialize(file_get_contents($cachefile));
|
||||||
|
if ($target = $cached_overboard['msgids'][$messageid]) {
|
||||||
|
unset($cached_overboard['threads'][$target['date']]);
|
||||||
|
unset($cached_overboard['msgids'][$messageid]);
|
||||||
|
unset($cached_overboard['threadlink'][$messageid]);
|
||||||
|
file_put_contents($cachefile, serialize($cached_overboard));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue