dirroot.'/grade/export/lib.php'); class grade_export_xml extends grade_export { var $format = 'xml'; // export format /** * To be implemented by child classes */ function print_grades($feedback = false) { global $CFG; /// Whether this plugin is entitled to update export time if ($expplugins = explode(",", $CFG->gradeexport)) { if (in_array($this->format, $expplugins)) { $export = true; } else { $export = false; } } else { $export = false; } require_once($CFG->dirroot.'/lib/excellib.class.php'); /// Calculate file name $downloadfilename = clean_filename("{$this->course->shortname} $this->strgrades.xml"); header("Content-type: text/xml; charset=UTF-8"); header("Content-Disposition: attachment; filename=\"$downloadfilename\""); /// time stamp to ensure uniqueness of batch export echo ''; foreach ($this->columnidnumbers as $index => $idnumber) { // studentgrades[] index should match with corresponding $index foreach ($this->grades as $studentid => $studentgrades) { echo ''; // state can be new, or regrade // require comparing of timestamps in db $params = new object(); $params->idnumber = $idnumber; // get the grade item $gradeitem = new grade_item($params); // we are trying to figure out if this is a new grade, or a regraded grade // only relevant if this grade for this user is already exported // get the grade_grade for this user $params = new object(); $params->itemid = $gradeitem->id; $params->userid = $studentid; $grade_grade = new grade_grade($params); // if exported, check grade_history, if modified after export, set state to regrade if (!empty($grade_grade->exported)) { //TODO: use timemodified or something else instead /* if (record_exists_select('grade_history', 'itemid = '.$gradeitem->id.' AND userid = '.$studentid.' AND timemodified > '.$grade_grade->exported)) { $status = 'regrade'; } else { $status = 'new'; }*/ } else { // never exported $status = 'new'; } echo ''.$status.''; // only need id number echo ''.$idnumber.''; // this column should be customizable to use either student id, idnumber, uesrname or email. echo ''.$studentid.''; echo ''.$studentgrades[$index].''; if ($feedback) { echo ''.$this->comments[$studentid][$index].''; } echo ''; // timestamp this if needed if ($export) { $grade_grade->exported = time(); // update the time stamp; $grade_grade->update(); } } } echo ''; exit; } } ?>