phpBB Simple Chat v2.1.1 — AJAX чат с оповещениями о новых темах и ответах

Board index phpBBex 1.x Мастерская

Description: Только готовые решения! Статьи, заметки, моды и другие полезности для phpBBex 1.x и phpBB 3.0.x.
Moderator: Поддержка

Post #1by VEG » 02.06.2012, 20:05

Простой чат для phpBB3 в стиле чата сайта delphimaster.ru. Подходит как для phpBB, так и для phpBBex. Если вам понравился этот чат, вы сделали какие-то модификации, или просто установили его на свой форум — обязательно напишите об этом здесь, укажите ссылку на ваш форум. Мне будет очень приятно.

screenshot.png


Возможности

  • Всё AJAX
  • Приватные сообщения
  • Звуковое оповещение
  • Выбор цвета сообщений
  • Поддержка смайликов
  • Автоопределение ссылок
  • Автоблокировка флуда

Демонстрация работы

http://phpbbex.com/chat/
Имя: demo_ru
Пароль: demo_ru

Установка

Для того, чтобы установить этот чат на свой форум, необходимо выполнить несколько простых операций:
  • Скачайте
    phpbb3_simplechat.zip
    (78 KiB) Downloaded 15573 times
    (версия для 3.1-
    phpbb3_simplechat_3.1.zip
    Исправленная версия для работы на 3.1
    (78.05 KiB) Downloaded 1267 times
    )
  • Скопируйте содержимое каталога root в корень вашего форума
  • Выполните содержимое install.sql в вашей базе
  • Пройдите по адресу http://example.com/forum/chat/ и удостоверьтесь что чат работает
  • Добавьте ссылку на чат там где вам это удобно

История версий

phpBB Simple Chat v2.1.1 [10.01.2014]
  • При попадании в базу сообщения с переводом строки чат не перестаёт работать (спасибо Sumanai за замечание)
  • Настройки JOIN_MESSAGES и LEFT_MESSAGES позволяют отключать сообщения о том, что пользователи заходят в чат и покидают его
  • Настройки ANTIFLOOD_DURATION (продолжительность автоматической блокировки в секундах), ANTIFLOOD_SENSITIVITY (чувствительность, чем меньше значение, тем более чувствительна система) и ANTIFLOOD_EXTINCTION (скорость угасания, чем меньше значение, тем более чувствительна система) позволяют настраивать защиту от флуда
  • Лёгкий рефакторинг
  • Комментарии переведены на английский язык
  • Код для поддержки устаревшего IE8 удалён

phpBB Simple Chat v2.1 [03.09.2012]
  • HTML5 шаблон
  • HTML5 <audio> для уведомлений
  • Настройки хранятся в локальном хранилище (а не в куках как было раньше)
  • Свежий jQuery из Google CDN
  • Код для поддержки устаревших IE6-IE7 удалён

phpBB Simple Chat v2.0 [27.05.2011] (не публиковалась)
  • Отображение времени в корректном часовом поясе (что выбрал пользователь в профиле)
  • Счётчик количества сообщений за всё время и счётчик количества обновлений за сеанс
  • Когда кто-то переписывается в привате другие не пользователи не слышат звуковое уведомление
  • Хранение 100 последних сообщений вместо 30
  • Сессия длится 3 минуты вместо 1.5
  • Максимальная длина сообщения 250 символов вместо 200
  • По умолчанию звук включен

phpBB Simple Chat v2.0b [18.01.2009]
  • Портирован на phpBB 3
  • Без пасхальных яиц и гостевого входа

phpBB Simple Chat v1.0a [21.03.2008]
  • Стабильная версия для phpBB 2
  • Полная совместимость с IE6
  • Звуковые уведомления через Flash
  • Было несколько забавных пасхальных яиц (робот отвечал на приветствие и слово «упячка»)
  • Была отдельная версия с гостевым входом без регистрации

phpBB Simple Chat v0.0 [23.03.2006] (не публиковалась)
  • Первые наброски

Форумский бот для phpBB Simple Chat
Скачать:
phpbb3_simplechat_bot.zip
(19.87 KiB) Downloaded 1684 times


Небольшой аддон к phpBB Simple Chat, который оповещает в чате о новых темах и ответах в форуме.
Image
Установка требует всего 2 небольшие модификации в одном файле. Пока что все строковые переменные находятся прямо в коде. Все это не сложно перевести на другой язык, изменить имя бота и т.д. В следующей версии постараюсь вынести все это в языковые переменные.

Дополнительные правки


Ссылки

Русскоязычная поддержка на phpbbguru.net
Англоязычная поддержка на phpbb.com
Last edited by Sumanai on 03.12.2015, 20:07, edited 5 times in total.
Reason: Дополнения для чата
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1573
With us: 5 years 2 months


Post #181by Гость » 29.07.2013, 22:00

Установил на форумы
langforum.net
ascienceforum.com

А можно сделать, чтобы для каждого форума был свой отдельный чат, а не один чат на весь форум?
Гость
Гость

Post #182by VEG » 29.07.2013, 22:01

Гость wrote:А можно сделать, чтобы для каждого форума был свой отдельный чат, а не один чат на весь форум?
Вы имеете в виду на каждый раздел одного форума по чату? Такой функции не предусмотрено.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1573
With us: 5 years 2 months

Post #183by Гость » 29.07.2013, 22:55

Да. Жалко, что не предусмотрено :sad:
Гость
Гость

Post #184by Girl » 20.08.2013, 22:03

Всем привет)
Как сделать так, чтобы пользователь не мог писать в чате ? Т.е. он заблокирован,группа была выставлена по умолчанию - заходит и пишет себе спокойненько :evil: Перенесла в группу "гости " , сделала по умолчанию- нет, опять заходит пишет.... В правах выставила всё "никогда", бесполезно. Как мне ему закрыть чат? А то как-то совсем непорядок получается :( запретить его емейл ...?
Girl
Мастер
Avatar
Reputation: 18
With us: 4 yaers 8 months

Post #185by VEG » 21.08.2013, 07:24

Girl, нет, его нужно просто внести в чёрный список (забанить). Правда, в таком случае перекроется доступ полностью ко всему форуму, включая сайт. Где-то здесь пробегали куски кода для реализации такого права, но по умолчанию система прав игнорируется. Учитывается только бан.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1573
With us: 5 years 2 months

Post #186by Girl » 31.08.2013, 19:53

Это снова я :smile: Один пользователь говорит что его постоянно выкидывает с чата (встроен в главную стр.) , т.е. за день 3 раза , хотя в то же время на форуме всё нормально- под своим логином висит . В чем может быть причина выбрасывания с чата?
Girl
Мастер
Avatar
Reputation: 18
With us: 4 yaers 8 months

Post #187by Юрий » 01.09.2013, 09:04

Евгений, добрый день!
Попробовал вчера Ваш чат, поделюсь впечатлениями!
1. Ужасно раздражает Нас приветствует Нас покидает, скажите, можно ли это отключить?
2. Задержка флуда 30 секунд, как отключить?
3. Ограничение сообщения 255 символов как исправить на 2000?
4. Как банить пользователей? (В коде есть проверка, но она неактивна.)
5. Как удалять сообщения не правя напрямую базу данных?
Юрий
Гость

Post #188by VEG » 01.09.2013, 11:07

Юрий wrote:1. Ужасно раздражает Нас приветствует Нас покидает, скажите, можно ли это отключить?
Удалите в index.php чата этот код:
Code: Select all
// Помечаем тех кто ушел
$die_time = time() - SESSION_LIFE;
$sql = "SELECT *
   FROM " . CHAT_SESSIONS_TABLE . "
   WHERE last_active < '{$die_time}'
   ORDER BY last_active";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
   // Сообщение что ушел пользователь
   $message = array(
      'user_id'   => $row['user_id'],
      'username'   => $row['username'],
      'time'      => $row['last_active'] + SESSION_LIFE,
      'text'      => MSG_LEFT,
      'color'      => '000000'
   );
   $sql = "INSERT INTO " . CHAT_MESSAGES_TABLE . " " . $db->sql_build_array('INSERT', $message);
   $db->sql_query($sql);   
}
И вот этот:
Code: Select all
   // Сообщение что зашел новый пользователь
   $message = array(
      'user_id'   => $user->data['user_id'],
      'username'   => $user->data['username'],
      'time'      => time(),
      'text'      => MSG_JOIN,
      'color'      => '000000'
   );
   $sql = "INSERT INTO " . CHAT_MESSAGES_TABLE . " " . $db->sql_build_array('INSERT', $message);
   $db->sql_query($sql);

Юрий wrote:2. Задержка флуда 30 секунд, как отключить?
Вся логика этого находится здесь (можете подстраивать, изменяя цифры):
Code: Select all
   // Обновляем время последней активности и необходимость блокировки
   $chat_session['user_activity'] -= time() - $chat_session['last_active'];
   if($chat_session['user_activity'] < 0) $chat_session['user_activity'] = 0;
   if(!$chat_session['user_blocked'] && $action == ACT_SAY)
   {
      $chat_session['user_activity']+=3;
      if($chat_session['user_activity'] > 9)
      {
         $chat_session['user_activity'] = 30; // секунд блокировки
         $chat_session['user_blocked'] = 1;
      }
   }
   if($chat_session['user_activity'] == 0)
   {
      $chat_session['user_blocked'] = 0;
   }

Юрий wrote:3. Ограничение сообщения 255 символов как исправить на 2000?
Изменить тип колонки с текстом сообщения с VARCHAR(255) на TEXT, затем изменить значение максимума вот тут:
Code: Select all
      // Длина фразы не более 255
      if(utf8_strlen($text) > 255) $text = utf8_substr($text, 0, 255);
Ну и в HTML коде лимит убрать.

Юрий wrote:4. Как банить пользователей? (В коде есть проверка, но она неактивна.)
Не предусмотрено чатом. Вы можете забанить пользователя на форуме, и он «забанится» в чате тоже.

Юрий wrote:5. Как удалять сообщения не правя напрямую базу данных?
Не предусмотрено. Сообщения всё равно удаляются из истории достаточно быстро, смысла их править нет.

Added after 4 minutes 53 seconds:
Girl wrote:Это снова я :smile: Один пользователь говорит что его постоянно выкидывает с чата (встроен в главную стр.) , т.е. за день 3 раза , хотя в то же время на форуме всё нормально- под своим логином висит . В чем может быть причина выбрасывания с чата?
Возможно, плохое соединение. Допустим, Firefox при проблемах с соединением пробует отправить второй запрос без cookies (и без авторизации соответственно), и если на запрос без cookies пришёл корректный ответ, он «забывает» cookies что знал. Соответственно авторизация и слетает. Ну а чат регулярно запрашивает обновления, и встроен он у вас в фрейме. Соответственно может получиться так, что во фрейме отобразится форма входа, а в главной странице будет отображаться, что пользователь авторизован. Но если пользователь обновит страницу, то на сайте тоже не будет авторизации в таком случае.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1573
With us: 5 years 2 months

Post #189by Юрий » 01.09.2013, 14:52

Евгений, спасибо, все получилось! :smoke:

Для выборочного доступа юзеров в чат сделал группу и проверку в чат-бади:
Code: Select all
<!-- IF S_USER_LOGGED_IN and S_GROUP_21 and not S_IS_BOT -->
Прокатит на первое время, потом буду думать.
Чат понравился, хотя нужно многое допиливать! :smile:

Added after 58 minutes 56 seconds:
Или можно в самом php коде сделать проверку!
Code: Select all
// Задаем идентификаторы (id) групп, членам которых разрешен доступ в чат.
    $allowed = array(2,8,21);       // Список id групп, разделенных запятыми

    // Проверяем, является ли юзер членом перечисленных групп.
    $sql = 'SELECT user_id
        FROM ' . USER_GROUP_TABLE . '
        WHERE ' . $db->sql_in_set('group_id', $allowed) . '
              AND user_id = '  . $user->data['user_id'];
    $result = $db->sql_query_limit($sql, 1, 0);
    if (!$data = $db->sql_fetchfield('user_id', false, $result))
    {
        trigger_error('Доступ в чат для данной учетной записи закрыт!');
    }
Юрий
Гость

Post #190by Sumanai » 01.09.2013, 18:20

Юрий wrote:Для выборочного доступа юзеров в чат сделал группу и проверку в чат-бади:

Здесь где- то был рецепт с форумным правом доступа к чату. Хардкод номера группы в коде- не очень красиво.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1578
With us: 4 yaers 4 months

&&

Post #191by Юрий » 02.09.2013, 15:42

VEG wrote:Удалите в index.php чата этот код:
Евгений, другая проблема,Ю с удалением кода, теперь все пользователи, однажды зашедшие в чат, висят в списке справа, как так сделать, чтобы они удалялись при закрытии окна чата или длительной неактивности?
Юрий
Гость

Post #192by Sumanai » 02.09.2013, 15:49

Юрий wrote:как так сделать, чтобы они удалялись при закрытии окна чата или длительной неактивности?

Кажись VEG дал больно большой кусок. Вставь обратно, откуда удалил первый кусок, вот эту часть:
Code: Select all
// Помечаем тех кто ушел
$die_time = time() - SESSION_LIFE;
$sql = "SELECT *
   FROM " . CHAT_SESSIONS_TABLE . "
   WHERE last_active < '{$die_time}'
   ORDER BY last_active";
$result = $db->sql_query($sql);
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1578
With us: 4 yaers 4 months

Post #193by Юрий » 02.09.2013, 15:52

Спасибо Вам, попробую!
Юрий
Гость

Post #194by VEG » 04.09.2013, 15:36

Sumanai, Юрий, по идее только вот эту строчку нужно вернуть:
Code: Select all
// Помечаем тех кто ушел
$die_time = time() - SESSION_LIFE;
С ней я действительно погорячился, не заметил :)
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1573
With us: 5 years 2 months

Post #195by Joliat » 18.09.2013, 21:49

Мужики, первый раз прикручиваю чат, сильно не пинайте, остановился на Вашем. Вот на этот форум http://prt.zp.ua/forum/. Скажите в какую часть темы вставлять код?
Joliat
Новичок
Reputation: 0
With us: 3 yaers 9 months

Post #196by HD321kbps » 18.09.2013, 23:09

VEG wrote:Установка

Для того, чтобы установить этот чат на свой форум, необходимо выполнить несколько простых операций:
Скачайте
phpbb3_simplechat.zip
Скопируйте содержимое каталога root в корень вашего форума
Выполните содержимое install.sql в вашей базе
Пройдите по адресу http://example.com/forum/chat/ и удостоверьтесь что чат работает
Добавьте ссылку на чат там где вам это удобно
HD321kbps M
Гуру
Avatar
Age: 26
Location: Армянск
Reputation: 345
With us: 4 yaers 3 months

Post #197by VEG » 19.09.2013, 13:18

Joliat wrote:Скажите в какую часть темы вставлять код?
Имеете в виду куда вставлять код из файла SQL? Поищите в админке хостинга PhpMyAdmin, там выберите БД, в которую вы установили форум, затем зайдите на вкладку SQL, вставьте содержимое файла install.sql и выполните его.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1573
With us: 5 years 2 months

Post #198by angst66 » 25.09.2013, 12:31

Реально прикрутить этот мод http://www.phpbbguru.net/community/topic40257.html#p410489 к чату?
angst66
Бывалый
Reputation: 13
With us: 4 yaers 9 months

Post #199by VEG » 25.09.2013, 21:15

Прикрутить не получится, нужно заниматься портированием. Вообще на сколько я вижу там используются экспериментальные возможности Google Chrome, что не очень хорошо. По крайней мере до тех пор, пока это не войдёт в стандарты. Вроде как Google обещал избавиться от префиксов webkit (в связи с переходом на собственный форк движка под названием Blink), так что может вообще перестать работать при одном из обновлений.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1573
With us: 5 years 2 months

Post #200by Boroda » 10.10.2013, 02:49

Если сообщение склеивается с предыдущим бот не информирует об этом. Как исправить?
И чет как-то появилась задержка при размещении новых сообщений. :(
Boroda M
Мастер
Avatar
Age: 42
Reputation: 38
With us: 5 years 1 month

PreviousNext

Return to Мастерская