Файл: chat/index.php
Строк: 339
<?
include('../core/core.php');
include(MAINDIR.'style/head.php');
title('Мини - Чат :)');
if(is_user()){
include(MAINDIR.'sys/session_chat.php');
$my = DB::run() -> queryFetch("SELECT * FROM `users` WHERE `login`=? LIMIT 1",array(check($_COOKIE['login'])));
$admin = $my['status'];
echo '<div class="title">Наш мини-чат!</div>';
$id = abs(intval($_GET['id']));
switch ($mode):
case 'index':
echo'<div class="menu">';
echo'Выберите комнату';
echo'</div>';
echo'<div class="menu_2">';
echo'<a href="/games/vic.php">Викторина</a>';
echo'</div>';
define('TOPAGE',10); $num = TOPAGE;
$links = '?mode=index&page=';
$page = intval($_GET['page']);
$posts = DB::run() -> query("SELECT * FROM `chat`") -> rowCount();
$total = intval(($posts - 1) / $num) + 1;
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$themes = DB::run()->query("SELECT * FROM `chat` ORDER BY `id` DESC LIMIT $start,".TOPAGE."");
$themes = $themes -> fetchAll();
foreach($themes AS $u){
if($u['status'] == 'Admin' || $u['status'] == 'admin'){$img = '<img src="/images/personal_chat_admin.png">'; } else {$img = '<img src="/images/personal_chat_user.png">';}
echo'<div class="menu">';
echo $img.' <a href="?mode=door&id='.$u['id'].'">'.$u['title'].'</a>';
echo'</div>';
}
if ($page != 1) $pervpage = '<a href= '.$links.'1><<</a> <a href= '.$links.''. ($page - 1) .'><</a> ';
if ($page != $total) $nextpage = ' <a href= '.$links.''. ($page + 1) .'>></a> <a href= '.$links.'' .$total. '>>></a>';
if($page - 2 > 0) $page2left = ' <a href= '.$links.''. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href= '.$links.''. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href= '.$links.''. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href= '.$links.''. ($page + 1) .'>'. ($page + 1) .'</a>';
if($posts == 0){ echo'<div class="menu">Комнаты еще не созданы!</div>'; } else {echo '<div class="menu_2">'.$pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage.'</div>'; }
break;
case 'new_msg':
echo'<div class="menu">';
$id = abs($_GET['id']);
if($id == !NULL){
$msg = check($_POST['msg']);
$s = $_SESSION['antiflood'] - time();
if($_SESSION['antiflood'] >= time()){echo'Антифлуд! Разрешается отправлять сообщения раз в 30 секунд!<br />
Осталось: >'.formattime($s).'</div>';
}else{
if (mb_strlen($msg) >= 5 && mb_strlen($msg) < 500) {
$data = times();
$login = $my['login'];
$time = time() + (60 * 15);
$ip = preg_replace('|[^0-9.]|', '', check($_SERVER['REMOTE_ADDR']));
$arbuz = explode("/",$_SERVER['HTTP_USER_AGENT']);
$arbuz = check($arbuz[0]);
$msg = no_br($msg);
$msg = bb($msg);
$msg = antimat($msg);
$msg = smiles($msg);
$ck = DB::run() -> queryFetch("SELECT * FROM chat_msg WHERE `id_chat`=? ORDER BY `id` DESC LIMIT 1",array($id));
if($ck['msg'] == $msg){ echo'Ваше сообщение повторяет предыдущее!';} else {
DB::run()->query("INSERT INTO `chat_msg`(`id_chat`, `login`, `msg`, `data`, `arbuz`,`ip`, `time`) VALUES (?,?,?,?,?,?,?)",array($id,$login,$msg,$data,$arbuz,$ip,$time));
header('Location: ?mode=door&id='.$id.'');
$set = DB::run() -> queryFetch("SELECT * FROM setting WHERE `id`=?",array(1));
$_SESSION['antiflood'] = time() + $set['antiflood'];
user_live($my['login'],1,1,0);
}
} else { echo'Ошибка! Слишком длинное или короткое сообщение!'; }
}
} else {echo'Ошибка!';}
echo'</div>';
break;
case 'otvet':
$id = abs($_GET['id']);
$chat = DB::run() -> queryFetch("SELECT * FROM chat_msg WHERE `id`=?",array($id));
echo'<div class="menu">'.$chat['msg'].'</div>';
echo'<div class="menu">
<form action="?mode=otvet_ok&id='.$chat['id_chat'].'" method="post">
<input name="id_msg" type="hidden" value="'.$chat['id'].'" />
<input name="login" type="hidden" value="'.$chat['login'].'" />
Сообщение (<a href="/pages/smiles.php">Смайлы</a>/<a href="/pages/bb.php">Теги</a>):<br />
<textarea name="msg" cols="40" rows="5"></textarea><br />
<input type="checkbox" name="ck1"> Оповестить по привату<br />
<input type="checkbox" name="ck2"> Приватно<br />
<input name="" type="submit" value="Добавить" />
</form>
</div>';
break;
case 'otvet_ok':
echo'<div class="menu">';
$id = abs(intval($_GET['id']));
if($id == !NULL){
$msg = check($_POST['msg']);
$log = check($_POST['login']);
$id_msg = check($_POST['id_msg']);
$s = $_SESSION['antiflood'] - time();
if($_SESSION['antiflood'] >= time()){echo'Антифлуд! Разрешается отправлять сообщения раз в 30 секунд!<br />
Осталось: >'.formattime($s).'</div>';
}else{
if (mb_strlen($msg) >= 5 && mb_strlen($msg) < 500) {
$data = times();
$login = $my['login'];
$time = time() + (60 * 15);
$ip = preg_replace('|[^0-9.]|', '', check($_SERVER['REMOTE_ADDR']));
$arbuz = explode("/",$_SERVER['HTTP_USER_AGENT']);
$arbuz = check($arbuz[0]);
$msg = no_br($msg);
$msg = bb($msg);
$msg = antimat($msg);
$msg = smiles($msg);
$text = '<strong>'.$log.'</strong>, '.$msg.'';
$t = DB::run() -> queryFetch("select * from `chat_msg` where `id` =?",array($id_msg));
$l = $t['login'];
if(isset($_POST['ck2'])){$privat = $l;} else { $privat = NULL; }
DB::run()->query("INSERT INTO `chat_msg`(`id_chat`, `login`, `msg`, `data`, `arbuz`,`ip`, `time`, `privat`) VALUES (?,?,?,?,?,?,?,?)",array($id,$login,$text,$data,$arbuz,$ip,$time,$privat));
if(isset($_POST['ck1'])){
$i = check($_COOKIE['login']);
$data = times();
$msgz = 'Пользователь <a href="/profile/'.$i.'">'.$i.'</a> ответил на ваше сообщение в <a href="/chat/?mode=door&id='.$t['id_chat'].'">чате</a>!';
send_mail('System',$login,$msgz);
}
header('Location: ?mode=door&id='.$id.'');
$set = DB::run() -> queryFetch("SELECT * FROM setting WHERE `id`=?",array(1));
$_SESSION['antiflood'] = time() + $set['antiflood'];
user_live($my['login'],1,1,0);
} else { echo'Ошибка! Слишком длинное или короткое сообщение!'; }
}
} else {echo'Ошибка!';}
echo'</div>';
break;
case 'door':
if($my['chat'] == 0){} else {
?>
<div id="link"><? echo $my['chat']; ?></div>
<script>
var link=document.getElementById('link');
var tmt=window.setInterval(function(){
--link.innerHTML||(window.clearInterval(tmt),
link.innerHTML='<img src="/images/reload.gif"> Перезагружаю...');
}, 1000);
</script>
<?
}
if($my['chat'] >= 1){ echo'<meta http-equiv="refresh" content="'.($my['chat'] + 3).';URL=http://'.SITE.'/chat/?mode='.$mode.'&id='.$id.'" />';}
if($my['mes_on_page'] < 10){define('TOPAGE','10');} else {define('TOPAGE',$my['mes_on_page']);}
$id = abs(intval($_GET['id']));
if($id == !NULL){
$chat = DB::run() -> queryFetch("SELECT * FROM chat WHERE id =? LIMIT 1",array($id));
echo'<div class="menu"><a href="?mode='.$mode.'&id='.$id.'&page='.$page.'">Обновить</a></div>';
if($chat['status'] == 'Admin' || $chat['status'] == 'admin'){
if (is_admin()) {
echo'<div class="menu">';
echo'<form action="?mode=new_msg&id='.$id.'" method="post">
Сообщение (<a href="/pages/smiles.php">Смайлы</a>/<a href="/pages/bb.php">Теги</a>):<br />
<textarea name="msg" cols="40" rows="5"></textarea><br />
<input name="" type="submit" value="Добавить" />
</form>';
echo'</div>';
$links = '?mode='.$mode.'&id='.id.'&page=';
$page = intval($_GET['page']);
$posts = DB::run() -> query("SELECT * FROM `chat_msg` WHERE id_chat =?",array($id)) -> rowCount();
$total = intval(($posts - 1) / $num) + 1;
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$themes = DB::run()->query("SELECT * FROM `chat_msg` WHERE id_chat =? ORDER BY `id` DESC LIMIT $start,".TOPAGE."",array($id));
$themes = $themes -> fetchAll();
foreach($themes AS $u){
# Определяем иконку
$query = DB::run() -> queryFetch("SELECT * FROM `users` WHERE `login`=?",array($u['login']));
# если он из админ состава
if($query['status'] == 101 || $query['status'] == 102 || $query['status'] == 103 || $query['status'] == 104){
# определяем его пол и выводим иконку
if($query['pol'] == 1){$img = '<img src="/images/1.png">';}
if($query['pol'] == 0){$img = '<img src="/images/2.png">';}
}
# Если он обычный юзер
if($query['status'] == 105){
if($query['pol'] == 1){$img = '<img src="/images/4.png">';}
if($query['pol'] == 0){$img = '<img src="/images/3.png">';}
}
echo'<div class="menu">'.$img.' <a href="/profile/'.$u['login'].'">'.$u['login'].'</a> '.online($u['login']).' ('.$u['data'].')</div>';
echo'<div class="menu_2">';
if($u['privat'] == !NULL){
if(check($_COOKIE['login']) == $u['privat'] || check($_COOKIE['login']) == $u['login']){echo''.$u['msg'].'';
} else { echo'Приватное сообщение, видит только адресат...'; }
} else {
echo''.$u['msg'].'';
}
echo'<hr><div align="right">';
if($u['login'] != check($_COOKIE['login'])){echo'[<a href="?mode=otvet&id='.$u['id'].'">отв</a>]';}
if($admin == 101 || $u['time'] >= time() && $u['login'] == check($_COOKIE['login'])){ echo'[<a href="?mode=edit&id='.$u['id'].'">изм</a>]'; }
if(is_admin(array(101))){ echo'[<a href="?mode=del&id='.$u['id'].'" onclick="return confirm('Вы подтверждаете удаление?')">Удл</a>]';}
echo'</div></div>';
}
if ($page != 1) $pervpage = '<a href= '.$links.'1><<</a> <a href= '.$links.''. ($page - 1) .'><</a> ';
if ($page != $total) $nextpage = ' <a href= '.$links.''. ($page + 1) .'>></a> <a href= '.$links.'' .$total. '>>></a>';
if($page - 2 > 0) $page2left = ' <a href= '.$links.''. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href= '.$links.''. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href= '.$links.''. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href= '.$links.''. ($page + 1) .'>'. ($page + 1) .'</a>';
if($posts == 0){ echo'<div class="menu">Пусто!</div>'; } else {echo '<div class="menu_2">'.$pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage.'</div>'; }
} else { echo'<div class="menu">Комната только для администрации!</a>'; }
} else {
echo'<div class="menu">';
echo'<form action="?mode=new_msg&id='.$id.'" method="post">
Сообщение (<a href="/pages/smiles.php">Смайлы</a>/<a href="/pages/bb.php">Теги</a>):<br />
<textarea name="msg" cols="40" rows="5"></textarea><br />
<input name="" type="submit" value="Добавить" />
</form>';
echo'</div>';
$links = '?mode='.$mode.'&id='.id.'&page=';
$page = intval($_GET['page']);
$posts = DB::run() -> query("SELECT * FROM `chat_msg` WHERE id_chat =?",array($id)) -> rowCount();
$total = intval(($posts - 1) / $num) + 1;
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$themes = DB::run()->query("SELECT * FROM `chat_msg` WHERE id_chat =? ORDER BY `id` DESC LIMIT $start,".TOPAGE."",array($id));
$themes = $themes -> fetchAll();
foreach($themes AS $u){
# Определяем иконку
$query = DB::run() -> queryFetch("SELECT * FROM `users` WHERE `login`=?",array($u['login']));
# если он из админ состава
if($query['status'] == 101 || $query['status'] == 102 || $query['status'] == 103 || $query['status'] == 104){
# определяем его пол и выводим иконку
if($query['pol'] == 1){$img = '<img src="/images/1.png">';}
if($query['pol'] == 0){$img = '<img src="/images/2.png">';}
}
# Если он обычный юзер
if($query['status'] == 105){
if($query['pol'] == 1){$img = '<img src="/images/4.png">';}
if($query['pol'] == 0){$img = '<img src="/images/3.png">';}
}
echo'<div class="menu">'.$img.' <a href="/profile/'.$u['login'].'">'.$u['login'].'</a> '.online($u['login']).' ('.$u['data'].')</div>';
echo'<div class="menu_2">';
if(check($_COOKIE['login']) == $u['privat'] || check($_COOKIE['login']) == $u['login']){
if($u['privat'] == !NULL){
echo''.$u['msg'].'';
} else { echo'Приватное сообщение, видит только адресат...'; }
} else {
echo''.$u['msg'].'';
}
echo'<hr><div align="right">';
if($u['login'] != check($_COOKIE['login'])){echo'[<a href="?mode=otvet&id='.$u['id'].'">отв</a>]';}
if($admin == 101 || $u['time'] >= time() && $u['login'] == check($_COOKIE['login'])){ echo'[<a href="?mode=edit&id='.$u['id'].'">изм</a>]'; }
if(is_admin(array(101))){ echo'[<a href="?mode=del&id='.$u['id'].'" onclick="return confirm('Вы подтверждаете удаление?')">Удл</a>]';}
echo'</div></div>';
}
if ($page != 1) $pervpage = '<a href= '.$links.'1><<</a> <a href= '.$links.''. ($page - 1) .'><</a> ';
if ($page != $total) $nextpage = ' <a href= '.$links.''. ($page + 1) .'>></a> <a href= '.$links.'' .$total. '>>></a>';
if($page - 2 > 0) $page2left = ' <a href= '.$links.''. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href= '.$links.''. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href= '.$links.''. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href= '.$links.''. ($page + 1) .'>'. ($page + 1) .'</a>';
if($posts == 0){ echo'<div class="menu">Пусто!</div>'; } else {echo '<div class="menu_2">'.$pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage.'</div>'; }}
} else { echo'Комната не выбрана!'; }
break;
case 'del':
$id = abs($_GET['id']);
if($id == !NULL && $admin == 101){
DB::run()->query("DELETE FROM `chat_msg` WHERE `id` =?",array($id));
header ('location: '.$_SERVER['HTTP_REFERER'].'');
} else {echo'<div class="menu">Ошибочка!</div>'; }
break;
case 'edit':
echo'<div class="menu">';
$id = abs($_GET['id']);
$st = DB::run() -> queryFetch("SELECT * FROM chat_msg WHERE `id`=? LIMIT 1",array($id));
if($st['time'] >= time() && $st['login'] == check($_COOKIE['login'])){
echo'<form action="?mode=edit_ok&id='.$id.'" method="post">';
echo'<strong>Изменяем пост</strong><br />';
echo'<TEXTAREA NAME="msg" ROWS=4 COLS=40 input type="TEXTAREA" style="width: 95%; ">'.nosmiles($st['msg']).'</TEXTAREA>';
echo'<input type="submit" name="submit_1" id="submit" value="Изменить">
</form>';
} else {
$u = DB::run() -> queryFetch("SELECT * FROM users WHERE login =? LIMIT 1",array($st['login']));
if($st['status']=='user' && $admin == 102 || $admin == 103 || $admin == 104){
if($u['status'] == 101 || $u['status'] == 102 || $u['status'] == 103){ echo'Запрещено изменять сообщение Администраторов!'; } else {
echo'<strong>Изменяем пост</strong><br />';
echo'<TEXTAREA NAME="msg" ROWS=4 COLS=40 input type="TEXTAREA" style="width: 95%; ">'.nosmiles($st['msg']).'</TEXTAREA>';
echo'<input type="submit" name="submit_1" id="submit" value="Изменить">
</form>';
}}
if($admin == 101){
echo'<strong>Изменяем пост</strong><br />';
echo'<TEXTAREA NAME="msg" ROWS=4 COLS=40 input type="TEXTAREA" style="width: 95%; ">'.nosmiles($st['msg']).'</TEXTAREA>';
echo'<input type="submit" name="submit_1" id="submit" value="Изменить">
</form>';
}
if($admin == 105){echo'15 Минут уже прошло! Редактировать сообщение невозможно!';}
}
echo'</div>';
break;
case 'edit_ok':
echo'<div class="menu">';
$id = abs($_GET['id']);
$msg = check($_POST['msg']);
$st = DB::run() -> queryFetch("SELECT * FROM chat_msg WHERE `id`=? LIMIT 1",array($id));
if($st['time'] >= time() && $st['login'] == check($_COOKIE['login'])){
if (mb_strlen($msg) >= 5 && mb_strlen($msg) < 500) {
$msg = no_br($msg);
$msg = bb($msg);
$msg = antimat($msg);
$msg = smiles($msg);
$data = times();
$text = ''.$msg.'<br /><small><font color=red>Изменено <strong>'.check($_COOKIE['login']).'</strong> '.$data.'</font></small>';
DB::run()->query("UPDATE `chat_msg` SET `msg`=? WHERE `id` =?",array($text,$id));
header ('location: ?mode=index');
} else { echo'Ошибка! Слишком длинное или короткое сообщение!'; } } else {
$u = DB::run() -> queryFetch("SELECT * FROM users WHERE login =? LIMIT 1",array($st['login']));
if($st['status']=='user' && $admin == 102 || $admin == 103 || $admin == 104){
if($u['status'] == 101 || $u['status'] == 102 || $u['status'] == 103){ echo'Запрещено изменять сообщение Администраторов!'; } else {
if (mb_strlen($msg) >= 5 && mb_strlen($msg) < 500) {
$msg = no_br($msg);
$msg = bb($msg);
$msg = antimat($msg);
$msg = smiles($msg);
$data = times();
$text = ''.$message.'<br /><small><font color=red>Изменено <strong>'.check($_COOKIE['login']).'</strong> '.$data.'</font></small>';
DB::run()->query("UPDATE `chat_msg` SET `msg`=? WHERE `id` =?",array($text,$id));
header ('location: ?mode=index');
} else { echo'Ошибка! Слишком длинное или короткое сообщение!'; } } }
if($admin == 101){
if (mb_strlen($msg) >= 5 && mb_strlen($msg) < 500) {
$msg = no_br($msg);
$msg = bb($msg);
$msg = antimat($msg);
$msg = smiles($msg);
$data = times();
$text = ''.$message.'<br /><small><font color=red>Изменено <strong>'.check($_COOKIE['login']).'</strong> '.$data.'</font></small>';
DB::run()->query("UPDATE `chat_msg` SET `msg`=? WHERE `id` =?",array($text,$id));
header ('location: ?mode=index');
} else { echo'Ошибка! Слишком длинное или короткое сообщение!'; }}
if($admin == 105){echo'15 Минут уже прошло! Редактировать сообщение невозможно!';}
}
echo'</div>';
break;
default:
header ('location: ?mode=index');
endswitch;
if(is_user()){echo'<div class="menu"><a href="/users/setting.php?mode=index">Настройки чата</a></div>';}
} else {
title('Ошибка!');
echo'<div class="title">Ошибка!</div>';
echo'<div class="error">';
echo'Доступ разрешен только авторизованым!';
echo'</div>';
}
include(MAINDIR.'style/foot.php');
?>