/** * Processes all the TDRs in the datbase updating skillsoft_au_track and gradebook * * @param $trace false default, flag to indicate if mtrace messages should be sent * @return unknown_type */ function skillsoft_process_received_tdrs($trace = false) { global $CFG, $DB; if ($trace) { mtrace(get_string('skillsoft_odcprocessinginit', 'skillsoft')); } if ($unmatchedtdrs = $DB->get_records_select('skillsoft_tdr', 'userid=0', null, 'tdrid ASC')) { foreach ($unmatchedtdrs as $tdr) { $tdr->userid = skillsoft_getusername_from_loginname($tdr->username); if ($tdr->userid != 0) { $id = update_record('skillsoft_tdr', $tdr); } } } //Select all the unprocessed TDR's //We do it this way so that if we create a new Moodle SkillSoft activity for an asset we //have TDR's for already we can "catch up" $sql = "SELECT t.id as id, s.id AS skillsoftid, u.id AS userid, t.tdrid, t.timestamp, t.reset, t.format, t.data, t.context, t.processed "; $sql .= "FROM {skillsoft_tdr} t INNER JOIN {user} u ON u.id = t.userid INNER JOIN {skillsoft} s ON t.assetid = s.assetid "; $sql .= "WHERE t.processed=0 "; $sql .= "ORDER BY s.id,u.id,t.tdrid "; $attempt = 1; $lasttdr = new stdClass(); $lasttdr->skillsoftid = NULL; $lasttdr->userid = NULL; $rs = $DB->get_recordset_sql($sql); if ($rs->valid()) { foreach ($rs as $processedtdr) { if ($trace) { mtrace(get_string('skillsoft_odcprocessretrievedtdr', 'skillsoft', $processedtdr)); } if ($processedtdr->skillsoftid != $lasttdr->skillsoftid || $processedtdr->userid != $lasttdr->userid) { $conditions = array('id' => $processedtdr->skillsoftid); $skillsoft = $DB->get_record('skillsoft', $conditions); $conditions2 = array('id' => $processedtdr->userid); $user = $DB->get_record('user', $conditions2); $handler = new aicchandler($user, $skillsoft, $attempt, $CFG->skillsoft_strictaiccstudentid); } //Process the TDR as AICC Data if ($skillsoft->completable) { $handler->processtdr($processedtdr, $attempt); } else { $handler->processtdr($processedtdr, 1); } $processedtdr->processed = 1; $id = $DB->update_record('skillsoft_tdr', $processedtdr); $lasttdr = $processedtdr; } } $rs->close(); if ($trace) { mtrace(get_string('skillsoft_odcprocessingend', 'skillsoft')); } }