MDL-18094: course/viewhiddenactivities didn't work (in some parts of the code) at module level
This commit is contained in:
+18
-8
@@ -3558,21 +3558,31 @@ function fetch_context_capabilities($context) {
|
||||
$cm = get_record('course_modules', 'id', $context->instanceid);
|
||||
$module = get_record('modules', 'id', $cm->module);
|
||||
|
||||
$extra = "";
|
||||
$modfile = "$CFG->dirroot/mod/$module->name/lib.php";
|
||||
if (file_exists($modfile)) {
|
||||
include_once($modfile);
|
||||
$modfunction = $module->name.'_get_extra_capabilities';
|
||||
if (function_exists($modfunction)) {
|
||||
if ($extracaps = $modfunction()) {
|
||||
foreach ($extracaps as $key=>$value) {
|
||||
$extracaps[$key]= "'$value'";
|
||||
}
|
||||
$extra = implode(',', $extracaps);
|
||||
$extra = "OR name IN ($extra)";
|
||||
}
|
||||
$extracaps = $modfunction();
|
||||
}
|
||||
}
|
||||
if(empty($extracaps)) {
|
||||
$extracaps = array();
|
||||
}
|
||||
|
||||
// All modules allow viewhiddenactivities. This is so you can hide
|
||||
// the module then override to allow specific roles to see it.
|
||||
// The actual check is in course page so not module-specific
|
||||
$extracaps[]="moodle/course:viewhiddenactivities";
|
||||
if (count($extracaps) == 1) {
|
||||
$extra = "OR name = '".reset($extracaps)."'";
|
||||
} else {
|
||||
foreach ($extracaps as $key=>$value) {
|
||||
$extracaps[$key]= "'$value'";
|
||||
}
|
||||
$extra = implode(',', $extracaps);
|
||||
$extra = "OR name IN ($extra)";
|
||||
}
|
||||
|
||||
$SQL = "SELECT *
|
||||
FROM {$CFG->prefix}capabilities
|
||||
|
||||
+7
-2
@@ -1986,10 +1986,15 @@ function require_login($courseorid=0, $autologinguest=true, $cm=null, $setwantsu
|
||||
print_error('nocontext');
|
||||
}
|
||||
}
|
||||
if (!empty($cm) && !isset($cm->context)) {
|
||||
if ( ! $cm->context = get_context_instance(CONTEXT_MODULE, $cm->id) ) {
|
||||
print_error('nocontext');
|
||||
}
|
||||
}
|
||||
if ($COURSE->id == SITEID) {
|
||||
/// Eliminate hidden site activities straight away
|
||||
if (!empty($cm) && !$cm->visible
|
||||
&& !has_capability('moodle/course:viewhiddenactivities', $COURSE->context)) {
|
||||
&& !has_capability('moodle/course:viewhiddenactivities', $cm->context)) {
|
||||
redirect($CFG->wwwroot, get_string('activityiscurrentlyhidden'));
|
||||
}
|
||||
user_accesstime_log($COURSE->id); /// Access granted, update lastaccess times
|
||||
@@ -2080,7 +2085,7 @@ function require_login($courseorid=0, $autologinguest=true, $cm=null, $setwantsu
|
||||
|
||||
/// Make sure they can read this activity too, if specified
|
||||
|
||||
if (!empty($cm) and !$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $COURSE->context)) {
|
||||
if (!empty($cm) and !$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $cm->context)) {
|
||||
redirect($CFG->wwwroot.'/course/view.php?id='.$cm->course, get_string('activityiscurrentlyhidden'));
|
||||
}
|
||||
user_accesstime_log($COURSE->id); /// Access granted, update lastaccess times
|
||||
|
||||
Reference in New Issue
Block a user