$cm = $DB->get_record('course_modules', array('id'=>$context->instanceid));
$module = $DB->get_record('modules', array('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()) {
- list($extra, $params) = $DB->get_in_or_equal($extracaps, SQL_PARAMS_NAMED, 'cap0');
- $extra = "OR name $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";
+ list($extra, $params) = $DB->get_in_or_equal(
+ $extracaps, SQL_PARAMS_NAMED, 'cap0');
+ $extra = "OR name $extra";
$SQL = "SELECT *
FROM {capabilities}
print_error('nocontext');
}
}
+ if (!empty($cm) && !isset($cm->context)) {
+ if ( ! $cm->context = get_context_instance(CONTEXT_MODULE, $cm->id) ) {
+ print_error('nocontext');
+ }
+ }
// Conditional activity access control
if(!empty($CFG->enableavailability) and $cm) {
// Check condition for user (this will do a query if the availability
// information depends on grade or completion information)
if ($ci->is_available($junk) ||
- has_capability('moodle/course:viewhiddenactivities', $COURSE->context)) {
+ has_capability('moodle/course:viewhiddenactivities', $cm->context)) {
$SESSION->conditionaccessok[$cm->id] = true;
} else {
print_error('activityiscurrentlyhidden');
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
/// 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