/**
  * Test allowing of role overrides.
  */
 public function test_allow_override()
 {
     global $DB, $CFG;
     $this->resetAfterTest();
     $otherid = create_role('Other role', 'other', 'Some other role', '');
     $student = $DB->get_record('role', array('shortname' => 'student'), '*', MUST_EXIST);
     $this->assertFalse($DB->record_exists('role_allow_override', array('roleid' => $otherid, 'allowoverride' => $student->id)));
     allow_override($otherid, $student->id);
     $this->assertTrue($DB->record_exists('role_allow_override', array('roleid' => $otherid, 'allowoverride' => $student->id)));
     // Test event trigger.
     $allowroleassignevent = \core\event\role_allow_override_updated::create(array('context' => context_system::instance()));
     $sink = $this->redirectEvents();
     $allowroleassignevent->trigger();
     $events = $sink->get_events();
     $sink->close();
     $event = array_pop($events);
     $this->assertInstanceOf('\\core\\event\\role_allow_override_updated', $event);
     $mode = 'override';
     $baseurl = new moodle_url('/admin/roles/allow.php', array('mode' => $mode));
     $expectedlegacylog = array(SITEID, 'role', 'edit allow ' . $mode, str_replace($CFG->wwwroot . '/', '', $baseurl));
     $this->assertEventLegacyLogData($expectedlegacylog, $event);
 }
Пример #2
0
$baseurl = new moodle_url('/admin/roles/allow.php', array('mode' => $mode));
admin_externalpage_setup('defineroles', '', array(), $baseurl);
$syscontext = context_system::instance();
require_capability('moodle/role:manage', $syscontext);
$controller = new $classformode[$mode]();
if (optional_param('submit', false, PARAM_BOOL) && data_submitted() && confirm_sesskey()) {
    $controller->process_submission();
    $syscontext->mark_dirty();
    $event = null;
    // Create event depending on mode.
    switch ($mode) {
        case 'assign':
            $event = \core\event\role_allow_assign_updated::create(array('context' => $syscontext));
            break;
        case 'override':
            $event = \core\event\role_allow_override_updated::create(array('context' => $syscontext));
            break;
        case 'switch':
            $event = \core\event\role_allow_switch_updated::create(array('context' => $syscontext));
            break;
    }
    if ($event) {
        $event->trigger();
    }
    redirect($baseurl);
}
$controller->load_current_settings();
// Display the editing form.
echo $OUTPUT->header();
$currenttab = $mode;
require 'managetabs.php';