Мини-чат на ajax

Статус
В этой теме нельзя размещать новые ответы.

Lange

Легенда
ZIM, при редактировании раздачи, бот ещё раз отправляет в чат сообщение о новом релизе.
 

ZIM

Пользователь
Это утверждение или вопрос?
$message = htmlspecialchars(strip_tags(trim($message)));
Все предыдущие мои каракули лучше заменить этим
 

Lange

Легенда
ZIM, утверждение, сейчас поставил у себя, создал раздачу, и отредактировал её пару раз, так бот её раза 3 или 4 сунул в чат.
 

ZIM

Пользователь
Locer, Делаем все брутально
PHP:
// Мини Чат на аякс
            if($mode == 'newtopic'){
            $shoutbox_date = time();
            $link_post = '<b style="color:red;">Внимание новый релиз !!!</b>&nbsp;&nbsp;&nbsp;<a href="viewtopic.php?t='.$topic_id.'"><b>'.str_replace("\'", "''", $subject).'</b></a>';
            $link_post = DB()->escape($link_post);
            CACHE('bb_cache')->rm('shout_data');
            DB()->query("INSERT bb_shout
                                SET
                              shout_username = 'Bot',
                              shout_user_id = -746,
                              shout_group_id = 0,
                              shout_session_time = $shoutbox_date,
                              shout_ip = '',
                              shout_text = '$link_post',
                              shout_active = 0
                          ");}
            // Мини Чат на аякс
--- добавлено: Oct 13, 2011 4:35 PM ---
$message = htmlCHR($message, false, ENT_NOQUOTES);
Я не видел её спасибо
 

ZIM

Пользователь
ADDON Авто удаление старых сообщений
Открываем config_mods.php и в конце вставляем
PHP:
// Ajax Chat prune
$bb_cfg['prune_shouts'] = 5; // day for delete(0 - no delete)
Открываем ajax.php и находим
PHP:
DB()->query('INSERT INTO bb_shout (shout_text, shout_session_time, shout_user_id, shout_ip, shout_username) VALUES ("'.DB()->escape($message).'", '.time().', '.$userdata['user_id'].', "'.USER_IP.'", "'.DB()->escape($userdata['username']).'")');
 CACHE('bb_cache')->rm('shout_data', 60);
 }
После вставляем
PHP:
if($bb_cfg['prune_shouts'] != 0 && IS_ADMIN)
 { 
 $sql = "DELETE FROM bb_shout WHERE shout_session_time<=".(time()-86400*$bb_cfg['prune_shouts']);
 DB()->query($sql);
 CACHE('bb_cache')->rm('shout_data', 60);
 }

При отправке сообщения админом будут очищаться старые сообщения
Можно этот код вставить после
PHP:
if(!$shout_data = CACHE('bb_cache')->get('shout_data', 60))
 {
Тогда сообщения удалять когда админ зайдет на страницу с чатом наверное
 

Lion18

Пользователь
Всем спс.Может кто еще исправит мод удаления?А то нажал удалить.А сообщение удаляется после обновления чата.Нужно прикрутить обновление сразу как нажал на удаление.

Очень давно видел забавный мод.Выставление часиков на ник пользователя по таймеру истечения. может кто придумать подобное?
1-й пред пользователю желтые часики.
2-й пред пользователю красные часики.
3-й бан чата.
Распространение только на чат.
 

ZIM

Пользователь
Заметил баг с кешированием в моде.
Есть переменная в которой помещен код кнопки для удаления сообщений
PHP:
$post_delete =($userdata['user_level'] == 1 || $userdata['user_level'] == 2) ? '<img src="images/shout/shout_delete.gif" title="Удалить сообщение" alt="Удалить" class="clickable" onclick="ajax.shout_del('.$shout_row['shout_id'].'); ajax.chat_message(2); return false;" style="float:right">&nbsp;' : '';

Собственно $userdata['user_level'] == 1 || $userdata['user_level'] == 2 говорит о том что если это админ или модератор то кнопка будет показана, если кто-то другой то не будет показано ничего.

Так вот когда админы пишут сообщение в кеш заносится значение такое какое должен видеть только админ = результат все видят кнопочку.

Вариант начинают общаться только пользователи и через время кнопочка исчезает так как в кеш занеслись данные те что видят пользователи = результат заходит админ кнопочек с удалением нет o_O.

Собственно не могу додуматься как реализовать что бы все было как задумано иначе код в $post_delete в принципе бесполезен и можно обойтись

PHP:
$post_delete =   '<img src="images/shout/shout_delete.gif" title="Удалить сообщение" alt="Удалить" class="clickable" onclick="ajax.shout_del('.$shout_row['shout_id'].'); ajax.chat_message(2); return false;" style="float:right">&nbsp;';

Или это только у меня такой баг? Или я чего-то не понял
 
A

Alex

Гость

ZIM, используй другой вариант куда удобней.

function shout_del()
{
global $bb_cache;
$id = (int) $this->request['id'];
DB()->query("DELETE FROM bb_shout WHERE shout_id = $id");
$this->response['id'] = $id;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху