From f0b9c95bf7a98a9c4d123abc6a82328f4ee5cde3 Mon Sep 17 00:00:00 2001 From: toyomoyo Date: Mon, 8 Oct 2007 06:52:39 +0000 Subject: [PATCH] MDL-11633, changing import to use $mform->getdata() instead of data_submitted() --- grade/import/csv/index.php | 177 ++++++++++++++++++++----------------- 1 file changed, 95 insertions(+), 82 deletions(-) diff --git a/grade/import/csv/index.php b/grade/import/csv/index.php index 90aae6b7c7..b798b1d5d0 100755 --- a/grade/import/csv/index.php +++ b/grade/import/csv/index.php @@ -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 ''; + echo ''; + foreach ($header as $h) { + $h = clean_param($h, PARAM_RAW); + echo ''; + } + echo ''; + while (!feof ($fp) && $numlines <= $formdata->previewrows) { + $lines = split($csv_delimiter, fgets($fp,1024)); + echo ''; + foreach ($lines as $line) { + echo '';; + } + $numlines ++; + echo ''; + } + echo '
'.$h.'
'.$line.'
'; + + // 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 ''; - echo ''; - foreach ($header as $h) { - $h = clean_param($h, PARAM_RAW); - echo ''; - } - echo ''; - while (!feof ($fp) && $numlines <= $formdata->previewrows) { - $lines = split($csv_delimiter, fgets($fp,1024)); - echo ''; - foreach ($lines as $line) { - echo '';; - } - $numlines ++; - echo ''; - } - echo '
'.$h.'
'.$line.'
'; - - /// 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(); -- 2.39.5