»» Сайт:
Главная
»» Программирование
Скриптовые языки (0)
Программирование (0)
»» Скрипты конференций
Ikonboard 2.x (46)
phpBB/ vBulletin/ Invision Board/ e.t.c. (PHP) (4)
UBB 5.xx/ 6.xx/ Threads (1)
Board Power/ e.t.c. (Perl) (2)
»» Идеология конференций
Обзоры (2)
Анализ (1)
»» Реклама:
Кнопка нашей конференции! Поставь себе!
»» Поиск по сайту:

По названию
По описанию
По тексту
По автору
Конференция
Склейка сообщений. Хак.
Категория 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"); 

И добавьте после этого:
Код:
} 

Здесь
Код:
my $gl_num = 20; 

задаёт кол-во минут, по прошествии которого сообщения не будут склеены. По-умолчанию - 20 минут.
Удачи!
PS Хак получился меньше и проще, чем конкурирующие, м.б. я чего упустил, но врёд ли - всё работает вроде. Но всё равно, если что не так - пишите на конференцию... :)
Создать тему для обсуждения статьи
Комментировать
»» Календарь:
ПнВтСрЧтПтСбВс
12345
6789101112
13141516171819
20212223242526
27282930
»» Конференция:
Главная
Регистрация
Файловый архив
Топ-лист
Поиск
Вход
Кто on-line:
Участники: 1
Гости: 3
Статистика:
Тем: 28570
Сообщений: 1922
Участников: 14155
»» Популярные:
Склейка ... (10147)
Быстрая ... (5490)
Различны... (5302)
Самостоя... (2603)
Просмотр... (2570)
Сортиров... (2485)
Обзор ко... (2327)
Мой бан ... (2245)
Нумераци... (2069)
Настройк... (2046)


Humorist.RU - Развлекательные страницы



На базе скрипта RFBoard | Разработка скрипта: AlexanderIpp | Сделано в России  
© 2001-2005 AlexanderIpp & FAF/RFBoard team | О защите личной информации | Правила конференции