/groups.txt */ include "config.inc.php"; include ("$file_newsportal"); $logfile=$logdir.'/import.log'; # END MAIN CONFIGURATION $workpath=$spooldir."/"; $path=$workpath."articles/"; $lockfile = sys_get_temp_dir() . '/'.$config_name.'-import.lock'; $pid = file_get_contents($lockfile); if (posix_getsid($pid) === false || !is_file($lockfile)) { print "Starting Import...\n"; file_put_contents($lockfile, getmypid()); // create lockfile } else { print "Import currently running\n"; exit; } $group = $argv[1]; import_articles($group); echo "\nSpoolnews Done\r\n"; function import_articles($group) { global $spooldir, $CONFIG, $workpath, $path, $config_name, $logfile; # Prepare databases // Overview db $database = $spooldir.'/articles-overview.db3'; $table = 'overview'; $dbh = rslight_db_open($database, $table); $sql = 'INSERT INTO '.$table.'(newsgroup, number, msgid, date, name, subject) VALUES(?,?,?,?,?,?)'; $stmt = $dbh->prepare($sql); // Incoming db $article_dbh = article_db_open($spooldir.'/'.$group.'-articles.db3'); $article_stmt = $article_dbh->query('SELECT * FROM articles'); while ($row = $article_stmt->fetch()) { $local = $row['number']; $this_article = preg_split("/\r\n|\n|\r/", $row['article']); $lines=0; $bytes=0; $ref=0; $banned=0; $is_header=1; foreach($this_article as $response) { $bytes = $bytes + mb_strlen($response, '8bit'); if(trim($response) == "" || $lines > 0) { $is_header=0; $lines++; } if($is_header == 1) { $response = str_replace("\t", " ", $response); // Find article date if(stripos($response, "Date: ") === 0) { $finddate=explode(': ', $response, 2); $article_date = strtotime($finddate[1]); $ref=0; } // Get overview data $mid[1] = $row['msgid']; $from[1] = $row['name']; $subject[1] = $row['subject']; if(stripos($response, "Xref: ") === 0) { if(isset($CONFIG['enable_nntp']) && $CONFIG['enable_nntp'] == true) { $response="Xref: ".$CONFIG['pathhost']." ".$group.":".$local; } $xref=$response; $ref=0; } if(stripos($response, "References: ") === 0) { $this_references=explode('References: ', $response); $references = $this_references[1]; $ref=1; } if((stripos($response, ':') === false) && (strpos($response, '>'))) { if($ref == 1) { $references=$references.$response; } } $response=str_replace("\n","",str_replace("\r","",$response)); } } $lines=$lines-1; $bytes = $bytes + ($lines * 2); // Overview $overviewHandle = fopen($workpath.$group."-overview", 'a'); fputs($overviewHandle, $local."\t".$subject[1]."\t".$from[1]."\t".$finddate[1]."\t".$mid[1]."\t".$references."\t".$bytes."\t".$lines."\t".$xref."\n"); fclose($overviewHandle); $references=""; // add to database $stmt->execute([$group, $local, $mid[1], $article_date, $from[1], $subject[1]]); echo "\nImported: ".$group." ".$local; file_put_contents($logfile, "\n".format_log_date()." ".$config_name." Imported: ".$group.":".$local, FILE_APPEND); $i++; } $article_dbh = null; $dbh = null; } ?>