From 02f66c42020c46d94b8846b73ada8765781eaa42 Mon Sep 17 00:00:00 2001 From: vyshane Date: Wed, 12 Apr 2006 03:11:34 +0000 Subject: [PATCH] Fixed Bug #5021 - Unhiding an entire Module unhides all it's child resources, even in hidden sections. --- course/lib.php | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/course/lib.php b/course/lib.php index 24c26992e6..951b0a6261 100644 --- a/course/lib.php +++ b/course/lib.php @@ -751,7 +751,7 @@ function set_section_visible($courseid, $sectionnumber, $visibility) { if (!empty($section->sequence)) { $modules = explode(",", $section->sequence); foreach ($modules as $moduleid) { - set_coursemodule_visible($moduleid, $visibility); + set_coursemodule_visible($moduleid, $visibility, true); } } rebuild_course_cache($courseid); @@ -1400,7 +1400,14 @@ function set_coursemodule_groupmode($id, $groupmode) { return set_field("course_modules", "groupmode", $groupmode, "id", $id); } -function set_coursemodule_visible($id, $visible) { +/** +* $prevstateoverrides = true will set the visibility of the course module +* to what is defined in visibleold. This enables us to remember the current +* visibility when making a whole section hidden, so that when we toggle +* that section back to visible, we are able to return the visibility of +* the course module back to what it was originally. +*/ +function set_coursemodule_visible($id, $visible, $prevstateoverrides=false) { $cm = get_record('course_modules', 'id', $id); $modulename = get_field('modules', 'name', 'id', $cm->module); if ($events = get_records_select('event', "instance = '$cm->instance' AND modulename = '$modulename'")) { @@ -1412,6 +1419,15 @@ function set_coursemodule_visible($id, $visible) { } } } + if ($prevstateoverrides) { + if ($visible == '0') { + // Remember the current visible state so we can toggle this back. + set_field('course_modules', 'visibleold', $cm->visible, 'id', $id); + } else { + // Get the previous saved visible states. + return set_field('course_modules', 'visible', $cm->visibleold, 'id', $id); + } + } return set_field("course_modules", "visible", $visible, "id", $id); } -- 2.39.5