]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-11633, changing import to use $mform->getdata() instead of data_submitted()
authortoyomoyo <toyomoyo>
Mon, 8 Oct 2007 06:52:39 +0000 (06:52 +0000)
committertoyomoyo <toyomoyo>
Mon, 8 Oct 2007 06:52:39 +0000 (06:52 +0000)
grade/import/csv/index.php

index 90aae6b7c769a9d577bbdb2ced18870896039110..b798b1d5d0041d678a8413858be998447d8ada5f 100755 (executable)
@@ -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();