chat.php 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. <?php
  2. $data = false;
  3. ini_set("display_errors", 1);
  4. ini_set("error_reporting", E_ALL | E_STRICT);
  5. require_once("user.php");
  6. require_once("functions.php");
  7. $USER = new User("registration_callback");
  8. qualifyUser(CHATAUTH, true);
  9. if(CHAT !== "true"){ die("chat not enabled");}
  10. $dbfile = DATABASE_LOCATION.'users.db';
  11. $file_db = new PDO("sqlite:" . $dbfile);
  12. $file_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  13. $dbOptions = $file_db->query('SELECT name FROM sqlite_master WHERE type="table" AND name="options"');
  14. $hasOptions = "No";
  15. foreach($dbOptions as $row) :
  16. if (in_array("options", $row)) :
  17. $hasOptions = "Yes";
  18. endif;
  19. endforeach;
  20. if($hasOptions == "No") :
  21. $title = "Organizr";
  22. $topbar = "#333333";
  23. $topbartext = "#66D9EF";
  24. $bottombar = "#333333";
  25. $sidebar = "#393939";
  26. $hoverbg = "#AD80FD";
  27. $activetabBG = "#F92671";
  28. $activetabicon = "#FFFFFF";
  29. $activetabtext = "#FFFFFF";
  30. $inactiveicon = "#66D9EF";
  31. $inactivetext = "#66D9EF";
  32. $loading = "#66D9EF";
  33. $hovertext = "#000000";
  34. endif;
  35. if($hasOptions == "Yes") :
  36. $resulto = $file_db->query('SELECT * FROM options');
  37. foreach($resulto as $row) :
  38. $title = isset($row['title']) ? $row['title'] : "Organizr";
  39. $topbartext = isset($row['topbartext']) ? $row['topbartext'] : "#66D9EF";
  40. $topbar = isset($row['topbar']) ? $row['topbar'] : "#333333";
  41. $bottombar = isset($row['bottombar']) ? $row['bottombar'] : "#333333";
  42. $sidebar = isset($row['sidebar']) ? $row['sidebar'] : "#393939";
  43. $hoverbg = isset($row['hoverbg']) ? $row['hoverbg'] : "#AD80FD";
  44. $activetabBG = isset($row['activetabBG']) ? $row['activetabBG'] : "#F92671";
  45. $activetabicon = isset($row['activetabicon']) ? $row['activetabicon'] : "#FFFFFF";
  46. $activetabtext = isset($row['activetabtext']) ? $row['activetabtext'] : "#FFFFFF";
  47. $inactiveicon = isset($row['inactiveicon']) ? $row['inactiveicon'] : "#66D9EF";
  48. $inactivetext = isset($row['inactivetext']) ? $row['inactivetext'] : "#66D9EF";
  49. $loading = isset($row['loading']) ? $row['loading'] : "#66D9EF";
  50. $hovertext = isset($row['hovertext']) ? $row['hovertext'] : "#000000";
  51. endforeach;
  52. endif;
  53. ?>
  54. <!DOCTYPE html>
  55. <html lang="en" class="no-js">
  56. <head>
  57. <meta charset="UTF-8">
  58. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  59. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  60. <meta name="msapplication-tap-highlight" content="no" />
  61. <title><?=$title;?> Chat</title>
  62. <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css">
  63. <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css">
  64. <link rel="stylesheet" href="bower_components/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css">
  65. <script src="js/menu/modernizr.custom.js"></script>
  66. <link rel="stylesheet" href="bower_components/animate.css/animate.min.css">
  67. <link rel="stylesheet" href="css/style.css?v=<?php echo INSTALLEDVERSION; ?>">
  68. <!--Scripts-->
  69. <script src="bower_components/jquery/dist/jquery.min.js"></script>
  70. <script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
  71. <script src="bower_components/moment/min/moment.min.js"></script>
  72. <script src="bower_components/jquery.nicescroll/jquery.nicescroll.min.js"></script>
  73. <script src="bower_components/slimScroll/jquery.slimscroll.min.js"></script>
  74. <script src="bower_components/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js"></script>
  75. <script src="bower_components/jquery.nicescroll/jquery.nicescroll.min.js"></script>
  76. <script src="bower_components/cta/dist/cta.min.js"></script>
  77. <script src="bower_components/fullcalendar/dist/fullcalendar.js"></script>
  78. <script src="js/jqueri_ui_custom/jquery-ui.min.js"></script>
  79. <script src="js/jquery.mousewheel.min.js" type="text/javascript"></script>
  80. <!--Other-->
  81. <script src="js/ajax.js?v=<?php echo INSTALLEDVERSION; ?>"></script>
  82. <script src="chatjs.php" defer="true"></script>
  83. <!--[if lt IE 9]>
  84. <script src="bower_components/html5shiv/dist/html5shiv.min.js"></script>
  85. <script src="bower_components/respondJs/dest/respond.min.js"></script>
  86. <![endif]-->
  87. <style>
  88. .offline{
  89. -webkit-filter: grayscale; /*sepia, hue-rotate, invert....*/
  90. -webkit-filter: brightness(25%);
  91. }
  92. <?php customCSS(); ?>
  93. </style>
  94. </head>
  95. <body id="chat" class="scroller-body" style="padding: 0px;">
  96. <!-- D A T A B A S E -->
  97. <?php
  98. $dbcreated = false;
  99. if (!extension_loaded("SQLITE3")){
  100. echo '<div class="row" style="margin: 0"><div class="panel panel-danger" style="margin: 10px";>';
  101. echo '<div class="panel-heading">';
  102. echo '<h3 class="panel-title">SQLITE3</h3>';
  103. echo '</div>';
  104. echo '<div style="color: gray" class="panel-body">';
  105. echo getError(getOS(),'sqlite3');
  106. echo '</div></div></div>';
  107. die();
  108. }
  109. if( $db = new SQLite3("chatpack.db") ){
  110. if( $db->busyTimeout(5000) ){
  111. if( $db->exec("PRAGMA journal_mode = wal;") ) {
  112. $logtable = "CREATE TABLE IF NOT EXISTS chatpack_log
  113. (id INTEGER PRIMARY KEY,
  114. timestamp INTEGER NOT NULL,
  115. user TEXT NOT NULL,
  116. avatar TEXT NOT NULL,
  117. message TEXT NOT NULL,
  118. liked INTEGER DEFAULT 0)";
  119. if( $db->exec($logtable) ){
  120. $usertable = "CREATE TABLE IF NOT EXISTS chatpack_typing
  121. (id INTEGER PRIMARY KEY,
  122. timestamp INTEGER NOT NULL,
  123. user TEXT NOT NULL)";
  124. $onlinetable = "CREATE TABLE IF NOT EXISTS chatpack_last_message
  125. (
  126. user TEXT PRIMARY KEY NOT NULL,
  127. timestamp INTEGER NOT NULL,
  128. avatar TEXT NOT NULL)";
  129. if( $db->exec($usertable) && $db->exec($onlinetable) ){
  130. $dbcreated = true;
  131. }else{
  132. errormessage("creating database table for typing");
  133. }
  134. }else{
  135. errormessage("creating database table for messages");
  136. }
  137. if( !$db->close() ){
  138. errormessage("closing database connection");
  139. }
  140. }else{
  141. errormessage("setting journal mode");
  142. }
  143. }else{
  144. errormessage("setting busy timeout");
  145. }
  146. }else{
  147. errormessage("using SQLite");
  148. }
  149. if( $dbcreated ){?>
  150. <div class="main-wrapper" style="position: initial;">
  151. <div id="content" class="container-fluid">
  152. <br>
  153. <div class="row">
  154. <div class="col-lg-10">
  155. <div class="content-box big-box chat gray-bg">
  156. <div class="box" style="overflow: hidden; width: auto; height: 550px;">
  157. <div id="intro">
  158. <center><img class="logo" alt="logo" src="images/organizr-logo-h.png">
  159. <br><br>start chatting...</center>
  160. </div>
  161. <ul id="messages" class="chat-double chat-container"></ul>
  162. <ul class="chat-double chat-container" style="padding: 0px;"><li id="istyping"></li></ul>
  163. </div>
  164. <br/>
  165. <input id="message" autofocus type="text" class="form-control gray-bg" placeholder="Enter your text" autocomplete="off"/>
  166. <audio id="tabalert" preload="auto">
  167. <source src="chat/audio/newmessage.mp3" type="audio/mpeg">
  168. </audio>
  169. </div>
  170. </div>
  171. <div class="col-lg-2">
  172. <div class="content-box">
  173. <div class="content-title big-box i-block gray-bg">
  174. <h4 class="zero-m">Online</h4>
  175. </div>
  176. <div class="clearfix"></div>
  177. <div id="onlineusers" class="big-box"></div>
  178. </div>
  179. </div>
  180. </div>
  181. </div>
  182. </div>
  183. <?php } ?>
  184. </body>
  185. <script>
  186. $(".box").niceScroll({
  187. railpadding: {top:0,right:0,left:0,bottom:0},
  188. scrollspeed: 30,
  189. mousescrollstep: 60
  190. });
  191. $("#onlineusers").niceScroll({
  192. railpadding: {top:0,right:0,left:0,bottom:0},
  193. scrollspeed: 30,
  194. mousescrollstep: 60
  195. });
  196. </script>
  197. </html>