-= n0b0dy =-

Зарегистрирован: Oct 2001
Место проживания: rus|53
Публикаций: 624
Статус:  |
Итак принимайте: хак, который позволяет объединять сообщения в одно, если пользователь отправляет их в одну и ту же тему в течений x секунд времени, и при этом является последним автором в теме, короче Ð_у-Борду смотрите...
Написано за короткий промежуток времени, тестилось только на локале, выводы делайте сами -> хотите устанавливайте, хотите нет.
Итак делаем следующее изменение в файле newreply.php:
Ищем сей фрагмент
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,at
tachmentid,pagetext,allowsmilie,showsignature,ipad
dress,iconid,visible) VALUES(NULL,'$threadid','".addslashes(htmlspecialchars($title))."','".addslashes($postusername)."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)." ','$allowsmilie','$signature','$ipaddress','$iconi
d','$visible')");
<... Вырезано цензурой ....>
И оканчивая строками:
$DB_site->query("UPDATE thread SET lastpost='".time()."',replycount=replycount+1,lastposter='".addslashes($postusername)."' WHERE threadid='$threadid'");
}
}
Так вот этот фрагмент ремим на случай неудачи, т.е. ставим в начале такую фигулину - /* , а в конце - */
Теперь осталось после всего этого закомментированного блока вставить следующий, заменяющий его, код:
############# Begin merge posts hack by Vanish ######################
$last_post = $DB_site->query_first("SELECT * FROM post WHERE userid='$bbuserinfo[userid]' AND threadid='$threadid' ORDER BY dateline DESC LIMIT 1 ");
$last_poster = $DB_site->query_first("SELECT userid FROM post WHERE threadid='$threadid' ORDER BY dateline DESC LIMIT 1");
$time_interval = ((date("H",time()))*3600 + (date("i",time()))*60 + date("s",time()))-((date("H",$last_post[dateline]))*3600 + (date("i",$last_post[dateline]))*60 + date("s",$last_post[dateline]));
/*
Alarm/Warning/Внимание: переменная $time_interval контролирет интарвал в течении котрого посты будут склеиваться (в секундах).
Пример: если $time_interval>300, то после 5-ти (60*5 мин = 300 сек) минут посты не будут склеиваться.
При изменении $time_interval, НЕ ЗАБУДЬТЕ в Строке №1 изменить равенство $time_interval=400 на $time_interval=<ВАШЕ ВÐ_ЕМЯ>+100, где <ВАШЕ ВÐ_ЕМЯ> -
Ваш новый временной интервал.
*/
if ($time_interval<0) {$time_interval=400;} ### Строка №1
if ($time_interval>300 || !($threadid == $last_post[threadid]) || !($last_poster[userid] == $last_post[userid])) {
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,at
tachmentid,pagetext,allowsmilie,showsignature,ipad
dress,iconid,visible) VALUES (NULL,'$threadid','".addslashes(htmlspecialchars($title))."','".addslashes($postusername)."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)." ','$allowsmilie','$signature','$ipaddress','$iconi
d','$visible')");
$postid=$DB_site->insert_id();
$postadded=0;
} else {
$DB_site->query("UPDATE post SET pagetext = '". addslashes(htmlspecialchars($last_post[pagetext]))
."
[separator]Добавлено:
Тема: ".addslashes(htmlspecialchars($title))."
".addslashes(htmlspecialchars($message))."[/separator]', dateline = '".time()."' WHERE postid='$last_post[postid]'");
$postadded=1;
$threadid=$last_post[threadid];
$postid=$last_post[postid];
}
indexpost($postid,0);
if ($visible) {
if ($threadinfo[replycount]%10==0) {
$replies=$DB_site->query_first("SELECT COUNT(*)-1 AS replies FROM post WHERE threadid='$threadid'");
$DB_site->query("UPDATE thread SET lastpost='".time()."',replycount='$replies[replies]',lastposter='".addslashes($postusername)."' WHERE threadid='$threadid'");
} else {
if (!($postadded)) {
$DB_site->query("UPDATE thread SET lastpost='".time()."',replycount=replycount+1,lastposter='".addslashes($postusername)."' WHERE threadid='$threadid'");
} else {
$DB_site->query("UPDATE thread SET lastpost='".time()."',lastposter='".addslashes($postusername)."' WHERE threadid='$threadid'");
}
}
}
############# End merge posts hack by Vanish ######################
И еще один ньюанс, нужно через AdminCP создать Custom vB Code с названием: separator и телом: <hr>{param}
В принципе, если Вы не хотите чтобы склеенные сообщения разделялись горизонтальной полосой, то этот ньюанс можно и не учитывать, но в этом случае в коде хака удалите тэги [separator] и [/separator].
Пока вроде все, возможны глюки, пишите сюда и мылом, тогда они будут по возможности фикситься.
З.Ы. Да еще на случай если чего-то с инструкциями напортачил прикрепляю этот файл с изменениями. По крайней мере на локале он у меня работал 
_____________________________________________
Best regards to all from Vanish aka Jesus...
Файл: newreply.zip
Был скачан 38 раз(а).
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|