refreshmessages.php 6.0 KB

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