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

Размер файла: 12.44Kb
  1. <?php
  2. include 'guestbook/mylib.php';
  3. include 'config.php';
  4. if (!checkagent($_SERVER['HTTP_USER_AGENT'])) { noemul(); exit; }
  5. list ($opname, $chatok) = check_op($_SERVER['REMOTE_ADDR']);
  6. if (!$chatok) { unk_op(); exit; }
  7. $ppp=9;
  8. $showpics=1;
  9. $pflag=0;
  10. $lang=$_GET['lang'];
  11. $refresh=300;
  12. $p=htmlspecialchars(trim($_GET['p']),ENT_QUOTES);
  13. $r=htmlspecialchars(trim($_GET['r']),ENT_QUOTES);
  14. $n=$_GET['n']+1;
  15. session_start();
  16. ?>
  17. <?php
  18. if (!($conn=pg_connect("host=$dbhost port=$dbport dbname=$dbname user=$dbuser password=$dbpass")))
  19. {
  20. header("Cache-Control: no-cache");
  21. header("Content-type: text/vnd.wap.wml");
  22. ?>
  23. <?xml version="1.0" encoding="utf-8"?>
  24. <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" "http://www.wapforum.org/DTD/wml_1.2.dtd">
  25. <wml>
  26. <head><meta http-equiv="Cache-Control" content="no-cache" forua="true"/></head>
  27. <card id="ChatErr" title="&#x041E;&#x0448;&#x0438;&#x0431;&#x043A;&#x0430;">
  28. <p align="center">
  29. &#x041E;&#x0448;&#x0438;&#x0431;&#x043A;&#x0430; &#x043F;&#x043E;&#x0434;&#x043A;&#x043B;&#x044E;&#x0447;&#x0435;&#x043D;&#x0438;&#x044F; &#x043A; &#x0411;&#x0414<br/>
  30. <a href="/">&#x041D;&#x0430; &#x0433;&#x043B;&#x0430;&#x0432;&#x043D;&#x0443;&#x044E;</a>
  31. </p>
  32. </card>
  33. </wml>
  34. <?php
  35. exit;
  36. }
  37.  
  38. $uid=0;
  39. $access=0;
  40. if (isset($_SESSION['id'])) {
  41. $uid=$_SESSION['id'];
  42. if ((!isset($_SESSION['access']))||(!isset($_SESSION['ppp']))||(!isset($_SESSION['refresh']))||(!isset($_SESSION['showpics']))) {
  43. $res=pg_query($conn,"select access,ppp,refresh,showpics from users where id='$uid';");
  44. $_SESSION['access']=pg_result($res,0,0);
  45. $_SESSION['ppp']=pg_result($res,0,1);
  46. $_SESSION['refresh']=pg_result($res,0,2);
  47. $_SESSION['showpics']=pg_result($res,0,3);
  48. }
  49. $access=$_SESSION['access'];
  50. $ppp=$_SESSION['ppp'];
  51. $refresh=$_SESSION['refresh'];
  52. $showpics=$_SESSION['showpics'];
  53.  
  54. } else {
  55. if ((trim($_COOKIE['Login'])!='')&&(trim($_COOKIE['Password'])!='')) {
  56. $login=htmlspecialchars(trim($_COOKIE['Login']),ENT_QUOTES);
  57. $pass=htmlspecialchars(trim($_COOKIE['Password']),ENT_QUOTES);
  58. $res=pg_query($conn,"select id,access,ppp,refresh,showpics from users where login='$login' and passwd='$pass' and moder=0;");
  59. if (pg_numrows($res)==1) {
  60. $uid=pg_result($res,0,0);
  61. $access=pg_result($res,0,1);
  62. $ppp=pg_result($res,0,2);
  63. $refresh=pg_result($res,0,3);
  64. $showpics=pg_result($res,0,4);
  65. $_SESSION['id']=$uid;
  66. $_SESSION['ppp']=$ppp;
  67. $_SESSION['access']=$access;
  68. $_SESSION['refresh']=$refresh;
  69. $_SESSION['showpics']=$showpics;
  70. }
  71. }
  72. }
  73.  
  74. #if ($r==18) {
  75. # if ($access==3) $access=2;
  76. # if ($uid==1) $access=1;
  77. # if ($uid==18172) $access=4;
  78. #}
  79.  
  80. if ($r==0) {
  81. header("Cache-Control: no-cache");
  82. header("Content-type: text/vnd.wap.wml");
  83. ?>
  84. <?xml version="1.0" encoding="utf-8"?>
  85. <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" "http://www.wapforum.org/DTD/wml_1.2.dtd">
  86. <wml>
  87. <head><meta http-equiv="Cache-Control" content="no-cache" forua="true"/></head>
  88. <?php
  89. if ($lang=='eng') {
  90. print "<card id=\"Chat\" title=\"Rooms\">\n";
  91. print "<do name=\"a1\" type=\"options\" label=\"Who's where\">\n";
  92. } else {
  93. print "<card id=\"Chat\" title=\"&#x041A;&#x043E;&#x043C;&#x043D;&#x0430;&#x0442;&#x044B;\">\n";
  94. print "<do name=\"a1\" type=\"options\" label=\"&#x041A;&#x0442;&#x043E; &#x0433;&#x0434;&#x0435;\">\n";
  95. }
  96. print '<go href="chat_who.php?lang='.$lang.'" />';
  97. print "</do>\n";
  98. print "<p align=\"center\">\n";
  99. if ($lang!='eng') {
  100. print "<a href=\"/rules/\">&#x0423;&#x0433;&#x043E;&#x043B;&#x043E;&#x0432;&#x043D;&#x044B;&#x0439; &#x041A;&#x043E;&#x0434;&#x0435;&#x043A;&#x0441; &#x0447;&#x0430;&#x0442;&#x0430;</a><br/>\n";
  101. print "<a href=\"chat_smiley.php\">&#x0421;&#x043C;&#x0430;&#x0439;&#x043B;&#x0438;&#x043A;&#x0438;</a><br/>\n";
  102. print "<a href=\"chat_pictures.php\">&#x041A;&#x0430;&#x0440;&#x0442;&#x0438;&#x043D;&#x043A;&#x0438;</a><br/>\n";
  103. print "<a href=\"tags.php\">&#x0422;&#x044D;&#x0433;&#x0438;</a><br/><br/>\n";
  104. }
  105. $res=pg_query($conn,"select id,name_eng,name_rus,flag from chat_rooms order by id;");
  106. $rows=pg_numrows($res);
  107. $timex=time()-300;
  108. for ($i=0; $i<$rows; $i++) {
  109. $rid=pg_result($res,$i,0);
  110. # if (($rid==13)&&($uid!=1)&&($uid!=18172)&&($uid!=3)) continue;
  111. $room='';
  112. $flag=pg_result($res,$i,3);
  113. if (($flag!=1)||(($flag==1)&&($access))) {
  114. if ($lang!='eng') $room=uconv(pg_result($res,$i,2));
  115. if ($room=='') $room=uconv(pg_result($res,$i,1));
  116. if ($rid==18) {
  117. $res_cnt=pg_query($conn,"select distinct chat_tet.fr_u from chat_tet where chat_tet.time > '$timex';");
  118. } else {
  119. $res_cnt=pg_query($conn,"select distinct chat.fr_u from chat,users where chat.time > '$timex' and chat.room='$rid' and chat.fr_u=users.id and users.access<4;");
  120. }
  121. $rows_cnt=pg_numrows($res_cnt);
  122. print "<a href=\"chat.php?r=".$rid."&amp;lang=".$lang."\">".$room." (".$rows_cnt.")</a><br/>\n";
  123. }
  124. }
  125. if ($lang=='eng') {
  126. if ($uid) {
  127. print "<br/><a href=\"user_settings.php?lang=eng\">Chat settings</a><br/>\n";
  128. }
  129. print "<a href=\"index.php?lang=eng\">Main page</a>\n";
  130. } else {
  131. if ($uid) {
  132. print "<br/><a href=\"user_settings.php\">&#x041D;&#x0430;&#x0441;&#x0442;&#x0440;&#x043E;&#x0439;&#x043A;&#x0438; &#x0447;&#x0430;&#x0442;&#x0430;</a><br/>\n";
  133. }
  134. print "<a href=\"/\">&#x041D;&#x0430; &#x0433;&#x043B;&#x0430;&#x0432;&#x043D;&#x0443;&#x044E;</a>\n";
  135. }
  136. ?>
  137. <br/><br/>
  138. <a href="http://pslink.ru/i.php?id=614">
  139. <img src="http://pslink.ru/b.php?id=614" alt="PSLink rating" />
  140. </a>
  141. <?php
  142. }
  143.  
  144. if ($r>0) {
  145. if (($uid)&&(!$n)) {
  146. setcookie("Login", $login, time()+864000, "/");
  147. setcookie("Password", $pass, time()+864000, "/");
  148. }
  149. header("Cache-Control: no-cache");
  150. header("Content-type: text/vnd.wap.wml");
  151. ?>
  152. <?xml version="1.0" encoding="utf-8"?>
  153. <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" "http://www.wapforum.org/DTD/wml_1.2.dtd">
  154. <wml>
  155. <head><meta http-equiv="Cache-Control" content="no-cache" forua="true"/></head>
  156. <?php
  157. $res=pg_query($conn,"select name_eng,name_rus,flag from chat_rooms where id='$r';");
  158. if (!pg_numrows($res)) { pg_close($conn); exit; }
  159. # if (($r==13)&&($uid!=1)&&($uid!=18172)&&($uid!=3)) { pg_close($conn); exit; }
  160. $timex=time()-300;
  161. if ($r==18) {
  162. $res_cnt=pg_query($conn,"select distinct chat_tet.fr_u from chat_tet where chat_tet.time > '$timex';");
  163. } else {
  164. $res_cnt=pg_query($conn,"select distinct chat.fr_u from chat,users where chat.time > '$timex' and chat.room='$r' and chat.fr_u=users.id and users.access<4;");
  165. }
  166. $rows_cnt=pg_numrows($res_cnt);
  167. $flag=pg_result($res,0,2);
  168. if (($flag==1)&&(!$access)) { pg_close($conn); exit; }
  169. if ($lang!='eng') $room=uconv(pg_result($res,0,1));
  170. if ($room=='') $room=uconv(pg_result($res,0,0));
  171. if (!$p) {
  172. print "<card id=\"Room\" title=\"".$room." (".$rows_cnt.")\" ontimer=\"http://wap.katrinka.ru/chat.php?lang=".$lang."&amp;r=".$r."&amp;n=".$n."&amp;".SID."\">\n";
  173. print "<timer value=\"".$refresh."\"/>\n";
  174. } else {
  175. print "<card id=\"Room\" title=\"".$room."\">\n";
  176. }
  177. if ($lang=='eng')
  178. print "<do name=\"a1\" type=\"options\" label=\"Sign\">\n";
  179. else
  180. print "<do name=\"a1\" type=\"options\" label=\"&#x041D;&#x0430;&#x043F;&#x0438;&#x0441;&#x0430;&#x0442;&#x044C;\">\n";
  181. print '<go href="chat_add.php?lang='.$lang.'&amp;r='.$r.'" />';
  182. print "</do>\n";
  183. if ($lang=='eng')
  184. print "<do name=\"a2\" type=\"options\" label=\"Refresh\">\n";
  185. else
  186. print "<do name=\"a2\" type=\"options\" label=\"&#x041E;&#x0431;&#x043D;&#x043E;&#x0432;&#x0438;&#x0442;&#x044C;\">\n";
  187. print '<go href="chat.php?lang='.$lang.'&amp;r='.$r.'&amp;n='.$n.'" />';
  188. print "</do>\n";
  189. if ($lang=='eng')
  190. print "<do name=\"a3\" type=\"options\" label=\"Who's where\">\n";
  191. else
  192. print "<do name=\"a3\" type=\"options\" label=\"&#x041A;&#x0442;&#x043E; &#x0433;&#x0434;&#x0435;\">\n";
  193. print '<go href="chat_who.php?lang='.$lang.'" />';
  194. print "</do>\n";
  195. if ($lang=='eng')
  196. print "<do name=\"a4\" type=\"options\" label=\"Who's there\">\n";
  197. else
  198. print "<do name=\"a4\" type=\"options\" label=\"&#x041A;&#x0442;&#x043E; &#x0437;&#x0434;&#x0435;&#x0441;&#x044C;\">\n";
  199. print '<go href="chat_who.php?lang='.$lang.'&amp;r='.$r.'" />';
  200. print "</do>\n";
  201. if ($lang=='eng')
  202. print "<do name=\"a5\" type=\"options\" label=\"Leave room\">\n";
  203. else
  204. print "<do name=\"a5\" type=\"options\" label=\"&#x041F;&#x043E;&#x043A;&#x0438;&#x043D;&#x0443;&#x0442;&#x044C; &#x043A;&#x043E;&#x043C;&#x043D;&#x0430;&#x0442;&#x0443;\">\n";
  205. print '<go href="chat.php?lang='.$lang.'" />';
  206. print "</do>\n";
  207. if ($lang=='eng')
  208. print "<do name=\"a6\" type=\"options\" label=\"Main page\">\n";
  209. else
  210. print "<do name=\"a6\" type=\"options\" label=\"&#x041D;&#x0430; &#x0433;&#x043B;&#x0430;&#x0432;&#x043D;&#x0443;&#x044E;\">\n";
  211. print '<go href="index.php?lang='.$lang.'" />';
  212. print "</do>\n";
  213. print "<p>\n";
  214. $timex=time()-1800;
  215. if ($r==13) $timex=time()-86400;
  216. if ($r==18) $timex=time()-259200;
  217.  
  218. $offset=$p*$ppp;
  219. if ($uid) {
  220. if ($r==18) {
  221. if ($access == 4) {
  222. $res=pg_query($conn,"select chat_tet.fr_u,chat_tet.to_u,chat_tet.message,chat_tet.time,users.login,users.posts,users.access,chat_tet.id from chat_tet,users where chat_tet.fr_u=users.id and chat_tet.time > '$timex' order by chat_tet.id desc limit $ppp offset $offset;");
  223. } else {
  224. $res=pg_query($conn,"select chat_tet.fr_u,chat_tet.to_u,chat_tet.message,chat_tet.time,users.login,users.posts,users.access,chat_tet.id from chat_tet,users where chat_tet.fr_u=users.id and (chat_tet.to_u=0 or chat_tet.to_u='$uid' or chat_tet.fr_u='$uid') and chat_tet.time > '$timex' order by chat_tet.id desc limit $ppp offset $offset;");
  225. $res_ign=pg_query($conn,"select who from users_ignore where uid='$uid';");
  226. }
  227. } else {
  228. if ($access > 3) {
  229. $res=pg_query($conn,"select chat.fr_u,chat.to_u,chat.message,chat.time,users.login,users.posts,users.access,chat.id,chat.flag from chat,users where chat.fr_u=users.id and chat.room='$r' and chat.time > '$timex' order by chat.id desc limit $ppp offset $offset;");
  230. } else {
  231. $res=pg_query($conn,"select chat.fr_u,chat.to_u,chat.message,chat.time,users.login,users.posts,users.access,chat.id,chat.flag from chat,users where chat.fr_u=users.id and chat.room='$r' and (chat.to_u=0 or chat.to_u='$uid' or chat.fr_u='$uid') and chat.time > '$timex' order by chat.id desc limit $ppp offset $offset;");
  232. $res_ign=pg_query($conn,"select who from users_ignore where uid='$uid';");
  233. }
  234. }
  235. } else {
  236. $res=pg_query($conn,"select chat.fr_u,chat.to_u,chat.message,chat.time,users.login,users.posts,users.access,chat.id,chat.flag from chat,users where chat.fr_u=users.id and chat.room='$r' and chat.to_u=0 and chat.time > '$timex' order by chat.id desc limit $ppp offset $offset;");
  237. }
  238. $rows=pg_numrows($res);
  239. $np=$p+1; $pp=$p-1;
  240. # $mp=floor($numrec/$ppp);
  241.  
  242. for ($i=0;$i<$rows;$i++) {
  243. $posts=pg_result($res,$i,5);
  244. $uacc=pg_result($res,$i,6);
  245. if ($access==4) $pid=pg_result($res,$i,7);
  246. $fr_u=pg_result($res,$i,0);
  247. if ($r!=18) $pflag=pg_result($res,$i,8);
  248. if (($posts > 100)&&($showpics)) {
  249. $message=smileys(uconv(pg_result($res,$i,2)));
  250. if ($uacc > 1) $message=msmileys($message);
  251. if ($fr_u==549) $message=o_smileys($message);
  252. if ($uacc > 1) $message=psmileys($message);
  253. if (($fr_u==1)||($fr_u==2)) $message=ksmileys($message);
  254. } else {
  255. $message=uconv(pg_result($res,$i,2));
  256. }
  257. $name=uconv(pg_result($res,$i,4));
  258. # if ($access==3) $name = sprintf("<b><i>%s</i></b>", uconv(pg_result($res,$i,4)));
  259. # if ($access==2) $name = sprintf("<b>%s</b>", uconv(pg_result($res,$i,4)));
  260. $mtime=strftime("%H:%M", pg_result($res,$i,3));
  261. $to_u=pg_result($res,$i,1);
  262. if (($uid)&&($access < 2)) {
  263. $ign_rows=pg_numrows($res_ign);
  264. if ($ign_rows) {
  265. for ($k=0; $k<$ign_rows; $k++) {
  266. if (pg_result($res_ign,$k,0)==pg_result($res,$i,0))
  267. $message='Ignored';
  268. }
  269. }
  270. }
  271. if ($to_u) {
  272. $res_to_u=pg_query($conn,"select login from users where id='$to_u';");
  273. $name_to=uconv(pg_result($res_to_u,0,0));
  274. print "<a href=\"user_info.php?id=".pg_result($res,$i,0)."&amp;r=".$r."&amp;pid=".$pid."\">". $name." -&gt; ".$name_to." ".$mtime."&gt;</a> ".$message."<br/>";
  275. } else {
  276. if ($pflag) {
  277. print "<a href=\"user_info.php?id=".pg_result($res,$i,0)."&amp;r=".$r."&amp;pid=".$pid."\">* [".$mtime."]</a> ". $name." ".$message."<br/>";
  278. } else {
  279. print "<a href=\"user_info.php?id=".pg_result($res,$i,0)."&amp;r=".$r."&amp;pid=".$pid."\">". $name." ".$mtime."&gt;</a> ".$message."<br/>";
  280. }
  281. }
  282. }
  283.  
  284. if ($rows>=$ppp) print("<a href=\"chat.php?p=".$np."&amp;r=".$r."&amp;lang=".$lang."\">Next ".$ppp."</a><br/>");
  285. if ($p>0) print("<a href=\"chat.php?p=".$pp."&amp;r=".$r."&amp;lang=".$lang."\">Prev ".$ppp."</a><br/>");
  286. }
  287. pg_close($conn);
  288. ?>
  289. </p>
  290. </card>
  291. </wml>