mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00
MDL-37765 course: Add capability to ignore availability restrictions.
Allow a role to view activities without addressing the restriction rules.
This commit is contained in:
parent
216ea39be7
commit
6a36b8526e
8 changed files with 73 additions and 13 deletions
|
@ -40,13 +40,32 @@ class core_course_courseformat_testcase extends advanced_testcase {
|
|||
course_create_sections_if_missing($course1, array(0, 1));
|
||||
$assign0 = $generator->create_module('assign', array('course' => $course1, 'section' => 0));
|
||||
$assign1 = $generator->create_module('assign', array('course' => $course1, 'section' => 1));
|
||||
$assign2 = $generator->create_module('assign', array('course' => $course1, 'section' => 0, 'visible' => 0));
|
||||
|
||||
// Enrol student and teacher.
|
||||
$roleids = $DB->get_records_menu('role', null, '', 'shortname, id');
|
||||
// Create a courseoverview role based on the student role.
|
||||
$roleattr = array('name' => 'courseoverview', 'shortname' => 'courseoverview', 'archetype' => 'student');
|
||||
$generator->create_role($roleattr);
|
||||
|
||||
// Create user student, editingteacher, teacher and courseoverview.
|
||||
$student = $generator->create_user();
|
||||
$generator->enrol_user($student->id, $course1->id, $roleids['student']);
|
||||
$teacher = $generator->create_user();
|
||||
$generator->enrol_user($teacher->id, $course1->id, $roleids['editingteacher']);
|
||||
$editingteacher = $generator->create_user();
|
||||
$courseoverviewuser = $generator->create_user();
|
||||
|
||||
// Enrol users into their roles.
|
||||
$roleids = $DB->get_records_menu('role', null, '', 'shortname, id');
|
||||
$generator->enrol_user($student->id, $course1->id, $roleids['student']);
|
||||
$generator->enrol_user($teacher->id, $course1->id, $roleids['teacher']);
|
||||
$generator->enrol_user($editingteacher->id, $course1->id, $roleids['editingteacher']);
|
||||
$generator->enrol_user($courseoverviewuser->id, $course1->id, $roleids['courseoverview']);
|
||||
|
||||
// Remove the ignoreavailabilityrestrictions from the teacher role.
|
||||
role_change_permission($roleids['teacher'], context_system::instance(0),
|
||||
'moodle/course:ignoreavailabilityrestrictions', CAP_PREVENT);
|
||||
|
||||
// Allow the courseoverview role to ingore available restriction.
|
||||
role_change_permission($roleids['courseoverview'], context_system::instance(0),
|
||||
'moodle/course:ignoreavailabilityrestrictions', CAP_ALLOW);
|
||||
|
||||
// Make sure that initially both sections and both modules are available and visible for a student.
|
||||
$modinfostudent = get_fast_modinfo($course1, $student->id);
|
||||
|
@ -55,6 +74,7 @@ class core_course_courseformat_testcase extends advanced_testcase {
|
|||
$this->assertTrue($modinfostudent->get_cm($assign0->cmid)->uservisible);
|
||||
$this->assertTrue($modinfostudent->get_cm($assign1->cmid)->available);
|
||||
$this->assertTrue($modinfostudent->get_cm($assign1->cmid)->uservisible);
|
||||
$this->assertFalse($modinfostudent->get_cm($assign2->cmid)->uservisible);
|
||||
|
||||
// Set 'hideoddsections' for the course to 1.
|
||||
// Section1 and assign1 will be unavailable, uservisible will be false for student and true for teacher.
|
||||
|
@ -68,15 +88,38 @@ class core_course_courseformat_testcase extends advanced_testcase {
|
|||
$this->assertTrue($modinfostudent->get_cm($assign0->cmid)->uservisible);
|
||||
$this->assertFalse($modinfostudent->get_cm($assign1->cmid)->available);
|
||||
$this->assertFalse($modinfostudent->get_cm($assign1->cmid)->uservisible);
|
||||
$this->assertFalse($modinfostudent->get_cm($assign2->cmid)->uservisible);
|
||||
|
||||
$modinfoteacher = get_fast_modinfo($course1, $teacher->id);
|
||||
$this->assertFalse($modinfoteacher->get_section_info(1)->available);
|
||||
$this->assertEmpty($modinfoteacher->get_section_info(1)->availableinfo);
|
||||
$this->assertFalse($modinfoteacher->get_section_info(1)->uservisible);
|
||||
$this->assertTrue($modinfoteacher->get_cm($assign0->cmid)->available);
|
||||
$this->assertTrue($modinfoteacher->get_cm($assign0->cmid)->uservisible);
|
||||
$this->assertFalse($modinfoteacher->get_cm($assign1->cmid)->available);
|
||||
$this->assertFalse($modinfoteacher->get_cm($assign1->cmid)->uservisible);
|
||||
$this->assertTrue($modinfoteacher->get_cm($assign2->cmid)->available);
|
||||
$this->assertTrue($modinfoteacher->get_cm($assign2->cmid)->uservisible);
|
||||
|
||||
$modinfoteacher = get_fast_modinfo($course1, $editingteacher->id);
|
||||
$this->assertFalse($modinfoteacher->get_section_info(1)->available);
|
||||
$this->assertEmpty($modinfoteacher->get_section_info(1)->availableinfo);
|
||||
$this->assertTrue($modinfoteacher->get_section_info(1)->uservisible);
|
||||
$this->assertTrue($modinfoteacher->get_cm($assign0->cmid)->available);
|
||||
$this->assertTrue($modinfoteacher->get_cm($assign0->cmid)->uservisible);
|
||||
$this->assertFalse($modinfoteacher->get_cm($assign1->cmid)->available);
|
||||
$this->assertTrue($modinfoteacher->get_cm($assign1->cmid)->uservisible);
|
||||
$this->assertTrue($modinfoteacher->get_cm($assign2->cmid)->uservisible);
|
||||
|
||||
$modinfocourseoverview = get_fast_modinfo($course1, $courseoverviewuser->id);
|
||||
$this->assertFalse($modinfocourseoverview->get_section_info(1)->available);
|
||||
$this->assertEmpty($modinfocourseoverview->get_section_info(1)->availableinfo);
|
||||
$this->assertTrue($modinfocourseoverview->get_section_info(1)->uservisible);
|
||||
$this->assertTrue($modinfocourseoverview->get_cm($assign0->cmid)->available);
|
||||
$this->assertTrue($modinfocourseoverview->get_cm($assign0->cmid)->uservisible);
|
||||
$this->assertFalse($modinfocourseoverview->get_cm($assign1->cmid)->available);
|
||||
$this->assertTrue($modinfocourseoverview->get_cm($assign1->cmid)->uservisible);
|
||||
$this->assertFalse($modinfocourseoverview->get_cm($assign2->cmid)->uservisible);
|
||||
|
||||
// Set 'hideoddsections' for the course to 2.
|
||||
// Section1 and assign1 will be unavailable, uservisible will be false for student and true for teacher.
|
||||
|
@ -92,7 +135,7 @@ class core_course_courseformat_testcase extends advanced_testcase {
|
|||
$this->assertFalse($modinfostudent->get_cm($assign1->cmid)->available);
|
||||
$this->assertFalse($modinfostudent->get_cm($assign1->cmid)->uservisible);
|
||||
|
||||
$modinfoteacher = get_fast_modinfo($course1, $teacher->id);
|
||||
$modinfoteacher = get_fast_modinfo($course1, $editingteacher->id);
|
||||
$this->assertFalse($modinfoteacher->get_section_info(1)->available);
|
||||
$this->assertNotEmpty($modinfoteacher->get_section_info(1)->availableinfo);
|
||||
$this->assertTrue($modinfoteacher->get_section_info(1)->uservisible);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue