mirror of
https://github.com/moodle/moodle.git
synced 2025-08-07 01:46:45 +02:00
Merge branch 'MDL-29572_master' of https://github.com/jrchamp/moodle
This commit is contained in:
commit
1b9a1e8128
3 changed files with 59 additions and 38 deletions
|
@ -187,6 +187,25 @@ if ($formdata = $mform2->get_data()) {
|
|||
core_php_time_limit::raise();
|
||||
raise_memory_limit(MEMORY_EXTRA);
|
||||
|
||||
$userfields = array(
|
||||
'userid' => array(
|
||||
'field' => 'id',
|
||||
'label' => 'id',
|
||||
),
|
||||
'useridnumber' => array(
|
||||
'field' => 'idnumber',
|
||||
'label' => 'idnumber',
|
||||
),
|
||||
'useremail' => array(
|
||||
'field' => 'email',
|
||||
'label' => 'email address',
|
||||
),
|
||||
'username' => array(
|
||||
'field' => 'username',
|
||||
'label' => 'username',
|
||||
),
|
||||
);
|
||||
|
||||
$csvimport->init();
|
||||
|
||||
$newgradeitems = array(); // temporary array to keep track of what new headers are processed
|
||||
|
@ -225,39 +244,23 @@ if ($formdata = $mform2->get_data()) {
|
|||
}
|
||||
|
||||
switch ($t0) {
|
||||
case 'userid': //
|
||||
if (!$user = $DB->get_record('user', array('id' => $value))) {
|
||||
// user not found, abort whole import
|
||||
import_cleanup($importcode);
|
||||
echo $OUTPUT->notification("user mapping error, could not find user with id \"$value\"");
|
||||
$status = false;
|
||||
break 3;
|
||||
}
|
||||
$studentid = $value;
|
||||
break;
|
||||
case 'userid':
|
||||
case 'useridnumber':
|
||||
if (empty($value) || !$user = $DB->get_record('user', array('idnumber' => $value))) {
|
||||
// user not found, abort whole import
|
||||
import_cleanup($importcode);
|
||||
echo $OUTPUT->notification("user mapping error, could not find user with idnumber \"$value\"");
|
||||
$status = false;
|
||||
break 3;
|
||||
}
|
||||
$studentid = $user->id;
|
||||
break;
|
||||
case 'useremail':
|
||||
if (!$user = $DB->get_record('user', array('email' => $value))) {
|
||||
import_cleanup($importcode);
|
||||
echo $OUTPUT->notification("user mapping error, could not find user with email address \"$value\"");
|
||||
$status = false;
|
||||
break 3;
|
||||
}
|
||||
$studentid = $user->id;
|
||||
break;
|
||||
case 'username':
|
||||
if (!$user = $DB->get_record('user', array('username' => $value))) {
|
||||
// Skip invalid row with blank user field.
|
||||
if (empty($value)) {
|
||||
continue 3;
|
||||
}
|
||||
|
||||
if (!$user = $DB->get_record('user', array($userfields[$t0]['field'] => $value))) {
|
||||
// User not found, abort whole import.
|
||||
import_cleanup($importcode);
|
||||
echo $OUTPUT->notification("user mapping error, could not find user with username \"$value\"");
|
||||
$usermappingerrorobj = new stdClass();
|
||||
$usermappingerrorobj->field = $userfields[$t0]['label'];
|
||||
$usermappingerrorobj->value = $value;
|
||||
echo $OUTPUT->notification(get_string('usermappingerror', 'grades', $usermappingerrorobj));
|
||||
unset($usermappingerrorobj);
|
||||
$status = false;
|
||||
break 3;
|
||||
}
|
||||
|
@ -383,7 +386,7 @@ if ($formdata = $mform2->get_data()) {
|
|||
// user not found, abort whole import
|
||||
$status = false;
|
||||
import_cleanup($importcode);
|
||||
echo $OUTPUT->notification('user mapping error, could not find user!');
|
||||
echo $OUTPUT->notification(get_string('usermappingerrorusernotfound', 'grades'));
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -391,7 +394,7 @@ if ($formdata = $mform2->get_data()) {
|
|||
// not allowed to import into this group, abort
|
||||
$status = false;
|
||||
import_cleanup($importcode);
|
||||
echo $OUTPUT->notification('user not member of current group, can not update!');
|
||||
echo $OUTPUT->notification(get_string('usermappingerrorcurrentgroup', 'grades'));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -45,6 +45,8 @@ function get_new_importcode() {
|
|||
function grade_import_commit($courseid, $importcode, $importfeedback=true, $verbose=true) {
|
||||
global $CFG, $USER, $DB, $OUTPUT;
|
||||
|
||||
$failed = false;
|
||||
$executionerrors = false;
|
||||
$commitstart = time(); // start time in case we need to roll back
|
||||
$newitemids = array(); // array to hold new grade_item ids from grade_import_newitem table, mapping array
|
||||
|
||||
|
@ -57,11 +59,11 @@ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verb
|
|||
// instances of the new grade_items created, cached
|
||||
// in case grade_update fails, so that we can remove them
|
||||
$instances = array();
|
||||
$failed = false;
|
||||
foreach ($newitems as $newitem) {
|
||||
// get all grades with this item
|
||||
|
||||
if ($grades = $DB->get_records('grade_import_values', array('newgradeitem' => $newitem->id))) {
|
||||
$gradeimportparams = array('newgradeitem' => $newitem->id, 'importcode' => $importcode, 'importer' => $USER->id);
|
||||
if ($grades = $DB->get_records('grade_import_values', $gradeimportparams)) {
|
||||
/// create a new grade item for this - must use false as second param!
|
||||
/// TODO: we need some bounds here too
|
||||
$gradeitem = new grade_item(array('courseid'=>$courseid, 'itemtype'=>'manual', 'itemname'=>$newitem->itemname), false);
|
||||
|
@ -104,7 +106,8 @@ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verb
|
|||
return false;
|
||||
}
|
||||
// get all grades with this item
|
||||
if ($grades = $DB->get_records('grade_import_values', array('itemid' => $itemid))) {
|
||||
$gradeimportparams = array('itemid' => $itemid, 'importcode' => $importcode, 'importer' => $USER->id);
|
||||
if ($grades = $DB->get_records('grade_import_values', $gradeimportparams)) {
|
||||
|
||||
// make the grades array for update_grade
|
||||
foreach ($grades as $grade) {
|
||||
|
@ -112,7 +115,11 @@ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verb
|
|||
$grade->feedback = false; // ignore it
|
||||
}
|
||||
if (!$gradeitem->update_final_grade($grade->userid, $grade->finalgrade, 'import', $grade->feedback)) {
|
||||
$failed = 1;
|
||||
$errordata = new stdClass();
|
||||
$errordata->itemname = $gradeitem->itemname;
|
||||
$errordata->userid = $grade->userid;
|
||||
$executionerrors[] = get_string('errorsettinggrade', 'grades', $errordata);
|
||||
$failed = true;
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
|
@ -120,11 +127,17 @@ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verb
|
|||
$modifieditems[] = $itemid;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($failed)) {
|
||||
import_cleanup($importcode);
|
||||
return false;
|
||||
if ($failed) {
|
||||
if ($executionerrors && $verbose) {
|
||||
echo $OUTPUT->notification(get_string('gradeimportfailed', 'grades'));
|
||||
foreach ($executionerrors as $errorstr) {
|
||||
echo $OUTPUT->notification($errorstr);
|
||||
}
|
||||
}
|
||||
import_cleanup($importcode);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue