pritorian Опубликовано 24 Февраля 2005 Жалоба Поделиться Опубликовано 24 Февраля 2005 Поставил всё как сказано в антифлуд моде.. а он не работает..заменил коды в файлах, добавиол настройки, настройки появились а сам мод не срабатывает в админке поставил Enable antiflood?Merge new post with old one if last post was by same author and was posted little time ago. ДА что это может быть ?инструкция мода ниже...она хоть рабочая ? +-------------------------------------------------------------------------- | Антифлуд - склейка сообщений | ======================================== | сотворено d1 для своего форума :) | Проверялось IPB2 Final | Дата: Wed, 15 Oct 2004 | Демо: http://rhh4room.ovl.ru +--------------------------------------------------------------------------- | | Этот мод добавляет текст нового сообщения к предыдущему, если оно было | тем же автором некоторое время назад. Таким образом предотвращается | создание двойных сообщений в случае "глюка" браузера. Да и просто | позволяет не редактировать последнее сообщение с целью того, чтобы | дописать что-то, что забыл сказать. | Так же корректно цепляет аттачи. Время и разделитель настраиваются | админку. | Благодарности Vanish'у за оригинальную идею и первые реализации | для предыдущих версий форума :) | +-------------------------------------------------------------------------- Итак, приступим :). Стадия 1 (Редактирование файлов): Откройте и отредактируйте следующим образом файл /source/lib/post_reply_post.php Найдите: //----------------------------------------- // Add post to DB //----------------------------------------- $this->post['post_key'] = $this->post_key; $this->post['post_parent'] = intval($ibforums->input['parent_id']); //----------------------------------------- // Typecast //----------------------------------------- $DB->force_data_type = array( 'pid' => 'int', 'post' => 'string' ); $DB->do_insert( 'posts', $this->post ); $this->post['pid'] = $DB->get_insert_id(); //----------------------------------------- // If we are still here, lets update the // board/forum/topic stats //----------------------------------------- $this->class->pf_update_forum_and_stats($this->topic['tid'], $this->topic['title'], 'reply'); Замените на: //------------------------------------------------- // Add post to DB //------------------------------------------------- //merge posts //------------------------------------------------- // Unset append flag //------------------------------------------------- $append_post = false; //------------------------------------------------- // Are we merging or what? //------------------------------------------------- if (($this->topic['last_poster_id'] == $this->post['author_id']) and ($this->post['author_id']) and ((time() - $this->last_post) < $ibforums->vars['flood_time']) and ( $ibforums->vars['flood_enabled'] ) ) { $DB->simple_construct( array( 'select' => 'pid, post', 'from' => 'posts', 'where' => "topic_id=".$this->topic['tid']." AND author_id=".$this->post['author_id'] , 'order' => 'post_date DESC', 'limit' => array('0','1') ) ); $DB->simple_exec(); $this->lastpost = $DB->fetch_row(); $flood_separator = preg_replace ( array("/\[author\]/is", "/\[mergetime\]/is"), array($ibforums->member['name'], "[mergetime]".time()."[/mergetime]" ), $ibforums->vars['flood_separator'] ); $flood_separator = $this->class->parser->convert( array( 'TEXT' => $flood_separator, 'CODE' => $this->class->forum['use_ibc'], 'SMILIES' => $ibforums->input['enableemo'], 'HTML' => 1 ) ); if ( strlen ($this->lastpost['post'].$flood_separator.$this->post['post']) <= ($ibforums->vars['max_post_length'] * 1024) ) { //------------------------------------------------- // Set append flag //------------------------------------------------- $append_post = true; $this->post['post_key'] = $this->post_key; $this->post['post'] = $this->lastpost['post'].$flood_separator.$this->post['post']; //------------------------------------------------- // Update attachments or we'll lose them //------------------------------------------------- $DB->do_update( 'attachments', array( 'attach_post_key' => $this->post_key ), 'attach_pid='.$this->lastpost['pid'] ); //------------------------------------------------- // Update last post //------------------------------------------------- $DB->force_data_type = array( 'pid' => 'int', 'post' => 'string' ); $DB->do_update( 'posts', $this->post, "pid=".$this->lastpost['pid'] ); $this->post['pid'] = $this->lastpost['pid']; $dbs = array( 'last_title' => $this->topic['title'], 'last_id' => $this->topic['tid'], 'last_post' => time(), 'last_poster_name' => $ibforums->member['id'] ? $ibforums->member['name'] : $ibforums->input['UserName'], 'last_poster_id' => $ibforums->member['id'], ); $DB->do_update( 'forums', $dbs, "id=".intval($this->class->forum['id']) ); //---------------------------------------- // Update forum cache //---------------------------------------- $std->update_forum_cache(); $std->update_cache( array( 'name' => 'stats' , 'array' => 1, 'deletefirst' => 0, 'donow' => 1 ) ); } } //------------------------------------------------- // If append flag is not set, then just add a new post //------------------------------------------------- if ( ! $append_post ) { $this->post['post_key'] = $this->post_key; $this->post['post_parent'] = intval($ibforums->input['parent_id']); //------------------------------------------------- // Typecast //------------------------------------------------- $DB->force_data_type = array( 'pid' => 'int', 'post' => 'string' ); $DB->do_insert( 'posts', $this->post ); $this->post['pid'] = $DB->get_insert_id(); //------------------------------------------------- // If we are still here, lets update the // board/forum/topic stats //------------------------------------------------- $this->class->pf_update_forum_and_stats($this->topic['tid'], $this->topic['title'], 'reply'); } //merge posts Найдите: //------------------------------------------------- // If we are a member, lets update thier last post // date and increment their post count. //------------------------------------------------- $this->class->pf_increment_user_post_count(); Замените на: //------------------------------------------------- // If we are a member, lets update thier last post // date and increment their post count. //------------------------------------------------- //merge posts if ( ! $append_post ) { $this->class->pf_increment_user_post_count(); } //merge posts Откройте и отредактируйте следующим образом файл /source/topics.php Найдите: $row['edit_button'] = $this->edit_button($row['pid'], $poster, $row['post_date']); Добавьте ниже: $row['post'] = preg_replace ("#\[mergetime\](\S+?)\[/mergetime\]#ie", "\$std->get_time('\\1', \$ibforums->vars['flood_merge'] )", $row['post']); Стадия 2 (импорт настроек для мода): Идите в ACP -> View All General Settings -> Import an XML settings file Укажите здесь xml файл из архива (antiflood_settings.xml). Теперь идите в Topics, Posts and Polls и настройте мод. Для разделителя постов можно использовать BBCodes, смайлы, html. Так же можно использовать [author] и [mergetime] для получения имени пользователя и времени добавления. Все готово! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Dr.Freddy Опубликовано 24 Февраля 2005 Жалоба Поделиться Опубликовано 24 Февраля 2005 В среду ставил. Все работает. Ставь заново. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Deva Опубликовано 24 Февраля 2005 Жалоба Поделиться Опубликовано 24 Февраля 2005 Ну, ребят.Даже я поставила- все работаетТам важно делать все по инструкции. сказано удалить сразу использованный файл - удаляем, не откладывая в дальний ящик у меня другая проблема- не всегда и не во всех форумах это нужно, а отключается только глобально (( Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
pritorian Опубликовано 24 Февраля 2005 Автор Жалоба Поделиться Опубликовано 24 Февраля 2005 переставил, всёравно не склеивает... мдавот настройкикак написано всё в файлах поменял переставил.. ничего же сложного.. Enable antiflood?Merge new post with old one if last post was by same author and was posted little time ago. да Anti-flood effect cut-off timeMerge new post with old one if last post was *this* seconds ago. (300 sec = 5 min) 5 Post separatorRaw html. This code will appear between new post and old one when merging. <br /><br /> Merge time formatSame configuration as PHP Date M j Y, h:i A Добавлено в [mergetime]1109262070[/mergetime] Deva где там сказано удалять какой то использованный файл ? нет там такого Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
d1pro Опубликовано 24 Февраля 2005 Жалоба Поделиться Опубликовано 24 Февраля 2005 pritorian 5 секунд видимо слишком мало Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
pritorian Опубликовано 24 Февраля 2005 Автор Жалоба Поделиться Опубликовано 24 Февраля 2005 на что?? это же флуд контроль... Добавлено в [mergetime]1109264432[/mergetime] блииииинннн ! помоему врубил...это втечении какого времени он будет склеивать.. точнее если в течении например 30 секунд напишет один автор то склеит если стоит 30 сек если больше, то не склеит...мда..вот я гоню Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
MACTEP Опубликовано 25 Февраля 2005 Жалоба Поделиться Опубликовано 25 Февраля 2005 Поставил.. Работает на ура!pritorian пасиб Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
pritorian Опубликовано 25 Февраля 2005 Автор Жалоба Поделиться Опубликовано 25 Февраля 2005 это не мне пасиб а d1pro, я бы еще долго разбирался в чём проблемма, я ту настройку не так понял, думал это просто флуд контроль а не рамки времени в которых срабатывает модуль Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ved Опубликовано 27 Мая 2005 Жалоба Поделиться Опубликовано 27 Мая 2005 Такая проблема: все работает, сообщения склеиваются и т.п., НО! при отправке сообщения (например, через быстрый ответ), если происходит склейка, то окно не рефрешится. Т.е. запрос уходит и на этом все останавливается (Запрос завершен в строке состояния). Такое происходит ТОЛЬКО при склейке сообщений, если склейки нет, то все проходит нормально, страница обновляется. Где рыть? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kluivert Опубликовано 29 Мая 2005 Жалоба Поделиться Опубликовано 29 Мая 2005 а как сделать чтобы писалось через сколько добавил? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DiZzz Опубликовано 30 Мая 2005 Жалоба Поделиться Опубликовано 30 Мая 2005 ... при отправке сообщения (например, через быстрый ответ), если происходит склейка, то окно не рефрешится...<{POST_SNAPBACK}>Ага, тоже самое... Как быть ??? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ved Опубликовано 31 Мая 2005 Жалоба Поделиться Опубликовано 31 Мая 2005 Решил так:в файле post_reply_post.php перед } //------------------------------------------------- // If append flag is not set, then just add a new post //-------------------------------------------------вставил вот это:$std->boink_it($ibforums->base_url."act=ST&f=".$this->class->forum['id']."&t=".$this->topic['tid']."&view=getlastpost"); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kluivert Опубликовано 5 Июня 2005 Жалоба Поделиться Опубликовано 5 Июня 2005 а как сделать чтобы писалось через сколько добавил?<{POST_SNAPBACK}>Ну подскажите как же это сделать! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ved Опубликовано 6 Июня 2005 Жалоба Поделиться Опубликовано 6 Июня 2005 Ну подскажите как же это сделать!Если навскидку, то регекспом выдирать во время отправки из сообщения все, что между [mergetime][/mergetime], отнимать от времени, записанного в конец сообщения между какими-нибудь своими тегами (например, [sendtime]), обрабатывать, вставлять вместо [mergetime]время отправки[/mergetime].Соответственно, [sendtime] не выводить. При посылке сообщения [sendtime] менять на текущее время. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kluivert Опубликовано 6 Июня 2005 Жалоба Поделиться Опубликовано 6 Июня 2005 Чё то ваще не врубился, можно полностью строку написать как должно быть Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.