diff --git a/mod/assignment/db/install.xml b/mod/assignment/db/install.xml index 26bf60c..5841e97 100644 --- a/mod/assignment/db/install.xml +++ b/mod/assignment/db/install.xml @@ -21,7 +21,8 @@ - + + diff --git a/mod/assignment/db/upgrade.php b/mod/assignment/db/upgrade.php index 2841111..ea51137 100644 --- a/mod/assignment/db/upgrade.php +++ b/mod/assignment/db/upgrade.php @@ -153,7 +153,19 @@ function xmldb_assignment_upgrade($oldversion) { /// assignment savepoint reached upgrade_mod_savepoint(true, 2009042001, 'assignment'); } - + + if($oldversion < 2011082200){ + + $table = new xmldb_table('assignment'); + $field = new xmldb_field('duecheck'); + + if (!$dbman->field_exists($table, $field)) { + $field->set_attributes(XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, 0, 'timedue'); + $dbman->add_field($table, $field); + } + upgrade_mod_savepoint(true, 2011082200, 'assignment'); + } + return true; } diff --git a/mod/assignment/lib.php b/mod/assignment/lib.php index 69cc6a9..3a36f8f 100644 --- a/mod/assignment/lib.php +++ b/mod/assignment/lib.php @@ -2473,6 +2473,11 @@ function assignment_update_instance($assignment){ require_once("$CFG->dirroot/mod/assignment/type/$assignment->assignmenttype/assignment.class.php"); $assignmentclass = "assignment_$assignment->assignmenttype"; $ass = new $assignmentclass(); + //resetting duecheck if there is new due date in the future + if(isset($assignment->timedue) && $assignment->timedue > time()) + { + $assignment->duecheck = 0; + } return $ass->update_instance($assignment); } @@ -2552,6 +2557,26 @@ function assignment_cron () { $ass->cron(); } } + //loop all assigments where duecheck 0 + if($assigments = $DB->get_records('assignment',array('duecheck'=>0))) + { + foreach($assigments as $assignment) + { + if($assignment->timedue < time() && $assignment->timedue > 0) + { + $cm = get_coursemodule_from_instance("assignment", $assignment->id); + $eventdata = new stdClass(); + $eventdata->modulename = "assignment"; + $eventdata->name = $assignment->name; + $eventdata->cmid = $cm->id; + $eventdata->courseid = $assignment->course; + + events_trigger("mod_duecheck",$assignment); + $DB->set_field("assignment","duecheck","1",array("id"=>$assignment->id)); + } + } + } /// Notices older than 1 day will not be mailed. This is to avoid the problem where /// cron has not been running for a long time, and then suddenly people are flooded diff --git a/mod/assignment/version.php b/mod/assignment/version.php index 8bcda08..0bf7711 100644 --- a/mod/assignment/version.php +++ b/mod/assignment/version.php @@ -5,7 +5,7 @@ // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2010102600; +$module->version = 2011082200; $module->requires = 2010102600; // Requires this Moodle version $module->cron = 60;