/**
  * Test allowing of role switching.
  */
 public function test_allow_switch()
 {
     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_switch', array('roleid' => $otherid, 'allowswitch' => $student->id)));
     allow_switch($otherid, $student->id);
     $this->assertTrue($DB->record_exists('role_allow_switch', array('roleid' => $otherid, 'allowswitch' => $student->id)));
     // Test event trigger.
     $allowroleassignevent = \core\event\role_allow_switch_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_switch_updated', $event);
     $mode = 'switch';
     $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);
 }
Esempio n. 2
0
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';
$table = $controller->get_table();
echo $OUTPUT->box($controller->get_intro_text());
echo '<form action="' . $baseurl . '" method="post">';