/** * 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')); }
/** * If its an old post, do nothing. If the record exists, the maintenance will clear it up later. * * @return bool */ function anonforum_tp_mark_post_read($userid, $post, $anonforumid) { if (!anonforum_tp_is_post_old($post)) { return anonforum_tp_add_read_record($userid, $post->id); } else { return true; } }
if ($displaymode == ANONFORUM_MODE_FLATOLDEST or $displaymode == ANONFORUM_MODE_FLATNEWEST) { $displaymode = ANONFORUM_MODE_NESTED; } } else { $parent = $discussion->firstpost; } if (!($post = anonforum_get_post_full($parent))) { print_error("notexists", 'anonforum', "{$CFG->wwwroot}/mod/anonforum/view.php?f={$anonforum->id}"); } if (!anonforum_user_can_see_post($anonforum, $discussion, $post, null, $cm)) { print_error('noviewdiscussionspermission', 'anonforum', "{$CFG->wwwroot}/mod/anonforum/view.php?id={$anonforum->id}"); } if ($mark == 'read' or $mark == 'unread') { if ($CFG->anonforum_usermarksread && anonforum_tp_can_track_anonforums($anonforum) && anonforum_tp_is_tracked($anonforum)) { if ($mark == 'read') { anonforum_tp_add_read_record($USER->id, $postid); } else { // unread anonforum_tp_delete_read_records($USER->id, $postid); } } } $searchform = anonforum_search_form($course); $anonforumnode = $PAGE->navigation->find($cm->id, navigation_node::TYPE_ACTIVITY); if (empty($anonforumnode)) { $anonforumnode = $PAGE->navbar; } else { $anonforumnode->make_active(); } $node = $anonforumnode->add(format_string($discussion->name), new moodle_url('/mod/anonforum/discuss.php', array('d' => $discussion->id))); $node->display = false;