source: moodle/trunk/fuentes/grade/import/csv/index.php @ 1331

Last change on this file since 1331 was 1331, checked in by jrpelegrina, 3 years ago

Updated to moodle 3.0.3

File size: 5.0 KB
RevLine 
[136]1<?php
2
3// This file is part of Moodle - http://moodle.org/
4//
5// Moodle is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// Moodle is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17
18require_once("../../../config.php");
19require_once($CFG->libdir.'/gradelib.php');
20require_once($CFG->dirroot.'/grade/lib.php');
21require_once($CFG->dirroot. '/grade/import/grade_import_form.php');
22require_once($CFG->dirroot.'/grade/import/lib.php');
23require_once($CFG->libdir . '/csvlib.class.php');
24
25$id            = required_param('id', PARAM_INT); // Course id.
26$separator     = optional_param('separator', '', PARAM_ALPHA);
27$verbosescales = optional_param('verbosescales', 1, PARAM_BOOL);
28$iid           = optional_param('iid', null, PARAM_INT);
29$importcode    = optional_param('importcode', '', PARAM_FILE);
30$forceimport   = optional_param('forceimport', false, PARAM_BOOL);
31
32$url = new moodle_url('/grade/import/csv/index.php', array('id'=>$id));
33if ($separator !== '') {
34    $url->param('separator', $separator);
35}
36if ($verbosescales !== 1) {
37    $url->param('verbosescales', $verbosescales);
38}
39$PAGE->set_url($url);
40
41if (!$course = $DB->get_record('course', array('id'=>$id))) {
42    print_error('nocourseid');
43}
44
45require_login($course);
46$context = context_course::instance($id);
47require_capability('moodle/grade:import', $context);
48require_capability('gradeimport/csv:view', $context);
49
50$separatemode = (groups_get_course_groupmode($COURSE) == SEPARATEGROUPS and
51        !has_capability('moodle/site:accessallgroups', $context));
52$currentgroup = groups_get_course_group($course);
53
[1331]54print_grade_page_head($course->id, 'import', 'csv', get_string('importcsv', 'grades'), false, false, true,
55        'importcsv', 'grades');
[136]56
57$renderer = $PAGE->get_renderer('gradeimport_csv');
58
59// Get the grade items to be matched with the import mapping columns.
60$gradeitems = gradeimport_csv_load_data::fetch_grade_items($course->id);
61
62// If the csv file hasn't been imported yet then look for a form submission or
63// show the initial submission form.
64if (!$iid) {
65
66    // Set up the import form.
67    $mform = new grade_import_form(null, array('includeseparator' => true, 'verbosescales' => $verbosescales, 'acceptedtypes' =>
68            array('.csv', '.txt')));
69
70    // If the import form has been submitted.
71    if ($formdata = $mform->get_data()) {
72        $text = $mform->get_file_content('userfile');
73        $csvimport = new gradeimport_csv_load_data();
74        $csvimport->load_csv_content($text, $formdata->encoding, $separator, $formdata->previewrows);
75        $csvimporterror = $csvimport->get_error();
76        if (!empty($csvimporterror)) {
77            echo $renderer->errors(array($csvimport->get_error()));
78            echo $OUTPUT->footer();
79            die();
80        }
81        $iid = $csvimport->get_iid();
82        echo $renderer->import_preview_page($csvimport->get_headers(), $csvimport->get_previewdata());
83    } else {
84        // Display the standard upload file form.
85        echo $renderer->standard_upload_file_form($course, $mform);
86        echo $OUTPUT->footer();
87        die();
88    }
89}
90
91// Data has already been submitted so we can use the $iid to retrieve it.
92$csvimport = new csv_import_reader($iid, 'grade');
93$header = $csvimport->get_columns();
94// Get a new import code for updating to the grade book.
95if (empty($importcode)) {
96    $importcode = get_new_importcode();
97}
98
99$mappingformdata = array(
100    'gradeitems' => $gradeitems,
101    'header' => $header,
102    'iid' => $iid,
103    'id' => $id,
104    'importcode' => $importcode,
105    'forceimport' => $forceimport,
106    'verbosescales' => $verbosescales
107);
108// we create a form to handle mapping data from the file to the database.
109$mform2 = new grade_import_mapping_form(null, $mappingformdata);
110
111// Here, if we have data, we process the fields and enter the information into the database.
112if ($formdata = $mform2->get_data()) {
113    $gradeimport = new gradeimport_csv_load_data();
114    $status = $gradeimport->prepare_import_grade_data($header, $formdata, $csvimport, $course->id, $separatemode,
115            $currentgroup, $verbosescales);
116
117    // At this stage if things are all ok, we commit the changes from temp table.
118    if ($status) {
119        grade_import_commit($course->id, $importcode);
120    } else {
121        $errors = $gradeimport->get_gradebookerrors();
122        $errors[] = get_string('importfailed', 'grades');
123        echo $renderer->errors($errors);
124    }
125    echo $OUTPUT->footer();
126} else {
127    // If data hasn't been submitted then display the data mapping form.
128    $mform2->display();
129    echo $OUTPUT->footer();
130}
Note: See TracBrowser for help on using the repository browser.