From 4d927dcdc400803168a476793a539b3e8c6d9478 Mon Sep 17 00:00:00 2001 From: Retro_Guy Date: Thu, 23 Dec 2021 03:30:59 +0000 Subject: [PATCH] Integrate nocem into overboard so deleted articles are removed immediately from recent message lists --- Rocksolid_Light/rocksolid/overboard.php | 15 +++++++++------ Rocksolid_Light/rslight/scripts/nocem.php | 22 ++++++++++++++++++++++ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/Rocksolid_Light/rocksolid/overboard.php b/Rocksolid_Light/rocksolid/overboard.php index c361710..396160f 100755 --- a/Rocksolid_Light/rocksolid/overboard.php +++ b/Rocksolid_Light/rocksolid/overboard.php @@ -158,6 +158,9 @@ krsort($files); echo ''; foreach($files as $article) { + if(!isset($cachedate)) { + $cachedate = time(); + } if($CONFIG['article_database'] == '1') { $data = explode(':', $article); $articledata = np_get_db_article($data[1], $data[0], 0); @@ -200,9 +203,6 @@ foreach($files as $article) { if(($thisdate > time()) || ($thisdate < $oldest)) { continue; } - if(!isset($cachedate)) { - $cachedate = time(); - } $local_poster=false; if(preg_match('/X-Rslight-Site:.*/', $header, $site)) { $site_match = explode("X-Rslight-Site: ", $site[0]); @@ -215,6 +215,10 @@ foreach($files as $article) { } } + preg_match('/Message-ID:.*/i', $header, $articleid); + $getid = explode(": ", $articleid[0]); + $thismsgid = hash('crc32', serialize($getid[1])); + preg_match('/Content-Transfer-Encoding:.*/', $header, $te); $content_transfer_encoding = explode("Content-Transfer-Encoding: ", $te[0]); @@ -252,13 +256,11 @@ foreach($files as $article) { } else { $this_output = ''; - $this_overboard[] = $this_output; + $this_overboard[$thismsgid] = $this_output; + if($results++ > ($maxdisplay - 2)) break; } diff --git a/Rocksolid_Light/rslight/scripts/nocem.php b/Rocksolid_Light/rslight/scripts/nocem.php index 7f566f1..6c75625 100755 --- a/Rocksolid_Light/rslight/scripts/nocem.php +++ b/Rocksolid_Light/rslight/scripts/nocem.php @@ -137,6 +137,28 @@ function delete_message($messageid, $group) { rename($out_overview, $this_overview); chown($this_overview, $CONFIG['webserver_user']); chgrp($this_overview, $webserver_group); + delete_message_from_overboard($config_name, $group, $messageid); return; } + +function delete_message_from_overboard($config_name, $group, $messageid) { + GLOBAL $spooldir; + $delkey = hash('crc32', serialize($messageid)); + $cachefile=$spooldir."/".$config_name."-overboard.dat"; + if(is_file($cachefile)) { + $cached_overboard = unserialize(file_get_contents($cachefile)); + if(isset($cached_overboard[$delkey])) { + unset($cached_overboard[$delkey]); + file_put_contents($cachefile, serialize($cached_overboard)); + } + } + $cachefile=$spooldir."/".$group."-overboard.dat"; + if(is_file($cachefile)) { + $cached_overboard = unserialize(file_get_contents($cachefile)); + if(isset($cached_overboard[$delkey])) { + unset($cached_overboard[$delkey]); + file_put_contents($cachefile, serialize($cached_overboard)); + } + } +} ?>
'; } - $this_output = '

'; $this_output.= ''.mb_decode_mimeheader($output[1])."\r\n"; $this_output.= '

'; $this_output.= ''.$groupname.''; $this_output.= '

'; - if((isset($CONFIG['hide_email']) && $CONFIG['hide_email'] == true) && (strpos($fromoutput[0], '@') !== false)) { $poster_name = truncate_email($fromoutput[0]); } else { @@ -294,7 +296,8 @@ foreach($files as $article) { } $this_output.= "

".htmlspecialchars($mysnippet, ENT_QUOTES)."

\r\n"; $this_output.= '