From 1b074625605c1c11501bfb400eba212c8fb67193 Mon Sep 17 00:00:00 2001 From: toyomoyo Date: Fri, 11 May 2007 09:08:30 +0000 Subject: [PATCH] added code to write back timestamp --- grade/export/lib.php | 77 +++++++++++++++++++++++++-- grade/export/ods/grade_export_ods.php | 24 ++++++++- grade/export/txt/export.php | 15 ++++++ grade/export/txt/grade_export_txt.php | 28 ++++++++-- grade/export/txt/index.php | 46 ++++++++++++++++ grade/export/xls/grade_export_xls.php | 24 ++++++++- grade/export/xml/grade_export_xml.php | 4 +- 7 files changed, 206 insertions(+), 12 deletions(-) create mode 100755 grade/export/txt/export.php create mode 100755 grade/export/txt/index.php diff --git a/grade/export/lib.php b/grade/export/lib.php index 92952754c9..7514302935 100755 --- a/grade/export/lib.php +++ b/grade/export/lib.php @@ -22,7 +22,38 @@ // http://www.gnu.org/copyleft/gpl.html // // // /////////////////////////////////////////////////////////////////////////// - +include_once('../../../config.php'); +include_once($CFG->dirroot.'/lib/gradelib.php'); +/** + * Prints all grade items for selection + * @input int id - course id + */ +function print_gradeitem_selections($id) { + + // print all items for selections + // make this a standard function in lib maybe + if ($grade_items = grade_get_items($id)) { + echo '
'; + echo '
'; + foreach ($grade_items as $grade_item) { + + echo '
'; + + if ($grade_item->itemtype == 'category') { + // grade categories should be displayed bold + echo ''.$grade_item->itemname.''; + } else { + echo $grade_item->itemname; + } + } + echo ''; + echo '
'; + echo '
'; + } +} +/** + * Base export class + */ class grade_export { var $format = ''; // export format @@ -160,7 +191,47 @@ class grade_export { * To be implemented by child classes */ function print_grades() { } - + + /** + * Displays all the grades on screen as a feedback mechanism + */ + function display_grades() { + echo get_string("firstname")."\t". + get_string("lastname")."\t". + get_string("idnumber")."\t". + get_string("institution")."\t". + get_string("department")."\t". + get_string("email"); + foreach ($this->columns as $column) { + $column = strip_tags($column); + echo "\t$column"; + + /// add a column_feedback column + if ($feedback) { + echo "\t{$column}_feedback"; + } + } + echo "\t".get_string("total")."\n"; + + /// Print all the lines of data. + foreach ($this->grades as $studentid => $studentgrades) { + $student = $students[$studentid]; + if (empty($this->totals[$student->id])) { + $this->totals[$student->id] = ''; + } + echo "$student->firstname\t$student->lastname\t$student->idnumber\t$student->institution\t$student->department\t$student->email"; + foreach ($studentgrades as $grade) { + $grade = strip_tags($grade); + echo "\t$grade"; + + if ($feedback) { + echo "\t".array_shift($this->comments[$student->id]); + } + } + echo "\t".$this->totals[$student->id]; + echo "\n"; + } + } } -?> +?> \ No newline at end of file diff --git a/grade/export/ods/grade_export_ods.php b/grade/export/ods/grade_export_ods.php index 6b38deddfb..c8853184b9 100755 --- a/grade/export/ods/grade_export_ods.php +++ b/grade/export/ods/grade_export_ods.php @@ -90,7 +90,27 @@ class grade_export_ods extends grade_export { // writing comment if requested if ($feedback) { $myxls->write_string($i,$j++,array_shift($this->comments[$student->id])); - } + } + + /// if export flag needs to be set + /// construct the grade_grades_final object and update timestamp if CFG flag is set + + if ($expplugins = explode(",", get_config($CFG->gradeexport))) { + if (in_array($this->format, $expplugins)) { + $params->idnumber = $this->idnumber; + // get the grade item + $gradeitem = new grade_item($params); + + unset($params); + $params->itemid = $gradeitem->id; + $params->userid = $studentid; + + $grade_grades_final = new grade_grades_final($params); + $grade_grades_final->exported = time(); + // update the time stamp; + $grade_grades_final->update(); + } + } } $myxls->write_number($i,$j,$this->totals[$student->id]); } @@ -103,4 +123,4 @@ class grade_export_ods extends grade_export { } } -?> +?> \ No newline at end of file diff --git a/grade/export/txt/export.php b/grade/export/txt/export.php new file mode 100755 index 0000000000..acb349894f --- /dev/null +++ b/grade/export/txt/export.php @@ -0,0 +1,15 @@ +dirroot.'/grade/export/lib.php'); +require_once('grade_export_txt.php'); + +$id = required_param('id', PARAM_INT); // course id +$itemids = required_param('itemids', PARAM_NOTAGS); +$feedback = optional_param('feedback', '', PARAM_ALPHA); + +// print all the exported data here +$export = new grade_export_txt($id, $itemids); +$export->print_grades($feedback); + +?> \ No newline at end of file diff --git a/grade/export/txt/grade_export_txt.php b/grade/export/txt/grade_export_txt.php index 144325a7b4..85f592eaf3 100755 --- a/grade/export/txt/grade_export_txt.php +++ b/grade/export/txt/grade_export_txt.php @@ -31,10 +31,10 @@ class grade_export_txt extends grade_export { /** * To be implemented by child classes */ - function print_grades($feedback = false;) { + function print_grades($feedback = false) { /// Print header to force download - + global $CFG; header("Content-Type: application/download\n"); $downloadfilename = clean_filename("$this->course->shortname $this->strgrades"); header("Content-Disposition: attachment; filename=\"$downloadfilename.txt\""); @@ -71,7 +71,27 @@ class grade_export_txt extends grade_export { if ($feedback) { echo "\t".array_shift($this->comments[$student->id]); - } + } + + /// if export flag needs to be set + /// construct the grade_grades_final object and update timestamp if CFG flag is set + + if ($expplugins = explode(",", get_config($CFG->gradeexport))) { + if (in_array($this->format, $expplugins)) { + $params->idnumber = $this->idnumber; + // get the grade item + $gradeitem = new grade_item($params); + + unset($params); + $params->itemid = $gradeitem->id; + $params->userid = $studentid; + + $grade_grades_final = new grade_grades_final($params); + $grade_grades_final->exported = time(); + // update the time stamp; + $grade_grades_final->update(); + } + } } echo "\t".$this->totals[$student->id]; echo "\n"; @@ -81,4 +101,4 @@ class grade_export_txt extends grade_export { } } -?> +?> \ No newline at end of file diff --git a/grade/export/txt/index.php b/grade/export/txt/index.php new file mode 100755 index 0000000000..c0f2c01520 --- /dev/null +++ b/grade/export/txt/index.php @@ -0,0 +1,46 @@ +dirroot.'/grade/export/lib.php'); +require_once('grade_export_txt.php'); + +$id = required_param('id', PARAM_INT); // course id +$feedback = optional_param('feedback', '', PARAM_ALPHA); + +// process post information +if ($data = data_submitted() && confirm_sesskey()) { + $itemids = implode(",", $data->itemids); + // this redirect should trigger a download prompt + redirect('export.php?id='.$id.'&itemids='.$itemids); + + // print the grades on screen for feedbacks + print_header(); + $export = new grade_export($id, $itemids); + $export->display_grades($feedback); + print_footer(); + exit; +} + +print_gradeitem_selections($id); +?> \ No newline at end of file diff --git a/grade/export/xls/grade_export_xls.php b/grade/export/xls/grade_export_xls.php index c28bc26f19..70860c986f 100755 --- a/grade/export/xls/grade_export_xls.php +++ b/grade/export/xls/grade_export_xls.php @@ -91,7 +91,27 @@ class grade_export_xls extends grade_export { // writing comment if requested if ($feedback) { $myxls->write_string($i,$j++,array_shift($this->comments[$student->id])); - } + } + + /// if export flag needs to be set + /// construct the grade_grades_final object and update timestamp if CFG flag is set + + if ($expplugins = explode(",", get_config($CFG->gradeexport))) { + if (in_array($this->format, $expplugins)) { + $params->idnumber = $this->idnumber; + // get the grade item + $gradeitem = new grade_item($params); + + unset($params); + $params->itemid = $gradeitem->id; + $params->userid = $studentid; + + $grade_grades_final = new grade_grades_final($params); + $grade_grades_final->exported = time(); + // update the time stamp; + $grade_grades_final->update(); + } + } } $myxls->write_number($i,$j,$this->totals[$student->id]); } @@ -103,4 +123,4 @@ class grade_export_xls extends grade_export { } } -?> +?> \ No newline at end of file diff --git a/grade/export/xml/grade_export_xml.php b/grade/export/xml/grade_export_xml.php index c07c047c7b..e3e989171e 100755 --- a/grade/export/xml/grade_export_xml.php +++ b/grade/export/xml/grade_export_xml.php @@ -54,7 +54,7 @@ class grade_export_xml extends grade_export { // state can be new, or regrade // require comparing of timestamps in db - $params->idnumber = $idnumber; + $params->idnumber = $this->idnumber; // get the grade item $gradeitem = new grade_item($params); @@ -91,6 +91,8 @@ class grade_export_xml extends grade_export { echo ''.$this->comments[$studentid][$index].''; } echo ''; + + // if flag is set, timestamp this } } echo ''; -- 2.39.5