Merge branch 'MDL-57677-master-usermodified' of git://github.com/mudrd8mz/moodle

This commit is contained in:
Dan Poltawski 2017-01-23 09:48:11 +00:00
commit ee2af37e84
2 changed files with 55 additions and 1 deletions

View File

@ -4439,7 +4439,7 @@ function forum_update_post($newpost, $mform, $unused = null) {
// Last post modified tracking.
$discussion->timemodified = $post->modified;
$discussion->usermodified = $USER->id;
$discussion->usermodified = $post->userid;
if (!$post->parent) { // Post is a discussion starter - update discussion title and times too
$discussion->name = $post->subject;

View File

@ -3260,4 +3260,58 @@ class mod_forum_lib_testcase extends advanced_testcase {
],
];
}
/**
* Test that {@link forum_update_post()} keeps correct forum_discussions usermodified.
*/
public function test_forum_update_post_keeps_discussions_usermodified() {
global $DB;
$this->resetAfterTest();
// Let there be light.
$teacher = self::getDataGenerator()->create_user();
$student = self::getDataGenerator()->create_user();
$course = self::getDataGenerator()->create_course();
$forum = self::getDataGenerator()->create_module('forum', (object)[
'course' => $course->id,
]);
$generator = self::getDataGenerator()->get_plugin_generator('mod_forum');
// Let the teacher start a discussion.
$discussion = $generator->create_discussion((object)[
'course' => $course->id,
'userid' => $teacher->id,
'forum' => $forum->id,
]);
// On this freshly created discussion, the teacher is the author of the last post.
$this->assertEquals($teacher->id, $DB->get_field('forum_discussions', 'usermodified', ['id' => $discussion->id]));
// Let the student reply to the teacher's post.
$reply = $generator->create_post((object)[
'course' => $course->id,
'userid' => $student->id,
'forum' => $forum->id,
'discussion' => $discussion->id,
'parent' => $discussion->firstpost,
]);
// The student should now be the last post's author.
$this->assertEquals($student->id, $DB->get_field('forum_discussions', 'usermodified', ['id' => $discussion->id]));
// Let the teacher edit the student's reply.
$this->setUser($teacher->id);
$newpost = (object)[
'id' => $reply->id,
'itemid' => 0,
'subject' => 'Amended subject',
];
forum_update_post($newpost, null);
// The student should be still the last post's author.
$this->assertEquals($student->id, $DB->get_field('forum_discussions', 'usermodified', ['id' => $discussion->id]));
}
}