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

Last change on this file since 136 was 136, checked in by mabarracus, 3 years ago

Ported code to xenial

File size: 4.9 KB
Line 
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
54print_grade_page_head($course->id, 'import', 'csv', get_string('importcsv', 'grades'));
55
56$renderer = $PAGE->get_renderer('gradeimport_csv');
57
58// Get the grade items to be matched with the import mapping columns.
59$gradeitems = gradeimport_csv_load_data::fetch_grade_items($course->id);
60
61// If the csv file hasn't been imported yet then look for a form submission or
62// show the initial submission form.
63if (!$iid) {
64
65    // Set up the import form.
66    $mform = new grade_import_form(null, array('includeseparator' => true, 'verbosescales' => $verbosescales, 'acceptedtypes' =>
67            array('.csv', '.txt')));
68
69    // If the import form has been submitted.
70    if ($formdata = $mform->get_data()) {
71        $text = $mform->get_file_content('userfile');
72        $csvimport = new gradeimport_csv_load_data();
73        $csvimport->load_csv_content($text, $formdata->encoding, $separator, $formdata->previewrows);
74        $csvimporterror = $csvimport->get_error();
75        if (!empty($csvimporterror)) {
76            echo $renderer->errors(array($csvimport->get_error()));
77            echo $OUTPUT->footer();
78            die();
79        }
80        $iid = $csvimport->get_iid();
81        echo $renderer->import_preview_page($csvimport->get_headers(), $csvimport->get_previewdata());
82    } else {
83        // Display the standard upload file form.
84        echo $renderer->standard_upload_file_form($course, $mform);
85        echo $OUTPUT->footer();
86        die();
87    }
88}
89
90// Data has already been submitted so we can use the $iid to retrieve it.
91$csvimport = new csv_import_reader($iid, 'grade');
92$header = $csvimport->get_columns();
93// Get a new import code for updating to the grade book.
94if (empty($importcode)) {
95    $importcode = get_new_importcode();
96}
97
98$mappingformdata = array(
99    'gradeitems' => $gradeitems,
100    'header' => $header,
101    'iid' => $iid,
102    'id' => $id,
103    'importcode' => $importcode,
104    'forceimport' => $forceimport,
105    'verbosescales' => $verbosescales
106);
107// we create a form to handle mapping data from the file to the database.
108$mform2 = new grade_import_mapping_form(null, $mappingformdata);
109
110// Here, if we have data, we process the fields and enter the information into the database.
111if ($formdata = $mform2->get_data()) {
112    $gradeimport = new gradeimport_csv_load_data();
113    $status = $gradeimport->prepare_import_grade_data($header, $formdata, $csvimport, $course->id, $separatemode,
114            $currentgroup, $verbosescales);
115
116    // At this stage if things are all ok, we commit the changes from temp table.
117    if ($status) {
118        grade_import_commit($course->id, $importcode);
119    } else {
120        $errors = $gradeimport->get_gradebookerrors();
121        $errors[] = get_string('importfailed', 'grades');
122        echo $renderer->errors($errors);
123    }
124    echo $OUTPUT->footer();
125} else {
126    // If data hasn't been submitted then display the data mapping form.
127    $mform2->display();
128    echo $OUTPUT->footer();
129}
Note: See TracBrowser for help on using the repository browser.