![]() |
Страницы (6): « 1 [2] 3 4 » ... Последняя » Показаны 82 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- Хаки от Netadmin или "Сделай сам" (http://netadmin.ws/forum/forumdisplay.php?forumid=65)
-- Склейка сообщений (http://netadmin.ws/forum/showthread.php?threadid=1147)
Другая проблема это время, я думал что можно сделать так: если пользователь отвечает на сообщение то проверяется предыдцщее и если это его же сообщение то текущее добавляется к предыдущему, ну там соотаетственно надпись что добавили. А вот время когда добавили не предвидется показывать.
__________________
Всегда есть решение.
и еще не забывать не плюсовать количество сообщений.
quote:
А вот время когда добавили не предвидется показывать.
quote:
и еще не забывать не плюсовать количество сообщений.
__________________
Всегда есть решение.
polo
может попробуй поднять тему на vbulletin.org?
Народ попробуйте это
Итак принимайте: хак, который позволяет объединять сообщения в одно, если пользователь отправляет их в одну и ту же тему в течений 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...
Склейка происходит в течении 5 минут. Там еще гифак есть, как оно работало у меня...
__________________
No pity, no mercy, no regret.
quote:так в том то и дело, что счетчик сообщений не считается, тема вверх не поднимается. (на RU.Board так по крайней мере, да и на хоботе наверное тоже). хак для ib-2 может кому дать, принцип посмотрите...
и еще не забывать не плюсовать количество сообщений.
__________________
"Gott weiss, ich will kein Engel sein!"
В общем принцип такой: Перед помещением сообщения в базу получить последнее сообщение в данной теме, сравнить ID полльзователя который отвечает в теме если ид пользователя совпадает с ид пользователя который поместил последенее сообщение сравнить текщее время со временем последнего сообщения если оно не больше 2 часов то к тексту последнего сообщения добавить текст добавляемого сообщения с приставкой "юзер добавил", обновить запись добавив новый текст. Также стоит проверить если юзер не аноним, помоему у анонима ид=0. В общем это все вольется в 10 строк кода. Итак кто возьмется?
__________________
Всегда есть решение.
взглянул щас на код, там еще нужно определится что делать в случае если пользователь прикрепит новый файл и в предыдущем сообщение уже есть файл можно конечно заменить текущий но если у пользователя нет таких намерений? Предлагаю в случае наличия файла добавлять новый ответ. Также следует учесть опции пользователя как подписка на тему, в случае если ее нет и пользователь выбрал эту опцию добавить подписку и при отключенной опции в случае ее наличия не удалять, с подписью думаю следует поступить также. Еще думаю следует обратить внимание на обновление рейтинга.
__________________
Всегда есть решение.
polo , мне кажется, ты перебрал в последнем посте с наворотами
может проще сделать нечто вроде выдергивание текста в какую нить переменную, и к ней приплюсовывать новое, потом эту переменную обратно вмещать, оставляя все настройки на месте. типа $inpost_OLD = $inpost_OLD . "$inpost\n";
__________________
"Gott weiss, ich will kein Engel sein!"
то что ты говоришь так и будет, но с наваротами я совсем не перебрал, это все и без того чтобы что-то добавлять будет делаться кроме голоса на тему, это действительно надо добавить, короче я начал делать, через часик можно будет посмотреть бету.
__________________
Всегда есть решение.
Конечный хак для склейки сообщений
Ð_тот хак склеивает сообщения пользователя если он пишит два и более раз подряд в одну и ту же тему в интервале времени менее двух часов.
Особенности:
Время последнего сообщения не обновляется.
Сообщения склеиваются только в том случае если пользователь не отвечает прикрепляя какой либо файл.
Обновляется поисковой индекс.
Показывается дата и время когда пользователь добавил сообщение которое полностью совместимо с поисовыми настройками форума и пользователей.
Посетите эту тему для загрузки хака и дополнительной информации.
__________________
Всегда есть решение.
Jesus Я что-то пропустил твой ответ с хаком. Мне что-то показалось что ты там обновляешь счетчики.
__________________
Всегда есть решение.
Jesus
да, все правильно, только счетчик увеличивается, может исправишь?
polo
а вот твое не пашет 
пишет
Parse error: parse error on line 220
вот, что в этой строке:
$timediffÂ_=Â_time()Â_-Â_$laspost[dateline];
ок теперь работатет, я в форме ответа его чистил от комментариев видать что-то удалил не то.
__________________
Всегда есть решение.
| Формат времени GMT. Текущее время 07:51. | Страницы (6): « 1 [2] 3 4 » ... Последняя » Показаны 82 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.