<?php $windowtitle = "Thread Repair System"; require 'lib/function.php'; require 'lib/layout.php'; print "$header<br>"; if (!$isadmin) { print " $tblstart $tccell1>This feature is restricted.</td> $tblend $footer "; printtimedif($startingtime); die(); } print adminlinkbar("admin-threads.php"); if (!$_POST['run']) { print "<form action=\"admin-threads.php\" method=\"post\"> $tblstart <tr>$tccellh>Thread Repair System</td></tr> <tr>$tccell1> <br>This page is intended to repair threads with broken reply counts. Please don't flood it with requests. <br>This problem causes \"phantom pages\" (e.g., too few or too many pages displayed). <br> <br>$inps=\"run\" value=\"Start\"> <br> </td></tr> $tblend </form> "; } else { print " $tblstart <tr>$tccellh>Thread Repair System</td></tr> <tr>$tccell1>Now running. </td></tr> $tblend <br> $tblstart <tr> $tccellh>id#</td> $tccellh>Name</td> $tccellh>Reports</td> $tccellh>Real</td> $tccellh>Err</td> $tccellh>Status</td> </tr> "; $q = "SELECT `posts`.`thread`, (COUNT(`posts`.`id`)) AS 'real', ((CAST(COUNT(`posts`.`id`) AS SIGNED) - 1) - CAST(`threads`.`replies` AS SIGNED)) AS 'offset', `threads`.`replies`, `threads`.`title` AS `threadname` FROM `posts` LEFT JOIN `threads` ON `posts`.`thread` = `threads`.`id` GROUP BY `thread` HAVING `offset` <> 0 OR `offset` IS NULL ORDER BY ISNULL(`threadname`) ASC, `thread` DESC"; $sql = mysql_query($q) or die(mysql_error()); $count = ""; while ($data = mysql_fetch_array($sql, MYSQL_ASSOC)) { $status = ""; if ($data['offset'] != 0 || $data['offset'] === null) { if ($data['replies'] === null) { $status = "<font color=\"#ff8080\">Invalid thread</font>"; } else { $status = mysql_query("UPDATE `threads` SET `replies` = '". ($data['real'] - 1) ."' WHERE `id` = '". $data['thread'] ."'") or "<font color=#ff0000>Error</font>: ". mysql_error(); if ($status == 1) $status = "<font color=#80ff80>Updated</font>"; $count++; } print " <tr> $tccell1><a href=\"thread.php?id=". $data['thread'] ."\">". $data['thread'] ."</a></td> $tccell2l><a href=\"thread.php?id=". $data['thread'] ."\">". ($data['threadname'] !== null ? $data['threadname'] : "<em>(Deleted thread)</em>") ."</a></td> $tccell1>". ($data['replies'] !== null ? $data['replies'] + 1 : "—") ."</td> $tccell1>". ($data['real']) ."</td> $tccell2><b>". ($data['offset'] !== null ? $data['offset'] : "—") ."</b></td> $tccell1>$status</td> </tr>"; } else { continue; } } if ($count) { print "<tr>$tccellc colspan=6>$count thread". ($count != 1 ? "s" : "") ." updated.</td></tr>"; } else { print " <tr>$tccell1 colspan=6> <br>No problems found. <br> </td></tr>"; } } print "$tblend $footer "; printtimedif($startingtime);