2007-05-14 09:24:09 +00:00
|
|
|
<?php
|
|
|
|
require_once('../../../config.php');
|
2007-07-13 08:06:30 +00:00
|
|
|
include_once($CFG->libdir.'/gradelib.php');
|
|
|
|
|
2007-05-14 09:24:09 +00:00
|
|
|
$id = required_param('id', PARAM_INT); // course id
|
2007-06-11 09:00:17 +00:00
|
|
|
$course = get_record('course', 'id', $id); // actual course
|
2007-05-14 09:24:09 +00:00
|
|
|
|
2007-06-11 09:00:17 +00:00
|
|
|
// capability check
|
2007-07-13 08:06:30 +00:00
|
|
|
require_login($id);
|
2007-06-11 09:00:17 +00:00
|
|
|
require_capability('moodle/course:managegrades', get_context_instance(CONTEXT_COURSE, $course->id));
|
|
|
|
|
|
|
|
require_once('../grade_import_form.php');
|
|
|
|
require_once($CFG->dirroot.'/grade/lib.php');
|
|
|
|
require_once('../lib.php');
|
|
|
|
|
|
|
|
// sort out delimiter
|
2007-05-14 09:24:09 +00:00
|
|
|
$csv_encode = '/\&\#44/';
|
|
|
|
if (isset($CFG->CSV_DELIMITER)) {
|
|
|
|
$csv_delimiter = '\\' . $CFG->CSV_DELIMITER;
|
|
|
|
$csv_delimiter2 = $CFG->CSV_DELIMITER;
|
|
|
|
|
|
|
|
if (isset($CFG->CSV_ENCODE)) {
|
|
|
|
$csv_encode = '/\&\#' . $CFG->CSV_ENCODE . '/';
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$csv_delimiter = "\,";
|
|
|
|
$csv_delimiter2 = ",";
|
|
|
|
}
|
|
|
|
|
2007-07-17 03:32:10 +00:00
|
|
|
$strgrades = get_string('grades', 'grades');
|
|
|
|
$actionstr = get_string('importcsv', 'grades');
|
|
|
|
$gradenav = "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a>";
|
|
|
|
$gradenav .= " -> <a href=\"$CFG->wwwroot/grade/index.php?id=$course->id\">$strgrades</a>";
|
|
|
|
$gradenav .= " -> $actionstr";
|
|
|
|
print_header($course->shortname.': '.get_string('grades'), $course->fullname, $gradenav);
|
2007-05-14 09:24:09 +00:00
|
|
|
|
2007-05-17 08:55:29 +00:00
|
|
|
$mform = new grade_import_form();
|
2007-07-13 08:06:30 +00:00
|
|
|
//$mform2 = new grade_import_mapping_form();
|
2007-05-17 08:55:29 +00:00
|
|
|
//if ($formdata = $mform2->get_data() ) {
|
2007-05-24 08:57:36 +00:00
|
|
|
// i am not able to get the mapping[] and map[] array using the following line
|
|
|
|
// they are somehow not returned with get_data()
|
2007-06-11 09:00:17 +00:00
|
|
|
if (($formdata = data_submitted()) && !empty($formdata->map)) {
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-07-13 08:06:30 +00:00
|
|
|
// temporary file name supplied by form
|
2007-07-18 19:56:07 +00:00
|
|
|
$filename = $CFG->dataroot.'/temp/'.clean_param($formdata->filename, PARAM_FILE);
|
2007-07-04 02:16:41 +00:00
|
|
|
|
2007-07-13 08:06:30 +00:00
|
|
|
if ($fp = fopen($filename, "r")) {
|
|
|
|
// --- get header (field names) ---
|
|
|
|
$header = split($csv_delimiter, clean_param(fgets($fp,1024), PARAM_RAW));
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-07-13 08:06:30 +00:00
|
|
|
foreach ($header as $i => $h) {
|
|
|
|
$h = trim($h); $header[$i] = $h; // remove whitespace
|
2007-07-18 19:56:07 +00:00
|
|
|
}
|
2007-07-13 08:06:30 +00:00
|
|
|
} else {
|
2007-07-18 19:56:07 +00:00
|
|
|
error ('could not open file '.$filename);
|
2007-07-13 08:06:30 +00:00
|
|
|
}
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-07-17 03:32:10 +00:00
|
|
|
$map = array();
|
2007-07-13 08:06:30 +00:00
|
|
|
// loops mapping_0, mapping_1 .. mapping_n and construct $map array
|
2007-07-17 03:32:10 +00:00
|
|
|
foreach ($header as $i => $head) {
|
2007-07-18 19:56:07 +00:00
|
|
|
$map[$i] = $formdata->{'mapping_'.$i};
|
2007-07-04 02:16:41 +00:00
|
|
|
}
|
2007-05-17 08:55:29 +00:00
|
|
|
|
2007-07-13 08:06:30 +00:00
|
|
|
// if mapping informatioin is supplied
|
2007-07-04 02:16:41 +00:00
|
|
|
$map[clean_param($formdata->mapfrom, PARAM_RAW)] = clean_param($formdata->mapto, PARAM_RAW);
|
2007-05-17 08:55:29 +00:00
|
|
|
|
2007-07-17 08:40:35 +00:00
|
|
|
// check for mapto collisions
|
|
|
|
$maperrors = array();
|
|
|
|
foreach ($map as $i=>$j) {
|
|
|
|
if ($j == 0) {
|
|
|
|
// you can have multiple ignores
|
2007-07-18 19:56:07 +00:00
|
|
|
continue;
|
2007-07-17 08:40:35 +00:00
|
|
|
} else {
|
|
|
|
if (!isset($maperrors[$j])) {
|
2007-07-18 19:56:07 +00:00
|
|
|
$maperrors[$j] = true;
|
2007-07-17 08:40:35 +00:00
|
|
|
} else {
|
2007-07-18 19:56:07 +00:00
|
|
|
// collision
|
2007-07-17 08:40:35 +00:00
|
|
|
unlink($filename); // needs to be uploaded again, sorry
|
|
|
|
error('mapping collision detected, 2 fields maps to the same grdae item '.$j);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2007-05-24 08:57:36 +00:00
|
|
|
// Large files are likely to take their time and memory. Let PHP know
|
|
|
|
// that we'll take longer, and that the process should be recycled soon
|
|
|
|
// to free up memory.
|
2007-05-14 09:24:09 +00:00
|
|
|
@set_time_limit(0);
|
|
|
|
@raise_memory_limit("192M");
|
|
|
|
if (function_exists('apache_child_terminate')) {
|
|
|
|
@apache_child_terminate();
|
|
|
|
}
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-05-18 08:49:00 +00:00
|
|
|
// we only operate if file is readable
|
|
|
|
if ($fp = fopen($filename, "r")) {
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-07-13 08:06:30 +00:00
|
|
|
// read the first line makes sure this doesn't get read again
|
2007-07-04 02:16:41 +00:00
|
|
|
$header = split($csv_delimiter, clean_param(fgets($fp,1024), PARAM_RAW));
|
2007-07-18 19:56:07 +00:00
|
|
|
|
|
|
|
// use current (non-conflicting) time stamp
|
|
|
|
$importcode = time();
|
2007-07-13 08:06:30 +00:00
|
|
|
while (get_record('grade_import_values', 'import_code', $importcode)) {
|
2007-07-18 19:56:07 +00:00
|
|
|
$importcode = time();
|
2007-05-18 08:49:00 +00:00
|
|
|
}
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-06-06 08:51:58 +00:00
|
|
|
$newgradeitems = array(); // temporary array to keep track of what new headers are processed
|
2007-06-12 09:12:07 +00:00
|
|
|
$status = true;
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-05-18 08:49:00 +00:00
|
|
|
while (!feof ($fp)) {
|
|
|
|
// add something
|
2007-07-18 19:56:07 +00:00
|
|
|
$line = split($csv_delimiter, fgets($fp,1024));
|
|
|
|
|
2007-06-11 09:00:17 +00:00
|
|
|
// array to hold all grades to be inserted
|
2007-06-06 08:51:58 +00:00
|
|
|
$newgrades = array();
|
2007-07-13 08:06:30 +00:00
|
|
|
// array to hold all feedback
|
2007-07-18 19:56:07 +00:00
|
|
|
$newfeedbacks = array();
|
2007-06-11 09:00:17 +00:00
|
|
|
// each line is a student record
|
2007-07-18 19:56:07 +00:00
|
|
|
foreach ($line as $key => $value) {
|
2007-05-18 08:49:00 +00:00
|
|
|
//decode encoded commas
|
2007-07-04 02:16:41 +00:00
|
|
|
$value = clean_param($value, PARAM_RAW);
|
2007-05-18 08:49:00 +00:00
|
|
|
$value = preg_replace($csv_encode,$csv_delimiter2,trim($value));
|
2007-07-04 02:16:41 +00:00
|
|
|
|
2007-07-13 08:06:30 +00:00
|
|
|
/*
|
|
|
|
* the options are
|
|
|
|
* 1) userid, useridnumber, usermail, username - used to identify user row
|
|
|
|
* 2) new - new grade item
|
|
|
|
* 3) id - id of the old grade item to map onto
|
|
|
|
* 3) feedback_id - feedback for grade item id
|
|
|
|
*/
|
|
|
|
|
|
|
|
$t = explode("_", $map[$key]);
|
|
|
|
$t0 = $t[0];
|
|
|
|
if (isset($t[1])) {
|
|
|
|
$t1 = $t[1];
|
|
|
|
} else {
|
2007-07-18 19:56:07 +00:00
|
|
|
$t1 = '';
|
2007-07-13 08:06:30 +00:00
|
|
|
}
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-07-13 08:06:30 +00:00
|
|
|
switch ($t0) {
|
2007-06-12 09:12:07 +00:00
|
|
|
case 'userid': //
|
|
|
|
if (!$user = get_record('user','id', $value)) {
|
|
|
|
// user not found, abort whold import
|
|
|
|
import_cleanup($importcode);
|
|
|
|
notify("user mapping error, could not find user with id \"$value\"");
|
|
|
|
$status = false;
|
2007-07-18 19:56:07 +00:00
|
|
|
break 3;
|
2007-06-12 09:12:07 +00:00
|
|
|
}
|
2007-05-18 08:49:00 +00:00
|
|
|
$studentid = $value;
|
|
|
|
break;
|
|
|
|
case 'useridnumber':
|
2007-06-12 09:12:07 +00:00
|
|
|
if (!$user = get_record('user', 'idnumber', $value)) {
|
|
|
|
// user not found, abort whold import
|
|
|
|
import_cleanup($importcode);
|
|
|
|
notify("user mapping error, could not find user with idnumber \"$value\"");
|
|
|
|
$status = false;
|
2007-07-18 19:56:07 +00:00
|
|
|
break 3;
|
2007-06-12 09:12:07 +00:00
|
|
|
}
|
2007-05-18 08:49:00 +00:00
|
|
|
$studentid = $user->id;
|
|
|
|
break;
|
|
|
|
case 'useremail':
|
2007-06-12 09:12:07 +00:00
|
|
|
if (!$user = get_record('user', 'email', $value)) {
|
|
|
|
import_cleanup($importcode);
|
|
|
|
notify("user mapping error, could not find user with email address \"$value\"");
|
|
|
|
$status = false;
|
2007-07-18 19:56:07 +00:00
|
|
|
break 3;
|
2007-06-12 09:12:07 +00:00
|
|
|
}
|
2007-07-18 19:56:07 +00:00
|
|
|
$studentid = $user->id;
|
2007-05-18 08:49:00 +00:00
|
|
|
break;
|
|
|
|
case 'username':
|
2007-06-12 09:12:07 +00:00
|
|
|
if (!$user = get_record('user', 'username', $value)) {
|
|
|
|
import_cleanup($importcode);
|
|
|
|
notify("user mapping error, could not find user with username \"$value\"");
|
|
|
|
$status = false;
|
2007-07-18 19:56:07 +00:00
|
|
|
break 3;
|
2007-06-12 09:12:07 +00:00
|
|
|
}
|
2007-05-18 08:49:00 +00:00
|
|
|
$studentid = $user->id;
|
|
|
|
break;
|
2007-06-06 08:51:58 +00:00
|
|
|
case 'new':
|
|
|
|
// first check if header is already in temp database
|
2007-07-18 19:56:07 +00:00
|
|
|
|
|
|
|
if (empty($newgradeitems[$key])) {
|
|
|
|
|
2007-06-06 08:51:58 +00:00
|
|
|
$newgradeitem->itemname = $header[$key];
|
2007-07-18 19:56:07 +00:00
|
|
|
$newgradeitem->import_code = $importcode;
|
|
|
|
|
2007-06-12 09:12:07 +00:00
|
|
|
// failed to insert into new grade item buffer
|
|
|
|
if (!$newgradeitems[$key] = insert_record('grade_import_newitem', $newgradeitem)) {
|
|
|
|
$status = false;
|
|
|
|
import_cleanup($importcode);
|
|
|
|
notify(get_string('importfailed', 'grades'));
|
2007-07-18 19:56:07 +00:00
|
|
|
break 3;
|
2007-06-12 09:12:07 +00:00
|
|
|
}
|
2007-06-06 08:51:58 +00:00
|
|
|
// add this to grade_import_newitem table
|
2007-07-18 19:56:07 +00:00
|
|
|
// add the new id to $newgradeitem[$key]
|
|
|
|
}
|
2007-06-06 08:51:58 +00:00
|
|
|
unset($newgrade);
|
|
|
|
$newgrade -> newgradeitem = $newgradeitems[$key];
|
2007-07-18 19:56:07 +00:00
|
|
|
$newgrade -> finalgrade = $value;
|
2007-06-06 08:51:58 +00:00
|
|
|
$newgrades[] = $newgrade;
|
2007-07-18 19:56:07 +00:00
|
|
|
|
|
|
|
// if not, put it in
|
2007-06-06 08:51:58 +00:00
|
|
|
// else, insert grade into the table
|
|
|
|
break;
|
2007-07-17 08:40:35 +00:00
|
|
|
case 'feedback':
|
2007-07-13 08:06:30 +00:00
|
|
|
if ($t1) {
|
|
|
|
// t1 is the id of the grade item
|
|
|
|
$feedback -> itemid = $t1;
|
|
|
|
$feedback -> feedback = $value;
|
2007-07-17 08:40:35 +00:00
|
|
|
$newfeedbacks[] = $feedback;
|
2007-07-13 08:06:30 +00:00
|
|
|
}
|
2007-07-18 19:56:07 +00:00
|
|
|
break;
|
2007-05-18 08:49:00 +00:00
|
|
|
default:
|
2007-06-06 08:51:58 +00:00
|
|
|
// existing grade items
|
2007-07-13 08:06:30 +00:00
|
|
|
if (!empty($map[$key]) && $value!=="") {
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-06-12 09:12:07 +00:00
|
|
|
// non numeric grade value supplied, possibly mapped wrong column
|
2007-07-17 08:40:35 +00:00
|
|
|
if (!is_numeric($value)) {
|
|
|
|
echo "<br/>t0 is $t0";
|
|
|
|
echo "<br/>grade is $value";
|
2007-07-18 19:56:07 +00:00
|
|
|
$status = false;
|
2007-06-12 09:12:07 +00:00
|
|
|
import_cleanup($importcode);
|
|
|
|
notify(get_string('badgrade', 'grades'));
|
|
|
|
break 3;
|
|
|
|
}
|
2007-07-18 19:56:07 +00:00
|
|
|
|
|
|
|
// case of an id, only maps id of a grade_item
|
2007-07-13 08:06:30 +00:00
|
|
|
// this was idnumber
|
2007-06-06 08:51:58 +00:00
|
|
|
include_once($CFG->libdir.'/grade/grade_item.php');
|
2007-07-13 08:06:30 +00:00
|
|
|
if (!$gradeitem = new grade_item(array('id'=>$map[$key]))) {
|
2007-06-12 09:12:07 +00:00
|
|
|
// supplied bad mapping, should not be possible since user
|
|
|
|
// had to pick mapping
|
|
|
|
$status = false;
|
|
|
|
import_cleanup($importcode);
|
|
|
|
notify(get_string('importfailed', 'grades'));
|
2007-07-17 03:32:10 +00:00
|
|
|
break 3;
|
|
|
|
}
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-07-17 03:32:10 +00:00
|
|
|
// check if grade item is locked if so, abort
|
|
|
|
if ($gradeitem->locked) {
|
|
|
|
$status = false;
|
|
|
|
import_cleanup($importcode);
|
|
|
|
notify(get_string('gradeitemlocked', 'grades'));
|
2007-07-18 19:56:07 +00:00
|
|
|
break 3;
|
2007-07-13 08:06:30 +00:00
|
|
|
}
|
|
|
|
|
2007-06-06 08:51:58 +00:00
|
|
|
unset($newgrade);
|
|
|
|
$newgrade -> itemid = $gradeitem->id;
|
2007-07-18 19:56:07 +00:00
|
|
|
$newgrade -> finalgrade = $value;
|
2007-06-06 08:51:58 +00:00
|
|
|
$newgrades[] = $newgrade;
|
2007-07-18 19:56:07 +00:00
|
|
|
} // otherwise, we ignore this column altogether
|
2007-06-11 09:00:17 +00:00
|
|
|
// because user has chosen to ignore them (e.g. institution, address etc)
|
2007-07-17 03:32:10 +00:00
|
|
|
break;
|
2007-05-18 08:49:00 +00:00
|
|
|
}
|
2007-05-14 09:24:09 +00:00
|
|
|
}
|
2007-07-13 08:06:30 +00:00
|
|
|
|
2007-06-12 09:12:07 +00:00
|
|
|
// no user mapping supplied at all, or user mapping failed
|
2007-06-08 09:01:19 +00:00
|
|
|
if (empty($studentid) || !is_numeric($studentid)) {
|
|
|
|
// user not found, abort whold import
|
2007-06-12 09:12:07 +00:00
|
|
|
$status = false;
|
2007-06-08 09:01:19 +00:00
|
|
|
import_cleanup($importcode);
|
2007-06-12 09:12:07 +00:00
|
|
|
notify('user mapping error, could not find user!');
|
2007-07-17 03:32:10 +00:00
|
|
|
break;
|
2007-06-08 09:01:19 +00:00
|
|
|
}
|
2007-07-13 08:06:30 +00:00
|
|
|
|
2007-06-06 08:51:58 +00:00
|
|
|
// insert results of this students into buffer
|
|
|
|
if (!empty($newgrades)) {
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-06-06 08:51:58 +00:00
|
|
|
foreach ($newgrades as $newgrade) {
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-07-17 03:32:10 +00:00
|
|
|
// check if grade_grades is locked and if so, abort
|
|
|
|
if ($grade_grades = new grade_grades(array('itemid'=>$newgrade->itemid, 'userid'=>$studentid))) {
|
|
|
|
if ($grade_grades->locked) {
|
|
|
|
// individual grade locked
|
|
|
|
$status = false;
|
|
|
|
import_cleanup($importcode);
|
|
|
|
notify(get_string('gradegradeslocked', 'grades'));
|
|
|
|
break 2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2007-06-06 08:51:58 +00:00
|
|
|
$newgrade->import_code = $importcode;
|
|
|
|
$newgrade->userid = $studentid;
|
2007-06-12 09:12:07 +00:00
|
|
|
if (!insert_record('grade_import_values', $newgrade)) {
|
|
|
|
// could not insert into temporary table
|
|
|
|
$status = false;
|
|
|
|
import_cleanup($importcode);
|
2007-07-17 03:32:10 +00:00
|
|
|
notify(get_string('importfailed', 'grades'));
|
|
|
|
break 2;
|
2007-06-12 09:12:07 +00:00
|
|
|
}
|
2007-06-06 08:51:58 +00:00
|
|
|
}
|
2007-05-17 08:55:29 +00:00
|
|
|
}
|
2007-07-13 08:06:30 +00:00
|
|
|
|
|
|
|
// updating/inserting all comments here
|
|
|
|
if (!empty($newfeedbacks)) {
|
|
|
|
foreach ($newfeedbacks as $newfeedback) {
|
2007-07-17 08:40:35 +00:00
|
|
|
if ($feedback = get_record('grade_import_values', 'import_code', $importcode, 'userid', $studentid, 'itemid', $newfeedback->itemid)) {
|
2007-07-13 08:06:30 +00:00
|
|
|
$newfeedback ->id = $feedback ->id;
|
|
|
|
update_record('grade_import_values', $newfeedback);
|
|
|
|
} else {
|
|
|
|
// the grade item for this is not updated
|
|
|
|
$newfeedback->import_code = $importcode;
|
|
|
|
$newfeedback->userid = $studentid;
|
2007-07-17 03:32:10 +00:00
|
|
|
insert_record('grade_import_values', $newfeedback);
|
2007-07-13 08:06:30 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2007-05-14 09:24:09 +00:00
|
|
|
}
|
2007-07-13 08:06:30 +00:00
|
|
|
|
2007-07-18 19:56:07 +00:00
|
|
|
/// at this stage if things are all ok, we commit the changes from temp table
|
2007-06-12 09:12:07 +00:00
|
|
|
if ($status) {
|
|
|
|
grade_import_commit($course->id, $importcode);
|
|
|
|
}
|
2007-05-18 08:49:00 +00:00
|
|
|
// temporary file can go now
|
|
|
|
unlink($filename);
|
|
|
|
} else {
|
2007-07-18 19:56:07 +00:00
|
|
|
error ('import file '.$filename.' not readable');
|
2007-05-17 08:55:29 +00:00
|
|
|
}
|
2007-05-18 08:49:00 +00:00
|
|
|
|
2007-06-11 09:00:17 +00:00
|
|
|
} else if ($formdata = $mform->get_data()) {
|
|
|
|
// else if file is just uploaded
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-05-17 08:55:29 +00:00
|
|
|
$filename = $mform->get_userfile_name();
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-05-17 08:55:29 +00:00
|
|
|
// Large files are likely to take their time and memory. Let PHP know
|
|
|
|
// that we'll take longer, and that the process should be recycled soon
|
|
|
|
// to free up memory.
|
|
|
|
@set_time_limit(0);
|
|
|
|
@raise_memory_limit("192M");
|
|
|
|
if (function_exists('apache_child_terminate')) {
|
|
|
|
@apache_child_terminate();
|
|
|
|
}
|
|
|
|
|
|
|
|
$text = my_file_get_contents($filename);
|
|
|
|
// trim utf-8 bom
|
2007-07-18 19:56:07 +00:00
|
|
|
$textlib = new textlib();
|
|
|
|
/// normalize line endings and do the encoding conversion
|
|
|
|
$text = $textlib->convert($text, $formdata->encoding);
|
2007-05-17 08:55:29 +00:00
|
|
|
$text = $textlib->trim_utf8_bom($text);
|
|
|
|
// Fix mac/dos newlines
|
|
|
|
$text = preg_replace('!\r\n?!',"\n",$text);
|
|
|
|
$fp = fopen($filename, "w");
|
|
|
|
fwrite($fp,$text);
|
|
|
|
fclose($fp);
|
|
|
|
|
2007-07-18 19:56:07 +00:00
|
|
|
$fp = fopen($filename, "r");
|
|
|
|
|
2007-05-17 08:55:29 +00:00
|
|
|
// --- get header (field names) ---
|
2007-07-04 02:16:41 +00:00
|
|
|
$header = split($csv_delimiter, clean_param(fgets($fp,1024), PARAM_RAW));
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-06-13 09:07:39 +00:00
|
|
|
// print some preview
|
|
|
|
$numlines = 0; // 0 preview lines displayed
|
|
|
|
|
|
|
|
print_heading(get_string('importpreview', 'grades'));
|
|
|
|
echo '<table>';
|
|
|
|
echo '<tr>';
|
|
|
|
foreach ($header as $h) {
|
2007-07-04 02:16:41 +00:00
|
|
|
$h = clean_param($h, PARAM_RAW);
|
2007-07-18 19:56:07 +00:00
|
|
|
echo '<th>'.$h.'</th>';
|
2007-06-13 09:07:39 +00:00
|
|
|
}
|
|
|
|
echo '</tr>';
|
|
|
|
while (!feof ($fp) && $numlines <= $formdata->previewrows) {
|
2007-07-18 19:56:07 +00:00
|
|
|
$lines = split($csv_delimiter, fgets($fp,1024));
|
2007-06-13 09:07:39 +00:00
|
|
|
echo '<tr>';
|
|
|
|
foreach ($lines as $line) {
|
2007-07-13 08:06:30 +00:00
|
|
|
echo '<td>'.$line.'</td>';;
|
2007-06-13 09:07:39 +00:00
|
|
|
}
|
|
|
|
$numlines ++;
|
|
|
|
echo '</tr>';
|
|
|
|
}
|
|
|
|
echo '</table>';
|
2007-07-18 19:56:07 +00:00
|
|
|
|
2007-07-13 08:06:30 +00:00
|
|
|
/// feeding gradeitems into the grade_import_mapping_form
|
|
|
|
include_once($CFG->libdir.'/grade/grade_item.php');
|
|
|
|
$gradeitems = array();
|
|
|
|
if ($id) {
|
|
|
|
if ($grade_items = grade_item::fetch_all(array('courseid'=>$id))) {
|
|
|
|
foreach ($grade_items as $grade_item) {
|
|
|
|
// skip course type and category type
|
|
|
|
if ($grade_item->itemtype == 'course' || $grade_item->itemtype == 'category') {
|
2007-07-18 19:56:07 +00:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2007-07-13 08:06:30 +00:00
|
|
|
// this was idnumber
|
2007-07-18 19:56:07 +00:00
|
|
|
$gradeitems[$grade_item->id] = $grade_item->itemname;
|
2007-07-13 08:06:30 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2007-06-11 09:00:17 +00:00
|
|
|
// display the mapping form with header info processed
|
2007-07-13 08:06:30 +00:00
|
|
|
$mform2 = new grade_import_mapping_form(qualified_me(), array('gradeitems'=>$gradeitems, 'header'=>$header, 'filename'=>$filename));
|
2007-05-24 08:57:36 +00:00
|
|
|
$mform2->display();
|
2007-05-14 09:24:09 +00:00
|
|
|
} else {
|
2007-06-11 09:00:17 +00:00
|
|
|
// display the standard upload file form
|
2007-05-14 09:24:09 +00:00
|
|
|
$mform->display();
|
|
|
|
}
|
2007-07-13 08:06:30 +00:00
|
|
|
|
2007-05-14 09:24:09 +00:00
|
|
|
print_footer();
|
|
|
|
?>
|