gradebook_functions_users.inc.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. /*
  3. ==============================================================================
  4. Dokeos - elearning and course management software
  5. Copyright (c) 2008 Dokeos Latinoamerica SAC
  6. Copyright (c) 2006 Dokeos SPRL
  7. Copyright (c) 2006 Ghent University (UGent)
  8. Copyright (c) various contributors
  9. For a full list of contributors, see "credits.txt".
  10. The full license can be read in "license.txt".
  11. This program is free software; you can redistribute it and/or
  12. modify it under the terms of the GNU General Public License
  13. as published by the Free Software Foundation; either version 2
  14. of the License, or (at your option) any later version.
  15. See the GNU General Public License for more details.
  16. Contact address: Dokeos, rue du Corbeau, 108, B-1030 Brussels, Belgium
  17. Mail: info@dokeos.com
  18. ==============================================================================
  19. */
  20. /**
  21. * Various user related functions
  22. * @package dokeos.gradebook
  23. */
  24. /**
  25. * returns users within a course given by param
  26. * @param $course_id
  27. */
  28. function get_users_in_course($course_id) {
  29. $tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
  30. $tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
  31. $tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
  32. $order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname ASC' : ' ORDER BY lastname, firstname ASC';
  33. $current_session = api_get_session_id();
  34. if (!empty($current_session)) {
  35. $sql = "SELECT user.user_id,lastname,firstname
  36. FROM $tbl_session_course_user as scru, $tbl_user as user
  37. WHERE scru.id_user=user.user_id
  38. AND scru.status=0
  39. AND scru.course_code='$course_id' AND id_session ='$current_session' $order_clause ";
  40. } else {
  41. $sql = 'SELECT user.user_id,lastname,firstname'
  42. .' FROM '.$tbl_course_user.' as course_rel_user, '.$tbl_user.' as user'
  43. .' WHERE course_rel_user.user_id=user.user_id'
  44. .' AND course_rel_user.status='.STUDENT
  45. ." AND course_rel_user.course_code='".$course_id."'"
  46. .$order_clause;
  47. }
  48. $result = Database::query($sql, __FILE__, __LINE__);
  49. return get_user_array_from_sql_result($result);
  50. }
  51. function get_user_array_from_sql_result($result) {
  52. $a_students = array();
  53. while ($user = Database::fetch_array($result)) {
  54. if (!array_key_exists($user['user_id'],$a_students)) {
  55. $a_current_student = array ();
  56. $a_current_student[] = $user['user_id'];
  57. $a_current_student[] = $user['lastname'];
  58. $a_current_student[] = $user['firstname'];
  59. $a_students['STUD'.$user['user_id']] = $a_current_student;
  60. }
  61. }
  62. return $a_students;
  63. }
  64. function get_all_users ($evals = array(), $links = array()) {
  65. $coursecodes = array();
  66. $users = array();
  67. foreach ($evals as $eval) {
  68. $coursecode = $eval->get_course_code();
  69. // evaluation in course
  70. if (isset($coursecode) && !empty($coursecode)) {
  71. if (!array_key_exists($coursecode,$coursecodes)) {
  72. $coursecodes[$coursecode] = '1';
  73. $users = array_merge($users, get_users_in_course($coursecode));
  74. }
  75. } else {// course independent evaluation
  76. $tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
  77. $tbl_res = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
  78. $sql = 'SELECT user.user_id,lastname,firstname'
  79. .' FROM '.$tbl_res.' as res, '.$tbl_user.' as user'
  80. .' WHERE res.evaluation_id = '.$eval->get_id()
  81. .' AND res.user_id = user.user_id';
  82. $result = Database::query($sql, __FILE__, __LINE__);
  83. $users = array_merge($users,get_user_array_from_sql_result($result));
  84. }
  85. }
  86. foreach ($links as $link) {
  87. // links are always in a course
  88. $coursecode = $link->get_course_code();
  89. if (!array_key_exists($coursecode,$coursecodes)) {
  90. $coursecodes[$coursecode] = '1';
  91. $users = array_merge($users, get_users_in_course($coursecode));
  92. }
  93. }
  94. unset ($coursecodes);
  95. return $users;
  96. }
  97. /**
  98. * Search students matching a given last name and/or first name
  99. * @author Bert Stepp�
  100. */
  101. function find_students($mask= '') {
  102. // students shouldn't be here // don't search if mask empty
  103. if (!api_is_allowed_to_create_course() || empty ($mask)) {
  104. return null;
  105. }
  106. $tbl_user= Database :: get_main_table(TABLE_MAIN_USER);
  107. $tbl_cru= Database :: get_main_table(TABLE_MAIN_COURSE_USER);
  108. $sql= 'SELECT DISTINCT user.user_id, user.lastname, user.firstname, user.email' . ' FROM ' . $tbl_user . ' user';
  109. if (!api_is_platform_admin()) {
  110. $sql .= ', ' . $tbl_cru . ' cru';
  111. }
  112. $sql .= ' WHERE user.status = ' . STUDENT;
  113. $sql .= ' AND (user.lastname LIKE '."'%" . $mask . "%'";
  114. $sql .= ' OR user.firstname LIKE '."'%" . $mask . "%')";
  115. if (!api_is_platform_admin()) {
  116. $sql .= ' AND user.user_id = cru.user_id' . ' AND cru.course_code in' . ' (SELECT course_code' . ' FROM ' . $tbl_cru . ' WHERE user_id = ' . api_get_user_id() . ' AND status = ' . COURSEMANAGER . ')';
  117. }
  118. $sql .= ' ORDER BY lastname';
  119. $result= Database::query($sql, __FILE__, __LINE__);
  120. $db_users= Database::store_result($result);
  121. return $db_users;
  122. }
  123. /**
  124. * Get user information from a given id
  125. * @param int $userid The userid
  126. * @return array All user information as an associative array
  127. */
  128. function get_user_info_from_id($userid) {
  129. $user_table= Database :: get_main_table(TABLE_MAIN_USER);
  130. $sql= 'SELECT * FROM ' . $user_table . ' WHERE user_id=' . $userid;
  131. $res= Database::query($sql, __FILE__, __LINE__);
  132. $user= Database::fetch_array($res,ASSOC);
  133. return $user;
  134. }