|
| »» Реклама: | 
|
|
| |
|
|
|
Склейка сообщений. Хак.
Категория Ikonboard 2.x (Читать могут все посетители)
Автор: AlexanderIpp (От 22:34 19-07-2003) -- Просмотров: 10147 |
Этот хак добавляет новое сообщение в конец предыдущего в случае, если автор один и тот же (или IP гослей совпадает) и прошло меньше заданного периода времени. Хак делался под 4-ю версию IB от XXXX Pro, но должен работать и на любой другой, просто тут ещё идёт заточка под тамошнюю систему написания сообщений гостями под своими именами. Итак, начнём учтановку. Откройте post.cgi Найдите: Код: if ($badwords) { @pairs = split(/\&/,$badwords); foreach (@pairs) { ($bad, $good) = split(/=/,$_); $inpost =~ s/$bad/$good/ig; $intopictitle =~ s/$bad/$good/ig; $intopicdescription =~ s/$bad/$good/ig; } } my $file = "$ikondir" . "forum$inforum/$intopic.pl"; open (ENT, $file); #flock ENT, 1; $in = <ENT>; close (ENT); ($topicid, $topictitle, $topicdescription, $threadstate, $threadposts ,$threadviews, $startedby, $startedpostdate, $lastposter, $lastpostdate, $sticky) = split(/\|/,$in); if ($threadstate eq "closed" or $threadstate eq 'moved') { &error("отправке сообщения&Эта тема закрыта, новые ответы не принимаются."); }
Ниже добавьте: Код: ####склейка сообщений от AlexanderIpp #кол-во минут my $gl_num = 20; my $gl_time = time+($timezone*3600); my ($gl_membername, undef, $gl_postipaddress, undef, undef, $gl_postdate, undef) = split(/\|/, $allmessages[$#allmessages]); if ($gl_membername eq $inmembername && ($gl_time-$gl_postdate <= $gl_num*60) && (-e "members/$gl_membername.cgi" || $gl_postipaddress eq $ENV{REMOTE_ADDR})) { my @tmp_last_mess = split(/\|/, $allmessages[$#allmessages]); chomp $tmp_last_mess[6]; $tmp_last_mess[6] .= qq~
[b]Добавление от ~.dateformat($currenttime+($timezone*3600)).qq~:[/b] $inpost~; $allmessages[$#allmessages] = join ("|", @tmp_last_mess); my $filetomake = stripMETA("forum$inforum/$intopic.thd"); my $processed_data = undef; foreach (@allmessages) { chomp; $processed_data .= "$_\n"; } open(FILE, ">$filetomake"); #flock(FILE, 2); print FILE $processed_data; close(FILE); undef $processed_data; } else {
Затем найдите: Код: &whosonline("$inmembername| отправил сообщение в тему <a href=\"$threadprog?forum=$inforum&topic=$intopic\"><b>$topictitle</b></a> на форуме <a href=\"$forumsprog?forum=$inforum\"><b>$forumname</b></a>|none") if ($privateforum ne "yes");
И добавьте после этого: Код: Здесь Код: задаёт кол-во минут, по прошествии которого сообщения не будут склеены. По-умолчанию - 20 минут. Удачи! PS Хак получился меньше и проще, чем конкурирующие, м.б. я чего упустил, но врёд ли - всё работает вроде. Но всё равно, если что не так - пишите на конференцию... :) |
| Создать тему для обсуждения статьи |
| Комментировать |
|
|
|
»» Календарь: |
| Пн | Вт | Ср | Чт | Пт | Сб | Вс | | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 10 | 11 | 12 | | 13 | 14 | 15 | 16 | 17 | 18 | 19 | | 20 | 21 | 22 | 23 | 24 | 25 | 26 | | 27 | 28 | 29 | 30 | | | | | | | | | | | | | | | |
|