diff --git a/Rocksolid_Light/rslight/scripts/import-db3.php b/Rocksolid_Light/rslight/scripts/import-db3.php new file mode 100755 index 0000000..455ea51 --- /dev/null +++ b/Rocksolid_Light/rslight/scripts/import-db3.php @@ -0,0 +1,118 @@ +/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; +} +?>