|
@@ -2571,10 +2571,11 @@ class CourseManager
|
|
|
* Get list of courses for a given user
|
|
|
* @param int $user_id
|
|
|
* @param boolean $include_sessions Whether to include courses from session or not
|
|
|
- * @return array List of codes and db names
|
|
|
+ * @param boolean $adminGetsAllCourses If the user is platform admin, whether he gets all the courses or just his. Note: This does *not* include all sessions
|
|
|
+ * @return array List of codes and db name
|
|
|
* @author isaac flores paz
|
|
|
*/
|
|
|
- public static function get_courses_list_by_user_id($user_id, $include_sessions = false)
|
|
|
+ public static function get_courses_list_by_user_id($user_id, $include_sessions = false, $adminGetsAllCourses = false)
|
|
|
{
|
|
|
$user_id = intval($user_id);
|
|
|
$course_list = array();
|
|
@@ -2584,15 +2585,22 @@ class CourseManager
|
|
|
$tbl_user_course_category = Database::get_main_table(TABLE_USER_COURSE_CATEGORY);
|
|
|
$special_course_list = self::get_special_course_list();
|
|
|
|
|
|
- $with_special_courses = $without_special_courses = '';
|
|
|
- if (!empty($special_course_list)) {
|
|
|
- $sc_string = '"' . implode('","', $special_course_list) . '"';
|
|
|
- $with_special_courses = ' course.code IN (' . $sc_string . ')';
|
|
|
- $without_special_courses = ' AND course.code NOT IN (' . $sc_string . ')';
|
|
|
- }
|
|
|
-
|
|
|
- if (!empty($with_special_courses)) {
|
|
|
+ if ($adminGetsAllCourses && UserManager::is_admin($user_id)) {
|
|
|
+ // get the whole courses list
|
|
|
$sql = "SELECT DISTINCT(course.code), course.id as real_id
|
|
|
+ FROM $tbl_course course";
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ $with_special_courses = $without_special_courses = '';
|
|
|
+ if (!empty($special_course_list)) {
|
|
|
+ $sc_string = '"' . implode('","', $special_course_list) . '"';
|
|
|
+ $with_special_courses = ' course.code IN (' . $sc_string . ')';
|
|
|
+ $without_special_courses = ' AND course.code NOT IN (' . $sc_string . ')';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!empty($with_special_courses)) {
|
|
|
+ $sql = "SELECT DISTINCT(course.code), course.id as real_id
|
|
|
FROM " . $tbl_course_user . " course_rel_user
|
|
|
LEFT JOIN " . $tbl_course . " course
|
|
|
ON course.id = course_rel_user.c_id
|
|
@@ -2601,23 +2609,23 @@ class CourseManager
|
|
|
WHERE $with_special_courses
|
|
|
GROUP BY course.code
|
|
|
ORDER BY user_course_category.sort,course.title,course_rel_user.sort ASC";
|
|
|
- $rs_special_course = Database::query($sql);
|
|
|
- if (Database::num_rows($rs_special_course) > 0) {
|
|
|
- while ($result_row = Database::fetch_array($rs_special_course)) {
|
|
|
- $result_row['special_course'] = 1;
|
|
|
- $course_list[] = $result_row;
|
|
|
- $codes[] = $result_row['real_id'];
|
|
|
+ $rs_special_course = Database::query($sql);
|
|
|
+ if (Database::num_rows($rs_special_course) > 0) {
|
|
|
+ while ($result_row = Database::fetch_array($rs_special_course)) {
|
|
|
+ $result_row['special_course'] = 1;
|
|
|
+ $course_list[] = $result_row;
|
|
|
+ $codes[] = $result_row['real_id'];
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // get course list not auto-register. Use Distinct to avoid multiple
|
|
|
- // entries when a course is assigned to a HRD (DRH) as watcher
|
|
|
- $sql = "SELECT DISTINCT(course.code), course.id as real_id
|
|
|
+ // get course list not auto-register. Use Distinct to avoid multiple
|
|
|
+ // entries when a course is assigned to a HRD (DRH) as watcher
|
|
|
+ $sql = "SELECT DISTINCT(course.code), course.id as real_id
|
|
|
FROM $tbl_course course
|
|
|
INNER JOIN $tbl_course_user cru ON course.id = cru.c_id
|
|
|
WHERE cru.user_id='$user_id' $without_special_courses";
|
|
|
-
|
|
|
+ }
|
|
|
$result = Database::query($sql);
|
|
|
|
|
|
if (Database::num_rows($result)) {
|