⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 index.php

📁 很棒的在线教学系统
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php  //$Id: index.php,v 1.31.2.7 2009/02/17 07:33:37 nicolasconnault Exp $/////////////////////////////////////////////////////////////////////////////                                                                       //// NOTICE OF COPYRIGHT                                                   ////                                                                       //// Moodle - Modular Object-Oriented Dynamic Learning Environment         ////          http://moodle.com                                            ////                                                                       //// Copyright (C) 1999 onwards  Martin Dougiamas  http://moodle.com       ////                                                                       //// This program is free software; you can redistribute it and/or modify  //// it under the terms of the GNU General Public License as published by  //// the Free Software Foundation; either version 2 of the License, or     //// (at your option) any later version.                                   ////                                                                       //// This program is distributed in the hope that it will be useful,       //// but WITHOUT ANY WARRANTY; without even the implied warranty of        //// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         //// GNU General Public License for more details:                          ////                                                                       ////          http://www.gnu.org/copyleft/gpl.html                         ////                                                                       /////////////////////////////////////////////////////////////////////////////require_once '../../../config.php';require_once $CFG->libdir.'/gradelib.php';require_once $CFG->dirroot.'/grade/lib.php';require_once '../grade_import_form.php';require_once '../lib.php';$id            = required_param('id', PARAM_INT); // course id$separator     = optional_param('separator', '', PARAM_ALPHA);$verbosescales = optional_param('verbosescales', 1, PARAM_BOOL);define('GRADE_CSV_LINE_LENGTH', 4096);if (!$course = get_record('course', 'id', $id)) {    print_error('nocourseid');}require_login($course);$context = get_context_instance(CONTEXT_COURSE, $id);require_capability('moodle/grade:import', $context);require_capability('gradeimport/csv:view', $context);// sort out delimiterif (isset($CFG->CSV_DELIMITER)) {    $csv_delimiter = '\\' . $CFG->CSV_DELIMITER;    $csv_delimiter2 = $CFG->CSV_DELIMITER;    if (isset($CFG->CSV_ENCODE)) {        $csv_encode = '/\&\#' . $CFG->CSV_ENCODE . '/';    }} else if ($separator == 'tab') {    $csv_delimiter = "\t";    $csv_delimiter2 = "";    $csv_encode = "";} else {    $csv_delimiter = "\,";    $csv_delimiter2 = ",";    $csv_encode = '/\&\#44/';}$strgrades = get_string('grades', 'grades');$actionstr = get_string('csv', 'grades');$navigation = grade_build_nav(__FILE__, $actionstr, array('courseid' => $course->id));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(null, array('includeseparator'=>!isset($CFG->CSV_DELIMITER), 'verbosescales'=>true));// 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,GRADE_CSV_LINE_LENGTH), PARAM_RAW);}$mform2 = new grade_import_mapping_form(null, array('gradeitems'=>$gradeitems, 'header'=>$header));// if import form is submittedif ($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,GRADE_CSV_LINE_LENGTH), 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,GRADE_CSV_LINE_LENGTH));        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, 'verbosescales'=>$verbosescales, 'separator'=>$separator));    $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;    if (!file_exists($filename)) {        error('error processing upload file');    }    if ($fp = fopen($filename, "r")) {        // --- get header (field names) ---        $header = split($csv_delimiter, clean_param(fgets($fp,GRADE_CSV_LINE_LENGTH), PARAM_RAW));        foreach ($header as $i => $h) {            $h = trim($h); $header[$i] = $h; // remove whitespace        }    } else {        error ('could not open file');    }    $map = array();    // loops mapping_0, mapping_1 .. mapping_n and construct $map array    foreach ($header as $i => $head) {        $map[$i] = $formdata->{'mapping_'.$i};    }    // if mapping informatioin is supplied    $map[clean_param($formdata->mapfrom, PARAM_RAW)] = clean_param($formdata->mapto, PARAM_RAW);    // check for mapto collisions    $maperrors = array();    foreach ($map as $i=>$j) {        if ($j == 0) {            // you can have multiple ignores            continue;        } else {            if (!isset($maperrors[$j])) {                $maperrors[$j] = true;            } else {                // collision                unlink($filename); // needs to be uploaded again, sorry                error('mapping collision detected, 2 fields maps to the same grade item '.$j);            }        }    }    // 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();    }    // we only operate if file is readable    if ($fp = fopen($filename, "r")) {        // read the first line makes sure this doesn't get read again        $header = split($csv_delimiter, fgets($fp,GRADE_CSV_LINE_LENGTH));        $newgradeitems = array(); // temporary array to keep track of what new headers are processed        $status = true;        while (!feof ($fp)) {            // add something            $line = split($csv_delimiter, fgets($fp,GRADE_CSV_LINE_LENGTH));            if(count($line) <= 1){                // there is no data on this line, move on                continue;            }            // array to hold all grades to be inserted            $newgrades = array();            // array to hold all feedback            $newfeedbacks = array();            // each line is a student record            foreach ($line as $key => $value) {                //decode encoded commas                $value = clean_param($value, PARAM_RAW);                $value = trim($value);                if ($csv_encode != $csv_delimiter2) {                    $value = preg_replace($csv_encode, $csv_delimiter2, $value);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -