/** * 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); }
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">';