Хак: Склейка сообщений
Автор: polo
Версия VB: 3.x.x
Версия хака: 1.0
Этот хак только для пользователей netadmin.
Расспостранение данного хака вне страницах сайта
netadmin.ws запрещено.
====================
если ты это имеешь ввиду, регистрируйся на форуме у них и качай =))
Автор: Stefan 'Xenon' Kaeser
В переменной $dp_settings содержится временное значение, в течении которого сообщения вместе с вложениями будут объединятся, а также другие настройки.
Открываем файл includes/functions_newpost.php ищем
// ########### Хак от Xenon`а по предотвращению двойных сообщений #########
$dp_settings = array(
'dobump' => true, // установите это на false, если не желаете, чтобы изменялось время сообщения
'timespan' => 3600, // определяет временной промежуток, в течении которого будет объединение сообщений
'spacer' => "\n\n[b]Добавлено через ".vbgmdate('i', time()-$threadinfo['lastpost'], false, false)." минут(ы)[/b]\n", // Что должно быть между старым и новым сообщениями (по умолчанию: "Добавлено через xx минут(ы)")
'addeditedby' => false, // Должно ли добавляться "отредактировано", при объединении
);
$isdoublepost = false;
if ($type != 'thread' AND $threadinfo['lastpost'] > TIMENOW - $dp_settings['timespan'] AND $threadinfo['lastposter'] == $post['postusername'])
{
// если мы здесь, то у нас 2 сообщения подряд -> проверим получше
$doublepost = $DB_site->query_first("
SELECT postid, pagetext, post.title, post.userid, post.attach
FROM " . TABLE_PREFIX . "post AS post
LEFT JOIN " . TABLE_PREFIX . "deletionlog AS deletionlog ON(deletionlog.primaryid = post.postid AND type = 'post')
WHERE threadid = $threadinfo[threadid]
AND dateline > " . (TIMENOW - $dp_settings['timespan']) . "
AND visible = 1 AND deletionlog.primaryid IS NULL
ORDER BY dateline DESC
LIMIT 1
");
if ($doublepost['userid'] == $bbuserinfo['userid'])
{
// у нас действительно 2 сообщения подряд, теперь проверим соответствие правилам
$oldmsg = $post['message'];
$olderrors = $errors;
$post['message'] = $doublepost['pagetext'] . $dp_settings['spacer'] . $post['message'];
verify_post_errors($type, $post, $errors);
if (sizeof($errors) == 0 AND !($vboptions['attachlimit'] AND $totalattachments + $doublepost['attach'] > $vboptions['attachlimit']))
{
// всё хорошо - объединяем
$isdoublepost = true;
$post['postid'] = $doublepost['postid'];
}
else
{
// что-то не так - оставляем одиночные сообщения
$isdoublepost = false;
$post['message'] = $oldmsg;
}
unset($oldmsg);
$errors = $olderrors;
unset($olderrors);
}
}
if ($isdoublepost)
{
// У нас двойное сообщение - удалим индексацию
require_once('./includes/functions_databuild.php');
delete_post_index($doublepost['postid'], $doublepost['title'], $doublepost['pagetext']);
unset($doublepost);