From 2763a571d2e54ecddade9b895031f7a3d441b627 Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Thu, 18 Sep 2014 09:01:52 +0800 Subject: [PATCH] MDL-47183: viewhiddenactivities should use the module context Thanks to Paulo Matos for the forum part of this change. --- blocks/site_main_menu/block_site_main_menu.php | 2 +- blocks/social_activities/block_social_activities.php | 4 +--- course/format/singleactivity/lib.php | 7 ++++--- course/renderer.php | 6 ++---- mod/forum/post.php | 9 ++++++--- mod/glossary/index.php | 3 ++- mod/scorm/player.php | 2 +- 7 files changed, 17 insertions(+), 16 deletions(-) diff --git a/blocks/site_main_menu/block_site_main_menu.php b/blocks/site_main_menu/block_site_main_menu.php index a1bff0885c8..881e3d09f2c 100644 --- a/blocks/site_main_menu/block_site_main_menu.php +++ b/blocks/site_main_menu/block_site_main_menu.php @@ -106,7 +106,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; diff --git a/blocks/social_activities/block_social_activities.php b/blocks/social_activities/block_social_activities.php index 6756b96f969..4c06c82a0c2 100644 --- a/blocks/social_activities/block_social_activities.php +++ b/blocks/social_activities/block_social_activities.php @@ -108,7 +108,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; @@ -147,5 +147,3 @@ class block_social_activities extends block_list { return $this->content; } } - - diff --git a/course/format/singleactivity/lib.php b/course/format/singleactivity/lib.php index 396e4d6e5c4..a7750761a10 100644 --- a/course/format/singleactivity/lib.php +++ b/course/format/singleactivity/lib.php @@ -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]); + } } } } diff --git a/course/renderer.php b/course/renderer.php index 749f84b5bbd..765e1702a57 100644 --- a/course/renderer.php +++ b/course/renderer.php @@ -774,8 +774,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'; @@ -838,8 +837,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) { diff --git a/mod/forum/post.php b/mod/forum/post.php index f1e9988d0a1..1c381bfad7c 100644 --- a/mod/forum/post.php +++ b/mod/forum/post.php @@ -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"); } diff --git a/mod/glossary/index.php b/mod/glossary/index.php index a90e0e02cc7..68af5823257 100644 --- a/mod/glossary/index.php +++ b/mod/glossary/index.php @@ -72,7 +72,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 = "coursemodule\">".format_string($glossary->name,true).""; } else if ($glossary->visible) { diff --git a/mod/scorm/player.php b/mod/scorm/player.php index cc39299df96..73983a22a3b 100644 --- a/mod/scorm/player.php +++ b/mod/scorm/player.php @@ -109,7 +109,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();