From: Mike G. v. a. <we...@ma...> - 2008-09-28 21:13:06
|
Log Message: ----------- Added code that has the gradebook updated every 5 minutes (using the cron job) Modified Files: -------------- wwmoodle/wwassignment4/moodle/mod/wwassignment: lib.php locallib.php version.php wwmoodle/wwassignment4/moodle/mod/wwassignment/db: install.xml upgrade.php Revision Data ------------- Index: version.php =================================================================== RCS file: /webwork/cvs/system/wwmoodle/wwassignment4/moodle/mod/wwassignment/version.php,v retrieving revision 1.1 retrieving revision 1.2 diff -Lwwassignment4/moodle/mod/wwassignment/version.php -Lwwassignment4/moodle/mod/wwassignment/version.php -u -r1.1 -r1.2 --- wwassignment4/moodle/mod/wwassignment/version.php +++ wwassignment4/moodle/mod/wwassignment/version.php @@ -5,8 +5,8 @@ /// This fragment is called by moodle_needs_upgrading() and /admin/index.php ///////////////////////////////////////////////////////////////////////////////// -$module->version = 2008042072; // The current module version (Date: YYYYMMDDXX) +$module->version = 2008092818; // The current module version (Date: YYYYMMDDXX) $module->requires = 2007101509; // Requires this Moodle version -$module->cron = 0; // Period for cron to check this module (secs) +$module->cron = 300; // Period for cron to check this module (secs) -- every 5 minutes ?> \ No newline at end of file Index: lib.php =================================================================== RCS file: /webwork/cvs/system/wwmoodle/wwassignment4/moodle/mod/wwassignment/lib.php,v retrieving revision 1.5 retrieving revision 1.6 diff -Lwwassignment4/moodle/mod/wwassignment/lib.php -Lwwassignment4/moodle/mod/wwassignment/lib.php -u -r1.5 -r1.6 --- wwassignment4/moodle/mod/wwassignment/lib.php +++ wwassignment4/moodle/mod/wwassignment/lib.php @@ -103,7 +103,7 @@ //get data from WeBWorK $wwsetdata = $wwclient->get_assignment_data($wwcoursename,$wwsetname,false); $wwassignment->id = $wwassignment->instance; - + $wwassignment->grade = $wwclient->get_max_grade($wwcoursename,$wwsetname,false); $wwassignment->timemodified = time(); $returnid = update_record('wwassignment',$wwassignment); @@ -264,19 +264,26 @@ /** * Update grades by firing grade_updated event * - * @param object $assignment null means all wwassignments + * @param object $wwassignment object with extra cmidnumber ?? + * @param object $wwassignment null means all wwassignments * @param int $userid specific user only, 0 mean all */ function wwassignment_update_grades($wwassignment=null, $userid=0, $nullifnone=true) { debugLog("Begin wwassignment_update_grades"); - //debugLog("inputs wwassignment = " . print_r($wwassignment,true)); - //debugLog("userid = $userid"); + debugLog("inputs wwassignment = " . print_r($wwassignment,true)); + debugLog("userid = $userid"); global $CFG; if (!function_exists('grade_update')) { //workaround for buggy PHP versions require_once($CFG->libdir.'/gradelib.php'); } if ($wwassignment != null) { + // Make sure wwassignment has cmid defined isnce wwassignment_grade_item_update requires it + if (!$wwassignment->cmidnumber) { // is this ever needed? + $wwassignment->cmidnumber =_wwassignment_cmid() ; + //error_log("adding cmidnumber to wwassignment".$wwassignment->cmidnumber); + } + if ($grades = wwassignment_get_user_grades($wwassignment, $userid)) { # fetches all students if userid=0 foreach($grades as $k=>$v) { if ($v->rawgrade == -1) { @@ -300,14 +307,18 @@ //debugLog ("sql string = $sql"); //$tmp = get_recordset_sql($sql); //error_log("result is ".print_r($tmp,true) ); - if ($rs = get_recordset_sql($sql)) { + if ($rs = get_recordset_sql($sql)) { debugLog("record set found"); while ($wwassignment = rs_fetch_next_record($rs)) { - debugLog("processing next grade"); + if (!$wwassignment->cmidnumber) { // is this ever needed? + $wwassignment->cmidnumber =_wwassignment_cmid() ; + } + + debugLog("processing next grade wwassignment is ".print_r($wwassignment,true) ); if ($wwassignment->grade != 0) { wwassignment_update_grades($wwassignment); } else { - wwassignment_grade_item_update($wwassignment); + wwassignment_grade_item_update($wwassignment); } } rs_close($rs); @@ -344,8 +355,7 @@ $wwsetname = _wwassignment_mapped_set($wwassignment->id,false); $wwassignment->grade = $wwclient->get_max_grade($wwcoursename,$wwsetname,false); } - - // debugLog("wwassignment->grade set to ". $wwassignment->grade); + // set grade in wwassignment $params = array('itemname'=>$wwassignment->name, 'idnumber'=>$wwassignment->cmidnumber); @@ -369,6 +379,7 @@ # grade_update() defined in gradelib.php # $grades=NULL means update grade_item table only, otherwise post grades in grade_grades debugLog("End wwassignment_grade_item_update"); + error_log("update grades for courseid: ". $wwassignment->courseid . " assignment id: ".$wwassignment->id); return grade_update('mod/wwassignment', $wwassignment->courseid, 'mod', 'wwassignment', $wwassignment->id, 0, $grades, $params); } /** @@ -504,9 +515,12 @@ * returns true if successful */ function wwassignment_cron() { - error_log("Begin wwassignment_cron --not used yet"); + error_log("Begin wwassignment_cron"); //FIXME: Add a call that updates all events with dates (in case people forgot to push) + //wwassignment_refresh_events(); + //FIXME: Add a call that updates all grades in all courses + wwassignment_update_grades(null,0); error_log("End wwassignment_cron"); return true; } Index: locallib.php =================================================================== RCS file: /webwork/cvs/system/wwmoodle/wwassignment4/moodle/mod/wwassignment/locallib.php,v retrieving revision 1.6 retrieving revision 1.7 diff -Lwwassignment4/moodle/mod/wwassignment/locallib.php -Lwwassignment4/moodle/mod/wwassignment/locallib.php -u -r1.6 -r1.7 --- wwassignment4/moodle/mod/wwassignment/locallib.php +++ wwassignment4/moodle/mod/wwassignment/locallib.php @@ -84,28 +84,13 @@ $event->format = 1; $event->modulename = 'wwassignment'; $event->instance = $wwassignmentid; - $event->visible = 1; - - // FIXME -- this doesn't create a new object we'll just handle the due date for now - // what you want is $openevent = clone $event this makes a shallow copy of the object - //$openevent = $event; - // FIXME -- it's likely that only the due date needs to be posted. once that is sure, clean this up. - $dueevent = $event; - - //$openevent->name .= ' is Open.'; - //$openevent->eventtype = 'open'; - //$openevent->timestart = $opendate; - //$openevent->timeduration = $duedate - $opendate; - + $event->visible = 1; $dueevent->name .= ' is Due.'; $dueevent->eventtype = 'due'; $dueevent->timestart = $duedate; $dueevent->timeduration = 1; // error_log("adding a due event"); $result = 0; - //if(!add_event($openevent)) { - // $result = -1; - //} if(!add_event($dueevent)) { $result = -1; } @@ -196,7 +181,7 @@ *@return id */ function _wwassignment_cmid() { - $wwassignment = get_record('mod','name','wwassignment'); + $wwassignment = get_record('modules','name','wwassignment'); return $wwassignment->id; } Index: upgrade.php =================================================================== RCS file: /webwork/cvs/system/wwmoodle/wwassignment4/moodle/mod/wwassignment/db/upgrade.php,v retrieving revision 1.5 retrieving revision 1.6 diff -Lwwassignment4/moodle/mod/wwassignment/db/upgrade.php -Lwwassignment4/moodle/mod/wwassignment/db/upgrade.php -u -r1.5 -r1.6 --- wwassignment4/moodle/mod/wwassignment/db/upgrade.php +++ wwassignment4/moodle/mod/wwassignment/db/upgrade.php @@ -34,39 +34,30 @@ //===== 1.9.0 upgrade line ======// notify("running 1.9 upgrade"); - if ($result && $oldversion < 2008042072) { + if ($result && $oldversion < 2008092818) { - /// Define field grade to be added to wwassignment - //$table = new XMLDBTable('wwassignment'); - //$field = new XMLDBField('grade'); - //$field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'webwork_set'); - + //Define field grade to be added to wwassignment + $table = new XMLDBTable('wwassignment'); + $field = new XMLDBField('grade'); + $field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'webwork_set'); // can't do this until you are connected to webwork -- which you won't be on initial upgrades // add this either to wwlink block or to configuration /// Launch add field grade - //$result = $result && add_field($table, $field); + $result = $result && add_field($table, $field); /// Define field timemodified to be added to wwassignment $table = new XMLDBTable('wwassignment'); $field = new XMLDBField('timemodified'); - $field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'webwork_set'); + $field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'grade'); /// Launch add field timemodified to wwassignment_bridge $result = $result && add_field($table, $field); - - /// Define field timemodified to be added to wwassignment -// $table = new XMLDBTable('wwassignment_bridge'); -// $field = new XMLDBField('timemodified'); -// $field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'webwork_course'); -// -// /// Launch add field timemodified to wwassignment_bridge -// $result = $result && add_field($table, $field); - + //notify('Processing assignment grades, this may take a while if there are many assignments...', 'notifysuccess'); // change grade typo to text if no grades MDL-13920 Index: install.xml =================================================================== RCS file: /webwork/cvs/system/wwmoodle/wwassignment4/moodle/mod/wwassignment/db/install.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -Lwwassignment4/moodle/mod/wwassignment/db/install.xml -Lwwassignment4/moodle/mod/wwassignment/db/install.xml -u -r1.3 -r1.4 --- wwassignment4/moodle/mod/wwassignment/db/install.xml +++ wwassignment4/moodle/mod/wwassignment/db/install.xml @@ -8,6 +8,7 @@ <FIELD NAME="name" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="course" NEXT="description"/> <FIELD NAME="description" TYPE="text" LENGTH="small" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="name" NEXT="webwork_set"/> <FIELD NAME="webwork_set" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" DEFAULT="undefined" PREVIOUS="description" NEXT="timemodified"/> + <FIELD NAME="grade" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="timeavailable" NEXT="timemodified"/> <FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="webwork_set"/> </FIELDS> <KEYS> |