Файл: CMS/comm/comm_chat.php
Строк: 192
<?php
if (!defined('CMS')) { die('Access Denied!'); }
$data = '';
$data = $db->selectRow("SELECT ?_comm_comm.*, ?_comm_category.*
FROM ?_comm_comm LEFT JOIN ?_comm_category
ON ?_comm_comm.`comm_cats_id` = ?_comm_category.`cats_id`
WHERE `comm_url` = ? LIMIT 1;", $soo);
if (empty($data) || !is_array($data)) {
$inSes->addMessage('Ошибка! Сообщество не найдено или ссылка неверна!');
gen_red('index', '', RND);
}
$arr_admins = @explode(',', $data['comm_admins']);
$users = array();
if ($is_logged) {
$users = $db->selectRow("SELECT * FROM ?_comm_users WHERE `cu_comm` = ? AND `cu_user` = ? LIMIT 1;", $data['comm_id'], $log);
if ($data['comm_user'] == $log) {
$is_admin_soo = true;
}
if (in_array($log, $arr_admins) && $users['cu_admin'] == 1) {
$is_moder_soo = true;
}
}
if ($data['comm_status'] == 1 && empty($users)) {
$inSes->addMessage('Чат только для участников сообщества!');
gen_red('index', '', RND);
}
# Добавление сообщения
if (!empty($_POST['add_chat'])) {
$msg = !empty($_POST['text']) ? check($_POST['text']) : '';
$_SESSION['captcha_key'] = !empty($_SESSION['captcha_key']) ? $_SESSION['captcha_key'] : NULL;
$_SESSION['captcha_failures'] = !empty($_SESSION['captcha_failures']) ? $_SESSION['captcha_failures'] : 0;
$_SESSION[SP]['crc32'] = !empty($_SESSION[SP]['crc32']) ? $_SESSION[SP]['crc32'] : NULL;
if ($is_logged) {
if (!empty($users)) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (cms_strlen($msg) >= 5 && cms_strlen($msg) < $config['chat_max_text']) {
if ( crc32($msg) <> $_SESSION[SP]['crc32'] ) {
if (is_quarantine($log)) {
if (is_flood($log)) {
$_SESSION[SP]['crc32'] = crc32($msg);
$msg = antimat($msg);
$msg = smiles($msg);
//$db->query("UPDATE ?_users SET `users_allguest` = (`users_allguest` + 1), `users_point` = (`users_point` + 1), `users_money` = (`users_money` + 5) WHERE `users_login` = ?;", $config['chat_add_point'], $config['chat_add_money'], $log);
$db->query("INSERT INTO ?_comm_chat (`chat_comm`, `chat_user`, `chat_text`, `chat_ip`, `chat_brow`, `chat_time`)
VALUES (?, ?, ?, ?, ?, ?);", $data['comm_id'], $log, $msg, $ip, $brow, SITE_TIME);
$inSes->addMessage('Сообщение успешно добавлено!', 'ok');
gen_red('chat', '', RND);
}
else $error = 'Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' секунд!';
}
else $error = 'Карантин! Вы не можете писать в течении ' . round($config['allow_karantin'] / 3600) . ' часов!';
}
else $error = 'Ошибка! Ваше сообщение <u>уже было</u> добавлено!';
}
else $error = 'Ошибка! Слишком длинное или короткое сообщение!';
}
else $error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
}
else $error = 'Ошибка! Добавлять сообщения могут только участники сообщества!';
}
else $error = 'Вы не авторизованы, чтобы добавить сообщение, необходимо';
if (!empty($error)) $inSes->addMessage($error, 'error');
}
switch($mod):
case 'chat':
show_header('Чат ' . $data['comm_name']);
echo '<div class="b"><a href="#down">' . icon('down.png') . '</a> ';
echo '<a href="' . gen_uri('chat', '', RND) . '">Обновить</a>';
if (!empty($mod) && in_array($mod,array('code','smiles','rules'))):
echo '<a href="' . gen_uri('chat', '', RND) . '">Чат</a></div>';
include( MODULES_PATH . $mod . '.inc.php' );
else:
echo '</div>';
$onpage = !empty($config['chat_num']) ? num($config['chat_num']) : 10;
if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
$rows = $db->selectPage( $total, "SELECT `c`.*, `u`.`users_gender`, `v`.`visit_nowtime`
FROM ?_comm_chat `c`
LEFT JOIN ?_users_visit `v`
ON `c`.`chat_user` = `v`.`visit_user`
LEFT JOIN ?_users `u`
ON `c`.`chat_user` = `u`.`users_login`
WHERE `chat_comm` = ?
ORDER BY `chat_time` DESC
LIMIT ?d, ?d", $data['comm_id'], $from, $onpage );
if (!empty($rows) && $total > 0) {
$i = $from + 1;
foreach($rows as $row) {
echo '<div class="b" id="u-' . $i . '"> ';
echo $i . '. ' . user_visit_icon($row['chat_user'], $row['users_gender'], $row['visit_nowtime']) . ' ';
echo users_anketa($row['chat_user']);
if ($is_logged && $log == $row['chat_user'] && $row['chat_time'] + 600 > SITE_TIME) {
echo '<div class="right"><a href="' . gen_uri('chat_edit', $row['chat_id'], RND) . '">Редактировать</a></div>';
}
else if (!empty($log) && $log != $row['chat_user']) {
echo '<div class="right">';
echo '<a href="' . gen_uri('chat_reply', $row['chat_id'], RND) . '">Отв</a> | ';
echo '<a href="' . gen_uri('chat_quote', $row['chat_id'], RND) . '">Цит</a>';
echo '</div>';
}
echo ' <small>(' . get_date($row['chat_time']) . ')</small><br />';
echo nl2br(bb_code($row['chat_text'])) . '<br />';
if (!empty($row['chat_edit'])) {
echo icon('exclamation_small.gif', 'icons');
echo '<small>Отредактировано: ' . nickname($row['chat_edit']) . ' (' . get_date($row['chat_edit_time']) . ')</small><br />';
}
if (!empty($row['chat_reply'])) {
echo nl2br(bb_code($row['chat_reply'])) . '<br />';
}
if (!empty($config['anonymity'])) {
echo '<span class="data">(' . $row['chat_brow'] . ', ' . $row['chat_ip'] . ')</span><br />';
}
echo '</div>';
$i++;
}
echo show_pages('chat', RND, 'p');
}
else {
show_error('Сообщений нет, будь первым!');
}
endif;
if ($is_logged) {
$form = new cmsForm('?rnd=' . $_SESSION['token'], 'post', ' name="form" id="form"');
$form->addTextarea('Сообщение:', 'text', request('text'));
echo $form->Submit('Написать', 'add_chat');
unset($form);
}
else {
show_login('Вы не авторизованы, чтобы добавить сообщение, необходимо');
}
echo '<div class="b">';
echo '<a href="#up">' . icon('up.png') . '</a> ';
break;
case 'chat_reply':
show_header('Ответ на сообщение');
if ($is_logged) {
$post = $db->selectRow("SELECT * FROM ?_comm_chat WHERE `chat_id` = ? AND `chat_comm` = ? LIMIT 1;", $id, $data['comm_id']);
if (!empty($post)) {
echo '<div class="b" style="min-height:30px;">';
echo '<div class="img">' . user_avatars($post['chat_user']) . '</div>';
if ($post['chat_user'] == $config['guest_name']) {
echo '<b>' . $post['chat_user'] . '</b> <small>(' . get_date($post['chat_time']) . ')</small>';
} else {
echo '<b>' . users_anketa($post['chat_user']) . '</b> <small>(' . get_date($post['chat_time']) . ')</small><br />';
echo user_title($post['chat_user']) . ' ' . user_online($post['chat_user']);
}
echo '</div>';
echo '<div class="b">Сообщение: ' . nl2br(bb_code($post['chat_text'])) . '</div>';
if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
$form = new cmsForm(gen_uri('chat', $id, 'rnd=' . $_SESSION['token']), 'post', ' name="form" id="form"');
$form->addCode(blink('*') . ' Сообщение: <small>');
$form->addCode('[<a href="' . gen_uri('chat_reply', $id, 'smiles=1') . '">Смайлы</a>] ');
$form->addCode('[<a href="' . gen_uri('chat_reply', $id, 'code=1') . '">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows += 5;">+</a>]');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows -= 5;">-</a>]');
$form->addTextarea('', 'text', '[b]' . nickname($post['chat_user']) . '[/b] ', ' id="msg" style="width:98%;"');
echo $form->Submit('Ответить', 'add_chat');
unset($form);
}
else {
show_error('Ошибка! Выбранное вами сообщение для ответа не существует!');
}
}
else {
show_login('Вы не авторизованы, чтобы отвечать на сообщения, необходимо');
}
echo '<div class="b">' . icon('return.png') . ' <a href="' . gen_uri('chat', '', RND) . '">В чат</a> | ';
break;
case 'chat_quote':
show_header('Цитирование');
if ($is_logged) {
$post = $db->selectRow("SELECT * FROM ?_comm_chat WHERE `chat_id` = ? AND `chat_comm` = ? LIMIT 1;", $id, $data['comm_id']);
if (!empty($post)) {
if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
$post['chat_text'] = nosmiles($post['chat_text']);
$post['chat_text'] = preg_replace('|[q](.*?)[/q](<br />)?|', '', $post['chat_text']);
$post['chat_text'] = str_replace(array('<br>', '<br/>', '<br />'), "n", $post['chat_text']);
$text = '[q][b]' . nickname($post['chat_user']) . '[/b] (' . get_date($post['chat_time']) . ')';
$text .= "n" . $post['chat_text'] . "[/q]n";
$form = new cmsForm(gen_uri('chat', $id, 'rnd=' . $_SESSION['token']), 'post', ' name="form" id="form"');
$form->addCode(blink('*') . ' Сообщение: <small>');
$form->addCode('[<a href="' . gen_uri('chat_quote', $id, 'smiles=1') . '">Смайлы</a>] ');
$form->addCode('[<a href="' . gen_uri('chat_quote', $id, 'code=1') . '">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows += 5;">+</a>]');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows -= 5;">-</a>]');
$form->addTextarea('Сообщение:', 'text', $text, ' id="msg" style="width:98%;"');
echo $form->Submit('Цитировать', 'add_chat');
unset($form);
}
else {
show_error('Ошибка! Выбранное вами сообщение для ответа не существует!');
}
}
else {
show_login('Вы не авторизованы, чтобы отвечать на сообщения, необходимо');
}
echo '<div class="b">' . icon('return.png') . ' <a href="' . gen_uri('chat', '', RND) . '">В чат</a> | ';
break;
case 'chat_edit':
if ($is_logged) {
$post = $db->selectRow("SELECT * FROM ?_comm_chat
WHERE `chat_id` = ? AND `chat_comm` = ? AND `chat_user` = ? LIMIT 1;", $id, $data['comm_id'], $log);
if (!empty($post)) {
if ($post['chat_time'] + 600 > SITE_TIME) {
if (!empty($_POST['submit'])) {
$msg = !empty($_POST['text']) ? check($_POST['text']) : '';
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (cms_strlen($msg) >= 5 && cms_strlen($msg) < $config['chat_max_text']) {
$msg = antimat($msg);
$msg = smiles($msg);
$db->query("UPDATE ?_comm_chat SET `chat_text` = ?, `chat_edit` = ?, `chat_edit_time` = ?
WHERE `chat_id` = ?;", $msg, $log, SITE_TIME, num($post['chat_id']));
$inSes->addMessage('Сообщение успешно отредактировано!', 'ok');
gen_red('chat', '', RND);
}
else $inSes->addMessage('Ошибка! Слишком длинное или короткое сообщение!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
show_header('Поправка сообщения');
$post['chat_text'] = nosmiles($post['chat_text']);
$post['chat_text'] = str_replace(array('<br>', '<br/>', '<br />'), "n", $post['chat_text']);
$post['chat_text'] = html_entity_decode($post['chat_text'], ENT_QUOTES, 'UTF-8');
echo '<div class="b"> <b>' . nickname($post['chat_user']) . '</b> <small>(' . get_date($post['chat_time']) . ')</small><br /></div>';
if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
$form = new cmsForm(gen_uri('chat_edit', $id, 'rnd=' . $_SESSION['token']), 'post', ' name="form" id="form"');
$form->addCode(blink('*') . ' Сообщение: <small>');
$form->addCode('[<a href="' . gen_uri('chat_edit', $id, 'smiles=1') . '">Смайлы</a>] ');
$form->addCode('[<a href="' . gen_uri('chat_edit', $id, 'code=1') . '">ББ-коды</a>]</small>');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows += 5;">+</a>]');
$form->addCode(' [<a href="#form" onclick="document.form.msg.rows -= 5;">-</a>]');
$form->addTextarea('', 'text', $post['chat_text'], ' id="msg" style="width:98%;"');
echo $form->Submit('Редактировать', 'submit');
unset($form);
}
else {
show_header('Поправка сообщения');
show_error('Ошибка! Редактирование невозможно, прошло более 10 минут!!');
}
}
else {
show_header('Поправка сообщения');
show_error('Ошибка! Сообщение удалено или вы не автор этого сообщения!');
}
}
else {
show_header('Поправка сообщения');
show_login('Вы не авторизованы, чтобы редактировать сообщения, необходимо');
}
echo '<div class="b">' . icon('return.png') . ' <a href="' . gen_uri('chat', '', RND) . '">В чат</a> | ';
break;
endswitch;
echo ' <a href="' . gen_uri('index', '', RND) . '">В сообщество</a> | ';
echo '<a href="../' . gen_uri('cats', $data['cats_id'], RND) . '">' . $data['cats_name'] . '</a></div>';
show_footer();
?>