chat_hidden.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * Hidden frame that refreshes the visible frames when a modification occurs
  5. *
  6. * @author Olivier Brouckaert
  7. * @package chamilo.chat
  8. */
  9. /**
  10. * Code
  11. */
  12. define('FRAME', 'hidden');
  13. $language_file = array('chat');
  14. require_once '../inc/global.inc.php';
  15. require_once api_get_path(LIBRARY_PATH).'course.lib.php';
  16. require_once api_get_path(LIBRARY_PATH).'groupmanager.lib.php';
  17. require_once 'chat_functions.lib.php';
  18. $tbl_user = Database::get_main_table(TABLE_MAIN_USER);
  19. $tbl_chat_connected = Database::get_course_chat_connected_table();
  20. $query = "SELECT username FROM $tbl_user WHERE user_id='".$_user['user_id']."'";
  21. $result = Database::query($query);
  22. list($pseudo_user) = Database::fetch_row($result);
  23. $isAllowed = !(empty($pseudo_user) || !$_cid);
  24. $isMaster = (bool)$is_courseAdmin;
  25. /*if(!$isAllowed) {
  26. exit();
  27. }*/
  28. $date_now = date('Y-m-d');
  29. $group_id = intval($_SESSION['_gid']);
  30. $session_id = intval($_SESSION['id_session']);
  31. $session_condition = api_get_session_condition($session_id);
  32. $group_condition = " AND to_group_id = '$group_id'";
  33. $extra_condition = '';
  34. if (!empty($group_id)) {
  35. $extra_condition = $group_condition;
  36. } else {
  37. $extra_condition = $session_condition;
  38. }
  39. // get chat path
  40. $chat_path = '';
  41. $document_path = api_get_path(SYS_COURSE_PATH).$_course['path'].'/document';
  42. if (!empty($group_id)) {
  43. $group_info = GroupManager :: get_group_properties($group_id);
  44. $chat_path = $document_path.$group_info['directory'].'/chat_files/';
  45. } else {
  46. $chat_path = $document_path.'/chat_files/';
  47. }
  48. // get chat file
  49. $basename_chat = '';
  50. if (!empty($group_id)) {
  51. $basename_chat = 'messages-'.$date_now.'_gid-'.$group_id;
  52. } elseif (!empty($session_id)) {
  53. $basename_chat = 'messages-'.$date_now.'_sid-'.$session_id;
  54. } else {
  55. $basename_chat = 'messages-'.$date_now;
  56. }
  57. $chat_size_old = intval($_POST['chat_size_old']);
  58. $file = $chat_path.$basename_chat.'.log.html';
  59. $chat_size_new = 0;
  60. if (file_exists($file)) {
  61. $chat_size_new = filesize($file);
  62. }
  63. $sql = "SELECT user_id FROM $tbl_chat_connected WHERE user_id='".$_user['user_id']."' $extra_condition";
  64. $result = Database::query($sql);
  65. // The user_id exists so we must do an UPDATE and not a INSERT
  66. $current_time = date('Y-m-d H:i:s');
  67. if (Database::num_rows($result) == 0) {
  68. $query = "INSERT INTO $tbl_chat_connected(user_id,last_connection,session_id,to_group_id) VALUES('".$_user['user_id']."','$current_time','$session_id','$group_id')";
  69. } else {
  70. $query = "UPDATE $tbl_chat_connected set last_connection='".$current_time."' WHERE user_id='".$_user['user_id']."' AND session_id='$session_id' AND to_group_id='$group_id'";
  71. }
  72. Database::query($query);
  73. $query = "SELECT COUNT(user_id) FROM $tbl_chat_connected WHERE last_connection>'".date('Y-m-d H:i:s',time()-60*5)."' $extra_condition";
  74. $result = Database::query($query);
  75. $connected_old = intval($_POST['connected_old']);
  76. list($connected_new) = Database::fetch_row($result);
  77. /*disconnected user of chat*/
  78. disconnect_user_of_chat ();
  79. require 'header_frame.inc.php';
  80. // Navigation menu
  81. if (api_get_setting('show_navigation_menu') != 'false') {
  82. $course_id = api_get_course_id();
  83. if (!empty($course_id) && ($course_id != -1)) {
  84. if (api_get_setting('show_navigation_menu') != 'icons') {
  85. echo '</div> <!-- end #center -->';
  86. echo '</div> <!-- end #centerwrap -->';
  87. }
  88. require_once api_get_path(INCLUDE_PATH).'tool_navigation_menu.inc.php';
  89. show_navigation_menu();
  90. }
  91. }
  92. ?>
  93. <form name="formHidden" method="post" action="<?php echo api_get_self().'?cidReq='.$_GET['cidReq']; ?>">
  94. <input type="hidden" name="chat_size_old" value="<?php echo $chat_size_new; ?>">
  95. <input type="hidden" name="connected_old" value="<?php echo $connected_new; ?>">
  96. </form>
  97. <?php
  98. if ($_SESSION["origin"] == 'whoisonline') { //check if our target has denied our request or not
  99. $talk_to = $_SESSION["target"];
  100. $track_user_table = Database::get_main_table(TABLE_MAIN_USER);
  101. $sql = "select chatcall_text from $track_user_table where ( user_id = $talk_to )";
  102. $result = Database::query($sql);
  103. $row = Database::fetch_array($result);
  104. if ($row['chatcall_text'] == 'DENIED') {
  105. echo "<script language=\"javascript\" type=\"text/javascript\"> alert('".get_lang('ChatDenied')."'); </script>";
  106. $sql = "update $track_user_table set chatcall_user_id = '', chatcall_date = '', chatcall_text='' WHERE (user_id = $talk_to)";
  107. $result = Database::query($sql);
  108. }
  109. }
  110. require 'footer_frame.inc.php';