mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 17:06:53 +02:00
testing patch for MDL-9238 Arnaud's patch
This commit is contained in:
parent
3b36536185
commit
6a61f741e6
1 changed files with 11 additions and 50 deletions
|
@ -738,6 +738,7 @@ function get_my_courses($userid, $sort=NULL, $fields=NULL, $doanything=false,$li
|
||||||
// is category. So we consider:
|
// is category. So we consider:
|
||||||
// 1. All courses in which the user is assigned a role
|
// 1. All courses in which the user is assigned a role
|
||||||
// 2. All courses in categories in which the user is assigned a role
|
// 2. All courses in categories in which the user is assigned a role
|
||||||
|
// 2BIS. All courses in subcategories in which the user gets assignment because he is assigned in one of its ascendant categories
|
||||||
// 3. All courses which have overrides for moodle/course:view
|
// 3. All courses which have overrides for moodle/course:view
|
||||||
// Remember that this is just a filter. We check each individual course later.
|
// Remember that this is just a filter. We check each individual course later.
|
||||||
// However for a typical student on a large system this can reduce the
|
// However for a typical student on a large system this can reduce the
|
||||||
|
@ -764,6 +765,16 @@ FROM
|
||||||
WHERE
|
WHERE
|
||||||
ra.userid=$userid
|
ra.userid=$userid
|
||||||
UNION
|
UNION
|
||||||
|
SELECT
|
||||||
|
$fields
|
||||||
|
FROM
|
||||||
|
{$CFG->prefix}role_assignments ra
|
||||||
|
INNER JOIN {$CFG->prefix}context x ON x.id=ra.contextid
|
||||||
|
INNER JOIN {$CFG->prefix}course_categories a ON (a.path LIKE '%/x.instanceid/%' OR a.id=x.instanceid) AND x.contextlevel=40
|
||||||
|
INNER JOIN {$CFG->prefix}course c ON c.category=a.id
|
||||||
|
WHERE
|
||||||
|
ra.userid=$userid
|
||||||
|
UNION
|
||||||
SELECT
|
SELECT
|
||||||
$fields
|
$fields
|
||||||
FROM
|
FROM
|
||||||
|
@ -806,56 +817,6 @@ ORDER BY $sort");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// MDL-9238, course in sub categories are not shown
|
|
||||||
// if the user has course:view at system level, then he can view all course
|
|
||||||
// skip this part
|
|
||||||
if (!$candoanything && !has_capability('moodle/course:view',$sitecontext,$userid,$doanything)) {
|
|
||||||
|
|
||||||
// get all course categories with an assignment
|
|
||||||
$SQL = "SELECT a.id, a.id FROM {$CFG->prefix}role_assignments ra
|
|
||||||
INNER JOIN {$CFG->prefix}context x ON x.id=ra.contextid
|
|
||||||
INNER JOIN {$CFG->prefix}course_categories a ON x.instanceid=a.id AND x.contextlevel=40
|
|
||||||
WHERE ra.userid=$userid";
|
|
||||||
|
|
||||||
if ($mcoursecats = get_records_sql($SQL)) {
|
|
||||||
foreach ($mcoursecats as $mcoursecat) {
|
|
||||||
|
|
||||||
// run the sql to get the path, find all courses in each sub (sub) categories
|
|
||||||
$pathsql = "SELECT $fields
|
|
||||||
FROM {$CFG->prefix}course_categories cc,
|
|
||||||
{$CFG->prefix}course c
|
|
||||||
WHERE cc.path LIKE '%".$mcoursecat->id."/%'
|
|
||||||
AND c.category = cc.id";
|
|
||||||
|
|
||||||
if ($scourses = get_records_sql($pathsql)) {
|
|
||||||
|
|
||||||
// add each course in sub category, if correct permissions are set
|
|
||||||
// and if the course is not added to my courses list yet
|
|
||||||
foreach ($scourses as $scourse) {
|
|
||||||
$context = get_context_instance(CONTEXT_COURSE, $scourse->id);
|
|
||||||
if (!isset($mycourses[$scourse->id]) &&
|
|
||||||
has_capability('moodle/course:view', $context, $userid, $doanything) &&
|
|
||||||
!has_capability('moodle/legacy:guest', $context, $userid, false) &&
|
|
||||||
($scourse->visible ||
|
|
||||||
has_capability('moodle/course:viewhiddencourses', $context, $userid))) {
|
|
||||||
// add it to my course array
|
|
||||||
$mycourses[$scourse->id] = $scourse;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Only return a limited number of courses if limit is set
|
|
||||||
if($limit>0) {
|
|
||||||
$limit--;
|
|
||||||
if($limit==0) {
|
|
||||||
// breaks the 2 foreach loops
|
|
||||||
break 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cache if using default params...
|
// Cache if using default params...
|
||||||
if (!empty($USER->id) && ($USER->id == $userid) && $usingdefaults) {
|
if (!empty($USER->id) && ($USER->id == $userid) && $usingdefaults) {
|
||||||
$USER->mycourses[$doanything] = $mycourses;
|
$USER->mycourses[$doanything] = $mycourses;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue