diff --git a/Rocksolid_Light/rocksolid/newsportal.php b/Rocksolid_Light/rocksolid/newsportal.php index 78689c6..4b4611d 100644 --- a/Rocksolid_Light/rocksolid/newsportal.php +++ b/Rocksolid_Light/rocksolid/newsportal.php @@ -1457,6 +1457,31 @@ function get_date_interval($value) return $variance; } +function create_xref_from_msgid($msgid, $thisgroup = null, $thisnumber = null) +{ + global $spooldir, $CONFIG; + $database = $spooldir . '/articles-overview.db3'; + $table = 'overview'; + $overview_dbh = overview_db_open($database, $table); + $overview_stmt = $overview_dbh->prepare("SELECT * FROM overview WHERE msgid=:msgid"); + $overview_stmt->bindParam(':msgid', $msgid); + $overview_stmt->execute(); + + $found = false; + $xref = "Xref: " . $CONFIG['pathhost']; + while ($row = $overview_stmt->fetch()) { + if ($row['newsgroup'] == $thisgroup && $thisgroup != null) { + $found = true; + } + $xref .= ' ' . $row['newsgroup'] . ':' . $row['number']; + } + if (!$found) { + $xref .= ' ' . $thisgroup . ':' . $thisnumber; + } + $overview_dbh = null; + return ($xref); +} + function get_search_snippet($body, $content_type = '') { $body = quoted_printable_decode($body); @@ -1909,7 +1934,7 @@ function insert_article_from_array($this_article) $msgids[$row['msgid']] = true; } $dbh = null; - + if ($msgids[$this_article['mid']] == true) { echo "\nDuplicate Message-ID for: " . $group . ":" . $this_article['local']; file_put_contents($logfile, "\n" . format_log_date() . " " . $config_name . " Duplicate Message-ID for: " . $group . ":" . $this_article['local'], FILE_APPEND); @@ -1961,7 +1986,7 @@ function insert_article_from_array($this_article) } else { if ($article_date > time()) $article_date = time(); - touch($grouppath . "/" . $this_article['local'], $article_date); + touch($grouppath . "/" . $this_article['local'], $article_date); } echo "\nRetrieved: " . $group . " " . $this_article['local']; diff --git a/Rocksolid_Light/rslight/scripts/maintenance.php b/Rocksolid_Light/rslight/scripts/maintenance.php index 7d5cb65..723fa66 100644 --- a/Rocksolid_Light/rslight/scripts/maintenance.php +++ b/Rocksolid_Light/rslight/scripts/maintenance.php @@ -231,13 +231,13 @@ function import_articles($group) $new_article_stmt = $new_article_dbh->prepare($new_article_sql); $database = $spooldir . '/articles-overview.db3'; $table = 'overview'; - $dbh = overview_db_open($database, $table); - $clear_stmt = $dbh->prepare("DELETE FROM overview WHERE newsgroup=:group"); + $overview_dbh = overview_db_open($database, $table); + $clear_stmt = $overview_dbh->prepare("DELETE FROM overview WHERE newsgroup=:group"); $clear_stmt->bindParam(':group', $group); $clear_stmt->execute(); clear_history_by_group($group); - $sql = 'INSERT OR IGNORE INTO overview(newsgroup, number, msgid, date, datestring, name, subject, refs, bytes, lines, xref) VALUES(?,?,?,?,?,?,?,?,?,?,?)'; - $stmt = $dbh->prepare($sql); + $overview_sql = 'INSERT OR IGNORE INTO overview(newsgroup, number, msgid, date, datestring, name, subject, refs, bytes, lines, xref) VALUES(?,?,?,?,?,?,?,?,?,?,?)'; + $overview_stmt = $overview_dbh->prepare($overview_sql); // Incoming db $article_dbh = article_db_open($spooldir . '/' . $group . '-articles.db3'); @@ -269,14 +269,6 @@ function import_articles($group) $from[1] = $row['name']; $subject[1] = $row['subject']; $article_date = $row['date']; - - 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, "Content-Type: ") === 0) { preg_match('/.*charset=.*/', $response, $te); $content_type = explode("Content-Type: text/plain; charset=", $te[0]); @@ -301,6 +293,7 @@ function import_articles($group) // add to database // CREATE SEARCH SNIPPET $this_snippet = get_search_snippet($body, $content_type[1]); + $xref = create_xref_from_msgid($msgid, $group, $local); $new_article_stmt->execute([ $group, $local, @@ -311,7 +304,7 @@ function import_articles($group) $row['article'], $this_snippet ]); - $stmt->execute([ + $overview_stmt->execute([ $group, $local, $mid[1], @@ -335,7 +328,7 @@ function import_articles($group) } $new_article_dbh = null; $article_dbh = null; - $dbh = null; + $overview_dbh = null; unlink($spooldir . '/' . $group . '-articles.db3'); rename($spooldir . '/' . $group . '-articles.db3-new', $spooldir . '/' . $group . '-articles.db3'); unlink($spooldir . '/' . $group . '-info.txt');