diff --git a/Rocksolid_Light/rocksolid/newsportal.php b/Rocksolid_Light/rocksolid/newsportal.php index 67af4e5..9b9fbfa 100644 --- a/Rocksolid_Light/rocksolid/newsportal.php +++ b/Rocksolid_Light/rocksolid/newsportal.php @@ -1215,4 +1215,25 @@ function rslight_db_open($database, $table) { subject TEXT)"); return($dbh); } +function get_config_value($configfile,$request) { + global $config_dir; + + if ($configFileHandle = @fopen($config_dir.'/'.$configfile, 'r')) + { + while (!feof($configFileHandle)) + { + $buffer = fgets($configFileHandle); + if(strpos($buffer, $request.':') !== FALSE) { + $dataline=$buffer; + fclose($configFileHandle); + $datafound = explode(':',$dataline); + return $datafound[1]; + } + } + fclose($configFileHandle); + return FALSE; + } else { + return FALSE; + } +} ?> diff --git a/Rocksolid_Light/rslight/scripts/expire.php b/Rocksolid_Light/rslight/scripts/expire.php index e0b3f55..b2921df 100755 --- a/Rocksolid_Light/rslight/scripts/expire.php +++ b/Rocksolid_Light/rslight/scripts/expire.php @@ -3,10 +3,6 @@ include "config.inc.php"; include ("$file_newsportal"); - if(!isset($CONFIG['expire_days']) || $CONFIG['expire_days'] < 1) { - exit; - } - $lockfile = sys_get_temp_dir() . '/'.$config_name.'-spoolnews.lock'; $pid = file_get_contents($lockfile); if (posix_getsid($pid) === false || !is_file($lockfile)) { @@ -19,14 +15,30 @@ $webserver_group=$CONFIG['webserver_user']; $logfile=$logdir.'/expire.log'; - - $expireme=time() - ($CONFIG['expire_days'] * 86400); + + $database = $spooldir.'/'.$config_name.'-overview.db3'; + $table = 'overview'; + $dbh = rslight_db_open($database, $table); + $query = $dbh->prepare('DELETE FROM '.$table.' WHERE newsgroup=:newsgroup AND number=:number'); $grouplist = file($config_dir.'/'.$config_name.'/groups.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); foreach($grouplist as $groupline) { + $expireme = 0; + if($CONFIG['expire_days'] > 0) { + $expireme=time() - ($CONFIG['expire_days'] * 86400); + } $groupname=explode(' ', $groupline); $group=$groupname[0]; + if($days = get_config_value('expire.conf', $group)) { + if($days > 0) { + $expireme = time() - ($days * 86400); + } + } + if($expireme < 1) { + continue; + } $grouppath = preg_replace('/\./', '/', $group); + $this_overview=$spooldir.'/'.$group.'-overview'; $out_overview=$this_overview.'.new'; @@ -39,6 +51,7 @@ echo "Expiring: ".$break[4]." IN: ".$group." #".$break[0]."\r\n"; file_put_contents($logfile, "\n".format_log_date()." ".$config_name." Expiring: ".$break[4]." IN: ".$group." #".$break[0], FILE_APPEND); unlink($spooldir.'/articles/'.$grouppath.'/'.$break[0]); + $query->execute([':newsgroup' => $group, ':number' => $break[0]]); continue; } else { fputs($out_overviewfp, $line); @@ -50,26 +63,6 @@ chown($this_overview, $CONFIG['webserver_user']); chgrp($this_overview, $webserver_group); } -// Remove from section overview - $this_overview=$spooldir.'/'.$config_name.'-overview'; - $out_overview=$this_overview.'.new'; - $overviewfp=fopen($this_overview, 'r'); - $out_overviewfp=fopen($out_overview, 'w'); - - while($line=fgets($overviewfp)) { - $break=preg_split("/(:#rsl#:|\t)/", $line, 6); -// $break=explode("\t", $line); - if($break[3] < $expireme) { - file_put_contents($logfile, "\n".format_log_date()." ".$config_name." Removing from overview: ".$break[2], FILE_APPEND); - continue; - } else { - fputs($out_overviewfp, $line); - } - } - fclose($overviewfp); - fclose($out_overviewfp); - rename($out_overview, $this_overview); - chown($this_overview, $CONFIG['webserver_user']); - chgrp($this_overview, $webserver_group); + $dbh = null; unlink($lockfile); ?>