📄 index.php
字号:
} /* * 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 = (int)$t[1]; } else { $t1 = ''; } switch ($t0) { case 'userid': // if (!$user = get_record('user','id', addslashes($value))) { // user not found, abort whold import import_cleanup($importcode); notify("user mapping error, could not find user with id \"$value\""); $status = false; break 3; } $studentid = $value; break; case 'useridnumber': if (!$user = get_record('user', 'idnumber', addslashes($value))) { // user not found, abort whold import import_cleanup($importcode); notify("user mapping error, could not find user with idnumber \"$value\""); $status = false; break 3; } $studentid = $user->id; break; case 'useremail': if (!$user = get_record('user', 'email', addslashes($value))) { import_cleanup($importcode); notify("user mapping error, could not find user with email address \"$value\""); $status = false; break 3; } $studentid = $user->id; break; case 'username': if (!$user = get_record('user', 'username', addslashes($value))) { import_cleanup($importcode); notify("user mapping error, could not find user with username \"$value\""); $status = false; break 3; } $studentid = $user->id; break; case 'new': // first check if header is already in temp database if (empty($newgradeitems[$key])) { $newgradeitem = new object(); $newgradeitem->itemname = $header[$key]; $newgradeitem->importcode = $importcode; $newgradeitem->importer = $USER->id; // failed to insert into new grade item buffer if (!$newgradeitems[$key] = insert_record('grade_import_newitem', addslashes_recursive($newgradeitem))) { $status = false; import_cleanup($importcode); notify(get_string('importfailed', 'grades')); break 3; } // add this to grade_import_newitem table // add the new id to $newgradeitem[$key] } $newgrade = new object(); $newgrade->newgradeitem = $newgradeitems[$key]; $newgrade->finalgrade = $value; $newgrades[] = $newgrade; // if not, put it in // else, insert grade into the table break; case 'feedback': if ($t1) { // case of an id, only maps id of a grade_item // this was idnumber if (!$gradeitem = new grade_item(array('id'=>$t1, 'courseid'=>$course->id))) { // supplied bad mapping, should not be possible since user // had to pick mapping $status = false; import_cleanup($importcode); notify(get_string('importfailed', 'grades')); break 3; } // t1 is the id of the grade item $feedback = new object(); $feedback->itemid = $t1; $feedback->feedback = $value; $newfeedbacks[] = $feedback; } break; default: // existing grade items if (!empty($map[$key])) { // case of an id, only maps id of a grade_item // this was idnumber if (!$gradeitem = new grade_item(array('id'=>$map[$key], 'courseid'=>$course->id))) { // supplied bad mapping, should not be possible since user // had to pick mapping $status = false; import_cleanup($importcode); notify(get_string('importfailed', 'grades')); break 3; } // check if grade item is locked if so, abort if ($gradeitem->is_locked()) { $status = false; import_cleanup($importcode); notify(get_string('gradeitemlocked', 'grades')); break 3; } $newgrade = new object(); $newgrade->itemid = $gradeitem->id; if ($gradeitem->gradetype == GRADE_TYPE_SCALE and $verbosescales) { if ($value === '' or $value == '-') { $value = null; // no grade } else { $scale = $gradeitem->load_scale(); $scales = explode(',', $scale->scale); $scales = array_map('trim', $scales); //hack - trim whitespace around scale options array_unshift($scales, '-'); // scales start at key 1 $key = array_search($value, $scales); if ($key === false) { echo "<br/>t0 is $t0"; echo "<br/>grade is $value"; $status = false; import_cleanup($importcode); notify(get_string('badgrade', 'grades')); break 3; } $value = $key; } $newgrade->finalgrade = $value; } else { if ($value === '' or $value == '-') { $value = null; // no grade } else if (!is_numeric($value)) { // non numeric grade value supplied, possibly mapped wrong column echo "<br/>t0 is $t0"; echo "<br/>grade is $value"; $status = false; import_cleanup($importcode); notify(get_string('badgrade', 'grades')); break 3; } $newgrade->finalgrade = $value; } $newgrades[] = $newgrade; } // otherwise, we ignore this column altogether // because user has chosen to ignore them (e.g. institution, address etc) break; } } // no user mapping supplied at all, or user mapping failed if (empty($studentid) || !is_numeric($studentid)) { // user not found, abort whold import $status = false; import_cleanup($importcode); notify('user mapping error, could not find user!'); break; } // insert results of this students into buffer if ($status and !empty($newgrades)) { foreach ($newgrades as $newgrade) { // check if grade_grade is locked and if so, abort if (!empty($newgrade->itemid) and $grade_grade = new grade_grade(array('itemid'=>$newgrade->itemid, 'userid'=>$studentid))) { if ($grade_grade->is_locked()) { // individual grade locked $status = false; import_cleanup($importcode); notify(get_string('gradelocked', 'grades')); break 2; } } $newgrade->importcode = $importcode; $newgrade->userid = $studentid; $newgrade->importer = $USER->id; if (!insert_record('grade_import_values', addslashes_recursive($newgrade))) { // could not insert into temporary table $status = false; import_cleanup($importcode); notify(get_string('importfailed', 'grades')); break 2; } } } // updating/inserting all comments here if ($status and !empty($newfeedbacks)) { foreach ($newfeedbacks as $newfeedback) { $sql = "SELECT * FROM {$CFG->prefix}grade_import_values WHERE importcode=$importcode AND userid=$studentid AND itemid=$newfeedback->itemid AND importer={$USER->id}"; if ($feedback = get_record_sql($sql)) { $newfeedback->id = $feedback->id; update_record('grade_import_values', addslashes_recursive($newfeedback)); } else { // the grade item for this is not updated $newfeedback->importcode = $importcode; $newfeedback->userid = $studentid; $newfeedback->importer = $USER->id; insert_record('grade_import_values', addslashes_recursive($newfeedback)); } } } } /// at this stage if things are all ok, we commit the changes from temp table if ($status) { grade_import_commit($course->id, $importcode); } // temporary file can go now unlink($filename); } else { error ('import file '.$filename.' not readable'); }} else { // display the standard upload file form $mform->display();}print_footer();?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -