gradebook_functions_users.inc.php 4.9 KB

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