MDL-11633, changing import to use $mform->getdata() instead of data_submitted()

This commit is contained in:
toyomoyo
2007-10-08 06:52:39 +00:00
parent 68a5a1244d
commit f0b9c95bf7
+95 -82
View File
@@ -16,7 +16,6 @@ $context = get_context_instance(CONTEXT_COURSE, $id);
require_capability('moodle/grade:import', $context);
require_capability('gradeimport/csv:view', $context);
// sort out delimiter
$csv_encode = '/\&\#44/';
if (isset($CFG->CSV_DELIMITER)) {
@@ -37,12 +36,102 @@ $navigation = grade_build_nav(__FILE__, $actionstr, array('courseid' => $course-
print_header($course->shortname.': '.get_string('grades'), $course->fullname, $navigation);
print_grade_plugin_selector($id, 'import', 'csv');
// set up import form
$mform = new grade_import_form();
//$mform2 = new grade_import_mapping_form();
//if ($formdata = $mform2->get_data() ) {
// i am not able to get the mapping[] and map[] array using the following line
// they are somehow not returned with get_data()
if (($formdata = data_submitted()) && !empty($formdata->map)) {
// set up grade import mapping form
$header = '';
$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') {
continue;
}
// this was idnumber
$gradeitems[$grade_item->id] = $grade_item->get_name();
}
}
}
if ($importcode = optional_param('importcode', '', PARAM_FILE)) {
$filename = $CFG->dataroot.'/temp/gradeimport/cvs/'.$USER->id.'/'.$importcode;
$fp = fopen($filename, "r");
$header = split($csv_delimiter, fgets($fp,1024), PARAM_RAW);
}
$mform2 = new grade_import_mapping_form(null, array('gradeitems'=>$gradeitems, 'header'=>$header));
// if import form is submitted
if ($formdata = $mform->get_data()) {
// 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();
}
// use current (non-conflicting) time stamp
$importcode = get_new_importcode();
if (!$filename = make_upload_directory('temp/gradeimport/cvs/'.$USER->id, true)) {
die;
}
$filename = $filename.'/'.$importcode;
$text = $mform->get_file_content('userfile');
// trim utf-8 bom
$textlib = textlib_get_instance();
/// normalize line endings and do the encoding conversion
$text = $textlib->convert($text, $formdata->encoding);
$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);
$fp = fopen($filename, "r");
// --- get header (field names) ---
$header = split($csv_delimiter, fgets($fp,1024), PARAM_RAW);
// print some preview
$numlines = 0; // 0 preview lines displayed
print_heading(get_string('importpreview', 'grades'));
echo '<table>';
echo '<tr>';
foreach ($header as $h) {
$h = clean_param($h, PARAM_RAW);
echo '<th>'.$h.'</th>';
}
echo '</tr>';
while (!feof ($fp) && $numlines <= $formdata->previewrows) {
$lines = split($csv_delimiter, fgets($fp,1024));
echo '<tr>';
foreach ($lines as $line) {
echo '<td>'.$line.'</td>';;
}
$numlines ++;
echo '</tr>';
}
echo '</table>';
// display the mapping form with header info processed
$mform2 = new grade_import_mapping_form(null, array('gradeitems'=>$gradeitems, 'header'=>$header));
$mform2->set_data(array('importcode'=>$importcode, 'id'=>$id));
$mform2->display();
//} else if (($formdata = data_submitted()) && !empty($formdata->map)) {
// else if grade import mapping form is submitted
} else if ($formdata = $mform2->get_data()) {
$importcode = clean_param($formdata->importcode, PARAM_FILE);
$filename = $CFG->dataroot.'/temp/gradeimport/cvs/'.$USER->id.'/'.$importcode;
@@ -337,82 +426,6 @@ if (($formdata = data_submitted()) && !empty($formdata->map)) {
error ('import file '.$filename.' not readable');
}
} else if ($formdata = $mform->get_data()) {
// 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();
}
// use current (non-conflicting) time stamp
$importcode = get_new_importcode();
if (!$filename = make_upload_directory('temp/gradeimport/cvs/'.$USER->id, true)) {
die;
}
$filename = $filename.'/'.$importcode;
$text = $mform->get_file_content('userfile');
// trim utf-8 bom
$textlib = textlib_get_instance();
/// normalize line endings and do the encoding conversion
$text = $textlib->convert($text, $formdata->encoding);
$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);
$fp = fopen($filename, "r");
// --- get header (field names) ---
$header = split($csv_delimiter, fgets($fp,1024), PARAM_RAW);
// print some preview
$numlines = 0; // 0 preview lines displayed
print_heading(get_string('importpreview', 'grades'));
echo '<table>';
echo '<tr>';
foreach ($header as $h) {
$h = clean_param($h, PARAM_RAW);
echo '<th>'.$h.'</th>';
}
echo '</tr>';
while (!feof ($fp) && $numlines <= $formdata->previewrows) {
$lines = split($csv_delimiter, fgets($fp,1024));
echo '<tr>';
foreach ($lines as $line) {
echo '<td>'.$line.'</td>';;
}
$numlines ++;
echo '</tr>';
}
echo '</table>';
/// feeding gradeitems into the grade_import_mapping_form
$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') {
continue;
}
// this was idnumber
$gradeitems[$grade_item->id] = $grade_item->get_name();
}
}
}
// display the mapping form with header info processed
$mform2 = new grade_import_mapping_form(null, array('gradeitems'=>$gradeitems, 'header'=>$header));
$mform2->set_data(array('importcode'=>$importcode, 'id'=>$id));
$mform2->display();
} else {
// display the standard upload file form
$mform->display();