gradebook_functions_users.inc.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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_user = Database :: get_main_table(TABLE_MAIN_USER);
  31. $order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname ASC' : ' ORDER BY lastname, firstname ASC';
  32. $sql = 'SELECT user.user_id,lastname,firstname'
  33. .' FROM '.$tbl_course_user.' as course_rel_user, '.$tbl_user.' as user'
  34. .' WHERE course_rel_user.user_id=user.user_id'
  35. .' AND course_rel_user.status='.STUDENT
  36. ." AND course_rel_user.course_code='".$course_id."'"
  37. .$order_clause;
  38. $result = api_sql_query($sql, __FILE__, __LINE__);
  39. return get_user_array_from_sql_result($result);
  40. }
  41. function get_user_array_from_sql_result($result) {
  42. $a_students = array();
  43. while ($user = Database::fetch_array($result)) {
  44. if (!array_key_exists($user['user_id'],$a_students)) {
  45. $a_current_student = array ();
  46. $a_current_student[] = $user['user_id'];
  47. $a_current_student[] = $user['lastname'];
  48. $a_current_student[] = $user['firstname'];
  49. $a_students['STUD'.$user['user_id']] = $a_current_student;
  50. }
  51. }
  52. return $a_students;
  53. }
  54. function get_all_users ($evals = array(), $links = array()) {
  55. $coursecodes = array();
  56. $users = array();
  57. foreach ($evals as $eval) {
  58. $coursecode = $eval->get_course_code();
  59. // evaluation in course
  60. if (isset($coursecode) && !empty($coursecode)) {
  61. if (!array_key_exists($coursecode,$coursecodes)) {
  62. $coursecodes[$coursecode] = '1';
  63. $users = array_merge($users, get_users_in_course($coursecode));
  64. }
  65. } else {// course independent evaluation
  66. $tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
  67. $tbl_res = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
  68. $sql = 'SELECT user.user_id,lastname,firstname'
  69. .' FROM '.$tbl_res.' as res, '.$tbl_user.' as user'
  70. .' WHERE res.evaluation_id = '.$eval->get_id()
  71. .' AND res.user_id = user.user_id';
  72. $result = api_sql_query($sql, __FILE__, __LINE__);
  73. $users = array_merge($users,get_user_array_from_sql_result($result));
  74. }
  75. }
  76. foreach ($links as $link) {
  77. // links are always in a course
  78. $coursecode = $link->get_course_code();
  79. if (!array_key_exists($coursecode,$coursecodes)) {
  80. $coursecodes[$coursecode] = '1';
  81. $users = array_merge($users, get_users_in_course($coursecode));
  82. }
  83. }
  84. unset ($coursecodes);
  85. return $users;
  86. }
  87. /**
  88. * Search students matching a given last name and/or first name
  89. * @author Bert Stepp�
  90. */
  91. function find_students($mask= '') {
  92. // students shouldn't be here // don't search if mask empty
  93. if (!api_is_allowed_to_create_course() || empty ($mask)) {
  94. return null;
  95. }
  96. $tbl_user= Database :: get_main_table(TABLE_MAIN_USER);
  97. $tbl_cru= Database :: get_main_table(TABLE_MAIN_COURSE_USER);
  98. $sql= 'SELECT DISTINCT user.user_id, user.lastname, user.firstname, user.email' . ' FROM ' . $tbl_user . ' user';
  99. if (!api_is_platform_admin()) {
  100. $sql .= ', ' . $tbl_cru . ' cru';
  101. }
  102. $sql .= ' WHERE user.status = ' . STUDENT;
  103. $sql .= ' AND (user.lastname LIKE '."'%" . $mask . "%'";
  104. $sql .= ' OR user.firstname LIKE '."'%" . $mask . "%')";
  105. if (!api_is_platform_admin()) {
  106. $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 . ')';
  107. }
  108. $sql .= ' ORDER BY lastname';
  109. $result= api_sql_query($sql, __FILE__, __LINE__);
  110. $db_users= api_store_result($result);
  111. return $db_users;
  112. }
  113. /**
  114. * Get user information from a given id
  115. * @param int $userid The userid
  116. * @return array All user information as an associative array
  117. */
  118. function get_user_info_from_id($userid) {
  119. $user_table= Database :: get_main_table(TABLE_MAIN_USER);
  120. $sql= 'SELECT * FROM ' . $user_table . ' WHERE user_id=' . $userid;
  121. $res= api_sql_query($sql, __FILE__, __LINE__);
  122. $user= Database::fetch_array($res,ASSOC);
  123. return $user;
  124. }