Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions classes/create_form.php
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,25 @@ public function definition() {
$mform->addElement('checkbox', 'hidecourses', get_string('hidecourses', 'local_course_merge'));
$mform->setDefault('hidecourses', 1);

// Hide child courses from teachers.
$mform->addElement('checkbox', 'hidecoursesteachers', get_string('hidecoursesfromteachers', 'local_course_merge'));
$mform->setDefault('hidecoursesteachers', 0);

// Group mode.
$choices = array();
$choices[''] = get_string('groupsdont', 'local_course_merge');
$choices[NOGROUPS] = get_string('groupsnone', 'local_course_merge');
$choices[SEPARATEGROUPS] = get_string('groupsseparate', 'local_course_merge');
$choices[VISIBLEGROUPS] = get_string('groupsvisible', 'local_course_merge');
$mform->addElement('select', 'groupmode', get_string('groupmode', 'local_course_merge'), $choices);
$mform->addHelpButton('groupmode', 'groupmode', 'local_course_merge');
$mform->setDefault('groupmode', get_config('moodlecourse', 'groupmode'));

// Force Group mode.
$mform->addElement('selectyesno', 'groupmodeforce', get_string('groupmodeforce', 'group'));
$mform->addHelpButton('groupmodeforce', 'groupmodeforce', 'group');
$mform->setDefault('groupmodeforce', get_config('moodlecourse', 'groupmodeforce'));

// Move child courses to a category.
if (has_capability('local/course_merge:categorize_course', $categorycontext)) {
$categories = helper::get_category_selector();
Expand Down
26 changes: 24 additions & 2 deletions classes/merge_course.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,12 @@ public static function create_course($data, $coursestolink) {
$tocreate->showgrades = $courseconfig->showgrades;
$tocreate->showreports = $courseconfig->showreports;
$tocreate->maxbytes = $courseconfig->maxbytes;
$tocreate->groupmode = $courseconfig->groupmode;
$tocreate->groupmodeforce = $courseconfig->groupmodeforce;
if (!isset($data->groupmode) || ($data->groupmode == '')) {
$tocreate->groupmode = (int)$courseconfig->groupmode;
} else {
$tocreate->groupmode = $data->groupmode;
}
$tocreate->groupmodeforce = $data->groupmodeforce;
$tocreate->visible = $courseconfig->visible;
$tocreate->lang = $courseconfig->lang;
$tocreate->enablecompletion = $courseconfig->enablecompletion;
Expand Down Expand Up @@ -125,6 +129,24 @@ public static function hide_courses($coursestolink) {
}
}

/**
* Hide the source courses from teachers.
*
* This removes the capability to view hidden courses from editingteacher and teacher roles.
*
* @param array $coursestolink the source courses.
*/
public static function hide_courses_from_teachers($coursestolink) {
global $DB;
$editingteacherid = $DB->get_field('role', 'id', ['shortname' => 'editingteacher']);
$teacherid = $DB->get_field('role', 'id', ['shortname' => 'teacher']);
foreach ($coursestolink as $oldcourseid) {
$context = \context_course::instance($oldcourseid);
assign_capability('moodle/course:viewhiddencourses', CAP_PREVENT, $editingteacherid, $context->id, true);
assign_capability('moodle/course:viewhiddencourses', CAP_PREVENT, $teacherid, $context->id, true);
}
}

/**
* Create the metalinks between the new course and the source courses.
*
Expand Down
5 changes: 5 additions & 0 deletions index.php
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@
local_course_merge\merge_course::hide_courses($coursestolink);
}

// Hide child courses from teachers.
if (isset($data->hidecoursesteachers) && ($data->hidecoursesteachers != '') && $data->hidecoursesteachers > 0) {
local_course_merge\merge_course::hide_courses_from_teachers($coursestolink);
}

// If set, move child courses.
if (!empty($data->newchildcategory) && $data->newchildcategory != COURSE_MERGE_DEFAULT_CATEGORY) {
local_course_merge\merge_course::move_courses($coursestolink, $data->newchildcategory);
Expand Down
15 changes: 15 additions & 0 deletions lang/en/local_course_merge.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,22 @@
$string['extractnametitle_desc'] = 'The full title of the course. Used to populate [TITLE].';
$string['generalsettings'] = 'General settings';
$string['generalsettingsinfo'] = '';
$string['groupmode'] = 'Group mode';
$string['groupmode_help'] = 'This setting has 4 options:

* Use default - will use the default course configuration global setting.
* No groups
* Separate groups - Each group member can only see their own group, others are invisible
* Visible groups - Each group member works in their own group, but can also see other groups

The group mode defined at course level is the default mode for all activities within the course. Each activity that supports groups can also define its own group mode, though if the group mode is forced at course level, the group mode setting for each activity is ignored.';
$string['groupsdont'] = 'Use default';
$string['groupsnone'] = 'No groups';
$string['groupsonly'] = 'Groups only';
$string['groupsseparate'] = 'Separate groups';
$string['groupsvisible'] = 'Visible groups';
$string['hidecourses'] = 'Hide original courses from students';
$string['hidecoursesfromteachers'] = 'Hide original courses from teachers';
$string['idnumberexists'] = 'Could not create merged course shell: a course with the idnumber {$a} already exists.';
$string['maxcategorydepth'] = 'Maximum category depth';
$string['maxcategorydepth_desc'] = 'Restrict the courses which can be merged together by category depth.';
Expand Down