$options = array('10'=>10, '20'=>20, '100'=>100, '1000'=>1000, '100000'=>100000);
$mform->addElement('select', 'previewrows', get_string('previewrows', 'grades'), $options);
+ if (!empty($features['updatedgrades'])) {
+ $mform->addElement('advcheckbox', 'updatedgradesonly', get_string('updatedgradesonly', 'grades'));
+ }
+
if (!empty($features['includeseparator'])) {
$radio = array();
$radio[] = &MoodleQuickForm::createElement('radio', 'separator', null, get_string('septab', 'grades'), 'tab');
var $export_feedback; // export feedback
var $userkey; // export using private user key
+ var $updatedgradesonly; // only export updated grades
/**
* Constructor should set up all the private variables ready to be pulled
* @param object $course
* @param boolean $export_letters
* @note Exporting as letters will lead to data loss if that exported set it re-imported.
*/
- function grade_export($course, $groupid=0, $itemlist='', $export_feedback=false, $export_letters=false) {
+ function grade_export($course, $groupid=0, $itemlist='', $export_feedback=false, $export_letters=false, $updatedgradesonly = false) {
$this->course = $course;
$this->groupid = $groupid;
$this->grade_items = grade_item::fetch_all(array('courseid'=>$this->course->id));
$this->export_feedback = $export_feedback;
$this->userkey = '';
$this->previewrows = false;
+ $this->updatedgradesonly = $updatedgradesonly;
}
/**
echo "<td>$user->firstname</td><td>$user->lastname</td><td>$user->idnumber</td><td>$user->institution</td><td>$user->department</td><td>$user->email</td>";
foreach ($this->columns as $itemid=>$unused) {
$gradetxt = $this->format_grade($userdata->grades[$itemid]);
- echo "<td>$gradetxt</td>";
-
+
+ // get the status of this grade, and put it through track to get the status
+ $g = new grade_export_update_buffer();
+ $grade_grade = new grade_grade(array('itemid'=>$itemid, 'userid'=>$user->id));
+ $status = $g->track($grade_grade);
+echo "status is $status";
+ if ($this->updatedgradesonly && ($status == 'nochange' || $status == 'unknown')) {
+ echo '<td>'.get_string('unchangedgrade', 'grade').'</td>';
+ } else {
+ echo "<td>$gradetxt</td>";
+ }
+
if ($this->export_feedback) {
echo '<td>'.$this->format_feedback($userdata->feedbacks[$itemid]).'</td>';
}
function get_export_params() {
$itemids = array_keys($this->columns);
- $params = array('id' =>$this->course->id,
- 'groupid' =>$this->groupid,
- 'itemids' =>implode(',', $itemids),
- 'export_letters' =>$this->export_letters,
- 'export_feedback'=>$this->export_feedback);
+ $params = array('id' =>$this->course->id,
+ 'groupid' =>$this->groupid,
+ 'itemids' =>implode(',', $itemids),
+ 'export_letters' =>$this->export_letters,
+ 'export_feedback' =>$this->export_feedback,
+ 'updatedgradesonly' =>$this->updatedgradesonly);
return $params;
}
* @return string $status (unknow, new, regrade, nochange)
*/
function track($grade_grade) {
+
if (empty($grade_grade->exported) or empty($grade_grade->timemodified)) {
if (is_null($grade_grade->finalgrade)) {
// grade does not exist yet
$itemids = required_param('itemids', PARAM_RAW);
$export_feedback = optional_param('export_feedback', 0, PARAM_BOOL);
$export_letters = optional_param('export_letters', 0, PARAM_BOOL);
+$updatedgradesonly = optional_param('updatedgradesonly', false, PARAM_BOOL);
if (!$course = get_record('course', 'id', $id)) {
print_error('nocourseid');
// print all the exported data here
-$export = new grade_export_xml($course, $groupid, $itemids, $export_feedback, $export_letters);
+$export = new grade_export_xml($course, $groupid, $itemids, $export_feedback, $export_letters, $updatedgradesonly);
$export->print_grades();
?>
class grade_export_xml extends grade_export {
var $plugin = 'xml';
-
+ var $updatedgradesonly = false; // default to export ALL grades
+
/**
* To be implemented by child classes
* @param boolean $feedback
$grade_item = $this->grade_items[$itemid];
$grade->grade_item =& $grade_item;
$gradestr = $grade->finalgrade; // no formating for now
+
+ // MDL-11
+ if ($export_tracking) {
+ $status = $geub->track($grade);
+ if ($this->updatedgradesonly && ($status == 'nochange' || $status == 'unknown')) {
+ continue;
+ }
+ }
fwrite($handle, "\t<result>\n");
if ($export_tracking) {
- $status = $geub->track($grade);
fwrite($handle, "\t\t<state>$status</state>\n");
}
$CFG->gradepublishing = has_capability('gradeexport/xml:publish', $context);
}
-$mform = new grade_export_form(null, array('idnumberrequired'=>true, 'publishing' => true));
+$mform = new grade_export_form(null, array('idnumberrequired'=>true, 'publishing' => true, 'updatedgrades' => true));
// process post information
if ($data = $mform->get_data()) {
- $export = new grade_export_xml($course, groups_get_course_group($course));
-
+ $export = new grade_export_xml($course, groups_get_course_group($course), $data->updatedgradesonly, false, false, $data->updatedgradesonly);
// print the grades on screen for feedbacks
$export->process_form($data);
$export->print_continue();
$string['typescale'] = 'Scale';
$string['typetext'] = 'Text';
$string['typevalue'] = 'Value';
+$string['updatedgradesonly'] = 'Export new or updated grades only';
$string['uncategorised'] = 'Uncategorised';
+$string['unchangedgrade'] = 'Grade unchanged';
$string['unlock'] = 'Unlock';
$string['unused'] = 'Unused';
$string['uploadgrades'] = 'Upload grades';