public function test_mod_anonforum_set_maildigest() { global $USER, $DB; $this->resetAfterTest(true); // Create a user. $user = self::getDataGenerator()->create_user(); // Set to the user. self::setUser($user); // Create courses to add the modules. $course1 = self::getDataGenerator()->create_course(); $anonforumids = array(); // First forum. $record = new stdClass(); $record->introformat = FORMAT_HTML; $record->course = $course1->id; $anonforum1 = self::getDataGenerator()->create_module('anonforum', $record); $anonforumids[] = $anonforum1->id; // Check the forum was correctly created. list($test, $params) = $DB->get_in_or_equal($anonforumids, SQL_PARAMS_NAMED, 'anonforum'); $this->assertEquals(count($anonforumids), $DB->count_records_select('anonforum', 'id ' . $test, $params)); // Enrol the user in the courses. // DataGenerator->enrol_user automatically sets a role for the user. $this->getDataGenerator()->enrol_user($user->id, $course1->id, null, 'manual'); // Confirm that there is no current value. $currentsetting = $DB->get_record('anonforum_digests', array('anonforum' => $anonforum1->id, 'userid' => $user->id)); $this->assertFalse($currentsetting); // Test with each of the valid values: // 0, 1, and 2 are valid values. anonforum_set_user_maildigest($anonforum1, 0, $user); $currentsetting = $DB->get_record('anonforum_digests', array('anonforum' => $anonforum1->id, 'userid' => $user->id)); $this->assertEquals($currentsetting->maildigest, 0); anonforum_set_user_maildigest($anonforum1, 1, $user); $currentsetting = $DB->get_record('anonforum_digests', array('anonforum' => $anonforum1->id, 'userid' => $user->id)); $this->assertEquals($currentsetting->maildigest, 1); anonforum_set_user_maildigest($anonforum1, 2, $user); $currentsetting = $DB->get_record('anonforum_digests', array('anonforum' => $anonforum1->id, 'userid' => $user->id)); $this->assertEquals($currentsetting->maildigest, 2); // And the default value - this should delete the record again. anonforum_set_user_maildigest($anonforum1, -1, $user); $currentsetting = $DB->get_record('anonforum_digests', array('anonforum' => $anonforum1->id, 'userid' => $user->id)); $this->assertFalse($currentsetting); // Try with an invalid value. $this->setExpectedException('moodle_exception'); anonforum_set_user_maildigest($anonforum1, 42, $user); }
$backtoindex = optional_param('backtoindex', 0, PARAM_INT); // We must have a valid session key. require_sesskey(); $anonforum = $DB->get_record('anonforum', array('id' => $id)); $course = $DB->get_record('course', array('id' => $anonforum->course), '*', MUST_EXIST); $cm = get_coursemodule_from_instance('anonforum', $anonforum->id, $course->id, false, MUST_EXIST); $context = context_module::instance($cm->id); require_login($course, false, $cm); $url = new moodle_url('/mod/anonforum/maildigest.php', array('id' => $id, 'maildigest' => $maildigest)); $PAGE->set_url($url); $PAGE->set_context($context); $digestoptions = anonforum_get_user_digest_options(); $info = new stdClass(); $info->name = fullname($USER); $info->anonforum = format_string($anonforum->name); anonforum_set_user_maildigest($anonforum, $maildigest); $info->maildigest = $maildigest; if ($maildigest === -1) { // Get the default maildigest options. $info->maildigest = $USER->maildigest; $info->maildigesttitle = $digestoptions[$info->maildigest]; $info->maildigestdescription = get_string('emaildigest_' . $info->maildigest, 'mod_anonforum', $info); $updatemessage = get_string('emaildigestupdated_default', 'anonforum', $info); } else { $info->maildigesttitle = $digestoptions[$info->maildigest]; $info->maildigestdescription = get_string('emaildigest_' . $info->maildigest, 'mod_anonforum', $info); $updatemessage = get_string('emaildigestupdated', 'anonforum', $info); } if ($backtoindex) { $returnto = "index.php?id={$course->id}"; } else {
/** * Test mod_anonforum_observer methods. */ public function test_observers() { global $DB, $CFG; require_once $CFG->dirroot . '/mod/anonforum/lib.php'; $anonforumgen = $this->getDataGenerator()->get_plugin_generator('mod_anonforum'); $course = $this->getDataGenerator()->create_course(); $trackedrecord = array('course' => $course->id, 'type' => 'general', 'forcesubscribe' => ANONFORUM_INITIALSUBSCRIBE); $untrackedrecord = array('course' => $course->id, 'type' => 'general'); $trackedanonforum = $this->getDataGenerator()->create_module('anonforum', $trackedrecord); $untrackedanonforum = $this->getDataGenerator()->create_module('anonforum', $untrackedrecord); // Used functions don't require these settings; adding // them just in case there are APIs changes in future. $user = $this->getDataGenerator()->create_user(array('maildigest' => 1, 'trackanonforums' => 1)); $manplugin = enrol_get_plugin('manual'); $manualenrol = $DB->get_record('enrol', array('courseid' => $course->id, 'enrol' => 'manual')); $student = $DB->get_record('role', array('shortname' => 'student')); // The role_assign observer does it's job adding the anonforum_subscriptions record. $manplugin->enrol_user($manualenrol, $user->id, $student->id); // They are not required, but in a real environment they are supposed to be required; // adding them just in case there are APIs changes in future. set_config('anonforum_trackingtype', 1); set_config('anonforum_trackreadposts', 1); $record = array(); $record['course'] = $course->id; $record['anonforum'] = $trackedanonforum->id; $record['userid'] = $user->id; $discussion = $anonforumgen->create_discussion($record); $record = array(); $record['discussion'] = $discussion->id; $record['userid'] = $user->id; $post = $anonforumgen->create_post($record); anonforum_tp_add_read_record($user->id, $post->id); anonforum_set_user_maildigest($trackedanonforum, 2, $user); anonforum_tp_stop_tracking($untrackedanonforum->id, $user->id); $this->assertEquals(1, $DB->count_records('anonforum_subscriptions')); $this->assertEquals(1, $DB->count_records('anonforum_digests')); $this->assertEquals(1, $DB->count_records('anonforum_track_prefs')); $this->assertEquals(1, $DB->count_records('anonforum_read')); // The course_module_created observer does it's job adding a subscription. $anonforumrecord = array('course' => $course->id, 'type' => 'general', 'forcesubscribe' => ANONFORUM_INITIALSUBSCRIBE); $extraanonforum = $this->getDataGenerator()->create_module('anonforum', $anonforumrecord); $this->assertEquals(2, $DB->count_records('anonforum_subscriptions')); $manplugin->unenrol_user($manualenrol, $user->id); $this->assertEquals(0, $DB->count_records('anonforum_digests')); $this->assertEquals(0, $DB->count_records('anonforum_subscriptions')); $this->assertEquals(0, $DB->count_records('anonforum_track_prefs')); $this->assertEquals(0, $DB->count_records('anonforum_read')); }