コード例 #1
0
 public function test_mod_forum_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();
     $forumids = array();
     // First forum.
     $record = new stdClass();
     $record->introformat = FORMAT_HTML;
     $record->course = $course1->id;
     $forum1 = self::getDataGenerator()->create_module('forum', $record);
     $forumids[] = $forum1->id;
     // Check the forum was correctly created.
     list($test, $params) = $DB->get_in_or_equal($forumids, SQL_PARAMS_NAMED, 'forum');
     $this->assertEquals(count($forumids), $DB->count_records_select('forum', '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('forum_digests', array('forum' => $forum1->id, 'userid' => $user->id));
     $this->assertFalse($currentsetting);
     // Test with each of the valid values:
     // 0, 1, and 2 are valid values.
     forum_set_user_maildigest($forum1, 0, $user);
     $currentsetting = $DB->get_record('forum_digests', array('forum' => $forum1->id, 'userid' => $user->id));
     $this->assertEquals($currentsetting->maildigest, 0);
     forum_set_user_maildigest($forum1, 1, $user);
     $currentsetting = $DB->get_record('forum_digests', array('forum' => $forum1->id, 'userid' => $user->id));
     $this->assertEquals($currentsetting->maildigest, 1);
     forum_set_user_maildigest($forum1, 2, $user);
     $currentsetting = $DB->get_record('forum_digests', array('forum' => $forum1->id, 'userid' => $user->id));
     $this->assertEquals($currentsetting->maildigest, 2);
     // And the default value - this should delete the record again
     forum_set_user_maildigest($forum1, -1, $user);
     $currentsetting = $DB->get_record('forum_digests', array('forum' => $forum1->id, 'userid' => $user->id));
     $this->assertFalse($currentsetting);
     // Try with an invalid value.
     $this->setExpectedException('moodle_exception');
     forum_set_user_maildigest($forum1, 42, $user);
 }
コード例 #2
0
ファイル: lib.php プロジェクト: rezaies/moodle
/**
 * Manage inplace editable saves.
 *
 * @param   string      $itemtype       The type of item.
 * @param   int         $itemid         The ID of the item.
 * @param   mixed       $newvalue       The new value
 * @return  string
 */
function mod_forum_inplace_editable($itemtype, $itemid, $newvalue)
{
    global $DB, $PAGE;
    if ($itemtype === 'digestoptions') {
        // The itemid is the forumid.
        $forum = $DB->get_record('forum', array('id' => $itemid), '*', MUST_EXIST);
        $course = $DB->get_record('course', array('id' => $forum->course), '*', MUST_EXIST);
        $cm = get_coursemodule_from_instance('forum', $forum->id, $course->id, false, MUST_EXIST);
        $context = context_module::instance($cm->id);
        $PAGE->set_context($context);
        require_login($course, false, $cm);
        forum_set_user_maildigest($forum, $newvalue);
        $renderer = $PAGE->get_renderer('mod_forum');
        return $renderer->render_digest_options($forum, $newvalue);
    }
}
コード例 #3
0
ファイル: maildigest.php プロジェクト: covex-nn/moodle
$backtoindex = optional_param('backtoindex', 0, PARAM_INT);
// We must have a valid session key.
require_sesskey();
$forum = $DB->get_record('forum', array('id' => $id));
$course = $DB->get_record('course', array('id' => $forum->course), '*', MUST_EXIST);
$cm = get_coursemodule_from_instance('forum', $forum->id, $course->id, false, MUST_EXIST);
$context = context_module::instance($cm->id);
require_login($course, false, $cm);
$url = new moodle_url('/mod/forum/maildigest.php', array('id' => $id, 'maildigest' => $maildigest));
$PAGE->set_url($url);
$PAGE->set_context($context);
$digestoptions = forum_get_user_digest_options();
$info = new stdClass();
$info->name = fullname($USER);
$info->forum = format_string($forum->name);
$info->maildigest = forum_set_user_maildigest($forum, $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_forum', $info);
    $updatemessage = get_string('emaildigestupdated_default', 'forum', $info);
} else {
    $info->maildigesttitle = $digestoptions[$info->maildigest];
    $info->maildigestdescription = get_string('emaildigest_' . $info->maildigest, 'mod_forum', $info);
    $updatemessage = get_string('emaildigestupdated', 'forum', $info);
}
if ($backtoindex) {
    $returnto = "index.php?id={$course->id}";
} else {
    $returnto = "view.php?f={$id}";
コード例 #4
0
ファイル: events_test.php プロジェクト: Keneth1212/moodle
 /**
  * Test mod_forum_observer methods.
  */
 public function test_observers()
 {
     global $DB, $CFG;
     require_once $CFG->dirroot . '/mod/forum/lib.php';
     $forumgen = $this->getDataGenerator()->get_plugin_generator('mod_forum');
     $course = $this->getDataGenerator()->create_course();
     $trackedrecord = array('course' => $course->id, 'type' => 'general', 'forcesubscribe' => FORUM_INITIALSUBSCRIBE);
     $untrackedrecord = array('course' => $course->id, 'type' => 'general');
     $trackedforum = $this->getDataGenerator()->create_module('forum', $trackedrecord);
     $untrackedforum = $this->getDataGenerator()->create_module('forum', $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, 'trackforums' => 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 forum_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('forum_trackingtype', 1);
     set_config('forum_trackreadposts', 1);
     $record = array();
     $record['course'] = $course->id;
     $record['forum'] = $trackedforum->id;
     $record['userid'] = $user->id;
     $discussion = $forumgen->create_discussion($record);
     $record = array();
     $record['discussion'] = $discussion->id;
     $record['userid'] = $user->id;
     $post = $forumgen->create_post($record);
     forum_tp_add_read_record($user->id, $post->id);
     forum_set_user_maildigest($trackedforum, 2, $user);
     forum_tp_stop_tracking($untrackedforum->id, $user->id);
     $this->assertEquals(1, $DB->count_records('forum_subscriptions'));
     $this->assertEquals(1, $DB->count_records('forum_digests'));
     $this->assertEquals(1, $DB->count_records('forum_track_prefs'));
     $this->assertEquals(1, $DB->count_records('forum_read'));
     // The course_module_created observer does it's job adding a subscription.
     $forumrecord = array('course' => $course->id, 'type' => 'general', 'forcesubscribe' => FORUM_INITIALSUBSCRIBE);
     $extraforum = $this->getDataGenerator()->create_module('forum', $forumrecord);
     $this->assertEquals(2, $DB->count_records('forum_subscriptions'));
     $manplugin->unenrol_user($manualenrol, $user->id);
     $this->assertEquals(0, $DB->count_records('forum_digests'));
     $this->assertEquals(0, $DB->count_records('forum_subscriptions'));
     $this->assertEquals(0, $DB->count_records('forum_track_prefs'));
     $this->assertEquals(0, $DB->count_records('forum_read'));
 }
コード例 #5
0
ファイル: maildigest.php プロジェクト: rushi963/moodle
$backtoindex = optional_param('backtoindex', 0, PARAM_INT);
// We must have a valid session key.
require_sesskey();
$forum = $DB->get_record('forum', array('id' => $id));
$course = $DB->get_record('course', array('id' => $forum->course), '*', MUST_EXIST);
$cm = get_coursemodule_from_instance('forum', $forum->id, $course->id, false, MUST_EXIST);
$context = context_module::instance($cm->id);
require_login($course, false, $cm);
$url = new moodle_url('/mod/forum/maildigest.php', array('id' => $id, 'maildigest' => $maildigest));
$PAGE->set_url($url);
$PAGE->set_context($context);
$digestoptions = forum_get_user_digest_options();
$info = new stdClass();
$info->name = fullname($USER);
$info->forum = format_string($forum->name);
forum_set_user_maildigest($forum, $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_forum', $info);
    $updatemessage = get_string('emaildigestupdated_default', 'forum', $info);
} else {
    $info->maildigesttitle = $digestoptions[$info->maildigest];
    $info->maildigestdescription = get_string('emaildigest_' . $info->maildigest, 'mod_forum', $info);
    $updatemessage = get_string('emaildigestupdated', 'forum', $info);
}
if ($backtoindex) {
    $returnto = "index.php?id={$course->id}";
} else {
コード例 #6
0
 /**
  * Sends several notifications to one user as:
  * * daily digests coming from the per-forum setting.
  */
 public function test_cron_forum_digest_email()
 {
     global $DB, $CFG;
     $this->resetAfterTest(true);
     // Set up a basic user enrolled in a course.
     $userhelper = $this->helper_setup_user_in_course();
     $user = $userhelper->user;
     $course1 = $userhelper->courses->course1;
     $forum1 = $userhelper->forums->forum1;
     $forum2 = $userhelper->forums->forum2;
     // Add a discussion to the forums.
     $record = new stdClass();
     $record->course = $course1->id;
     $record->userid = $user->id;
     $record->mailnow = 1;
     // Add 5 discussions to forum 1.
     $record->forum = $forum1->id;
     for ($i = 0; $i < 5; $i++) {
         $this->getDataGenerator()->get_plugin_generator('mod_forum')->create_discussion($record);
     }
     // Add 5 discussions to forum 2.
     $record->forum = $forum2->id;
     for ($i = 0; $i < 5; $i++) {
         $this->getDataGenerator()->get_plugin_generator('mod_forum')->create_discussion($record);
     }
     // Ensure that the creation times mean that the messages will be sent.
     $this->helper_force_digest_mail_times();
     // Set the tested user's default maildigest setting.
     $DB->set_field('user', 'maildigest', 0, array('id' => $user->id));
     // Set the maildigest preference for forum1 to digest (complete).
     forum_set_user_maildigest($forum1, 1, $user);
     // Set the maildigest preference for forum2 to digest (short).
     forum_set_user_maildigest($forum2, 2, $user);
     // One digest e-mail should be sent, and no individual notifications.
     $this->helper_run_cron_check_count(1, 0, 1);
 }