--- old/lib.php 2009-03-05 19:48:12.000000000 +1100 +++ new/lib.php 2009-04-08 19:58:41.000000000 +1000 @@ -1614,7 +1614,12 @@ // And admins can see all courses, so pass the $doanything flag enabled $courses1 = get_records('course', 'id', SITEID); $courses2 = get_my_courses($userid, null, null, true); - $courses = array_merge($courses1, $courses2); + // UPDATE: And parents can see their mentee's courses (if readuserposts selected). Look for the relevant role on the possible mentee id. + $menteeid = optional_param('id', 0, PARAM_INT); + if(has_capability('moodle/user:readuserposts', get_context_instance(CONTEXT_USER, $menteeid))) { + $courses3 = get_my_courses($menteeid, null, null, true); + } + $courses = array_merge($courses1, $courses2, $courses3); } if (!$courses) { return array(); @@ -1643,7 +1648,8 @@ $context = get_context_instance(CONTEXT_MODULE, $cm->id); $forum = $courseforums[$forumid]; - if (!has_capability('mod/forum:viewdiscussion', $context)) { + if (!has_capability('mod/forum:viewdiscussion', $context) && + !has_capability('moodle/user:readuserposts', get_context_instance(CONTEXT_USER, $menteeid))) { continue; } @@ -2768,6 +2774,8 @@ static $strpruneheading, $displaymode; static $strmarkread, $strmarkunread; + $menteeid = optional_param('id', 0, PARAM_INT); + $post->course = $course->id; $post->forum = $forum->id; @@ -2786,6 +2794,7 @@ $cm->cache->caps['mod/forum:deleteownpost'] = has_capability('mod/forum:deleteownpost', $modcontext); $cm->cache->caps['mod/forum:deleteanypost'] = has_capability('mod/forum:deleteanypost', $modcontext); $cm->cache->caps['mod/forum:viewanyrating'] = has_capability('mod/forum:viewanyrating', $modcontext); + $cm->cache->caps['moodle/user:readuserposts'] = has_capability('moodle/user:readuserposts', get_context_instance(CONTEXT_USER, $menteeid)); } if (!isset($cm->uservisible)) { @@ -4625,8 +4634,8 @@ $user = $USER; } - if (isset($cm->cache->caps['mod/forum:viewdiscussion'])) { - if (!$cm->cache->caps['mod/forum:viewdiscussion']) { + if (isset($cm->cache->caps['mod/forum:viewdiscussion']) || isset($cm->cache->caps['moodle/user:readuserposts'])) { + if (!$cm->cache->caps['mod/forum:viewdiscussion'] && !$cm->cache->caps['moodle/user:readuserposts']) { return false; } } else {