Просмотр файла chat/index.php

Размер файла: 17.2Kb
  1. <?
  2. include('../core/core.php');
  3. include(BASEDIR.INC.'func.php');
  4. include(BASEDIR.INC.'session.php');
  5. include(BASEDIR.INC.'session_user.php');
  6. $mode = htmlspecialchars($_GET['mode']);
  7. include(BASEDIR.INC.'head.php');
  8. show_title('Мини - Чат :)');
  9. if(is_user()){
  10. include(BASEDIR.MODUL.'chat/chat.php');
  11. include(BASEDIR.INC.'session_chat.php');
  12. $users = mysql_query('SELECT * FROM users WHERE login = "'.$_COOKIE['login'].'"');
  13. $users = mysql_fetch_assoc($users);
  14. $admin = $users['status'];
  15. echo '<div class="razdel">Наш мини-чат!</div>';
  16. $id = abs($_GET['id']);
  17. switch ($mode):
  18. case 'index':
  19. echo'<div class="menu">';
  20. echo'Выберите комнату';
  21. echo'</div>';
  22. define('TOPAGE',10);
  23. $page=(int)$_GET['page'];
  24. $q=mysql_result(mysql_query("SELECT COUNT(*) FROM `chat`"),0);
  25. $total = intval(($q - 1) / TOPAGE) + 1;
  26. if(empty($page) or $page < 0) $page = 1;
  27. if($page > $total) $page = $total;
  28. $start = $page * TOPAGE -TOPAGE;
  29.  
  30. $g=mysql_query("SELECT * FROM `chat` ORDER BY `id` DESC LIMIT $start,".TOPAGE."");
  31. while($u=mysql_fetch_array($g)){
  32. if($u['status'] == 'admin'){$img = '<img src="'.BASEDIR.''.IMG.'personal_chat_admin.png">'; } else {$img = '<img src="'.BASEDIR.''.IMG.'personal_chat_user.png">';}
  33.  
  34. echo'<div class="menu">';
  35. echo $img.' <a href="?mode=door&id='.$u['id'].'">'.$u['title'].'</a>';
  36. echo'</div>';}
  37.  
  38. if($q == 0){ echo'<div class="menu">Комнаты еще не созданы!!</div>'; }
  39. if ($page != $total) $nextpage = ' <a href="?mode='.$mode.'&page='. ($page + 1) .'">Далее</a>';
  40. if($page - 1 > 0) $pageback = '<a href="?mode='.$mode.'&page='. ($page - 1) .'">Назад</a> ';
  41. echo''.$pageback.' '.$nextpage.'';
  42. break;
  43. case 'new_msg':
  44. echo'<div class="menu">';
  45. $id = abs($_GET['id']);
  46. if($id == !NULL){
  47. $msg = check($_POST['msg']);
  48. $s = $_SESSION['antiflood'] - time();
  49. if($_SESSION['antiflood'] >= time()){echo'Антифлуд! Разрешается отправлять сообщения раз в 30 секунд!<br />
  50. Осталось: >'.formattime($s).'</div>';
  51. }else{
  52. if (utf_strlen($msg) >= 5 && utf_strlen($msg) < 500) {
  53. $data = date("d.m.Y / H:i");
  54. $login = $_COOKIE['login'];
  55. $time = time() + (60 * 15);
  56. $ip = preg_replace('|[^0-9\.]|', '', $_SERVER['REMOTE_ADDR']);
  57. $arbuz = explode("/",$_SERVER['HTTP_USER_AGENT']);
  58. $arbuz = htmlspecialchars($arbuz[0]);
  59. $msg = antimat($msg);
  60. $msg = smiles($msg);
  61. $msg = bb($msg);
  62. $msg = no_br($msg);
  63. mysql_query('INSERT INTO `chat_msg`(`id_chat`, `login`, `msg`, `data`, `arbuz`,`ip`, `time`) VALUES ("'.$id.'","'.$login.'","'.$msg.'","'.$data.'","'.$arbuz.'", "'.$ip.'","'.$time.'")');
  64. //$q=mysql_result(mysql_query("SELECT COUNT(*) FROM `chat_msg` WHERE id_chat = '".$id."'"),0);
  65. //$total = intval(($q - 1) / 10) + 1;
  66. header('Location: ?mode=door&id='.$id.'');
  67. $_SESSION['antiflood'] = time() + 30;
  68. echo activ($_COOKIE['login']);
  69. echo rating_plus($_COOKIE['login'],1);
  70. } else { echo'Ошибка! Слишком длинное или короткое сообщение!'; }
  71. }
  72. } else {echo'Ошибка!';}
  73. echo'</div>';
  74. break;
  75. case 'otvet':
  76. $id = abs($_GET['id']);
  77. $chat = mysql_query('SELECT * FROM chat_msg WHERE id = "'.$id.'"');
  78. $chat = mysql_fetch_assoc($chat);
  79. echo'<div class="menu">'.$chat['msg'].'</div>';
  80. echo'<div class="menu">
  81. <form action="?mode=otvet_ok&id='.$chat['id_chat'].'" method="post">
  82. <input name="id_msg" type="hidden" value="'.$chat['id'].'" />
  83. <input name="login" type="hidden" value="'.$chat['login'].'" />
  84. Сообщение (<a href="/pages/smiles.php">Смайлы</a>/<a href="/pages/bb.php">Теги</a>):<br />
  85. <textarea name="msg" cols="40" rows="5"></textarea><br />
  86. <input type="checkbox" name="ck1"> Оповестить по привату<br />
  87. <input type="checkbox" name="ck2"> Приватно<br />
  88. <input name="" type="submit" value="Добавить" />
  89. </form>
  90. </div>';
  91. break;
  92. case 'otvet_ok':
  93. echo'<div class="menu">';
  94. $id = abs($_GET['id']);
  95. if($id == !NULL){
  96. $msg = check($_POST['msg']);
  97. $log = check($_POST['login']);
  98. $id_msg = check($_POST['id_msg']);
  99. $s = $_SESSION['antiflood'] - time();
  100. if($_SESSION['antiflood'] >= time()){echo'Антифлуд! Разрешается отправлять сообщения раз в 30 секунд!<br />
  101. Осталось: >'.formattime($s).'</div>';
  102. }else{
  103. if (utf_strlen($msg) >= 5 && utf_strlen($msg) < 500) {
  104. $data = date("d.m.Y / H:i");
  105. $login = $_COOKIE['login'];
  106. $time = time() + (60 * 15);
  107. $ip = preg_replace('|[^0-9\.]|', '', $_SERVER['REMOTE_ADDR']);
  108. $arbuz = explode("/",$_SERVER['HTTP_USER_AGENT']);
  109. $arbuz = htmlspecialchars($arbuz[0]);
  110. $msg = antimat($msg);
  111. $msg = smiles($msg);
  112. $msg = bb($msg);
  113. $msg = no_br($msg);
  114. $text = '<strong>'.$log.'</strong>, '.$msg.'';
  115. $t = mysql_query("select * from `chat_msg` where `id` = '".$id_msg."'");
  116. $t = mysql_fetch_assoc($t);
  117. $l = $t['login'];
  118. if(isset($_POST['ck2'])){$privat = $l;} else { $privat = NULL; }
  119. mysql_query('INSERT INTO `chat_msg`(`id_chat`, `login`, `msg`, `data`, `arbuz`,`ip`, `time`, `privat`) VALUES ("'.$id.'","'.$login.'","'.$text.'","'.$data.'","'.$arbuz.'", "'.$ip.'","'.$time.'","'.$privat.'")');
  120. if(isset($_POST['ck1'])){
  121. $i = $_COOKIE['login'];
  122. $data = date("d.m.Y H:i:s");
  123. $msg = 'Пользователь <a href="/users/profile.php&user='.$i.'">'.$i.'</a> ответил на ваше сообщение в <a href="/chat/?mode=door&id='.$t['id_chat'].'">чате</a>!';
  124. mysql_query("INSERT INTO `send_mail`(`my_login`, `send_login`, `msg`, `data`) VALUES ('$i','$l','$msg','$data')");
  125. mysql_query("UPDATE `users` SET `my_mail`=`my_mail` + 1 WHERE login = '".$l."'");
  126. }
  127. header('Location: ?mode=door&id='.$id.'');
  128. $_SESSION['antiflood'] = time() + 30;
  129. echo activ($_COOKIE['login']);
  130. echo rating_plus($_COOKIE['login'],1);
  131. } else { echo'Ошибка! Слишком длинное или короткое сообщение!'; }
  132. }
  133. } else {echo'Ошибка!';}
  134. echo'</div>';
  135. break;
  136. case 'door':
  137. if($reflesh >= 1){ echo'<meta http-equiv="refresh" content="'.$reflesh.';URL=http://'.SITE.'/chat/?mode='.$mode.'&id='.$id.'" />';}
  138. if($mes_on_site >= 10){define('TOPAGE',$mes_on_site);} else {define('TOPAGE',$mes_on_page);}
  139. $id = abs($_GET['id']);
  140. if($id == !NULL){
  141. $chat = mysql_query('SELECT * FROM chat WHERE id = "'.$id.'"');
  142. $chat = mysql_fetch_assoc($chat);
  143. echo'<div class="menu"><a href="?mode='.$mode.'&id='.$id.'&page='.$page.'">Обновить</a></div>';
  144. if($chat['status'] == 'admin'){
  145. if (is_admin()) {
  146. echo'<div class="menu">';
  147. echo'<form action="?mode=new_msg&id='.$id.'" method="post">
  148. Сообщение (<a href="/pages/smiles.php">Смайлы</a>/<a href="/pages/bb.php">Теги</a>):<br />
  149. <textarea name="msg" cols="40" rows="5"></textarea><br />
  150. <input name="" type="submit" value="Добавить" />
  151. </form>';
  152. echo'</div>';
  153. //define('TOPAGE',10);
  154. $page=(int)$_GET['page'];
  155. $q=mysql_result(mysql_query("SELECT COUNT(*) FROM `chat_msg` WHERE id_chat = '".$id."'"),0);
  156. $total = intval(($q - 1) / TOPAGE) + 1;
  157. if(empty($page) or $page < 0) $page = 1;
  158. if($page > $total) $page = $total;
  159. $start = $page * TOPAGE -TOPAGE;
  160.  
  161. $g=mysql_query("SELECT * FROM `chat_msg` WHERE id_chat = '".$id."' ORDER BY `id` DESC LIMIT $start,".TOPAGE."");
  162. while($u=mysql_fetch_array($g)){
  163. if($chat['status'] == 'admin'){
  164. $login = $u['login'];
  165. $li =mysql_query("SELECT * FROM users WHERE `login`='$login';");
  166. $li = mysql_fetch_assoc($li);
  167. $p = mysql_query('SELECT * FROM session_user WHERE user = "'.$login.'"');
  168. if(mysql_num_rows($p) != 0){ $on ='[<font color="green">On</font>]'; } else { $on ='[<font color="red">Off</font>]'; }
  169. if($li['avatar_mini'] == NULL){ $avatar ='/images/noavatar.gif'; } else {$avatar = ''.$li['avatar_mini'].'';}
  170. echo'<div class="menu">';
  171.  
  172.  
  173. echo'<div style="overflow: hidden"><div style="float: left"><img src="'.$avatar.'"></div> <a href="/users/profile.php?user='.$login.'">'.$login.'</a> '.$u['data'].'<br />
  174. ('.$u['arbuz'].', '.$u['ip'].') '.$on.'</div><hr>';
  175. if($u['privat'] == !NULL){
  176. if($_COOKIE['login'] == $u['privat'] || $_COOKIE['login'] == $u['login']){
  177. echo''.$u['msg'].'';
  178. } else { echo'Приватное сообщение, видит только адресат...'; }
  179. } else {
  180. echo''.$u['msg'].'';
  181. }
  182. echo'<hr><div align="right">';
  183. if($u['login'] == $_COOKIE['login']){} else {
  184. echo'[<a href="?mode=otvet&id='.$u['id'].'">отв</a>]';}
  185. if($admin == 101 || $u['time'] >= time() && $u['login'] == $_COOKIE['login']){ echo'[<a href="?mode=edit&id='.$u['id'].'">изм</a>]'; }
  186. if(is_admin(array(101))){ echo'[<a href="?mode=del&id='.$u['id'].'" onclick="return confirm(\'Вы подтверждаете удаление?\')">Удл</a>]';}
  187. echo'</div></div>';}}
  188.  
  189. if($q == 0){ echo'<div class="menu">Сообщений еще нету(!</div>'; }
  190. if ($page != $total) $nextpage = ' <a href="?mode='.$mode.'&id='.$id.'&page='. ($page + 1) .'">Далее</a>';
  191. if($page - 1 > 0) $pageback = '<a href="?mode='.$mode.'&id='.$id.'&page='. ($page - 1) .'">Назад</a> ';
  192. echo''.$pageback.' '.$nextpage.'';
  193. } else { echo'<div class="menu">Комната только для администрации!</a>'; }
  194. } else {
  195. echo'<div class="menu">';
  196. echo'<form action="?mode=new_msg&id='.$id.'" method="post">
  197. Сообщение (<a href="/pages/smiles.php">Смайлы</a>/<a href="/pages/bb.php">Теги</a>):<br />
  198. <textarea name="msg" cols="40" rows="5"></textarea><br />
  199. <input name="" type="submit" value="Добавить" />
  200. </form>';
  201. echo'</div>';
  202. //define('TOPAGE',10);
  203. $page=(int)$_GET['page'];
  204. $q=mysql_result(mysql_query("SELECT COUNT(*) FROM `chat_msg` WHERE id_chat = '".$id."'"),0);
  205. $total = intval(($q - 1) / TOPAGE) + 1;
  206. if(empty($page) or $page < 0) $page = 1;
  207. if($page > $total) $page = $total;
  208. $start = $page * TOPAGE -TOPAGE;
  209.  
  210. $g=mysql_query("SELECT * FROM `chat_msg` WHERE id_chat = '".$id."' ORDER BY `id` DESC LIMIT $start,".TOPAGE."");
  211. while($u=mysql_fetch_array($g)){
  212. if($chat['status'] == 'user'){
  213. $login = $u['login'];
  214. $li =mysql_query("SELECT * FROM users WHERE `login`='$login';");
  215. $li = mysql_fetch_assoc($li);
  216. $p = mysql_query('SELECT * FROM session_user WHERE user = "'.$login.'"');
  217. if(mysql_num_rows($p) != 0){ $on ='[<font color="green">On</font>]'; } else { $on ='[<font color="red">Off</font>]'; }
  218. if($li['avatar_mini'] == NULL){ $avatar ='/images/noavatar.gif'; } else {$avatar = ''.$li['avatar_mini'].'';}
  219. echo'<div class="menu">';
  220.  
  221.  
  222. echo'<div style="overflow: hidden"><div style="float: left"><img src="'.$avatar.'"></div> <a href="/users/profile.php?user='.$login.'">'.$login.'</a> '.$u['data'].'<br />
  223. ('.$u['arbuz'].', '.$u['ip'].') '.$on.'</div><hr>';
  224. if($u['privat'] == !NULL){
  225. if($_COOKIE['login'] == $u['privat'] || $_COOKIE['login'] == $u['login']){
  226. echo''.$u['msg'].'';
  227. } else { echo'Приватное сообщение, видит только адресат...'; }
  228. } else {
  229. echo''.$u['msg'].'';
  230. }
  231. echo'<hr><div align="right">';
  232. if($u['login'] == $_COOKIE['login']){} else {
  233. echo'[<a href="?mode=otvet&id='.$u['id'].'">отв</a>]';}
  234. if($admin == 101 || $admin == 102 || $admin == 103 || $admin == 104 || $u['time'] >= time() && $u['login'] == $_COOKIE['login']){ echo'[<a href="?mode=edit&id='.$u['id'].'">изм</a>]'; }
  235. if(is_admin(array(101))){ echo'[<a href="?mode=del&id='.$u['id'].'" onclick="return confirm(\'Вы подтверждаете удаление?\')">Удл</a>]';}
  236. echo'</div></div>';}}
  237.  
  238. if($q == 0){ echo'<div class="menu">Сообщений еще нету(!</div>'; }
  239. if ($page != $total) $nextpage = ' <a href="?mode='.$mode.'&id='.$id.'&page='. ($page + 1) .'">Далее</a>';
  240. if($page - 1 > 0) $pageback = '<a href="?mode='.$mode.'&id='.$id.'&page='. ($page - 1) .'">Назад</a> ';
  241. echo''.$pageback.' '.$nextpage.'';}
  242. } else { echo'Комната не выбрана!'; }
  243. break;
  244. case 'del':
  245. $id = abs($_GET['id']);
  246. if($id == !NULL && $admin == 101){
  247. mysql_query('DELETE FROM `chat_msg` WHERE `id` = "'.$id.'"');
  248. header ('location: ?mode=index');
  249. } else {echo'<div class="menu">Ошибочка!</div>'; }
  250. break;
  251. case 'edit':
  252. echo'<div class="menu">';
  253. $id = abs($_GET['id']);
  254. $st = mysql_query("SELECT * FROM chat_msg WHERE `id`='".$id."';");
  255. $st = mysql_fetch_assoc($st);
  256. if($st['time'] >= time() && $st['login'] == $_COOKIE['login']){
  257. echo'<form action="?mode=edit_ok&id='.$id.'" method="post">';
  258. echo'<strong>Изменяем пост</strong><br />';
  259. echo'<TEXTAREA NAME="msg" ROWS=4 COLS=40 input type="TEXTAREA" style="width: 95%; ">'.nosmiles($st['msg']).'</TEXTAREA>';
  260. echo'<input type="submit" name="submit_1" id="submit" value="Изменить">
  261. </form>';
  262. } else {
  263. $u = mysql_query('SELECT * FROM users WHERE login = "'.$st['login'].'"');
  264. $u = mysql_fetch_assoc($u);
  265. if($st['status']=='user' && $admin == 102 || $admin == 103 || $admin == 104){
  266. if($u['status'] == 101 || $u['status'] == 102 || $u['status'] == 103){ echo'Запрещено изменять сообщение Администраторов!'; } else {
  267. echo'<strong>Изменяем пост</strong><br />';
  268. echo'<TEXTAREA NAME="msg" ROWS=4 COLS=40 input type="TEXTAREA" style="width: 95%; ">'.nosmiles($st['msg']).'</TEXTAREA>';
  269. echo'<input type="submit" name="submit_1" id="submit" value="Изменить">
  270. </form>';
  271. }}
  272. if($admin == 101){
  273. echo'<strong>Изменяем пост</strong><br />';
  274. echo'<TEXTAREA NAME="msg" ROWS=4 COLS=40 input type="TEXTAREA" style="width: 95%; ">'.nosmiles($st['msg']).'</TEXTAREA>';
  275. echo'<input type="submit" name="submit_1" id="submit" value="Изменить">
  276. </form>';
  277. }
  278. if($admin == 105){echo'15 Минут уже прошло! Редактировать сообщение невозможно!';}
  279. }
  280. echo'</div>';
  281. break;
  282. case 'edit_ok':
  283. echo'<div class="menu">';
  284. $id = abs($_GET['id']);
  285. $msg = check($_POST['msg']);
  286. $st =mysql_query("SELECT * FROM chat_msg WHERE `id`='".$id."';");
  287. $st = mysql_fetch_assoc($st);
  288. if($st['time'] >= time() && $st['login'] == $_COOKIE['login']){
  289. if (utf_strlen($msg) >= 5 && utf_strlen($msg) < 500) {
  290. $msg = antimat($msg);
  291. $msg = smiles($msg);
  292. $msg = bb($msg);
  293. $data = date("d.m.Y / H:i");
  294. $text = ''.$msg.'<br /><small><font color=red>Изменено <strong>'.$_COOKIE['login'].'</strong> '.$data.'</font></small>';
  295. mysql_query('UPDATE `chat_msg` SET `msg`="'.$text.'" WHERE `id` = "'.$id.'"');
  296. header ('location: ?mode=index');
  297. } else { echo'Ошибка! Слишком длинное или короткое сообщение!'; } } else {
  298. $u = mysql_query('SELECT * FROM users WHERE login = "'.$st['login'].'"');
  299. $u = mysql_fetch_assoc($u);
  300. if($st['status']=='user' && $admin == 102 || $admin == 103 || $admin == 104){
  301. if($u['status'] == 101 || $u['status'] == 102 || $u['status'] == 103){ echo'Запрещено изменять сообщение Администраторов!'; } else {
  302. if (utf_strlen($msg) >= 5 && utf_strlen($msg) < 500) {
  303. $msg = antimat($msg);
  304. $msg = smiles($msg);
  305. $msg = bb($msg);
  306. $data = date("d.m.Y / H:i");
  307. $text = ''.$message.'<br /><small><font color=red>Изменено <strong>'.$_COOKIE['login'].'</strong> '.$data.'</font></small>';
  308. mysql_query('UPDATE `chat_msg` SET `msg`="'.$text.'" WHERE `id` = "'.$id.'"');
  309. header ('location: ?mode=index');
  310. } else { echo'Ошибка! Слишком длинное или короткое сообщение!'; } } }
  311. if($admin == 101){
  312. if (utf_strlen($msg) >= 5 && utf_strlen($msg) < 500) {
  313. $msg = antimat($msg);
  314. $msg = smiles($msg);
  315. $msg = bb($msg);
  316. $data = date("d.m.Y / H:i");
  317. $text = ''.$message.'<br /><small><font color=red>Изменено <strong>'.$_COOKIE['login'].'</strong> '.$data.'</font></small>';
  318. mysql_query('UPDATE `chat_msg` SET `msg`="'.$text.'" WHERE `id` = "'.$id.'"');
  319. header ('location: ?mode=index');
  320. } else { echo'Ошибка! Слишком длинное или короткое сообщение!'; }}
  321. if($admin == 105){echo'15 Минут уже прошло! Редактировать сообщение невозможно!';}
  322. }
  323. echo'</div>';
  324. break;
  325. case 'set':
  326. echo'<div class="menu">';
  327. if(is_user()){
  328. echo'
  329. <form action="?mode=set" method="post">
  330. Кол-во сообщений(10-30):<br />
  331. <input name="st1" type="text" size="5" maxlength="2" value="'.$mes_on_site.'"/><br />
  332. Обновление(0-90 сек):<br />
  333. <input name="st2" type="text" size="5" maxlength="2" value="'.$reflesh.'"/><br />
  334. <input name="" type="submit" value="Применить" />
  335. </form>
  336. ';
  337. $st1 = check(abs($_POST['st1']));
  338. $st2 = check(abs($_POST['st2']));
  339. if(!empty($st1) && !empty($st2)){
  340. $_SESSION['chat_ref'] = $st2;
  341. $_SESSION['chat_mes'] = $st1;
  342. header ('location: ?mode=index');
  343. }
  344. } else {header ('location: ?mode=index'); }
  345. echo'</div>';
  346. break;
  347. default:
  348. header ('location: ?mode=index');
  349. endswitch;
  350. if(is_user()){echo'<div class="menu"><a href="?mode=set">Настройки чата</a></div>';}
  351. echo'<div class="menu"><a href="/">На главную</a></div>';
  352. } else {echo '<div class="razdel">Доступ закрыт!</div>';
  353. echo'<div class="menu">Доступ разрешен только зарегистированым!</div>';
  354. }
  355. include(BASEDIR.INC.'foot.php');
  356. ?>