whoisonlinesession.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * Shows who is online in a specific session
  5. * @package chamilo.main
  6. */
  7. /**
  8. * Initialization
  9. */
  10. include_once './main/inc/global.inc.php';
  11. api_block_anonymous_users();
  12. $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
  13. $tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
  14. $tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
  15. /**
  16. * Header
  17. * include the HTTP, HTML headers plus the top banner
  18. */
  19. Display::display_header(get_lang('UserOnlineListSession'));
  20. ?>
  21. <br /><br />
  22. <table class="data_table" width="60%">
  23. <tr class="tableName">
  24. <td colspan="4">
  25. <strong><?php echo get_lang('UserOnlineListSession'); ?></strong>
  26. </td>
  27. </tr>
  28. <tr>
  29. <th>
  30. <?php echo get_lang('Name'); ?>
  31. </th>
  32. <th>
  33. <?php echo get_lang('InCourse'); ?>
  34. </th>
  35. <th>
  36. <?php echo get_lang('Email'); ?>
  37. </th>
  38. <th>
  39. <?php echo get_lang('Chat'); ?>
  40. </th>
  41. </tr>
  42. <?php
  43. $session_is_coach = array();
  44. if (isset($_user['user_id']) && $_user['user_id'] != '') {
  45. $_user['user_id'] = intval($_user['user_id']);
  46. $result = Database::query("SELECT DISTINCT id,
  47. name,
  48. date_start,
  49. date_end
  50. FROM $tbl_session as session
  51. INNER JOIN $tbl_session_course_user as srcru
  52. ON srcru.id_user = ".$_user['user_id']." AND srcru.status=2
  53. AND session.id = srcru.id_session
  54. ORDER BY date_start, date_end, name");
  55. while ($session = Database:: fetch_array($result)) {
  56. $session_is_coach[$session['id']] = $session;
  57. }
  58. $sql = "SELECT DISTINCT id,
  59. name,
  60. date_start,
  61. date_end
  62. FROM $tbl_session as session
  63. WHERE session.id_coach = ".$_user['user_id']."
  64. ORDER BY date_start, date_end, name";
  65. $result = Database::query($sql);
  66. while ($session = Database:: fetch_array($result)) {
  67. $session_is_coach[$session['id']] = $session;
  68. }
  69. if (empty($time_limit)) {
  70. $time_limit = api_get_setting('time_limit_whosonline');
  71. } else {
  72. $time_limit = 60;
  73. }
  74. $online_time = time() - $time_limit*60;
  75. $current_date = api_get_utc_datetime($online_time);
  76. $students_online = array();
  77. foreach ($session_is_coach as $session) {
  78. $sql = "SELECT DISTINCT last_access.access_user_id,
  79. last_access.access_date,
  80. last_access.c_id,
  81. last_access.access_session_id,
  82. ".(api_is_western_name_order() ? "CONCAT(user.firstname,' ',user.lastname)" : "CONCAT(user.lastname,' ',user.firstname)")." as name,
  83. user.email
  84. FROM ".Database::get_main_table(TABLE_STATISTIC_TRACK_E_LASTACCESS)." AS last_access
  85. INNER JOIN ".Database::get_main_table(TABLE_MAIN_USER)." AS user
  86. ON user.user_id = last_access.access_user_id
  87. WHERE access_session_id='".$session['id']."'
  88. AND access_date >= '$current_date'
  89. GROUP BY access_user_id";
  90. $result = Database::query($sql);
  91. while($user_list = Database::fetch_array($result)) {
  92. $students_online[$user_list['access_user_id']] = $user_list;
  93. }
  94. }
  95. if (count($students_online) > 0) {
  96. foreach ($students_online as $student_online) {
  97. echo "<tr>
  98. <td>
  99. ";
  100. echo $student_online['name'];
  101. echo " </td>
  102. <td align='center'>
  103. ";
  104. $courseInfo = api_get_course_info($student_online['c_id']);
  105. echo $courseInfo['title'];
  106. echo " </td>
  107. <td align='center'>
  108. ";
  109. if (!empty($student_online['email'])) {
  110. echo $student_online['email'];
  111. } else {
  112. echo get_lang('NoEmail');
  113. }
  114. echo " </td>
  115. <td align='center'>
  116. ";
  117. echo '<a href="main/chat/chat.php?cidReq='.$courseInfo['code'].'&id_session='.$student_online['access_session_id'].'"> -> </a>';
  118. echo " </td>
  119. </tr>
  120. ";
  121. }
  122. } else {
  123. echo ' <tr>
  124. <td colspan="4">
  125. '.get_lang('NoOnlineStudents').'
  126. </td>
  127. </tr>
  128. ';
  129. }
  130. }
  131. ?>
  132. </table>
  133. <?php
  134. /*
  135. ==============================================================================
  136. FOOTER
  137. ==============================================================================
  138. */
  139. Display::display_footer();