coaches.php 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. <?php
  2. /*
  3. * Created on 18 October 2006 by Elixir Interactive http://www.elixir-interactive.com
  4. */
  5. ob_start();
  6. // name of the language file that needs to be included
  7. $language_file = array ('registration', 'index', 'tracking', 'admin');
  8. $cidReset = true;
  9. require '../inc/global.inc.php';
  10. $this_section = "session_my_space";
  11. $nameTools = get_lang('Tutors');
  12. api_block_anonymous_users();
  13. $interbreadcrumb[] = array ("url" => "index.php", "name" => get_lang('MySpace'));
  14. if(isset($_GET["id_student"])){
  15. $interbreadcrumb[] = array ("url" => "student.php", "name" => get_lang('Students'));
  16. }
  17. Display :: display_header($nameTools);
  18. api_display_tool_title($nameTools);
  19. // Database Table Definitions
  20. $tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
  21. $tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
  22. $tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
  23. $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
  24. $tbl_session_rel_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
  25. $tbl_session_rel_course_rel_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
  26. $tbl_session_rel_user = Database :: get_main_table(TABLE_MAIN_SESSION_USER);
  27. $tbl_track_login = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_LOGIN);
  28. /*
  29. ===============================================================================
  30. FUNCTION
  31. ===============================================================================
  32. */
  33. function exportCsv($a_header, $a_data) {
  34. global $archiveDirName;
  35. $fileName = 'coaches.csv';
  36. $archivePath = api_get_path(SYS_ARCHIVE_PATH);
  37. $archiveURL = api_get_path(WEB_CODE_PATH).'course_info/download.php?archive=';
  38. if (!$open = fopen($archivePath.$fileName, 'w+')) {
  39. $message = get_lang('noOpen');
  40. } else {
  41. $info = '';
  42. foreach ($a_header as $header) {
  43. $info .= $header.';';
  44. }
  45. $info .= "\r\n";
  46. foreach ($a_data as $data) {
  47. foreach ($data as $infos) {
  48. $info .= $infos.';';
  49. }
  50. $info .= "\r\n";
  51. }
  52. fwrite($open, $info);
  53. fclose($open);
  54. $perm = api_get_setting('permissions_for_new_files');
  55. $perm = octdec(!empty($perm) ? $perm : '0660');
  56. chmod($fileName, $perm);
  57. header("Location:".$archiveURL.$fileName);
  58. }
  59. return $message;
  60. }
  61. function calculHours($seconds) {
  62. //combien d'heures ?
  63. $hours = floor($seconds / 3600);
  64. //combien de minutes ?
  65. $min = floor(($seconds - ($hours * 3600)) / 60);
  66. if ($min < 10) {
  67. $min = "0".$min;
  68. }
  69. //combien de secondes
  70. $sec = $seconds - ($hours * 3600) - ($min * 60);
  71. if ($sec < 10) {
  72. $sec = "0".$sec;
  73. }
  74. //echo $hours."h".$min."m".$sec."s";
  75. return $hours."h".$min."m".$sec."s" ;
  76. }
  77. function is_coach() {
  78. global $tbl_session_course;
  79. $sql = "SELECT course_code FROM $tbl_session_course WHERE id_coach='".$_SESSION["_uid"]."'";
  80. $result = api_sql_query($sql, __FILE__, __LINE__);
  81. if (mysql_num_rows($result) > 0) {
  82. return true;
  83. } else {
  84. return false;
  85. }
  86. }
  87. /**
  88. * MAIN PART
  89. */
  90. if (isset($_POST['export'])) {
  91. $order_clause = api_is_western_name_order(PERSON_NAME_DATA_EXPORT) ? ' ORDER BY firstname, lastname' : ' ORDER BY lastname, firstname';
  92. } else {
  93. $order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname' : ' ORDER BY lastname, firstname';
  94. }
  95. if (isset($_GET["id_student"])) {
  96. $i_id_student=$_GET["id_student"];
  97. $sqlCoachs = "SELECT DISTINCT src.id_coach " .
  98. "FROM $tbl_session_rel_course as src, $tbl_session_rel_course_rel_user as srcru " .
  99. "WHERE src.id_coach<>'0' AND src.course_code=srcru.course_code AND srcru.id_user='$i_id_student' AND srcru.id_session=src.id_session";
  100. } else {
  101. if (api_is_platform_admin()) {
  102. $sqlCoachs = "SELECT DISTINCT id_coach, user_id, lastname, firstname
  103. FROM $tbl_user, $tbl_session_rel_course
  104. WHERE id_coach=user_id".$order_clause;
  105. } else {
  106. $sqlCoachs = "SELECT DISTINCT id_coach, $tbl_user.user_id, lastname, firstname
  107. FROM $tbl_user as user, $tbl_session_rel_course as session_rel_course, $tbl_course_user as course_rel_user
  108. WHERE course_rel_user.course_code=session_rel_course.course_code AND course_rel_user.status='1' AND course_rel_user.user_id='".$_SESSION["_uid"]."'
  109. AND session_rel_course.id_coach=user.user_id".$order_clause;
  110. }
  111. }
  112. $resultCoachs = api_sql_query($sqlCoachs, __FILE__, __LINE__);
  113. if (api_is_western_name_order()) {
  114. echo '<table class="data_table"><tr><th>'.get_lang('FirstName').'</th><th>'.get_lang('LastName').'</th><th>'.get_lang('ConnectionTime').'</th><th>'.get_lang('AdminCourses').'</th><th>'.get_lang('Students').'</th></tr>';
  115. } else {
  116. echo '<table class="data_table"><tr><th>'.get_lang('LastName').'</th><th>'.get_lang('FirstName').'</th><th>'.get_lang('ConnectionTime').'</th><th>'.get_lang('AdminCourses').'</th><th>'.get_lang('Students').'</th></tr>';
  117. }
  118. if (api_is_western_name_order(PERSON_NAME_DATA_EXPORT)) {
  119. $a_header[] = get_lang('FirstName');
  120. $a_header[] = get_lang('LastName');
  121. $a_header[] = get_lang('ConnectionTime');
  122. } else {
  123. $a_header[] = get_lang('LastName');
  124. $a_header[] = get_lang('FirstName');
  125. $a_header[] = get_lang('ConnectionTime');
  126. }
  127. if (mysql_num_rows($resultCoachs) > 0) {
  128. while ($a_coachs = mysql_fetch_array($resultCoachs)) {
  129. $i_id_coach=$a_coachs["id_coach"];
  130. if(isset($_GET["id_student"])){
  131. $sql_infos_coach = "SELECT lastname, firstname FROM $tbl_user WHERE user_id='$i_id_coach'";
  132. $resultCoachsInfos = api_sql_query($sql_infos_coach);
  133. $s_lastname = mysql_result($resultCoachsInfos,0,"lastname");
  134. $s_firstname = mysql_result($resultCoachsInfos,0,"firstname");
  135. } else {
  136. $s_lastname = $a_coachs["lastname"];
  137. $s_firstname = $a_coachs["firstname"];
  138. }
  139. $s_sql_connection_time = "SELECT login_date, logout_date FROM $tbl_track_login WHERE login_user_id ='$i_id_coach' AND logout_date <> 'null'";
  140. $q_result_connection_time = api_sql_query($s_sql_connection_time);
  141. $i_nb_seconds=0;
  142. while($a_connections = mysql_fetch_array($q_result_connection_time)) {
  143. $s_login_date = $a_connections["login_date"];
  144. $s_logout_date = $a_connections["logout_date"];
  145. $i_timestamp_login_date = strtotime($s_login_date);
  146. $i_timestamp_logout_date = strtotime($s_logout_date);
  147. $i_nb_seconds += ($i_timestamp_logout_date - $i_timestamp_login_date);
  148. }
  149. $s_connection_time = calculHours($i_nb_seconds);
  150. if ($s_connection_time == "0h00m00s") {
  151. $s_connection_time = "";
  152. }
  153. if ($i%2 == 0) {
  154. $s_css_class = "row_odd";
  155. if ($i%20 == 0 && $i != 0) {
  156. if (api_is_western_name_order()) {
  157. echo '<tr><th>'.get_lang('FirstName').'</th><th>'.get_lang('LastName').'</th><th>'.get_lang('ConnectionTime').'</th><th>'.get_lang('AdminCourses').'</th><th>'.get_lang('Students').'</th></tr>';
  158. } else {
  159. echo '<tr><th>'.get_lang('LastName').'</th><th>'.get_lang('FirstName').'</th><th>'.get_lang('ConnectionTime').'</th><th>'.get_lang('AdminCourses').'</th><th>'.get_lang('Students').'</th></tr>';
  160. }
  161. }
  162. } else {
  163. $s_css_class = "row_even";
  164. }
  165. $i++;
  166. if (api_is_western_name_order()) {
  167. echo '<tr class="'.$s_css_class.'"><td>'.$s_firstname.'</td><td>'.$s_lastname.'</td><td>'.$s_connection_time.'</td><td><a href="course.php?type=coach&user_id='.$i_id_coach.'"><img src="'.api_get_path(WEB_IMG_PATH).'2rightarrow.gif" border="0" /></a></td><td><a href="student.php?type=coach&user_id='.$i_id_coach.'"><img src="'.api_get_path(WEB_IMG_PATH).'2rightarrow.gif" border="0" /></a></td></tr>';
  168. } else {
  169. echo '<tr class="'.$s_css_class.'"><td>'.$s_lastname.'</td><td>'.$s_firstname.'</td><td>'.$s_connection_time.'</td><td><a href="course.php?type=coach&user_id='.$i_id_coach.'"><img src="'.api_get_path(WEB_IMG_PATH).'2rightarrow.gif" border="0" /></a></td><td><a href="student.php?type=coach&user_id='.$i_id_coach.'"><img src="'.api_get_path(WEB_IMG_PATH).'2rightarrow.gif" border="0" /></a></td></tr>';
  170. }
  171. if (api_is_western_name_order(PERSON_NAME_DATA_EXPORT)) {
  172. $a_data[$i_id_coach]["firstname"] = $s_firstname;
  173. $a_data[$i_id_coach]["lastname"] = $s_lastname;
  174. $a_data[$i_id_coach]["connection_time"] = $s_connection_time;
  175. } else {
  176. $a_data[$i_id_coach]["lastname"] = $s_lastname;
  177. $a_data[$i_id_coach]["firstname"] = $s_firstname;
  178. $a_data[$i_id_coach]["connection_time"] = $s_connection_time;
  179. }
  180. }
  181. }
  182. //No results
  183. else {
  184. echo '<tr><td colspan="5" "align=center">'.get_lang("NoResult").'</td></tr>';
  185. }
  186. echo '</table>';
  187. if (isset($_POST['export'])){
  188. exportCsv($a_header, $a_data);
  189. }
  190. echo "<br /><br />";
  191. echo "<form method='post' action='coaches.php'><button type='submit' class='save' name='export' value='".get_lang('exportExcel')."'>".get_lang('exportExcel')."</button><form>";
  192. /*
  193. ==============================================================================
  194. FOOTER
  195. ==============================================================================
  196. */
  197. Display::display_footer();