60) { $_SESSION['last_access'] = time(); } header("Expires: " . gmdate("D, d M Y H:i:s", time() + (100)) . " GMT"); header("Cache-Control: max-age=100"); header("Pragma: cache"); include "config.inc.php"; include "$file_newsportal"; $logfile = $logdir . '/newsportal.log'; if (isset($_COOKIE['mail_name'])) { if ($userdata = get_user_mail_auth_data($_COOKIE['mail_name'])) { $userfile = $spooldir . '/' . strtolower($_COOKIE['mail_name']) . '-articleviews.dat'; } } // register parameters $id = $_REQUEST["id"]; $group = _rawurldecode($_REQUEST["group"]); // Switch to correct section in case group has been moved and link is to old section $findsection = get_section_by_group($group); if (trim($findsection) !== $config_name) { if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') $link = "https"; else $link = "http"; $link .= "://"; $link .= $_SERVER['HTTP_HOST']; $link .= $_SERVER['REQUEST_URI']; $newurl = preg_replace("|/$config_name/|", "/$findsection/", $link); header("Location:$newurl"); die(); } if (strpos($id, '@') !== false) { if ($CONFIG['article_database'] == '1') { $database = $spooldir . '/articles-overview.db3'; $articles_dbh = overview_db_open($database); $articles_query = $articles_dbh->prepare('SELECT * FROM overview WHERE msgid=:messageid'); $articles_query->execute([ 'messageid' => $id ]); $found = 0; while ($row = $articles_query->fetch()) { $id = $row['number']; $group = $row['newsgroup']; $found = 1; break; } $dbh = null; if ($found) { $newurl = 'article-flat.php?id=' . $id . '&group=' . $group . '#' . $id; header("Location: $newurl"); die(); } } } if (isset($_REQUEST["first"])) $first = $_REQUEST["first"]; if (! isset($_SERVER['REQUEST_STRING'])) { $_SERVER['REQUEST_STRING'] = ''; } $location = $_SERVER['REQUEST_URI'] . $_SERVER['REQUEST_STRING']; $_SESSION['return_page'] = $location . '#' . $id; // file_put_contents($accessfile, "\n".format_log_date()." ".$config_name." ".$group.":".$id, FILE_APPEND); if ($userdata) { $userdata[$group] = time(); file_put_contents($userfile, serialize($userdata)); } if (isset($frames_on) && $frames_on === true) { ?> header->subject); header("Last-Modified: " . date("r", $message->header->date)); $title .= ' - ' . $group . ' - ' . $subject; } include "head.inc"; echo '

'; echo '' . basename(getcwd()) . ' / '; echo '' . htmlspecialchars(group_display_name($group)) . ' / ' . $subject . '

'; if (! $message) { echo "Article not found"; include "tail.inc"; exit(0); } if ($message) { // load thread-data and get IDs of the actual subthread $thread = thread_load($group); $subthread = thread_getsubthreadids($message->header->id, $thread); if (! $subthread) { $date_window = 86400; $msg_log_file = $spooldir . '/admin_msg_log.dat'; echo '
Group is rebuilding... Please try again later
'; if (file_exists($msg_log_file)) { $admin_msg_log = unserialize(file_get_contents($msg_log_file)); } else { $admin_msg_log = array(); } if (! isset($admin_msg_log[$group])) { $admin_msg_log[$group] = 0; } if ($admin_msg_log[$group] < (time() - $date_window)) { if ($admin_msg_log[$group] != 0) { $msg_from = 'admin'; $msg_to = 'admin'; $msg_body = format_log_date() . " " . $config_name . " GROUP ERROR: " . $group . " may need repair"; $msg_body_2 = "\n\nRun maintenance.php -import " . $group; $msg_subject = "ERROR in $group"; send_admin_message($msg_to, $msg_from, $msg_subject, $msg_body . $msg_body_2); $admin_msg_log[$group] = 0; } else { $admin_msg_log[$group] = time(); } } file_put_contents($msg_log_file, serialize($admin_msg_log)); file_put_contents($debug_log, "\n" . $msg_body, FILE_APPEND); exit(); } if ($thread_articles == false) { sort($subthread); } // If no page is set, lets look, if we can calculate the page by // the message-number if (! isset($first)) { $first = intval(array_search($id, $subthread) / $articleflat_articles_per_page) * $articleflat_articles_per_page + 1; } // which articles are exactly on this page? $pageids = array(); for ($i = $first - 1; (($i < count($subthread)) && ($i < $first + $articleflat_articles_per_page - 1)); $i ++) { $pageids[] = $subthread[$i]; } // display the thread on top // change some of the default threadstyle-values $thread_show["replies"] = true; $thread_show["threadsize"] = false; $thread_show["lastdate"] = false; $thread_show["latest"] = false; $thread_show["author"] = true; // message_thread($message->header->id,$group,$thread,$pageids); message_thread($message->header->id, $group, $thread, false); echo '
'; echo ''; // navigation line echo ''; // Article List button echo ''; // Pages echo '
'; echo '
'; echo ''; echo ''; echo '
'; echo '
'; echo articleflat_pageselect($group, $id, count($subthread), $first); echo '
'; foreach ($pageids as $subid) { flush(); $message = message_read($subid, 0, $group); echo ' '; message_show($group, $subid, 0, $message, $articleflat_chars_per_articles); if ((! $CONFIG['readonly']) && ($message)) { echo '
' . '' . '' . '' . '' . '
'; } } // navigation line echo ''; // Article List button echo ''; // Pages echo '
'; echo '
'; echo ''; echo ''; echo '
'; echo '
'; echo articleflat_pageselect($group, $id, count($subthread), $first); echo '
'; } include "tail.inc"; ?>