MDL-31405 Assignment: Fixed date in reset to be called for every assignment

This commit is contained in:
Rajesh Taneja 2013-10-14 12:07:46 +08:00
parent f8eff10319
commit e63515ba93
5 changed files with 56 additions and 9 deletions

View file

@ -742,7 +742,7 @@ class assign {
shift_course_mod_dates('assign',
array('duedate', 'allowsubmissionsfromdate', 'cutoffdate'),
$data->timeshift,
$data->courseid);
$data->courseid, $this->get_instance()->id);
$status[] = array('component'=>$componentstr,
'item'=>get_string('datechanged'),
'error'=>false);

View file

@ -250,6 +250,34 @@ class mod_assign_locallib_testcase extends mod_assign_base_testcase {
// Reload the instance data.
$instance = $DB->get_record('assign', array('id'=>$assign->get_instance()->id));
$this->assertEquals($now + 24*60*60, $instance->duedate);
// Test reset using assign_reset_userdata().
$assignduedate = $instance->duedate; // Keep old updated value for comparison.
$data->timeshift = 2*24*60*60;
assign_reset_userdata($data);
$instance = $DB->get_record('assign', array('id' => $assign->get_instance()->id));
$this->assertEquals($assignduedate + 2*24*60*60, $instance->duedate);
// Create one more assignment and reset, make sure time shifted for previous assignment is not changed.
$assign2 = $this->create_instance(array('assignsubmission_onlinetext_enabled' => 1,
'duedate' => $now));
$assignduedate = $instance->duedate;
$data->timeshift = 3*24*60*60;
$assign2->reset_userdata($data);
$instance = $DB->get_record('assign', array('id' => $assign->get_instance()->id));
$this->assertEquals($assignduedate, $instance->duedate);
$instance2 = $DB->get_record('assign', array('id' => $assign2->get_instance()->id));
$this->assertEquals($now + 3*24*60*60, $instance2->duedate);
// Reset both assignments using assign_reset_userdata() and make sure both assignments have same date.
$assignduedate = $instance->duedate;
$assign2duedate = $instance2->duedate;
$data->timeshift = 4*24*60*60;
assign_reset_userdata($data);
$instance = $DB->get_record('assign', array('id' => $assign->get_instance()->id));
$this->assertEquals($assignduedate + 4*24*60*60, $instance->duedate);
$instance2 = $DB->get_record('assign', array('id' => $assign2->get_instance()->id));
$this->assertEquals($assign2duedate + 4*24*60*60, $instance2->duedate);
}
public function test_plugin_settings() {

View file

@ -2368,12 +2368,6 @@ class assignment_base {
}
}
/// updating dates - shift may be negative too
if ($data->timeshift) {
shift_course_mod_dates('assignment', array('timedue', 'timeavailable'), $data->timeshift, $data->courseid);
$status[] = array('component'=>$componentstr, 'item'=>get_string('datechanged').': '.$typestr, 'error'=>false);
}
return $status;
}
@ -3886,6 +3880,23 @@ function assignment_reset_userdata($data) {
$status = array_merge($status, $ass->reset_userdata($data));
}
// Updating dates - shift may be negative too.
if ($data->timeshift) {
$plugintypestrkey = 'type'.$this->type;
if (get_string_manager()->string_exists($plugintypestrkey, 'assignment')) {
$typestr = get_string_manager()->get_string($plugintypestrkey, 'assignment');
} else {
$typestr = get_string_manager()->get_string($plugintypestrkey, 'assignment_'.$this->type);
}
shift_course_mod_dates('assignment',
array('timedue', 'timeavailable'),
$data->timeshift,
$data->courseid);
$status[] = array('component' => get_string('modulenameplural', 'assignment'),
'item' => get_string('datechanged').': '.$typestr,
'error' => false);
}
return $status;
}