MDL-47183: viewhiddenactivities should use the module context

Thanks to Paulo Matos for the forum part of this change.
This commit is contained in:
Andrew Nicols 2014-09-18 09:01:52 +08:00
parent 6597413d41
commit f67b5c995e
7 changed files with 17 additions and 16 deletions

View File

@ -128,7 +128,7 @@ class block_site_main_menu extends block_list {
} else {
$editbuttons = '';
}
if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $context)) {
if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $mod->get_context())) {
if ($ismoving) {
if ($mod->id == $USER->activitycopy) {
continue;

View File

@ -130,7 +130,7 @@ class block_social_activities extends block_list {
} else {
$editbuttons = '';
}
if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $context)) {
if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $mod->get_context())) {
if ($ismoving) {
if ($mod->id == $USER->activitycopy) {
continue;
@ -169,5 +169,3 @@ class block_social_activities extends block_list {
return $this->content;
}
}

View File

@ -69,8 +69,7 @@ class format_singleactivity extends format_base {
public function extend_course_navigation($navigation, navigation_node $node) {
// Display orphaned activities for the users who can see them.
$context = context_course::instance($this->courseid);
if (has_all_capabilities(array('moodle/course:viewhiddensections',
'moodle/course:viewhiddenactivities'), $context)) {
if (has_capability('moodle/course:viewhiddensections', $context)) {
$modinfo = get_fast_modinfo($this->courseid);
if (!empty($modinfo->sections[1])) {
$section1 = $modinfo->get_section_info(1);
@ -80,7 +79,9 @@ class format_singleactivity extends format_base {
$orphanednode->nodetype = navigation_node::NODETYPE_BRANCH;
$orphanednode->add_class('orphaned');
foreach ($modinfo->sections[1] as $cmid) {
$this->navigation_add_activity($orphanednode, $modinfo->cms[$cmid]);
if (has_capability('moodle/course:viewhiddenactivities', context_module($cmid))) {
$this->navigation_add_activity($orphanednode, $modinfo->cms[$cmid]);
}
}
}
}

View File

@ -770,8 +770,7 @@ class core_course_renderer extends plugin_renderer_base {
if ($mod->uservisible) {
$conditionalhidden = $this->is_cm_conditionally_hidden($mod);
$accessiblebutdim = (!$mod->visible || $conditionalhidden) &&
has_capability('moodle/course:viewhiddenactivities',
context_course::instance($mod->course));
has_capability('moodle/course:viewhiddenactivities', $mod->get_context());
if ($accessiblebutdim) {
$linkclasses .= ' dimmed';
$textclasses .= ' dimmed_text';
@ -833,8 +832,7 @@ class core_course_renderer extends plugin_renderer_base {
if ($mod->uservisible) {
$conditionalhidden = $this->is_cm_conditionally_hidden($mod);
$accessiblebutdim = (!$mod->visible || $conditionalhidden) &&
has_capability('moodle/course:viewhiddenactivities',
context_course::instance($mod->course));
has_capability('moodle/course:viewhiddenactivities', $mod->get_context());
if ($accessiblebutdim) {
$textclasses .= ' dimmed_text';
if ($conditionalhidden) {

View File

@ -107,6 +107,8 @@ if (!empty($forum)) { // User is starting a new discussion in a forum
print_error("invalidcoursemodule");
}
// Retrieve the contexts.
$modcontext = context_module::instance($cm->id);
$coursecontext = context_course::instance($course->id);
if (! forum_user_can_post_discussion($forum, $groupid, -1, $cm)) {
@ -122,7 +124,7 @@ if (!empty($forum)) { // User is starting a new discussion in a forum
print_error('nopostforum', 'forum');
}
if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $coursecontext)) {
if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $modcontext)) {
print_error("activityiscurrentlyhidden");
}
@ -176,8 +178,9 @@ if (!empty($forum)) { // User is starting a new discussion in a forum
// Ensure lang, theme, etc. is set up properly. MDL-6926
$PAGE->set_cm($cm, $course, $forum);
$coursecontext = context_course::instance($course->id);
// Retrieve the contexts.
$modcontext = context_module::instance($cm->id);
$coursecontext = context_course::instance($course->id);
if (! forum_user_can_post($forum, $discussion, $USER, $cm, $course, $modcontext)) {
if (!isguestuser()) {
@ -206,7 +209,7 @@ if (!empty($forum)) { // User is starting a new discussion in a forum
}
}
if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $coursecontext)) {
if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $modcontext)) {
print_error("activityiscurrentlyhidden");
}

View File

@ -75,7 +75,8 @@ if ($show_rss = (isset($CFG->enablerssfeeds) && isset($CFG->glossary_enablerssfe
$currentsection = "";
foreach ($glossarys as $glossary) {
if (!$glossary->visible && has_capability('moodle/course:viewhiddenactivities', $context)) {
if (!$glossary->visible && has_capability('moodle/course:viewhiddenactivities',
context_module::instance($glossary->coursemodule))) {
// Show dimmed if the mod is hidden.
$link = "<a class=\"dimmed\" href=\"view.php?id=$glossary->coursemodule\">".format_string($glossary->name,true)."</a>";
} else if ($glossary->visible) {

View File

@ -97,7 +97,7 @@ if ($displaymode == 'popup') {
$PAGE->set_title($pagetitle);
$PAGE->set_heading($course->fullname);
}
if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $coursecontext)) {
if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', context_module::instance($cm->id))) {
echo $OUTPUT->header();
notice(get_string("activityiscurrentlyhidden"));
echo $OUTPUT->footer();