diff --git a/lib/accesslib.php b/lib/accesslib.php index 903266c6bd4..95bda1938f0 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -1796,8 +1796,6 @@ function get_user_access_bycontext($userid, $context, $acc=NULL) { function load_all_capabilities() { global $USER,$CFG; - unset($USER->mycourses); // Reset a cache used by get_my_courses - static $defcaps; $base = '/'.SYSCONTEXTID; diff --git a/lib/datalib.php b/lib/datalib.php index c8f3370563f..ec610478df9 100644 --- a/lib/datalib.php +++ b/lib/datalib.php @@ -624,15 +624,21 @@ function get_my_courses($userid, $sort='visible DESC,sortorder ASC', $fields=NUL } if ($userid === $USER->id && isset($USER->access)) { - return get_courses_bycap_fromsess('moodle/course:view', $USER->access, - $doanything, $sort, $fields, - $limit); + $accessinfo = $USER->access; } else { $accessinfo = get_user_access_sitewide($userid); - return get_courses_bycap_fromsess('moodle/course:view', $accessinfo, + } + $courses = get_courses_bycap_fromsess('moodle/course:view', $accessinfo, $doanything, $sort, $fields, $limit); + // strangely, get_my_courses() is expected to return the + // array keyed on id, which messes up the sorting + $kcourses = array(); + $cc = count($courses); + for ($n=0; $n<$cc; $n++) { + $kcourses[$courses[$n]->id] = $courses[$n]; } + return $kcourses; } /**