Beispiel #1
0
/**
 * Set the per-quora maildigest option for the specified user.
 *
 * @param stdClass $quora The quora 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 quora_set_user_maildigest($quora, $maildigest, $user = null)
{
    global $DB, $USER;
    if (is_number($quora)) {
        $quora = $DB->get_record('quora', array('id' => $quora));
    }
    if ($user === null) {
        $user = $USER;
    }
    $course = $DB->get_record('course', array('id' => $quora->course), '*', MUST_EXIST);
    $cm = get_coursemodule_from_instance('quora', $quora->id, $course->id, false, MUST_EXIST);
    $context = context_module::instance($cm->id);
    // User must be allowed to see this quora.
    require_capability('mod/quora:viewdiscussion', $context, $user->id);
    // Validate the maildigest setting.
    $digestoptions = quora_get_user_digest_options($user);
    if (!isset($digestoptions[$maildigest])) {
        throw new moodle_exception('invaliddigestsetting', 'mod_quora');
    }
    // Attempt to retrieve any existing quora digest record.
    $subscription = $DB->get_record('quora_digests', array('userid' => $user->id, 'quora' => $quora->id));
    // Create or Update the existing maildigest setting.
    if ($subscription) {
        if ($maildigest == -1) {
            $DB->delete_records('quora_digests', array('quora' => $quora->id, 'userid' => $user->id));
        } else {
            if ($maildigest !== $subscription->maildigest) {
                // Only update the maildigest setting if it's changed.
                $subscription->maildigest = $maildigest;
                $DB->update_record('quora_digests', $subscription);
            }
        }
    } else {
        if ($maildigest != -1) {
            // Only insert the maildigest setting if it's non-default.
            $subscription = new stdClass();
            $subscription->quora = $quora->id;
            $subscription->userid = $user->id;
            $subscription->maildigest = $maildigest;
            $subscription->id = $DB->insert_record('quora_digests', $subscription);
        }
    }
}
Beispiel #2
0
require_once dirname(dirname(__DIR__)) . '/config.php';
require_once $CFG->dirroot . '/mod/quora/lib.php';
$id = required_param('id', PARAM_INT);
$maildigest = required_param('maildigest', PARAM_INT);
$backtoindex = optional_param('backtoindex', 0, PARAM_INT);
// We must have a valid session key.
require_sesskey();
$quora = $DB->get_record('quora', array('id' => $id));
$course = $DB->get_record('course', array('id' => $quora->course), '*', MUST_EXIST);
$cm = get_coursemodule_from_instance('quora', $quora->id, $course->id, false, MUST_EXIST);
$context = context_module::instance($cm->id);
require_login($course, false, $cm);
$url = new moodle_url('/mod/quora/maildigest.php', array('id' => $id, 'maildigest' => $maildigest));
$PAGE->set_url($url);
$PAGE->set_context($context);
$digestoptions = quora_get_user_digest_options();
$info = new stdClass();
$info->name = fullname($USER);
$info->quora = format_string($quora->name);
quora_set_user_maildigest($quora, $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_quora', $info);
    $updatemessage = get_string('emaildigestupdated_default', 'quora', $info);
} else {
    $info->maildigesttitle = $digestoptions[$info->maildigest];
    $info->maildigestdescription = get_string('emaildigest_' . $info->maildigest, 'mod_quora', $info);
    $updatemessage = get_string('emaildigestupdated', 'quora', $info);
 public function test_get_user_digest_options_sorting()
 {
     global $USER, $DB;
     $this->resetAfterTest(true);
     // Set up a basic user enrolled in a course.
     $helper = $this->helper_setup_user_in_course();
     $user = $helper->user;
     $course1 = $helper->courses->course1;
     $quora1 = $helper->quoras->quora1;
     // Set to the user.
     self::setUser($helper->user);
     // Retrieve the list of applicable options.
     $options = quora_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;
     }
 }