<? // WR-forum v 1.8.8  //  14.03.09 г.  //  Miha-ingener@yandex.ru

error_reporting (E_ALL); // error_reporting(0);

include "config.php";

$valid_types=array("zip","rar","7z");  // допустимые расширения загружаемых файлов менять в двух местах (здесь и ниже в блоке защита)

// Функция содержит ПРОДОЛЖЕНИЕ ШАПКИ. Вызывается: addtop();
function addtop() { global $wrfname,$fskin,$date,$time;
// ищем КУКи и выводим ИМЯ
if (isset($_COOKIE['wrfcookies'])) {$wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc); $wrfc=stripslashes($wrfc); $wrfc=explode("|", $wrfc);  $wrfname=$wrfc[0];} else {unset($wrfname); unset($wrfpass); $wrfpass="";}
print"<TD align=right>";
if (isset($wrfname)) {print "<a href='tools.php?event=profile&pname=$wrfname' class=mainmenu><img src=\"$fskin/icon_mini_profile.gif\" border=0 hspace=3 />Ваш профиль</a>&nbsp; <a href='index.php?event=clearcooke' class=mainmenu><img src=\"$fskin/ico-login.gif\" border=0 hspace=3 />Выход [<B>$wrfname</B>]</a>";}
else {print "<span class=mainmenu>
<a href='tools.php?event=reg' class=mainmenu><img src=\"$fskin/icon_mini_register.gif\" border=0 hspace=3 />Регистрация</a>&nbsp;&nbsp;
<a href='index.php?event=login' class=mainmenu> <img src=\"$fskin/buttons_spacer.gif\" border=0 hspace=3>Вход</a></td>";}
if (is_file("$fskin/tiptop.html")) {include("$fskin/tiptop.html");}  // подключаем дополнение к ВЕРХУШКе
print"</span></td></tr></table></td></tr></table><span class=gensmall>Сегодня: $date - $time";
return true;}


function prcmp ($a, $b) {if ($a==$b) return 0; if ($a<$b) return -1; return 1;} // Функция сортировки

function replacer ($text) { // ФУНКЦИЯ очистки кода
$text=str_replace("&#032;",' ',$text);
$text=str_replace("&",'&amp;',$text); // закоментируйте эту строку если вы используете языки: Украинский, Татарский, Башкирский и т.д.
$text=str_replace(">",'&gt;',$text);
$text=str_replace("<",'&lt;',$text);
$text=str_replace("\"",'&quot;',$text);
$text=preg_replace("/\n\n/",'<p>',$text);
$text=preg_replace("/\n/",'<br>',$text);
$text=preg_replace("/\\\$/",'&#036;',$text);
$text=preg_replace("/\r/",'',$text);
$text=preg_replace("/\\\/",'&#092;',$text);

if (get_magic_quotes_gpc()) {
$text=str_replace("&#092;&quot;",'&quot;',$text);
$text=str_replace("&#092;'",'\'',$text);
$text=str_replace("&#092;&#092;",'&#092;',$text);
} // если magic_quotes включена - чистим везде СЛЭШи в этих случаях:
  // одиночные (') и двойные кавычки ("), обратный слеш (\)

$text=str_replace("\r\n","<br> ",$text);
$text=str_replace("\n\n",'<p>',$text);
$text=str_replace("\n",'<br> ',$text);
$text=str_replace("\t",'',$text);
$text=str_replace("\r",'',$text);
$text=str_replace('   ',' ',$text);
return $text; }



//--А-Н-Т-И-С-П-А-М--
if (isset($_GET['image'])) {
// Функция с цифрами защиты
$st="R0lGODlhCgAMAIABAFNTU////yH5BAEAAAEALAAAAAAKAAwAAAI"; // общая часть для всех рисунков
function imgwr($st,$num){
 if ($num=="0") {$len="63"; $number=$st."WjIFgi6e+QpMP0jin1bfv2nFaBlJaAQA7";}
 if ($num=="1") {$len="61"; $number=$st."UjA1wG8noXlJsUnlrXhE/+DXb0RUAOw==";}
 if ($num=="2") {$len="64"; $number=$st."XjIFgi6e+QpMPRlbjvFtnfFnchyVJUAAAOw==";}
 if ($num=="3") {$len="64"; $number=$st."XjIFgi6e+Qovs0RkTzXbj+3yTJnUlVgAAOw==";}
 if ($num=="4") {$len="64"; $number=$st."XjA9wG8mWFIty0amczbVJDVHg9oSlZxQAOw==";}
 if ($num=="5") {$len="63"; $number=$st."WTIAJdsuPHovSKGoprhs67mzaJypMAQA7";}
 if ($num=="6") {$len="63"; $number=$st."WjIFoB6vxmFw0pfpihI3jOW1at3FRAQA7";}
 if ($num=="7") {$len="61"; $number=$st."UDI4Xy6vtAIzTyPpg1ndu9oEdNxUAOw==";}
 if ($num=="8") {$len="63"; $number=$st."WjIFgi6e+QpMP2slSpJbn7mFeWDlYAQA7";}
 if ($num=="9") {$len="64"; $number=$st."XjIFgi6e+QpMP0jinvbT2FGGPxmlkohUAOw==";}
 header("Content-type: image/gif"); 
 header("Content-length: $len");
 echo base64_decode($number); }
// Вывод изображений на экран (все кодированы)
if (array_key_exists("image", $_REQUEST)) { $num=$_REQUEST["image"];
for ($i=0; $i<10; $i++) {if (md5($i+$absrand)==$num) {imgwr($st,$i); die();}} }
exit;}



function addmsg() { // ФУНКЦИЯ добавления темы/сообщения
global $wrfname,$maxname,$s1,$s2,$s3,$s4,$s5,$s6,$s7,$s8,$s9,$s10,$s11,$s12,$canupfile,$antispam,$maxkey,$absrand,$max_upfile_size;

print'<tr><td class=row1 width=14% height=25><span class=gen><b>Имя</b></span></td>
<td class=row2 width=76%><span class=genmed>';
if (!isset($wrfname)) {print "<input type=text name=name class=post maxlength=$maxname size=28> E-mail <input type=text name=email class=post size=30>";}
else {
if (isset($_COOKIE['wrfcookies'])) {$wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc); $wrfc=stripslashes($wrfc); $wrfc=explode("|", $wrfc);  $wrfpass=replacer($wrfc[1]);} else {unset($wrfpass); $wrfpass="";}
print "<b>$wrfname</b><input type=hidden name=name value='$wrfname'><input type=hidden name=who value='да'><input type=hidden name=userpass value=\"$wrfpass\">";}

print "</span></td></tr>
<tr><td class=row1 valign=top><span class=genmed><b>Сообщение</b><br><br>Для вставки имени, кликните на точку рядом с ним.<br><br>Смайлики:<br>
<table align=center width=100 height=70><tr><td valign=top>
<A href='javascript:%20x()' onclick=\"DoSmilie(' :-)');\">$s1</a>
<a href='javascript:%20x()' onclick=\"DoSmilie(' :-))');\">$s2</a>
<a href='javascript:%20x()' onclick=\"DoSmilie(' :-P');\">$s3</a>
<a href='javascript:%20x()' onclick=\"DoSmilie(' 8-)');\">$s4</a>
<a href='javascript:%20x()' onclick=\"DoSmilie(' :-((');\">$s5</a>
<A href='javascript:%20x()' onclick=\"DoSmilie(' :-O');\">$s6</a>
<A href='javascript:%20x()' onclick=\"DoSmilie(' ;-)');\">$s7</a>
<A href='javascript:%20x()' onclick=\"DoSmilie(':roll:');\">$s8</a>
<A href='javascript:%20x()' onclick=\"DoSmilie(' :-(');\">$s12</a>
<A href='javascript:%20x()' onclick=\"DoSmilie(':rf:');\">$s9</a>
<A href='javascript:%20x()' onclick=\"DoSmilie(' 8-(');\">$s10</a>
<A href='javascript:%20x()' onclick=\"DoSmilie(' `-(');\">$s11</a><BR><center>
<a href='#add' onclick=\"window.open('tools.php?event=moresmiles','smiles','width=250,height=300,left=50,top=150,toolbar=0,status=0,border=0,scrollbars=1')\">Ещё смайлы</a>
</tr></td></table></span></td>

<td class=row2 valign=top><span class=gen><table width=450><tr valign=middle><td><span class=genmed>
<input type=button class=button value=' B ' style='font-weight:bold; width: 30px' onclick=\"DoSmilie(' [b]  [/b] ');\">&nbsp;
<input type=button class=button value=' RB ' style='font-weight:bold; color:red' onclick=\"DoSmilie('[RB] [/RB]');\">&nbsp;
<INPUT type=button class=button value='Цитировать выделенное' style='width: 170px' onclick='REPLIER.msg.value += \"[Quote]\"+(window.getSelection?window.getSelection():document.selection.createRange().text)+\"[/Quote]\"'>&nbsp;
<input type=button class=button value=' Код ' onclick=\"DoSmilie(' [Code]  [/Code] ');\">&nbsp;
<input type=button class=button value=' IMG ' style='font-weight:bold; color:navy' onclick=\"DoSmilie('[img][/img]');\">&nbsp;
</span></td></tr><tr>
<td colspan=9><span class=gen><textarea name=msg cols=95 rows=10 class=post></textarea></span></td>";

if ($canupfile=="1" and isset($wrfname)) { $max=round($max_upfile_size/10.24)/100;
print "<tr><td class=row1 valign=top>Добавление ZIP/RAR/7z-архивчика. Максимально допустмый размер: <B>$max Кб.</B>
<input type=file name=file class=post size=70></td></tr></table></TD>";}

//-А-Н-Т-И-С-П-А-М-
if (!isset($wrfname)) { if ($antispam!="0") {
// Вывод изображений на экран (все кодированы - робот не пройдёт)
if (array_key_exists("image", $_REQUEST)) { $num=$_REQUEST["image"];
for ($i=0; $i<10; $i++) {if (md5($i+$absrand)==$num) {imgwr($st,$i); die();}} }
$xkey=""; mt_srand(time()+(double)microtime()*1000000);
echo'</TR><TR><TD>Защитный код: ';
for ($i=0; $i<$maxkey; $i++) {
$snum[$i]=mt_rand(0,9); $psnum=md5($snum[$i]+$absrand);
$phpself=$_SERVER["PHP_SELF"];
echo "<img src=$phpself?image=$psnum border='0' alt=''>\n";
$xkey=$xkey.$snum[$i];} $xkey=md5("$xkey+$absrand");
print" <input name='usernum' class=post type='text' maxlength=$maxkey size=6> (введите число, указанное на картинке)
<input name=xkey type=hidden value='$xkey'>";
}} // if !isset($wrfname)
//-К-О-Н-Е-Ц--А-Н-Т-И-С-П-А-М-А-

echo'</tr></table></span></td></tr>
<tr><td class=row1 colspan=2 align=center height=28><input type=submit tabindex=5 class=mainoption value=" Отправить ">&nbsp;&nbsp;&nbsp;<input type=reset tabindex=6 class=mainoption value=" Очистить "></td>
</tr></table></form>';

return;} // КОНЕЦ функции-формы ДОБАВЛЕНИЯ ТЕМЫ/ОТВЕТА






// Выбран ВЫХОД из форума - очищаем куки
if(isset($_GET['event'])) {if ($_GET['event']=="clearcooke") {setcookie("wrfcookies","",time()); Header("Location: index.php"); exit;}}



// ДОБАВЛЕНИЕ ТЕМЫ или ОТВЕТА - ШАГ 1
if(isset($_GET['event'])) {
if (($_GET['event']=="addtopic") or ($_GET['event']=="addanswer")) {
if (isset($_POST['name'])) {$name=$_POST['name'];}
$name=trim($name); // Вырезает ПРОБЕЛьные символы 
$zag=$_POST['zag']; $msg=$_POST['msg']; $fid=$_GET['fid'];
if (isset($_POST['who'])) {$who=$_POST['who'];} else {$who="";}
if (isset($_POST['email'])) {$email=$_POST['email'];} else {$email="";}
if (isset($_POST['page'])) {$page=$_POST['page'];}
if ($_GET['event']=="addanswer") {$id=$_POST['id'];}
if (isset($_POST['maxzd'])) {$maxzd=$_POST['maxzd'];} else {$maxzd="0";} if ($maxzd==null) {$maxzd="0";}
if ((!ctype_digit($maxzd)) or (strlen($maxzd)>2)) {exit("<B>$back. Попытка взлома по звёздам или ошибка в файле статистики</B>");}

// защита по топику fid
if (!ctype_digit($fid) or strlen($fid)>3) {exit("<B>$back. Попытка взлома через номер рубрики. Номер должен содержать только цифры и быть менее 4 символов</B>");}

//--А-Н-Т-И-С-П-А-М--проверка кода--
if ($antispam!="0" and !isset($_COOKIE['wrfcookies'])) {
$bada="$back <font color=red>Введённый вами код НЕ верен</font>!";
if (isset($_POST['usernum'])) {$usernum=$_POST['usernum'];} else {exit("$bada");}
if (isset($_POST['xkey'])) {$xkey=$_POST['xkey'];} else {exit("$bada");}
$userkey=md5("$usernum+$absrand");
if ($userkey!=$xkey) {exit("$bada");}}
//--А-Н-Т-И-С-П-А-М--проверка кода--

// проходим по всем разделам и топикам - ищем запращиваемый
// на тот случай, если mainforum.dat - пуст, подключаем резервную копию

$realbase="1"; if (is_file("$datadir/mainforum.dat")) {$mainlines=file("$datadir/mainforum.dat");}
if (!isset($mainlines)) {$datasize=0;} else {$datasize=sizeof($mainlines);}
if ($datasize<=0) {if (is_file("$datadir/copy.dat")) {$realbase="0"; $mainlines=file("$datadir/copy.dat"); $datasize=sizeof($mainlines);}}
if ($datasize<=0) {exit("$back. Проблемы с Базой данных, файл данных пуст - обратитесь к администратору");}
$i=count($mainlines);

$realfid=null; $fotodetali=null;
do {$i--; $dt=explode("|", $mainlines[$i]);
if ($dt[0]==$fid) {$realfid=$i; if ($dt[1]=="razdel") {exit("$back. Данной ветки форума не существует");}} // присваиваем $realfid - № п/п строки
} while($i>0);

if (!isset($realfid)) {exit("$back. Ошибка с номером рубрики. Она не существует в базе");}

$dt=explode("|",$mainlines[$realfid]);
if (is_file("$datadir/topic$fid.dat")) {$tlines=file("$datadir/topic$fid.dat"); $tc=count($tlines)-2; $i=$tc+2; $ok=null;
// нужно пробежаться по топику, найти тему. Если есть - нормуль, нету - значит добавление сообщений ЗАПРЕЩЕНО!
if ($_GET['event']=="addanswer") {
do {$i--; $tdt=explode("|", $tlines[$i]);
if ($tdt[7]==$id) {$ok=1; if ($tdt[8]=="closed") {exit("$back тема закрыта и добавление сообщений запрещено!");} }
} while($i>0);
if ($ok!=1) {exit("$back тема закрыта и добавление сообщений запрещено!");} }

} else {$tc="2";}
if ($dt[11]>0) {if ($tc>=$dt[11]) {exit("$back. Превышено ограничение на кол-во допустимых тем в данной рубрике! Не более <B>$dt[11]</B> тем!");}}

// проверка Логина/Пароля юзера. Может он хакер, тогда облом ему

// Этап 1
$userpass=replacer($_POST['userpass']); // получаем и обрабатываем пароль юзера из файлов

$realname="";
if (isset($_COOKIE['wrfcookies'])) {
    $wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc); $wrfc=stripslashes($wrfc);
    $wrfc=explode("|", $wrfc);  $wrfname=$wrfc[0]; $wrfpass=$wrfc[1];
} else {$who=null; $wrfname=null; $wrfpass=null;}

// Этап 2
if ($who!=null) { $who=0;
if ($wrfname!=null & $wrfpass!=null) {
$lines=file("$datadir/usersdat.php"); $i=count($lines);
do {$i--; $rdt=explode("|", $lines[$i]);
   if (isset($rdt[1])) { $realname=strtolower($rdt[0]);
   if (strtolower($wrfname)===$realname & $wrfpass===$rdt[1] & $userpass===$rdt[1]) {
//print"$wrfname = $realname (wrfname = realname) & $wrfpass===$rdt[1] (wrfpass===rdt[1] )& $userpass===$rdt[1] (userpass===rdt[1])<br>"; exit;
   $name=$wrfname; $who="да"; $ok="$i";}}
} while($i > "1");

if (!isset($ok)) {setcookie("wrfcookies","",time()); exit("Ошибка при работе с КУКИ! <font color=red><B>Вы не сможете оставить сообщение, попробуйте подать его как гость.</B></font> Ваш логин и пароль не найдены в базе данных, попробуйте зайти на форум вновь. Если ошибка повторяется - обратитесь к администратору форума.");}
}}


print"<html><head><link rel='stylesheet' href='$fskin/style.css' type='text/css'></head><body>";

if ($_GET['event']=="addtopic" and $cangutema=="0" and !isset($wrfname)) {exit("<center><h5>Администратор запретил гостям создавать темы!</h5></center><BR><BR>");}
if ($_GET['event']=="addanswer" and $cangumsg=="0" and !isset($wrfname)) {exit("<center><h5>Администратор запретил гостям отвечать в темах!</h5></center><BR><BR>");}


if (isset($_FILES['file']['name'])) { // ЕСЛИ ДОБАВЛЯЕМ ФАЙЛ
$fotoname=$_FILES['file']['name']; if (strlen($fotoname)>3) { $fotosize=$_FILES['file']['size']; // Имя и размер файла

//                    ЗАЩИТЫ от ВЗЛОМА

// 1. Проверяем РАСШИРЕНИЕ
$ext = strtolower(substr($fotoname, 1 + strrpos($fotoname, ".")));
if (!in_array($ext, $valid_types)) {echo "<B>ФАЙЛ НЕ загружен.</B> Возможные причины:<BR>
- разрешена загрузка только файлов с такими расширениями: <B>$valid_types[0] и $valid_types[1]</B><BR>
- Вы пытаетесь загрузить файл с двойным расширением;<BR>
- неверно введён адрес или выбран испорченный файл;</B><BR>"; exit;}

// 2. считаем КОЛ-ВО ТОЧЕК в выражении - если большей одной - СВОБОДЕН!
$findtchka=substr_count($fotoname, "."); if ($findtchka>1) {echo "ТОЧКА встречается в имени файла $findtchka раз(а). Это ЗАПРЕЩЕНО! <BR>\r\n";}

// 2. если в имени есть .php, .html, .htm - свободен! 
$bago="Извините. В имени ФАйла <B>запрещено</B> использовать .php, .html, .htm";
if (preg_match("/\.php/i",$fotoname))  {exit("Вхождение <B>.php</B> найдено. $bago");}
if (preg_match("/\.html/i",$fotoname)) {exit("Вхождение <B>.html</B> найдено. $bago");}
if (preg_match("/\.htm/i",$fotoname))  {exit("Вхождение <B>.htm</B> найдено. $bago");}

// 3. защищаем от РУССКИХ букв в имени файла и проверяем расширение файла 
if (!preg_match("/^[a-z0-9\.\-_]+\.(zip|rar|7z|)+$/is",$fotoname)) {print "Запрещено использовать РУССКИЕ буквы в имени файла!"; exit;}

// 4. Проверяем, может быть файл с таким именем уже есть на сервере
if (file_exists("$filedir/$fotoname")) {print "Файл с таким именем уже существует на сервере! Измените имя на другое!"; exit;}
// Конец защит по имени файла

// 5. Размер файла
$fotoksize=round($fotosize/10.24)/100; // размер ЗАГРУЖАЕМОГО файла в Кб.
$fotomax=round($max_upfile_size/10.24)/100; // максимальный размер файла в Кб.
if ($fotoksize>$fotomax) {print"Вы превысили допустимый размер файла! <BR><B>Максимально допустимый</B> размер: <B>$fotomax </B>Кб.<BR> <B>Вы пытаетесь</B> загрузить файл размером: <B>$fotoksize</B> Кб!"; exit;}

//Генерируем имя файлу
//if ($_GET['event'] =="addtopic") {$add=null; $z=null; do {$id=mt_rand(1000,9999); if ($fid<10) {$add="0";} if (!is_file("$datadir/$add$fid$id.dat") and strlen($id)==4) {$z++;} } while ($z<1); $id="$add$fid$id";}

copy($_FILES['file']['tmp_name'], $filedir."/".$fotoname);
print "<br><br>Файл УСПЕШНО загружен: $fotoname (Размер: $fotosize байт)";
$fotodetali="1|$fotoname|$fotosize|";}}


$tektime=time();
$name=wordwrap($name,30,' ',1); // разрываем длинные строки
$zag=wordwrap($zag,30,' ',1);
$msg=wordwrap($msg,110,' ',1);

$name=str_replace("|","I",$name);
$who=str_replace("|","&#124;",$who);
$email=str_replace("|","&#124;",$email);
$zag=str_replace("|","&#124;",$zag);
$msg=str_replace("|","&#124;",$msg);

$smname=$name; if (strlen($name)>18) {$smname=substr($name,0,18); $smname.="..";}
$smzag=$zag; if (strlen($zag)>24) {$smzag=substr($zag,0,24); $smzag.="..";}

// генерируем имя файлу с темой
if ($_GET['event'] =="addtopic") {$add=null; $z=null; do {$id=mt_rand(1000,9999); if ($fid<10) {$add="0";} if (!is_file("$datadir/$add$fid$id.dat") and strlen($id)==4) {$z++;} } while ($z<1); $id="$add$fid$id";}
if ((!ctype_digit($id)) or (strlen($id)>15)) {exit("<B>$back. Номер темы должен быть числом. Критическая ошибка скрипта или попытка взлома</B>");}
if (strlen(ltrim($zag))<3) {exit("$back ! Ошибка в вводе данных заголовка!");}

$text="$name|$who|$email|$zag|$msg|$date|$time|$id||$tektime|$smname|$smzag|$fotodetali||";
$text=replacer($text); $exd=explode("|",$text); 
$name=$exd[0]; $zag=$exd[3]; $smname=$exd[10]; $smzag=$exd[11]; $smmsg=$exd[4];

if (!isset($name) || strlen($name) > $maxname || strlen($name) <1) {exit("$back Ваше <B>Имя пустое, или превышает $maxname</B> символов!</B></center>");}
if (preg_match("/[^(\\w)|(\\x7F-\\xFF)|(\\-)]/",$name)) {exit("$back Ваше имя содержит запрещённые символы. Разрешены русские и английские буквы, цифры, подчёркивание и тире.");}
if (strlen(ltrim($zag))<3 || strlen($zag) > $maxzag) {exit("$back Слишком короткое название темы или <B>название превышает $maxzag</B> символов!</B></center>");}
if (strlen(ltrim($msg))<2 || strlen($msg) > $maxmsg) {exit("$back Ваше <B>сообщение короткое или превышает $maxmsg</B> символов.</B></center>");}
if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $email) and strlen($email) > 30 and $email != "") {exit("$back и введите корректный E-mail адрес!</B></center>");}

// функция АНТИФЛУД здесь - повторное добавление сообщения/темы запрещено!
if (isset($tlines)) {
if ($tc<"-1") {$sdt[0]=null; $sdt[3]=null;} else {$last=$tlines[$tc+1]; $sdt=explode("|",$last);}

if ($_GET['event'] =="addtopic")  { // ЕСЛИ добавление ТЕМЫ: имя = имя в файле, тема = последняя тема в файле
if ($name==$sdt[0] and $exd[3]==$sdt[3]) {exit("$back. Такая тема уже создана. Спамить на форуме запрещено!");}

} else { // ЕСЛИ добавление сообщения: имя = имя в файле, сообщение = последнему сообщению в файле
if (is_file("$datadir/$id.dat")) {$linesn=file("$datadir/$id.dat"); $in=count($linesn)-1;
if ($in > 0) { $dtf=explode("|",$linesn[$in]);
if ($name==$dtf[0] and $exd[4]==$dtf[4]) {exit("$back. Такое сообщение уже размещено в данной теме. Спамить на форуме запрещено!");}}
}
}} // if $event=="addtopic"


// ЕСЛИ введена команда АП, то меняем дату создания файла и тема самая первая будет
if ($_GET['event'] =="addanswer")  { //при ОТВЕТе В ТЕМЕ

// Проверяем, давно ли реактивировали тему
$timetek=time(); $timefile=filemtime("$datadir/$id.dat"); 
$timer=$timetek-$timefile; // узнаем сколько прошло времени (в секундах) 
// $timer<10 - 10 секунд защита от антифлуда
if ($smmsg=="ап!") {
if ($timer<10 and $timer>0) {exit("$back тема была активна менее $timer секунд назад. Подождите чуть-чуть.");}
touch("$datadir/$id.dat");
print "<script language='Javascript'>function reload() {location = \"index.php?fid=$fid&id=$id&page=$page#m$in\"}; setTimeout('reload()', 1500);</script>
<table width=100% height=80%><tr><td><table border=1 cellpadding=10 cellspacing=0 bordercolor=#224488 align=center valign=center width=60%><tr><td><center>
Спасибо, <B>$name</B>, тема реактивирована.<BR><BR>Через несколько секунд Вы будете автоматически перемещены в текущую тему <BR><B>$zag</B>.<BR><BR>
<B><a href='index.php?fid=$fid&id=$id&page=$page#m$in'>Нажмите здесь, если не хотите больше ждать</a></B></td></tr></table></td></tr></table></center></body></html>";
exit; }

if ($timer<10 and $timer>0) {exit("$back тема была активна менее $timer секунд назад.");}
}


$razdelname="";
if ($realbase=="1" and $maxzd<1) { // Если подключена рабочая база, а не копия
$lines=file("$datadir/mainforum.dat"); $max=sizeof($lines)-1;
$dt=explode("|", $lines[$realfid]); $dt[5]++;
if ($_GET['event']=="addtopic") {$dt[4]++;}

// НЕ менять 4-е строки до 2009 года. пусть как написано так и будет!
if (!isset($dt[11])) {$dt[11]="100";} $dt[11]=str_replace("
", "<br>", $dt[11]);
if (!isset($dt[12])) {$dt[12]="";} $dt[12]=str_replace("
", "<br>", $dt[12]);
$txtdat="$dt[0]|$dt[1]|$dt[2]|$id|$dt[4]|$dt[5]|$smname|$date|$time|$tektime|$smzag|$dt[11]|$dt[12]||";
$razdelname=$dt[1];
// запись данных на главную страницу
$fp=fopen("$datadir/mainforum.dat","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА
for ($i=0;$i<=$max;$i++) {if ($i==$realfid) {fputs($fp,"$txtdat\r\n");} else {fputs($fp,$lines[$i]);}}
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
} // if ($realbase=="1")

if ($newmess=="1" and $maxzd<1) { // запись в отдельный файл нового сообщения
if (is_file("$datadir/topic$fid.dat")) {$nlines=count(file("$datadir/topic$fid.dat"));} else {$nlines=1;}

if (is_file("$datadir/$id.dat")) {$nlines2=count(file("$datadir/$id.dat"))+1;} else {$nlines2=1;}

$newmessfile="$datadir/news.dat";
$newlines=file("$newmessfile"); $ni=count($newlines)-1; $i2=0; $newlineexit="";

$nmsg=substr($msg,0,150); // образаем сообщение до 150 символов
$ntext="$fid|$id|$date|$time|$smname|$zag|$nmsg...|$nlines|$nlines2|$razdelname|$who||||";
$ntext=str_replace("
", "<br>", $ntext);

// Блок проверяет, есть ли уже новое сообщение в этой теме. Если есть - отсеивает. На выходе - массив без этой строки.
for ($i=0;$i<=$ni;$i++)
{ $ndt=explode("|",$newlines[$i]);
if (isset($ndt[1])) {if ($id!=$ndt[1]) {$newlineexit.="$newlines[$i]"; $i2++;}}
}
// Записываем свежее сообщение в массив и далее сохраняем его в файл

if ($maxzd<1) { // Если тема доступна для всех - нет ограничений по звёздам
if ($i2>0) { // Если есть такая тема, то пишем весь массив, иначе тока строку
$newlineexit.=$ntext;
$fp=fopen("$newmessfile","w");
flock ($fp,LOCK_EX);
fputs($fp,"$newlineexit\r\n");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
} else {
$fp=fopen("$newmessfile","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$ntext\r\n");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);}

$file=file($newmessfile);$i=count($file);
if ($i>="15") {
$fp=fopen($newmessfile,"w");
flock ($fp,LOCK_EX);
unset($file[0]);
fputs($fp, implode("",$file));
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);}
}
}
} // if ($newmess=="1")


// БЛОК добавляет +1 к репе и +1 к сообщению или +1 к кол-ву тем, созданных юзером

if (isset($_COOKIE['wrfcookies']) and (isset($ok))) {
$ufile="$datadir/userstat.dat"; $ulines=file("$ufile"); $ui=count($ulines)-1; $ulinenew=""; $fileadd=0;
if (isset($_FILES['file']['name'])) {$fileadd=5;} // Если юзер добавляется файл - то ему ещё +5 в РЕПУ

// Ищем юзера по имени в файле userstat.dat
for ($i=0;$i<=$ui;$i++) {$udt=explode("|",$ulines[$i]);
if ($udt[0]==$wrfname) {
$udt[3]++; $udt[3]=$udt[3]+$fileadd; $udt[2]++; if ($_GET['event']=="addtopic") {$udt[1]++;}
$ulines[$i]="$udt[0]|$udt[1]|$udt[2]|$udt[3]|$udt[4]|$udt[5]||||\r\n";}
$ulinenew.="$ulines[$i]";}
// Пишем данные в файл
$fp=fopen("$ufile","w");
flock ($fp,LOCK_EX);
fputs($fp,"$ulinenew");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
} // if isset($ok)



if ($_GET['event'] =="addtopic")  { // Добавление ТЕМЫ - запись данных
// Пишем В ТОПИК
$fp=fopen("$datadir/topic$fid.dat","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);

// Пишем В ТЕМУ
$fp=fopen("$datadir/$id.dat","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);

print "<script language='Javascript'>function reload() {location = \"index.php?fid=$fid&id=$id\"}; setTimeout('reload()', 1500);</script>
<table width=100% height=80%><tr><td><table border=1 cellpadding=10 cellspacing=0 bordercolor=#224488 align=center valign=center width=60%><tr><td><center>
Спасибо, <B>$name</B>, за добавление темы!<BR><BR>Через несколько секунд Вы будете автоматически перемещены в созданную тему.<BR><BR>
<B><a href='index.php?fid=$fid&id=$id'>Нажмите здесь, если не хотите больше ждать</a></B></td></tr></table></td></tr></table></center></body></html>";
exit;
}



if ($_GET['event'] =="addanswer")  { //ОТВЕТ В ТЕМЕ - запись данных
$timetek=time(); $timefile=filemtime("$datadir/$id.dat"); 
$timer=$timetek-$timefile; // узнаем сколько прошло времени (в секундах) 
$fp=fopen("$datadir/$id.dat","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
if ($timer<0) {$viptime=strtotime("+2 year"); touch("$datadir/$id.dat",$viptime);}

$in=$in+2; $page=ceil($in/$qq); // расчитываем верную страницу и номер сообщения

print "<script language='Javascript'>function reload() {location = \"index.php?fid=$fid&id=$id&page=$page#m$in\"}; setTimeout('reload()', 1500);</script>
<table width=100% height=80%><tr><td><table border=1 cellpadding=10 cellspacing=0 bordercolor=#224488 align=center valign=center width=60%><tr><td><center>
Спасибо, <B>$name</B>, Ваш ответ успешно добавлен.<BR><BR>Через несколько секунд Вы будете автоматически перемещены в текущую тему <BR><B>$zag</B>.<BR><BR>
<B><a href='index.php?fid=$fid&id=$id&page=$page#m$in'>Нажмите здесь, если не хотите больше ждать</a></B></td></tr></table></td></tr></table></center></body></html>";
exit;
}





if (isset($_GET['event'])) { if ($_GET['event']=="login") {
$frname="Вход на форум .:. "; $frtname="";
include("$fskin/top.html");  addtop();  // подключаем ШАПКУ форума

print"<BR><BR><BR><BR><center>
<table bgcolor=navy cellSpacing=1><TR><TD class=row2>
<TABLE class=bakfon cellPadding=4 cellSpacing=1>

<FORM action='tools.php?event=regenter' method=post>
<TR class=toptable><TD align=middle colSpan=2><B>Вход на форум</B></TD></TR>
<TR class=row1><TD>Имя:</TD><TD><INPUT name=name class=post></TD></TR>
<TR class=row2><TD>Пароль:</TD><TD><INPUT type=password name=pass class=post></TD></TR>
<TR class=row1><TD colspan=2><center><INPUT type=submit class=button value=Войти></TD></TR></TABLE></FORM> </TD></TR></TABLE>";

print "<BR><BR><BR>
<table bgcolor=navy cellSpacing=1><TR><TD class=row2>
<TABLE class=bakfon cellPadding=3 cellSpacing=1>
<FORM action='tools.php?event=givmepassword' method=post>
<TR class=toptable><TD align=middle colSpan=3><B>Забыли пароль?</B></TD></TR>
<TR class=row1><TD> <B>Введите Ваш Емайл</B></TD>
<TD><INPUT name=myemail class=post style='width: 170px'></TD>
<TD><INPUT type=submit class=button value='Получить пароль'></TD></TR>
<TR><TD colspan=3><small> <font color=red>*</font> имя и пароль будут высланы Вам на электронный адрес.</TD></TR></TABLE>
</FORM></TD></TR></TABLE><BR><BR><BR><BR><BR>
</TD></TR></TABLE>
</TD></TR></TABLE>";
}}

}



//////////////////

// шапка для всех страниц форума
// определяем дату последнего визита. +5 минут погрешности

if (isset($_COOKIE['wrfcookies']))
{ $wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc);
$wrfc=stripslashes($wrfc); $wrfc=explode("|", $wrfc);
$wrfname=$wrfc[0];$wrfpass=$wrfc[1];$wrftime1=$wrfc[2];$wrftime2=$wrfc[3];
if (time()>($wrftime1+240))
{
$tektime=time();
$wrfcookies="$wrfc[0]|$wrfc[1]|$tektime|$wrftime1|";
setcookie("wrfcookies", $wrfcookies, time()+1728000);

$wrfc=$_COOKIE['wrfcookies']; $wrfc=explode("|", $wrfc);
$wrfname=$wrfc[0];$wrfpass=$wrfc[1];$wrftime1=$wrfc[2];$wrftime2=$wrfc[3];
}
}

//////////////////





if (!isset($_GET['event']))  {

if (is_file("$datadir/mainforum.dat")) {$mainlines=file("$datadir/mainforum.dat");}
if (!isset($mainlines)) {$datasize=0;} else {$datasize=sizeof($mainlines);}
if ($datasize<=0) {if (is_file("$datadir/copy.dat")) {$mainlines=file("$datadir/copy.dat"); $datasize=sizeof($mainlines);}}
if ($datasize<=0) {exit("<center><b>Файл РУБРИК несуществует! Зайдите в <a href='admin.php'>админку</a> и создайте рубрики!</b>");}

// Блок выводит в статусной строке: ТЕМА -> РАЗДЕЛ -> ФОРУМ
if (isset($_GET['fid'])) { $fid=$_GET['fid'];
if (!ctype_digit($fid) or strlen($fid)>3) {exit("<B>$back. Индекс темы должен содержать цифры, их кол-во менее 4 символов</B>");}
$imax=count($mainlines); if (($fid>999) or (strlen($fid)==0)) {exit(" <b>Максимальное кол-во разделов - 999. Данный раздел удалён или не существует.</b>");}
$i=count($mainlines);
// проходим по всем разделам и топикам - ищем запращиваемый
$raz=""; $rfid=""; $frname=""; do {$i--; $dt=explode("|", $mainlines[$i]);
if ($dt[0]==$fid) {$rfid=$i; $raz="$dt[1]"; $frname="$dt[1]"; if (isset($dt[11])) { if($dt[11]>0) {$maxtem=$dt[11];} else {$maxtem="100";}}}
} while($i >0);


if (isset($_GET['id'])) { $id=$_GET['id'];
if (!ctype_digit($id) or strlen($id)>15) {exit("<B>$back. Ключ темы должен содержать менее 15 цифр!</B>");}
if (is_file("$datadir/$id.dat")) {
 $lines=file("$datadir/$id.dat");
  if (count($lines)>4) {$dtt=explode("|",$lines[0]); $frtname=$dtt[3];} else {$frtname="";}
 $ft=$frname; $frname="-> $ft ->";} else {$frtname=""; $frname="";}} else {$frtname="";  $frname.="->";} } else {$frname=""; $frtname="";}
 

include("$fskin/top.html");  addtop();  // подключаем ШАПКУ форума




// выводим ГЛАВНУЮ СТРАНИЦУ ФОРУМА

if (is_file("$datadir/usersdat.php")) { // считываем имя последнего зарегистрировавшегося
$userlines=file("$datadir/usersdat.php"); $dayx="";
$usercount=count($userlines); $ui=$usercount-1; $uu=$ui;
$tdt=explode("|", $userlines[$ui]);}  else { $fp=fopen("$datadir/usersdat.php","a+"); fputs($fp,"<?die;?>\r\n"); fflush ($fp); fclose($fp); $ui=""; $tdt[0]="";}
$today=mktime();

if (!isset($_GET['fid']))  {
echo ('<table><tr><td><span class=nav>&nbsp;&nbsp;&nbsp;<a href=index.php class=nav>'.$fname.'</a> -> </span></td></tr></table>
<table width=100% cellpadding=2 cellspacing=1 class=forumline>
<tr>
<th width=62% colspan=2 class=thCornerL height=25 nowrap=nowrap>Форумы</th>
<th width=7% class=thTop nowrap=nowrap>Тем</th>
<th width=7% class=thCornerR nowrap=nowrap>Ответов</th>
<th width=28% class=thCornerR nowrap=nowrap>Обновление</th>
</tr>');

// Выводим все РУБРИКИ НА ГЛАВНОЙ
$adminmsg=""; if (is_file("$datadir/mainforum.dat")) {$lines=file("$datadir/mainforum.dat");}
if (!isset($lines)) {$datasize=0;} else {$datasize=sizeof($lines);}
if ($datasize<=0) {if (is_file("$datadir/copy.dat")) {$lines=file("$datadir/copy.dat"); $datasize=sizeof($lines);} $adminmsg="<font color=red><B>Администратор, внимание!!!</B> Файл БД с рубриками повреждён. Восстановите его из резервной копии в админке!</font><br>";}
if ($datasize<=0) {exit("Проблемы с Базой данных - обратитесь к администратору");}
$i=count($lines); $n="0"; $a1="-1"; $u=$i-1; $fid="0"; $itogotem="0"; $itogomsg="0"; $alt="";

do {$a1++; $dt=explode("|", $lines[$a1]);

if (isset($dt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим

// определяем тип: топик или заголовок
if ($dt[1]=="razdel") {print "<tr height=28><td class=catLeft colspan=2><span class=cattitle><center><a href='index.php?fid=$dt[0]'>$dt[2]</a></td><td class=rowpic colspan=4 align=right>&nbsp;</td></tr>";}
else {
//$dt[9] - дата размещения сообщения; $wrftime2 - последнее посещение
// Если $dt[9] раньше (т.е. больше) $wrftime2 значит раздел форума - новый
$foldicon="folder.gif"; if (isset($wrfname)) {if (isset($dt[9])) {if ($dt[9]>$wrftime2) {$foldicon="foldernew.gif";}}}


if (is_file("$datadir/$dt[3].dat")) { $msgsize=sizeof(file("$datadir/$dt[3].dat")); // считаем кол-во страниц в файле
if ($msgsize>$qq) {$page=ceil($msgsize/$qq);} else {$page=1;}} else {$page=1;}

if ($dt[7]==$date) {$dt[7]="сегодня";}
$maxzvezd=null; if (isset($dt[12])) { if ($dt[12]>=1) {$maxzvezd="*Доступна участникам, имеющим <font color=red><B>$dt[12]</B> звезд";
$dt[4]=""; $dt[5]="";
if ($dt[12]==1) {$maxzvezd.="у";} if ($dt[12]==2 or $dt[12]==3 or $dt[12]==4) {$maxzvezd.="ы";} $maxzvezd.=" минимум</font>";}}
$fid="$dt[0]"; 

// НОВАЯ система: если есть файлы типа main-XX.gif, где ХХ - число, то вместо обычных фолдерозаглушек, ставим этот файл, по соответствию с переменной FID
if (is_file("$fskin/main-$fid.gif")) {$foldicon="main-$fid.gif"; $alt="$dt[1]";} else {$alt="";}

$dt[8]=substr($dt[8],0,-3);

print "<tr height=50>
<td width=3% class=row1 align=center valign=middle><img src=\"$fskin/$foldicon\" alt='$alt' border=0></td>
<td width=60% class=row1 valign=middle><span class=forumlink><a href=\"index.php?fid=$fid\">$dt[1]</a> $maxzvezd<BR></span><small>$dt[2]</small></td>
<td width=7% class=row2 align=center><small>$dt[4]</small></td>
<td width=7% class=row2 align=center><small>$dt[5]</small></td>
<td width=28% class=row2 valign=middle><span class=gensmall>
тема: "; if (strlen($dt[10])>0) {print "<a href=\"index.php?fid=$fid&id=$dt[3]&page=$page#m$msgsize\">$dt[10]</a>";}
print"<BR>автор: <B>$dt[6]</B><BR>
дата: <B>$dt[7]</B> - $dt[8]</span></td></tr>";
$itogotem=$itogotem+$dt[4];$itogomsg=$itogomsg+$dt[5];}
} // if isset $dt[1]
} while($a1 < $u);
echo('</table><BR>');



if (!ctype_digit($statistika)) {$statistika='1';} if ($statistika>0) {

if ($cangutema=="1") {$c1="разрешено";} else {$c1="запрещено";}
if ($cangumsg =="1") {$c2="разрешено";} else {$c2="запрещено";}
$codename=urlencode($tdt[0]);
print"<table width=100% cellpadding=3 cellspacing=1 class=forumline><tr><td class=catHead colspan=2 height=28><span class=cattitle>Статистика</span></td></tr><tr>
<td class=row1 align=center valign=middle rowspan=2><img src=\"$fskin/whosonline.gif\"></td>
<td class=row1 align=left width=95%><span class=gensmall>
Сообщений: <b>$itogomsg</b><br>Тем: <b>$itogotem</b><br>Всего зарегистрировано участников: <b><a href=\"tools.php?event=who\">$ui</a></b><br>Последним зарегистрировался: <B><a href=\"tools.php?event=profile&pname=$codename\">$tdt[0]</a></B><BR>
Гостям <B>$c1</B> создавать темы и <B>$c2</B> отвечать в темах<BR>
$adminmsg
</span></td></tr></table>"; 

// БЫСТРЫЙ ПЕРЕХОД к теме
echo '<br><table width=100% cellpadding=3 cellspacing=1 class=forumline><TR><TD class=catHead><span class=cattitle>Навигация</span></td></tr>
<tr><td class=row1 align=right><span class=gensmall>
Быстрый переход по темам &nbsp; <select onchange="window.location=(\'index.php?fid=\'+this.options[this.selectedIndex].value)">
<option>Выберите рубрику</option>';
$ii=count($mainlines); $cn=0; $i=0;
do {$dt=explode("|", $mainlines[$i]);
if ($dt[1]=="razdel") {if ($cn!=0) {echo'</optgroup>'; $cn=0;} $cn++; print"<optgroup label='$dt[2]'>";} else {print" <option value='$dt[0]'>|-$dt[1]</option>";}
$i++;} while($i<$ii);
echo'</optgroup></select></TD></TR></TABLE>';


// СТАТИСТИКА -=ДНИ РОЖДЕНИЯ=-

if (is_file("$datadir/usersdat.php")) { // считываем всех юзеров, ищем дни варения
$userlines=file("$datadir/usersdat.php");
$usercount=count($userlines); $ui=$usercount-1; $t_people=""; $z_people=""; $s_p="0"; $s_people=""; $p_people="";

do {$udt=explode("|", $userlines[$ui]);

if (isset($udt[1])) {
$udt[5]=substr("$udt[5]",0, 10); // обрезаем дату рождения по формату
if (preg_match("(\d{2}\.\d{2}\.\d{4})",$udt[5])) { // соответствует шаблону ДД.ММ.ГГГГ

$bday=substr("$udt[5]",0, -5);
$dmtoday=date("d.m");
$todaydt=explode(".",$dmtoday);
$codename=urlencode($udt[0]);
if ($bday==$dmtoday) {$t_people.="<a href='tools.php?event=profile&pname=$codename'>$udt[0]</a>,&nbsp;&nbsp; ";}
$dt=explode(".",$udt[5]);
if ($dt[1]==12) {$year=1972;} else {$year=1973;} // для того, чтобы верно считать с декабря по январь
$newdate=mktime(0,0,0,$dt[1],$dt[0],$year); // для дня рождения
$tekdt=mktime(0,0,0,$todaydt[1],$todaydt[0],$year); // текущую дату переводим в этот формат
$deystodate=round(($newdate-$tekdt)/86400); // через сколько дней наступит событие
 
// собираем для ВЧЕРАШНИХ
if ($deystodate=="-1") {$z_people.="<a href='tools.php?event=profile&pname=$codename'>$udt[0]</a>,&nbsp; ";}

// собираем ПРИБЛИЖАЮЩИХСЯ в массив (БОЛЬШЕ 1 и МЕНЬШЕ 7 дней)
if ($deystodate>1 and $deystodate<7) {if ($deystodate<10) $deystodate="0$deystodate"; $s_peo[$s_p]="$deystodate|$udt[0]|"; $s_p++;}
} // if указан день варения в переменной $udt[5]
} // if iiset($udt[1])
$ui--;
} while ($ui>0);

$today=mktime();
}

if (isset($s_peo)) {
usort($s_peo,"prcmp"); // сортируем дни по возрастанию

$i=0; do {$sdt=explode("|",$s_peo[$i]);
$sdt[0]=intval($sdt[0]); // преобразуем строку в число, чтобы отбросить 0 в начале
$codename=urlencode($sdt[1]);
$s_people.="<b><a href='tools.php?event=profile&pname=$codename'>$sdt[1]</a></b> ($sdt[0] дн.), "; $i++;
} while ($i<$s_p);
} // ЕСЛИ есть у кого-нибудь дни варения


// На тот случай, если дней рождения нет, делаем заглушки
if (strlen($t_people)>1) {$t_people="<B>$t_people</B><font color=red>искренне поздравляю!</font>";} else {$t_people="нет.";}
if (strlen($z_people)>1) {$z_people="<B>$z_people</B><font color=#800040> поздравляем с Днём варения!</font>";} else {$z_people="нет.";}
if (strlen($s_people)>1) {$s_people="$s_people <font color=#55002B>совсем скоро день варения!</font>";} else {$s_people="Не предвидится.";}

print"<br><table width=100% cellpadding=3 cellspacing=1 class=forumline><tr><td class=catHead colspan=2 height=28><span class=cattitle>Дни рождения</span></td></tr><tr>
<td class=row1 align=center valign=middle rowspan=2><img src=\"$fskin/whosonline.gif\"></td>
<td class=row1 align=left width=95%>
<span class=gensmall><br>Вчера: $z_people<br>
<span class=gensmall><br>Сегодня: $t_people<br>
<span class=gensmall><br>Скоро: $s_people<br><br>
</span></td></tr></table>";



// СТАТИСТИКА -= Последние сообщения с форума =-

if (is_file("$datadir/news.dat")) { $newmessfile="$datadir/news.dat";
$lines=file($newmessfile); $i=count($lines); //if ($i>10) $i=10; (РАСКОМЕНТИРУЙ - ВОТ ГДЕ СИЛА!!! ;-))
if ($i>1) {
echo('<br><table width=100% cellpadding=3 cellspacing=1 class=forumline><tr><td class=catHead colspan=2 height=28><span class=cattitle>Последние сообщения</span></td></tr><tr>
<td class=row1 align=center valign=middle rowspan=2><img src="'.$fskin.'/whosonline.gif"></td>
<td class=row1 align=left width=95%><span class=gensmall>');

$a1=$i-1;$u="-1"; // выводим данные по возрастанию или убыванию
do {$dt=explode("|", $lines[$a1]); $a1--;

if (isset($dt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим
$dt[6]=htmlspecialchars($dt[6]);
$dt[6]=str_replace("[b] "," ",$dt[6]);
$dt[6]=str_replace("[/b]"," ",$dt[6]);
$dt[6]=str_replace("[RB] "," ",$dt[6]);
$dt[6]=str_replace("[/RB]"," ",$dt[6]);
$dt[6]=str_replace("[Code] "," ",$dt[6]);
$dt[6]=str_replace("[/Code]"," ",$dt[6]);
$dt[6]=str_replace("[Quote] "," ",$dt[6]);
$dt[6]=str_replace("[/Quote]"," ",$dt[6]);
$dt[6]=str_replace("<br>","\r\n", $dt[6]);
$dt[2]=str_replace(".200",".0", $dt[2]);
$dt[2]=substr($dt[2],0,8);
$dt[3]=substr($dt[3],0,5);
if ($dt[8]>$qq) {$page=ceil($dt[8]/$qq);} else {$page=1;} // Считаем страницу

if ($dt[10]=="да") {$codename=urlencode($dt[4]); $name="<B><a href='tools.php?event=profile&pname=$codename'>$dt[4]</a></B>";} else {$name="гость $dt[4]";}
print"$dt[2] - $dt[3]: <B><a href='index.php?fid=$dt[0]'>$dt[9]</a></B> -> <B><a href='index.php?fid=$dt[0]&id=$dt[1]&page=$page#a$dt[8]' title='$dt[6] \r\n\r\n Отправлено $dt[3], $dt[2] г.'>$dt[5]</a></B> - $name.<br>";
} // если строчка потерялась
$a11=$u; $u11=$a1;
} while($a11 < $u11);
echo'</span></td></tr></table>';}

} // Конец блока последних сообщений

} // конец if (statistika==1)

if (is_file("$fskin/bottom.html")) {include("$fskin/bottom.html");}  // подключаем НИЖНИЙ БЛОК форума

} // конец главной страницы






// страница С ТЕМАМИ выбранной РУБРИКИ
if (isset($_GET['fid']) and !isset($_GET['id'])) {  $fid=$_GET['fid'];

// Защиты
if (!ctype_digit($fid) or strlen($fid)>3) {exit("<B>$back. Номер рубрики должен быть цифровым и содержать менее 4 символов</B>");}
$imax=count($mainlines); if (($fid>99) or (strlen($fid)==0)) {exit(" <b>Данный раздел удалён или не существует.</b>");}



if ($raz=="razdel") {

echo'<table><tr><td><span class=nav>&nbsp;&nbsp;&nbsp;<a href=index.php class=nav>'.$fname.'</a> -> </span></td></tr></table>
<table width=100% cellpadding=2 cellspacing=1 class=forumline>
<tr>
<th width=62% colspan=2 class=thCornerL height=25 nowrap=nowrap>Форумы</th>
<th width=7% class=thTop nowrap=nowrap>Тем</th>
<th width=7% class=thCornerR nowrap=nowrap>Ответов</th>
<th width=28% class=thCornerR nowrap=nowrap>Обновление</th>
</tr>';

// Выводим все РУБРИКИ раздела
$adminmsg=""; if (is_file("$datadir/mainforum.dat")) {$lines=file("$datadir/mainforum.dat");}
if (!isset($lines)) {$datasize=0;} else {$datasize=sizeof($lines);}
if ($datasize<=0) {if (is_file("$datadir/copy.dat")) {$lines=file("$datadir/copy.dat"); $datasize=sizeof($lines);} $adminmsg="<font color=red><B>Администратор, внимание!!!</B> Файл БД с рубриками повреждён. Восстановите его из резервной копии в админке!</font><br>";}
if ($datasize<=0) {exit("Проблемы с Базой данных - обратитесь к администратору");}
$i=count($lines); $n="0"; $a1=$rfid-1; $u=$i-1; $fid="0"; $itogotem="0"; $itogomsg="0"; $alt=""; $countik=0;


do {$a1++; $dt=explode("|", $lines[$a1]);

if ($dt[1]=="razdel" and $countik!=1) {print "<tr height=28><td class=catLeft colspan=2><span class=cattitle><center>$dt[2]</td><td class=rowpic colspan=4 align=right>&nbsp;</td></tr>";}

if (isset($dt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим

// определяем тип: топик или заголовок
if ($dt[1]!="razdel") {
//$dt[9] - дата размещения сообщения; $wrftime2 - последнее посещение
// Если $dt[9] раньше (т.е. больше) $wrftime2 значит раздел форума - новый
$foldicon="folder.gif"; if (isset($wrfname)) {if (isset($dt[9])) {if ($dt[9]>$wrftime2) {$foldicon="foldernew.gif";}}}

if (is_file("$datadir/$dt[3].dat")) { $msgsize=sizeof(file("$datadir/$dt[3].dat")); // выводим список доступных страниц
if ($msgsize>$qq) {$page=ceil($msgsize/$qq);} else {$page=1;}} else {$page=1;}

if ($dt[7]==$date) {$dt[7]="сегодня";}
$fid="$dt[0]"; 

// НОВАЯ система: если есть файлы типа main-XX.gif, где ХХ - число, то вместо обычных фолдерозаглушек, ставим этот файл, по соответствию с переменной FID
if (is_file("$fskin/main-$fid.gif")) {$foldicon="main-$fid.gif"; $alt="$dt[1]";} else {$alt="";}

print "<tr height=50>
<td width=3% class=row1 align=center valign=middle><img src=\"$fskin/$foldicon\" alt='$alt' border=0></td>
<td width=60% class=row1 valign=middle><span class=forumlink><a href=\"index.php?fid=$fid\">$dt[1]</a><BR></span><small>$dt[2]</small></td>
<td width=7% class=row2 align=center><small>$dt[4]</small></td>
<td width=7% class=row2 align=center valign=middle><small>$dt[5]</small></td>
<td width=28% class=row2 valign=middle><span class=gensmall>
тема: "; if (strlen($dt[10])>0) {print "<a href=\"index.php?fid=$fid&id=$dt[3]&page=$page\">$dt[10]</a>";}
print"<BR>автор: <B>$dt[6]</B><BR>
дата: <B>$dt[7]</B> - $dt[8]</span></td></tr>";

$itogotem=$itogotem+$dt[4];$itogomsg=$itogomsg+$dt[5];}  else {$countik++; if ($countik<1) { print "<span class=cattitle><center>$dt[2]";}} // if isset($dt[1]

}
if ($countik==2) {$a1=$u;}
} while($a1 < $u);
echo'</table><BR>';

// БЫСТРЫЙ ПЕРЕХОД к теме
echo '<br><table width=100% cellpadding=3 cellspacing=1 class=forumline><TR><TD class=catHead><span class=cattitle>Навигация</span></td></tr>
<tr><td class=row1 align=right><span class=gensmall>
Быстрый переход по темам &nbsp; <select onchange="window.location=(\'index.php?fid=\'+this.options[this.selectedIndex].value)">
<option>Выберите рубрику</option>';
$ii=count($mainlines); $cn=0; $i=0;
do {$dt=explode("|", $mainlines[$i]);
if ($dt[1]=="razdel") {if ($cn!=0) {echo'</optgroup>'; $cn=0;} $cn++; print"<optgroup label='$dt[2]'>";} else {print" <option value='$dt[0]'>|-$dt[1]</option>";}
$i++;} while($i<$ii);
echo'</optgroup></select></TD></TR></TABLE>';

} // if ($dt[1]=="razdel")



if ($raz!="razdel") {

// Уточняем статус по кол-ву ЗВЁЗД юзера. Если меньше допустимых N в этой рубрике - то досвиданья!
$maxzd=null;
do {$imax--; $ddt=explode("|", $mainlines[$imax]); if ($ddt[0]==$fid) {$maxzd=$ddt[12];} } while($imax>"0");
if ($maxzd>=1) {
if (!ctype_digit($maxzd)) {exit("$back звёзды исчисляются в цифрах. а в файле данных - ерунда!");}

$noacsess="<br><br><br><br><table class=forumline align=center width=700><tr><th class=thHead colspan=4 height=25>Доступ в раздел ограничен</th></tr>
<tr class=row2><td class=row1><center><BR><BR><B><span style='FONT-SIZE: 14px'>Для просмотра данного раздела необходимо быть зарегистрированным и иметь рейтинг не менее $maxzd звёзд.";

// БЛОК проверяет логин и пароль юзера, считывает кол-во его звёзд и сравнивает с заданным в рубрике
if (isset($_COOKIE['wrfcookies'])) { // весь блок работает при наличии КУКИ
$text=$_COOKIE['wrfcookies']; 
$text=replacer($text);
$wrfc=explode("|",$text); $wrfname=$wrfc[0]; if (isset($wrfc[1])) {$wrfpass=$wrfc[1];} else {exit("$back попытка взлома - в куки нет пароля. Куда он делся ;-) ?");}

// пробегаем файл с юзерами
$iu=$usercount; $ok=null;
do {$iu--; $du=explode("|",$userlines[$iu]);
if (isset($du[1])) { $realname=strtolower($du[0]);
if (strtolower($wrfname)===$realname & $wrfpass===$du[1]) {$ok="$i"; if ($du[2]<$maxzd) {exit("$noacsess У Вас всего $du[2] звёзд.</B></center><BR><BR>$back<BR><BR></td></table><br>");} }}
} while($iu > "0");
} else { exit("$noacsess</B></center><BR><BR>$back<BR><BR></td></table><br>"); } // если юзер тот, за кого себя выдаёт то его пускаем, иначе - обломаем
if (!isset($ok)) {exit("$noacsess</B></center><BR><BR>$back<BR><BR></td></table><br>");}
}


print"
<table><tr><td><span class=nav>&nbsp;&nbsp;&nbsp;<a href=index.php class=nav>$fname</a> -> <a href=index.php?fid=$fid class=nav>$frname</a></span></td></tr></table>
<table width=100% cellpadding=2 cellspacing=1 class=forumline><tr>
<th width=60% colspan=2 class=thCornerL height=25 nowrap=nowrap>Тема</th>
<th width=10% class=thTop nowrap=nowrap>Cообщений</th>
<th width=12% class=thCornerR nowrap=nowrap>Автор</th>
<th width=18% class=thCornerR nowrap=nowrap>Обновления</th>
</tr>";

$addbutton="<table width=100%><tr><td align=left valign=middle><span class=nav><a name='add' href=\"index.php?fid=$fid&newtema=add#add\"><img src='$fskin/newthread.gif' border=0></a>&nbsp;</span></td>";


// определяем есть ли информация в файле с данными
if (is_file("$datadir/topic$fid.dat"))
{
$msglines=file("$datadir/topic$fid.dat");
if (count($msglines)>0) {

if (count($msglines)>$maxtem-1) {$addbutton="<table width=100%><TR><TD>Количество допустимых тем в рубрике исчерпано.";}

// Выводим qqmain сообщений на текущей странице
$linesdo=file("$datadir/topic$fid.dat");
$i=count($linesdo); $maxi=count($linesdo)-1; $n="0";

// Исключаем ошибку вызова несуществующей страницы
if (!isset($_GET['page'])) {$page=1;} else {$page=$_GET['page']; if (!ctype_digit($page)) {$page=1;} if ($page<1) $page=1;}


// БЛОК СОРТИРОВКИ: последние ответы ВВЕРХУ!
$p=$i;
do {$p--; $dt=explode("|", $linesdo[$p]);
   $filename="$dt[7].dat"; if (is_file("$datadir/$filename")) {$ftime=filemtime("$datadir/$filename");}  else {$ftime="";}
   $newlines[$p]="$ftime|$dt[7]|$p|";
} while($p > 0);
usort($newlines,"prcmp");
// $newlines  - массив с данными:  ДАТА | ИМЯ_ФАЙЛА_С_ТЕМОЙ | № п/п |
// $linesdo - массив со всеми темами выбранной рубрики
$p=$i;
do {$p--; $dtn=explode("|", $newlines[$p]);
   $numtp="$dtn[2]"; $lines[$p]="$linesdo[$numtp]";
} while($p > 0);
// КОНЕЦ блока сортировки


// Показываем QQ ТЕМ


$fm=$maxi-$qq*($page-1); if ($fm<"0") {$fm=$qq;}
$lm=$fm-$qq; if ($lm<"0") {$lm="-1";}

$timetek=time();

do {$dt=explode("|", $lines[$fm]);

// нужно для определения темы на VIP-статус
$dtn=explode("|", $newlines[$fm]);
$timer=$timetek-$dtn[0]; // узнаем сколько прошло времени (в секундах) 

$fm--; $num=$fm+2;

$filename=$dt[7]; if (is_file("$datadir/$filename.dat")) { // если файл с темой существует - то показать тему
$msgsize=sizeof(file("$datadir/$filename.dat"));

// --------- Выделяем новые сообщения
$linetmp=file("$datadir/$filename.dat"); if (sizeof($linetmp)!=0) {
$pos=$msgsize-1; $dtt=explode("|", $linetmp[$pos]);
$foldicon="folder.gif";
// Если последнее сообщение в форуме произошло раньше посещения - значит раздел форума - новый
if (isset($wrfname)) {if (isset($dtt[9])) {if ($dtt[9]>$wrftime2) {$foldicon="foldernew.gif";}}}
if (strlen($dt[8])>1 and $dt[8]=="closed") {if ($msgsize<"20") {$foldicon="close.gif";} else {$foldicon="closed.gif";}}} else {$foldicon="foldernew.gif";}
// --------- Конец

print "<tr height=50>
<td width=3% class=row1 align=center valign=middle><img src=\"$fskin/$foldicon\" border=0></td>
<td width=57% class=row1 valign=middle><span class=forumlink><b>";

if ($timer<0) {echo'<font color=red>VIP </font>';}

print"<a href=\"index.php?fid=$fid&id=$dt[7]\">$dt[3]</a></B>";

if ($msgsize>$qq) { // выводим список доступных страниц
echo'</b></span><BR><small>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Страницы: <B>';

// Считаем и отображаем страницы в темах
$maxit=count($linetmp)-1; $maxpaget=ceil(($maxit+1)/$qq);
if ($maxpaget<=5) {$f1=$maxpaget;} else {$f1=5;}
for($i=1; $i<=$f1; $i++) {print "<a href=index.php?fid=$fid&id=$dt[7]&page=$i>$i</a> &nbsp;";}
if ($maxpaget>5) print "... <a href=index.php?fid=$fid&id=$dt[7]&page=$maxpaget>$maxpaget</a>";
echo'</B>'; }

print"</span></td><td width=10% class=row2 align=center>$msgsize</td>
<td width=10% class=row2 align=center><span class=gensmall>";

$codename=urlencode($dt[0]);
if ($dt[1]=="да") {print "<a href='tools.php?event=profile&pname=$codename':$dt[2]>$dt[0]</a><BR><small>$users</small>";} 
else  {print"$dt[0]<BR><small>$guest</small>";}

if ($msgsize>=2) {$linesdat=file("$datadir/$filename.dat"); $dtdat=explode("|", $linesdat[$msgsize-1]);
if (strlen($linesdat[$msgsize-1])>10) {$dt[0]=$dtdat[0]; $dt[1]=$dtdat[1]; $dt[2]=$dtdat[2]; $dt[5]=$dtdat[5]; $dt[6]=$dtdat[6];}} // защита if (strlen...) только если файл есть и имеет верный формат - выводим

$dt[6]=substr($dt[6],0,-3);
if ($dt[5]===$date) {$dt[5]="<B>сегодня</B>";}
print "</span></td><td width=15% height=50 class=row2 align=left valign=middle nowrap=nowrap><span class=gensmall>&nbsp; 
автор: $dt[0]<BR>&nbsp;
дата: $dt[5]<BR>&nbsp;
время: $dt[6]</font>
</td></tr>";

} //if (is_file)

} while($lm < $fm);


// выводим СПИСОК СТРАНИЦ
$lines=file("$datadir/topic$fid.dat"); $maxi=count($lines)-1;
$maxpage=ceil(($maxi+1)/$qq); if ($page>$maxpage) {$page=$maxpage;}
print "$addbutton<TD><table width=100%><tr><td align=right colspan=3><span class=nav>Страницы:&nbsp; ";
if ($page>=4 and $maxpage>5) print "<a href=index.php?fid=$fid&page=1>1</a> ... ";
$f1=$page+2; $f2=$page-2;
if ($page<=2) {$f1=5; $f2=1;} if ($page>=$maxpage-1) {$f1=$maxpage; $f2=$page-3;} if ($maxpage<=5) {$f1=$maxpage; $f2=1;}
for($i=$f2; $i<=$f1; $i++) {if ($page==$i) {print "<B>$i</B> &nbsp;";} else {print "<a href=index.php?fid=$fid&page=$i>$i</a> &nbsp;";}}
if ($page<=$maxpage-3 and $maxpage>5) print "... <a href=index.php?fid=$fid&page=$maxpage>$maxpage</a>";
echo'</b></span></td></tr></table>';


} else {print"$addbutton";}

} else {print"$addbutton";}

echo'</tr></table><BR>';


if (isset($_GET['newtema'])) { if ($cangutema=="0" and !isset($wrfname)) {print"<center><h5>Администратор запретил создавать гостям темы! Для регистрации пройдите по ссылке: <B><a href='tools.php?event=reg'>зарегистрироваться</a></B></h5></center><BR><BR>"; } else {
$maxzag=$maxzag-10; // так нужно!!!
print"<form action=\"index.php?event=addtopic&fid=$fid\" method=post enctype=\"multipart/form-data\" name=REPLIER><table width=100% class=forumline><tr><td class=catHead colspan=2 height=28><span class=cattitle>Добавление темы</span></td></tr>



<tr><td class=row1 align=right valign=top>Заголовок темы</TD><TD class=row2>
<input type=hidden name=maxzd value='$maxzd'><input type=text class=post name=zag maxlength=$maxzag size=70>
</TD></TR>";


addmsg();

}}


// БЫСТРЫЙ ПЕРЕХОД к теме
echo '<br><table width=100% cellpadding=3 cellspacing=1 class=forumline><TR><TD class=catHead><span class=cattitle>Навигация</span></td></tr>
<tr><td class=row1 align=right><span class=gensmall>
Быстрый переход по темам &nbsp; <select onchange="window.location=(\'index.php?fid=\'+this.options[this.selectedIndex].value)">
<option>Выберите рубрику</option>';
$ii=count($mainlines); $cn=0; $i=0;
do {$dt=explode("|", $mainlines[$i]);
if ($dt[1]=="razdel") {if ($cn!=0) {echo'</optgroup>'; $cn=0;} $cn++; print"<optgroup label='$dt[2]'>";} else {print" <option value='$dt[0]'>|-$dt[1]</option>";}
$i++;} while($i<$ii);
echo'</optgroup></select></TD></TR></TABLE>';

}




} //if ($raz!="razdel")
} // Если есть Fid, но нету id





if (isset($_GET['fid']) and isset($_GET['id'])) {$id=$_GET['id']; $fid=$_GET['fid'];

// определяем есть ли информация в файле с данными
if (!is_file("$datadir/$id.dat")) {exit("<BR><BR><font> $back. Извините, но такой темы на форуме не существует.<BR> Скорее всего её удалил администратор.");}
$lines=file("$datadir/$id.dat"); $mitogo=count($lines); $i=$mitogo; $maxi=$i-1;

if ($mitogo>0) { $tblstyle="row1";  $printvote=null;

// Считываем СТАТИСТИКУ ВСЕХ УЧАСТНИКОВ
if (is_file("$datadir/userstat.dat")) {$ufile="$datadir/userstat.dat"; $ulines=file("$ufile"); $ui=count($ulines)-1;}

// Ищем тему в topicХХ.dat - проверяем не закрыта ли тема? и сразу же ищем есть ли в топике
$ok=null; $closed="no"; if (is_file("$datadir/topic$fid.dat")) {
$msglines=file("$datadir/topic$fid.dat"); $mg=count($msglines); //$closed="no";
do {$mg--; $mt=explode("|",$msglines[$mg]);
if ($mt[7]==$id and $mt[8]=="closed") {$closed="yes";}
if ($mt[7]==$id) {$ok=1;} // тема есть в указанном разделе?
} while($mg > "0");}

$realbase="1"; if (is_file("$datadir/mainforum.dat")) {$mainlines=file("$datadir/mainforum.dat");}
if (!isset($mainlines)) {$datasize=0;} else {$datasize=sizeof($mainlines);}
if ($datasize<=0) {if (is_file("$datadir/copy.dat")) {$realbase="0"; $mainlines=file("$datadir/copy.dat"); $datasize=sizeof($mainlines);}}
if ($datasize<=0) {exit("$back. Проблемы с Базой данных - обратитесь к администратору");}
$i=count($mainlines);


// Уточняем статус по кол-ву ЗВЁЗД юзера. Если меньше допустимых N в этой рубрике - то досвиданья!
$maxzd=null;
do {$imax--; $ddt=explode("|", $mainlines[$imax]); if ($ddt[0]==$fid) {$maxzd=$ddt[12];} } while($imax>"0");
if ($maxzd>=1) {
if (!ctype_digit($maxzd)) {exit("$back звёзды исчисляются в цифрах. а в файле данных - ерунда!");}
$noacsess="<br><br><br><br><table class=forumline align=center width=700><tr><th class=thHead colspan=4 height=25>Доступ в раздел ограничен</th></tr>
<tr class=row2><td class=row1><center><BR><BR><B><span style='FONT-SIZE: 14px'>Для просмотра данного раздела необходимо быть зарегитстрированным и иметь рейтинг не менее $maxzd звёзд.";

if ($ok!=1) {exit("<br><br>$back. Номер раздела указан ошибочно!<br> В указаном разделе нет такой темы!");}
// БЛОК проверяет логин и пароль юзера, считывает кол-во его звёзд и сравнивает с заданным в рубрике
if (isset($_COOKIE['wrfcookies'])) { // весь блок работает при наличии КУКИ
$text=$_COOKIE['wrfcookies']; 
$text=replacer($text);
$wrfc=explode("|",$text); $wrfname=$wrfc[0]; if (isset($wrfc[1])) {$wrfpass=$wrfc[1];} else {exit("$back попытка взлома - в куки нет пароля. Куда он делся ;-) ?");}

// пробегаем файл с юзерами и считываем его в память
$iu=$usercount; $ok=null;
do {$iu--; $du=explode("|",$userlines[$iu]);
if (isset($du[1])) { $realname=strtolower($du[0]);
if (strtolower($wrfname)===$realname & $wrfpass===$du[1]) {$ok="$i"; if ($du[2]<$maxzd) {exit("$noacsess У Вас всего $du[2] звёзд.</B></center><BR><BR>$back<BR><BR></td></table><br>");} }}
} while($iu > "0");
} else { exit("$noacsess</B></center><BR><BR>$back<BR><BR></td></table><br>"); } // если юзер тот, за кого себя выдаёт то его пускаем, иначе - обломаем
if (!isset($ok)) {exit("$noacsess</B></center><BR><BR>$back<BR><BR></td></table><br>");}
}



// Исключаем ошибку вызова несуществующей страницы
if (!isset($_GET['page'])) {$page=1;} else {$page=$_GET['page']; if (!ctype_digit($page)) {$page=1;} if ($page<1) $page=1;}

$fm=$qq*($page-1); if ($fm>$maxi) {$fm=$maxi-$qq;}
$lm=$fm+$qq; if ($lm>$maxi) {$lm=$maxi+1;}

do {$dt=explode("|", $lines[$fm]);

$youwr=null; $fm++; $num=$maxi-$fm+2; $status=""; unset($youwr);

if (strlen($lines[$fm-1])>5) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим

$dt[4]=str_replace("[b]","<b>", $dt[4]);
$dt[4]=str_replace("[/b]","</b>", $dt[4]);
$dt[4]=str_replace("[RB]","<font color=red><B>", $dt[4]);
$dt[4]=str_replace("[/RB]","</B></font>", $dt[4]);
$dt[4]=str_replace("[Quote]","<BR><fieldset align=center style='width:80%; color:#EE4422'><legend><B>Цитата:</B></legend>", $dt[4]);
$dt[4]=str_replace("[/Quote]","</fieldset><BR>", $dt[4]);
$dt[4]=str_replace("[Code]","<BR><fieldset align=center style='width:80%; color:#224488'><legend><B>Код:</B></legend>", $dt[4]);
$dt[4]=str_replace("[/Code]","</fieldset><BR>", $dt[4]);
$dt[4]=str_replace(":-))",$s2,$dt[4]);
$dt[4]=str_replace(":-)",$s1,$dt[4]);
$dt[4]=str_replace(":-P",$s3,$dt[4]);
$dt[4]=str_replace("8-)",$s4,$dt[4]);
$dt[4]=str_replace(":-((",$s5,$dt[4]);
$dt[4]=str_replace(":-(",$s12,$dt[4]);
$dt[4]=str_replace(":-O",$s6,$dt[4]);
$dt[4]=str_replace(";-)",$s7,$dt[4]);
$dt[4]=str_replace(":roll:",$s8,$dt[4]);
$dt[4]=str_replace(":rf:",$s9,$dt[4]);
$dt[4]=str_replace("8-(",$s10,$dt[4]);
$dt[4]=str_replace("`-(",$s11,$dt[4]);
$dt[4]=str_replace("&amp;#124;","&#124;",$dt[4]);
if ($liteurl==1) { // Если разрешена публикация УРЛов
$dt[4]=eregi_replace("((https?|ftp)://[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&._=/~%]*(\\?[[:alnum:]?+&;_=#./%]*)?)?)", "<a href='\\1' target='_blank'>\\1</a>", $dt[4]);
$dt[4]=eregi_replace("\\[img\\]\\<a href\\='((https?|ftp)://[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&amp;._=/%]*(\\?[[:alnum:]?+&amp;_=#./%]*)?)?)' target='_blank'>((https?|ftp)://[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&amp;._=/%]*(\\?[[:alnum:]?+&amp;_=#./%]*)?)?)</a>\\[/img\\]", "<img src='\\1' alt='\\1' border='0'> ", $dt[4]);
} else {$dt[4]=eregi_replace("\\[img\\]((https?|ftp)://[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&._=/~%]*(\\?[[:alnum:]?+&;_=#./%]*)?)?)\\[/img\\]", "<img src='\\1' alt='\\1' border='0'>", $dt[4]);}


// считываем в память данные по пользователю
if ($dt[1]=="да")  { $iu=$usercount; $predup="0";
do {$iu--; $du=explode("|", $userlines[$iu]); if ($du[0]==$dt[0])
{ if (isset($du[12])) {$status=$du[13]; $reiting=$du[2]; $youavatar=$du[12]; $email=$du[3]; $icq=$du[7]; $site=$du[8]; $userpn=$iu;} $youwr=eregi_replace("((https?|ftp)://[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&._=/%]*(\\?[[:alnum:]?+&;_=/%]*)?)?)", "<a href='\\1' target='_blank'>\\1</a>", $du[11]);}
} while($iu > "0");
}

if ($tblstyle=="row1") {$tblstyle="row2";} else {$tblstyle="row1";}

if (!isset($m1)) {
print "<table><tr><td><span class=nav>&nbsp;&nbsp;&nbsp;<a href=index.php class=nav>$fname</a> <a href=index.php?fid=$fid class=nav>$frname</a> <a href='index.php?fid=$fid&id=$dt[7]' class=nav><strong>$dt[3]</strong></a></span></td></tr></table>";

print"<table class=forumline width=100% cellspacing=1 cellpadding=3><tr>
<th class=thLeft width=150 height=26 nowrap=nowrap>Автор</th>
<th class=thRight nowrap=nowrap>Сообщение</th>"; $m1="1"; }

print"</tr><tr height=150><td class=$tblstyle valign=top><span class=name><BR><center>";


// Проверяем: это гость?
if (!isset($youwr)) {if (strlen($dt[2])>5) {print "$dt[0] ";} else {print"$dt[0] ";} $kuda=$fm-1; print" <a href='javascript:%20x()' onclick=\"DoSmilie('[b]$dt[0][/b], ');\" class=nav>".chr(149)."</a><BR><br>
<a name='m$fm' href='#m$kuda' onclick=\"window.open('tools.php?event=mailto&email=$dt[2]&name=$dt[0]','email','width=520,height=300,left=170,top=100')\"><img src='$fskin/ico_pm.gif' border=0 alt='ЛС'></a><br><BR><small>$guest</small>";}


else {
$codename=urlencode($dt[0]);
print "<a name='m$fm' href='tools.php?event=profile&pname=$codename' class=nav>$dt[0]</a> <a href='javascript:%20x()' name='a$fm' onclick=\"DoSmilie('[b]$dt[0][/b], ');\" class=nav>".chr(149)."</a><BR><BR><small>";
if (strlen($status)>2 & $dt[1]=="да" & isset($youwr)) {print"$status";} else {print"$users";}
if (isset($reiting)) {if ($reiting>0) {echo'<BR>'; if (is_file("$fskin/star.gif")) {for ($ri=0;$ri<$reiting;$ri++) {print"<img src='$fskin/star.gif' border=0>";} } }}

if (isset($youavatar)) { if (is_file("avatars/$youavatar")) {$avpr="$youavatar";} else {$avpr="noavatar.gif";}
print "<BR><BR><img src='avatars/$avpr'><BR> <!--
<a href='tools.php?event=profile&pname=$dt[0]'><img src='$fskin/profile.gif' alt='Профиль' border=0></a>
<a href='$site'><img src='$fskin/www.gif' alt='www' border=0></a><BR>
<a href='$icq'><img src='$fskin/icq.gif' alt='ICQ' border=0></a>
<a href='#$fm' onclick=\"window.open('tools.php?event=mailto&email=$dt[3]&name=$dt[0]','email','width=400,height=390,left=100,top=100')\"><img src='$fskin/ico_pm.gif' alt='ЛС'></a>-->";}
} // isset($youwr)

if (isset($youwr) and is_file("$datadir/userstat.dat")) { // ТОЛЬКО участники видят всю репутацию! ;-)
if (isset($ulines[$userpn])) {
if (strlen($ulines[$userpn])>5) {
$ddu=explode("|",$ulines[$userpn]);
if ($wrfname!=$dt[0]){$winop="window.open('tools.php?event=repa&name=$dt[0]&who=$userpn','repa','width=500,height=190,left=100,top=100')";} else {
$winop="alert('Поднимать рейтинг самому себе ЗАПРЕЩЕНО!!!');";}

print"</small></span><br>

<fieldset align=center style='width:90%; color:#646464'><noindex><legend STYLE='font-size:11px; font-weight:bold;'>Статистика:</legend></noindex>

<div style='PADDING-LEFT: 7px;PADDING-BOTTOM: 5px' align=left class=gensmall>Тем создано: $ddu[1]<br>
Сообщений: $ddu[2]<br>
Репутация: $ddu[3] <A href='#$fm' style='text-decoration:none' onclick=\"$winop\">&#177;</A><br>
<!--Предупреждения: $ddu[4]<br>--></span></fieldset>"; }}}

print "</td><td class=$tblstyle width=100% height=28 valign=top><table width=100% height=100%><tr valign=center><td colspan=2><span class=postbody>$dt[4]</span>";





//  БЛОК ГОЛОСОВАНИЯ - если есть то выводим!!!! *************************************

if ($printvote==null) {$printvote=1; // Печатаем блок только один раз
if (is_file("$datadir/$id-vote.dat")) { $vlines=file("$datadir/$id-vote.dat");
if (sizeof($vlines)<1) {exit("<center>Файл данных $id-vote.dat пуст!");}
$vitogo=count($vlines); $vi=1; $vdt=explode("|",$vlines[0]);

print"<center>
<TABLE cellPadding=3 align=center border=0><TBODY><TR><TD vAlign=top align=middle>

<TABLE bgcolor=navy cellSpacing=1 cellPadding=0 align=center border=0><TR><TD>

<TABLE bgcolor=#ffffff cellSpacing=0 cellPadding=1 align=center border=0>
<FORM name=wrvote action='vote.php' method=post target='WRGolos'>
<TR><TD colspan=3 align=middle bgColor=#FFFFFF><B>&nbsp;$vdt[0]&nbsp;</B></TD></TR>
<TR><TD colspan=3><img width=100% height=1></TD></TR>

<TR><TD><TABLE border=0 cellSpacing=0 cellPadding=2 width=100%><TBODY>";

do {$vdt=explode("|",$vlines[$vi]);

print"<TR>
<TD width=55>&nbsp;</TD><TD><INPUT name='votec' type=radio value='$vi'></TD>
<TD>&nbsp;<B>$vdt[0]</B></TD>
</TR>";

$vi++;
} while($vi<$vitogo);

print "<INPUT name='id' type=hidden value='$id'><TR><TD colspan=3 align=center><INPUT type=submit value='проголосовать' onclick=\"window.open('vote.php','WRGolos','width=550,height=300,left=250,top=150,toolbar=0,status=0,border=0,scrollbars=0')\" border=0></TD></TR>
</FORM></TBODY></TABLE>
</TBODY></TABLE>
</TBODY></TABLE>
</TD></TR></TABLE>";
}}




print"</td></tr>";


if (isset($youwr)) {if (strlen($youwr)>3) {print "<tr><td valign=bottom><span class=postbody>--------------------------------------------------<BR><small>$youwr</small>";}} // печатаем подпись участника


// Если файл прикреплён к сообщению - то показываем значёк и ссылку на него
if (isset($youwr)) {print"</TD><TD valign=bottom align=right width=350>";} else {print"<TR><TD>";}
if (isset($dt[12])) {if ($dt[12]!="") {if (is_file("$filedir/$dt[13]")) {$fsize=round($dt[14]/10.24)/100; print"<span class=postbody><a href='$filedir/$dt[13]'><img border=0 src='$fskin/ico_file.gif'> $dt[13]</a> ($fsize Кб.)</span></TD></TR>";}}} 


print"</table></td></tr><tr>
<td class=row3 valign=middle><span class=postdetails><I>Сообщение # <B>$fm.</B></I></span></td>
<td class=row3 width=100% height=28 nowrap=nowrap><span class=postdetails>Отправлено: <b>$dt[5]</b> - $dt[6]

<noindex><!--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href=''>ответить на сообщение</a></noindex>-->
</span></td>
</tr><tr><td class=spaceRow colspan=2 height=1><img src=\"$fskin/spacer.gif\" width=1 height=1></td>";

} // если строчка потерялась

} while($fm < $lm);

echo'</tr></table>';


// выводим СПИСОК СТРАНИЦ
$maxpage=ceil(($maxi+1)/$qq); if ($page>$maxpage) {$page=$maxpage;}
echo'<table width=100%><tr><td align=center colspan=3><span class=nav>Страницы:&nbsp; ';
if ($page>=4 and $maxpage>5) print "<a href=index.php?fid=$fid&id=$id&page=1>1</a> ... ";
$f1=$page+2; $f2=$page-2;
if ($page<=2) {$f1=5; $f2=1;} if ($page>=$maxpage-1) {$f1=$maxpage; $f2=$page-3;} if ($maxpage<=5) {$f1=$maxpage; $f2=1;}
for($i=$f2; $i<=$f1; $i++) {if ($page==$i) {print "<B>$i</B> &nbsp;";} else {print "<a href=index.php?fid=$fid&id=$id&page=$i>$i</a> &nbsp;";}}
if ($page<=$maxpage-3 and $maxpage>5) print "... <a href=index.php?fid=$fid&id=$id&page=$maxpage>$maxpage</a>";
echo'</span></td></tr></table>';


if ($cangumsg=="0" and !isset($wrfname)) {print"<center><h5>Администратор запретил отвечать гостям на сообщения! Для регистрации пройдите по ссылке: <B><a href='tools.php?event=reg'>зарегистрироваться</a></B></h5></center><BR><BR>"; } else {
if ($closed!="yes") { 

if (isset($_COOKIE['wrfcookies'])) {$wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc); $wrfc=stripslashes($wrfc); $wrfc=explode("|", $wrfc);  $wrfpass=replacer($wrfc[1]);} else {unset($wrfpass); $wrfpass="";}

print "
<form action=\"index.php?event=addanswer&fid=$fid\" method=post name=REPLIER enctype=\"multipart/form-data\">
<input type=hidden name=id value=$id>
<input type=hidden name=userpass value=\"$wrfpass\">
<input type=hidden name=page value=$page>
<input type=hidden name=zag value=\"$dt[3]\">
<input type=hidden name=maxzd value='$maxzd'>
<table cellpadding=3 cellspacing=1 width=100% class=forumline>
<tr><th class=thHead colspan=2 height=25><b>Сообщение</b></th></tr>";

addmsg();

} else {echo'<center><font style="font-size: 16px;font-weight:bold;"><BR>Тема закрыта для обсуждения!<BR><BR>';}
}}

} // else isset(event)


?>
</td></tr></table>
<center><font size=-2><small>Powered by <a href="http://www.wr-script.ru" title="Скрипт форума" class="copyright">WR-Forum</a> &copy; 1.9 BETTA (для тестов ONLY)<br></small></font></center>
</body>
</html>
