Пример #1
0
 case 'resource':
     switch ($field) {
         case 'visible':
             require_capability('moodle/course:activityvisibility', $modcontext);
             set_coursemodule_visible($cm->id, $value);
             \core\event\course_module_updated::create_from_cm($cm, $modcontext)->trigger();
             break;
         case 'duplicate':
             require_capability('moodle/course:manageactivities', $modcontext);
             require_capability('moodle/backup:backuptargetimport', $modcontext);
             require_capability('moodle/restore:restoretargetimport', $modcontext);
             if (!course_allowed_module($course, $cm->modname)) {
                 throw new moodle_exception('No permission to create that activity');
             }
             $sr = optional_param('sr', null, PARAM_INT);
             $result = mod_duplicate_activity($course, $cm, $sr);
             echo json_encode($result);
             break;
         case 'groupmode':
             require_capability('moodle/course:manageactivities', $modcontext);
             set_coursemodule_groupmode($cm->id, $value);
             \core\event\course_module_updated::create_from_cm($cm, $modcontext)->trigger();
             break;
         case 'indent':
             require_capability('moodle/course:manageactivities', $modcontext);
             $cm->indent = $value;
             if ($cm->indent >= 0) {
                 $DB->update_record('course_modules', $cm);
                 rebuild_course_cache($cm->course);
             }
             break;
Пример #2
0
 /**
  * Tests for event related to course module creation.
  */
 public function test_course_module_created_event()
 {
     global $USER, $DB, $CFG;
     $this->resetAfterTest();
     // Create an assign module.
     $sink = $this->redirectEvents();
     $modinfo = $this->create_specific_module_test('assign');
     $events = $sink->get_events();
     $event = array_pop($events);
     $cm = get_coursemodule_from_id('assign', $modinfo->coursemodule, 0, false, MUST_EXIST);
     $mod = $DB->get_record('assign', array('id' => $modinfo->instance), '*', MUST_EXIST);
     // Validate event data.
     $this->assertInstanceOf('\\core\\event\\course_module_created', $event);
     $this->assertEquals($cm->id, $event->objectid);
     $this->assertEquals($USER->id, $event->userid);
     $this->assertEquals('course_modules', $event->objecttable);
     $url = new moodle_url('/mod/assign/view.php', array('id' => $cm->id));
     $this->assertEquals($url, $event->get_url());
     // Test legacy data.
     $this->assertSame('mod_created', $event->get_legacy_eventname());
     $eventdata = new stdClass();
     $eventdata->modulename = 'assign';
     $eventdata->name = $mod->name;
     $eventdata->cmid = $cm->id;
     $eventdata->courseid = $cm->course;
     $eventdata->userid = $USER->id;
     $this->assertEventLegacyData($eventdata, $event);
     $arr = array($cm->course, "course", "add mod", "../mod/assign/view.php?id={$cm->id}", "assign {$cm->instance}");
     $this->assertEventLegacyLogData($arr, $event);
     // Let us see if duplicating an activity results in a nice course module created event.
     $sink->clear();
     $course = get_course($mod->course);
     // Discard error logs.
     $oldlog = ini_get('error_log');
     ini_set('error_log', "{$CFG->dataroot}/testlog.log");
     $newcmhtml = mod_duplicate_activity($course, $cm);
     ini_set('error_log', $oldlog);
     $events = $sink->get_events();
     $event = array_pop($events);
     $sink->close();
     // Validate event data.
     $this->assertInstanceOf('\\core\\event\\course_module_created', $event);
     $this->assertEquals($newcmhtml->cmid, $event->objectid);
     $this->assertEquals($USER->id, $event->userid);
     $this->assertEquals($course->id, $event->courseid);
     $url = new moodle_url('/mod/assign/view.php', array('id' => $newcmhtml->cmid));
     $this->assertEquals($url, $event->get_url());
     // Clear the time limit, otherwise PHPUnit complains.
     set_time_limit(0);
 }