Esempio n. 1
0
/**
 * 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);
        }
    }
}
Esempio n. 2
0
$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;
     }
 }