4
0

refreshmessages.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. $currentuser = $_POST["user"];
  3. // get last 25 messages, which covers 25 users messaging during one 500 millisecond message refresh
  4. include("connect.php");
  5. if( $result = $db->query("SELECT * FROM
  6. (SELECT id, timestamp, user, avatar, message
  7. FROM chatpack_log ORDER BY id DESC LIMIT 125)
  8. ORDER BY id ASC") )
  9. {
  10. $newmessages = array();
  11. while( $row = $result->fetchArray() )
  12. {
  13. $id = $row["id"];
  14. $timestamp = $row["timestamp"];
  15. $user = $row["user"];
  16. $avatar = $row["avatar"];
  17. $message = $row["message"];
  18. $timenow = time();
  19. $messagetime = date("h:iA", intval($timestamp));
  20. $messagedate = date("m-d", intval($timestamp));
  21. $messagenewtime = date("Y-m-d H:i:s", intval($timestamp));
  22. $message = utf8_encode($message);
  23. $msgstr = ""; // message components
  24. if( strlen($user) > 0 && strlen($message) > 0 )
  25. {
  26. // catch emoticon
  27. $emoticon = false;
  28. if( stristr($message, "specialcharemoticon") )
  29. {
  30. $emoticonid = substr($message, 11);
  31. $message = "<img class=\"emoticonimgchat\" id=\"$emoticonid\" src=\"img/$emoticonid.png\">";
  32. $emoticon = true;
  33. }
  34. // catch image
  35. $image = false;
  36. if( stristr($message, "specialcharimg") )
  37. {
  38. $imagename = substr($message, 14);
  39. $message = "<img class=\"thumbnailimgchat\" id=\"$imagename\" src=\"uploads/$imagename\">";
  40. $image = true;
  41. $endingpos = strpos($imagename, ".");
  42. $originalname = substr($imagename, 0, $endingpos-1);
  43. $ending = substr($imagename, $endingpos+1);
  44. $originalimg = $originalname . "." . $ending;
  45. }
  46. if( !$emoticon && !$image )
  47. {
  48. $message = decryptmessage($message);
  49. }
  50. // catch URLs
  51. /*$message = str_replace("https://", "http://", $message);
  52. if( !stristr($message, "http://www.") )
  53. {
  54. $message = str_replace("www.", "http://www.", $message);
  55. }
  56. $message = preg_replace("!((http|ftp)(s)?:\/\/)(www\.)?[a-zA-Z0-9.?&_/=\-\%\:,\#\+]+!",
  57. "<a href=\"$0\" target=\"_blank\">$0</a>", $message);
  58. $message = str_replace("target=\"_blank\">http://", "target=\"_blank\">", $message); */
  59. // catch highlightings
  60. $message = preg_replace("/\*{3}(.*?)\*{3}/", "<mark>$1</mark>", $message);
  61. $message = preg_replace("/\*{2}(.*?)\*{2}/",
  62. "<span style=\"font-size: 20px; color: #b77fdb;\"><em>$1</em></span>", $message);
  63. $message = preg_replace("/\*(.*?)\*/",
  64. "<span style=\"color: #d89334;\"><strong>$1</strong></span>", $message);
  65. $message = htmlspecialchars($message, ENT_QUOTES);
  66. // user online avatar
  67. //$avatar = "<img class=\"avatarimg\" id=\"$timestamp\" src=\"" . $avatar . "\">";
  68. // unique message key
  69. $keystring = $timestamp . $user . $messagetime . $message . $id;
  70. $messagekey = md5($keystring);
  71. // show user avatar and message
  72. if($user == $currentuser){
  73. $msgstr = $msgstr . "<p class=\"avatarandtext\" id=\"$messagekey\"><li><img src=\"$avatar\" id=\"$timestamp\" class=\"img-circle user-avatar $user\" alt=\"$user\"><div class=\"chat-panel blue-bg messagelike\" id=\"$id\"><div class=\"chat-heading clearfix\"><h4 class=\"pull-left zero-m\">$user</h4><p class=\"pull-right\"><i class=\"fa fa-clock-o\"></i><timestamp time=\"$messagenewtime\" class=\"chat-timestamp\">$messagenewtime</timestamp></p></div><div class=\"chat-body\">$message</div></div></li></p>";//class="chat-inverted"
  74. }else{
  75. $msgstr = $msgstr . "<p class=\"avatarandtext\" id=\"$messagekey\"><li class=\"chat-inverted\"><img src=\"$avatar\" id=\"$timestamp\" class=\"img-circle user-avatar $user\" alt=\"$user\"><div class=\"chat-panel red-bg messagelike\" id=\"$id\"><div class=\"chat-heading clearfix\"><h4 class=\"pull-left zero-m\">$user</h4><p class=\"pull-right\"><i class=\"fa fa-clock-o\"></i><timestamp time=\"$messagenewtime\" class=\"chat-timestamp\">$messagenewtime</timestamp></p></div><div class=\"chat-body\">$message</div></div></li></p>";//class="chat-inverted"
  76. }
  77. array_push($newmessages, $msgstr);
  78. }
  79. }
  80. }
  81. $db->close();
  82. function decryptmessage($msg)
  83. {
  84. $key = "OEFKSjczdG5JWkFITHZNUmFLT1I4aWRWaVVWY3l1SXdJZ285V2R3Ri90QjF4NUU1VG9mNnM
  85. wcDRYWTQ1dEtRRXRYNlFWZE01QW1WS0hTNXZzaEtRbEdkcXY4cWpEOVRBYjBzSGJlRXVPWW
  86. 9aWUtzNGZtK1BnRzRPeXk4ZWY0VUphUjc5VzRGQ2s0UXRrNENOWERJWmM3SWNFSEtpM0hpcT
  87. l2UVRET2UrMkxQR29ONVpOVDRnSHArTGVwQU15NXg4YzdNSWZQTlBOd2FlWmY2aWRQOUdSZVh
  88. 3VXQ4a1JlNDkwMWZIVE42cmpIMkRrUkg1VnF1NC9zMmhTZFROVnNleVlSTnVvcWtDYlB3TEJU
  89. eDlRT3ZPZVQ2N0psT0NFNW5nekFCdG9xLzZ6K0Qva1V5UzNoVlAxWGt1ZittZnE5ek10Q2x4Q1
  90. QrdHVRdEVoYUIxc2V1UjgrZDZyK1Zzem9LOEtpSG9halczNEpmem5nRWllSDBaRzNERHBTbUxB
  91. MGlodTZsclFEVzZLcjVBNEtYRUpxQXVNaEcycGN4U2VzT01NRlljM3pHL3Q1az0";
  92. $initvector = "aC92eG1PdGhuMXN6";
  93. $decryptedmessage = openssl_decrypt($msg, "AES-256-CBC", $key, 0, $initvector);
  94. $decryptedmessage = utf8_encode($decryptedmessage);
  95. return $decryptedmessage;
  96. }
  97. // pass new messages back to chat.js
  98. if( count($newmessages) == 1 )
  99. {
  100. echo $newmessages[0];
  101. }
  102. else
  103. {
  104. for( $i=0; $i<count($newmessages); $i++ )
  105. {
  106. if( $i == count($newmessages) - 1 )
  107. {
  108. echo $newmessages[$i];
  109. }
  110. else
  111. {
  112. echo $newmessages[$i]. "###endofmessage###";
  113. }
  114. }
  115. }
  116. ?>