DimoN
Tech administrator | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору В качестве новогоднего подарка решил выложить хак "склейки постов", который уже давно был реализован на нашем форуме. Работа хака реализована следующим образом: в подпрограмме addreply скрипт считывает последнее отправленное сообщение. Если со времени его написания прошло менее двух часов, то вместо создания нового сообщения, текст добавится к старому - "склейка". При этом идет проверка на незарегистрированного пользователя, и если в идущих подряд сообщениях "Гостя" одинаковый IP, то также сработает "склейка" сообщений. Склеивание постов: IkonRussian.lib Добавить строку: Код: $ibtxt{'9989'} = "Добавление от"; | post.cgi Найти подпрограмму: Код: sub addreply { # start routine | Код: Код: $filetomake = "$ikondir" . "forum$inforum/$intopic.thd"; $filetomake = &stripMETA($filetomake); foreach $messages (@allmessages) { chomp $messages; $processed_data .= "$messages\n"; } $processed_data .= "$inmembername|$topictitle|$postipaddress|$inshowemoticons|$inshowsignature|$currenttime|$inpost"; open(FILE, ">$filetomake"); flock(FILE, 2); print FILE $processed_data; close(FILE); undef $processed_data; | Заменить на: Код: ########################################### # Склеивание постов require "$ikondir" . "data/boardstats.cgi"; #дополнение от 07.01.2002 $num = $totalthreadposts-1; ($inmembername_OLD, $topictitle_OLD, $postipaddress_OLD, $inshowemoticons_OLD, $inshowsignature_OLD, $currenttime_OLD, $inpost_OLD) = split (/\|/, $allmessages[$num]); chomp ($inpost_OLD); # Эти две строки отвечают за склеивание постов если новый пост не позднее 2х часов # Если хотите уменьшить время замените число 7200 на другое. # Если вы хотите отключить эту возможность закоментируйте две строки, и раскоментируйте третью $timelimit = $currenttime - $currenttime_OLD; if ($inmembername_OLD eq $inmembername && $timelimit < 7200 && (!($inmembername eq "$ibtxt{'0043'}" && $inmembername_OLD eq "$ibtxt{'0043'}" && $postipaddress_OLD ne $postipaddress))) { #if ($inmembername_OLD eq $inmembername) { my $current_time = $currenttime + ($timedifferencevalue*3600) + ($timezone*3600); my $current_time = &dateformat("$currenttime"); my $addon = "<p>[b]\($ibtxt{'9989'} $current_time.\)[/b]<p>"; $inpost_OLD = $inpost_OLD . $addon . "$inpost\n"; $currenttime = $currenttime_OLD; $postcountcheck = 0; foreach $postline (@allmessages) { chomp $postline; if ($postcountcheck eq $num) { $processed_data .= "$inmembername_OLD|$topictitle_OLD|$postipaddress_OLD|$inshowemoticons_OLD|$inshowsignature_OLD|$currenttime_OLD|$inpost_OLD"; } else { $processed_data .= "$postline\n"; } $postcountcheck++; } $filetoopen = "$ikondir" . "forum$inforum/$intopic.thd"; open(FILE, ">$filetoopen"); flock(FILE, 2); print FILE $processed_data; close(FILE); undef $processed_data; } else { $filetomake = "$ikondir" . "forum$inforum/$intopic.thd"; $filetomake = &stripMETA($filetomake); foreach $messages (@allmessages) { chomp $messages; $processed_data .= "$messages\n"; } $processed_data .= "$inmembername|$topictitle|$postipaddress|$inshowemoticons|$inshowsignature|$currenttime|$inpost"; open(FILE, ">$filetomake"); flock(FILE, 2); print FILE $processed_data; close(FILE); undef $processed_data; $numberofposts++; # плюс счетчик сюда впихиваем. $totalposts++; #дополнение от 07.01.2002 $addpost_ = 1; #дополнение от 07.01.2002 } ########################################## | #дополнение от 07.01.2002 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Ищем код и комментируем строку Код: $cleanmembername = $inmembername; $cleanmembername =~ s/ /\_/isg; #$numberofposts++; | Ищем код Код: $lastposter = $inmembername; $lastposttime = $currenttime; $posts++; | и меняем на Код: $lastposter = $inmembername; $lastposttime = $currenttime; if ($addpost_) {$posts++;} | склеенные посты не считаются, время поста не обновляется
---------- Мы Баним с улыбкой :) ™ |
Исправил. |