/** * Set the per-anonforum maildigest option for the specified user. * * @param stdClass $anonforum The anonforum to set the option for. * @param int $maildigest The maildigest option. * @param stdClass $user The user object. This defaults to the global $USER object. * @throws invalid_digest_setting thrown if an invalid maildigest option is provided. */ function anonforum_set_user_maildigest($anonforum, $maildigest, $user = null) { global $DB, $USER; if (is_number($anonforum)) { $anonforum = $DB->get_record('anonforum', array('id' => $anonforum)); } if ($user === null) { $user = $USER; } $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); // User must be allowed to see this anonymous forum. require_capability('mod/anonforum:viewdiscussion', $context, $user->id); // Validate the maildigest setting. $digestoptions = anonforum_get_user_digest_options($user); if (!isset($digestoptions[$maildigest])) { throw new moodle_exception('invaliddigestsetting', 'mod_anonforum'); } // Attempt to retrieve any existing anonymous forum digest record. $subscription = $DB->get_record('anonforum_digests', array('userid' => $user->id, 'anonforum' => $anonforum->id)); // Create or Update the existing maildigest setting. if ($subscription) { if ($maildigest == -1) { $DB->delete_records('anonforum_digests', array('anonforum' => $anonforum->id, 'userid' => $user->id)); } else { if ($maildigest !== $subscription->maildigest) { // Only update the maildigest setting if it's changed. $subscription->maildigest = $maildigest; $DB->update_record('anonforum_digests', $subscription); } } } else { if ($maildigest != -1) { // Only insert the maildigest setting if it's non-default. $subscription = new stdClass(); $subscription->anonforum = $anonforum->id; $subscription->userid = $user->id; $subscription->maildigest = $maildigest; $subscription->id = $DB->insert_record('anonforum_digests', $subscription); } } }
$strdiscussions = get_string('discussions', 'anonforum'); $strsubscribed = get_string('subscribed', 'anonforum'); $strunreadposts = get_string('unreadposts', 'anonforum'); $strtracking = get_string('tracking', 'anonforum'); $strmarkallread = get_string('markallread', 'anonforum'); $strtrackanonforum = get_string('trackanonforum', 'anonforum'); $strnotrackanonforum = get_string('notrackanonforum', 'anonforum'); $strsubscribe = get_string('subscribe', 'anonforum'); $strunsubscribe = get_string('unsubscribe', 'anonforum'); $stryes = get_string('yes'); $strno = get_string('no'); $strrss = get_string('rss'); $stremaildigest = get_string('emaildigest'); $searchform = anonforum_search_form($course); // Retrieve the list of anonymous forum digest options for later. $digestoptions = anonforum_get_user_digest_options(); $digestoptions_selector = new single_select(new moodle_url('/mod/anonforum/maildigest.php', array('backtoindex' => 1)), 'maildigest', $digestoptions, null, ''); $digestoptions_selector->method = 'post'; // Start of the table for General Forums $generaltable = new html_table(); $generaltable->head = array($stranonforum, $strdescription, $strdiscussions); $generaltable->align = array('left', 'left', 'center'); if ($usetracking = anonforum_tp_can_track_anonforums()) { $untracked = anonforum_tp_get_untracked_anonforums($USER->id, $course->id); $generaltable->head[] = $strunreadposts; $generaltable->align[] = 'center'; $generaltable->head[] = $strtracking; $generaltable->align[] = 'center'; } $subscribed_anonforums = anonforum_get_subscribed_anonforums($course); $can_subscribe = is_enrolled($coursecontext);
public function test_mod_anonforum_get_user_digest_options_sorting() { global $USER, $DB; $this->resetAfterTest(true); // Create a user. $user = self::getDataGenerator()->create_user(); // Set to the user. self::setUser($user); // Retrieve the list of applicable options. $options = anonforum_get_user_digest_options(); // The default option must always be at the top of the list. $lastoption = -2; foreach ($options as $value => $description) { $this->assertGreaterThan($lastoption, $value); $lastoption = $value; } }