AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle 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 3 of the License, or// (at your option) any later version.//// Moodle 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.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** Exports selected outcomes in CSV format** @package core_grades* @copyright 2008 Moodle Pty Ltd (http://moodle.com)* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/require_once '../../../config.php';require_once $CFG->dirroot.'/grade/lib.php';require_once $CFG->libdir.'/gradelib.php';$courseid = optional_param('id', 0, PARAM_INT);$action = optional_param('action', '', PARAM_ALPHA);/// Make sure they can even access this courseif ($courseid) {if (!$course = $DB->get_record('course', array('id' => $courseid))) {throw new \moodle_exception('invalidcourseid');}require_login($course);$context = context_course::instance($course->id);require_capability('moodle/grade:manage', $context);if (empty($CFG->enableoutcomes)) {redirect('../../index.php?id='.$courseid);}} else {require_once $CFG->libdir.'/adminlib.php';admin_externalpage_setup('outcomes');}require_sesskey();header("Content-Type: text/csv; charset=utf-8");// TODO: make the filename more useful, include a date, a specific name, something...header('Content-Disposition: attachment; filename=outcomes.csv');// sending header with clear names, to make 'what is what' as easy as possible to understand$header = array('outcome_name', 'outcome_shortname', 'outcome_description', 'scale_name', 'scale_items', 'scale_description');echo format_csv($header, ';', '"');$outcomes = array();if ( $courseid ) {$outcomes = array_merge(grade_outcome::fetch_all_global(), grade_outcome::fetch_all_local($courseid));} else {$outcomes = grade_outcome::fetch_all_global();}foreach($outcomes as $outcome) {$line = array();$line[] = $outcome->get_name();$line[] = $outcome->get_shortname();$line[] = $outcome->get_description();$scale = $outcome->load_scale();$line[] = $scale->get_name();$line[] = $scale->compact_items();$line[] = $scale->get_description();echo format_csv($line, ';', '"');}/*** Formats and returns a line of data, in CSV format. This code* is from http://au2.php.net/manual/en/function.fputcsv.php#77866** @param string[] $fields data to be exported* @param string $delimiter char to be used to separate fields* @param string $enclosure char used to enclose strings that contains newlines, spaces, tabs or the delimiter char itself* @returns string one line of csv data*/function format_csv($fields = array(), $delimiter = ';', $enclosure = '"') {$str = '';$escape_char = '\\';foreach ($fields as $value) {if (strpos($value, $delimiter) !== false ||strpos($value, $enclosure) !== false ||strpos($value, "\n") !== false ||strpos($value, "\r") !== false ||strpos($value, "\t") !== false ||strpos($value, ' ') !== false) {$str2 = $enclosure;$escaped = 0;$len = strlen($value);for ($i=0;$i<$len;$i++) {if ($value[$i] == $escape_char) {$escaped = 1;} else if (!$escaped && $value[$i] == $enclosure) {$str2 .= $enclosure;} else {$escaped = 0;}$str2 .= $value[$i];}$str2 .= $enclosure;$str .= $str2.$delimiter;} else {$str .= $value.$delimiter;}}$str = substr($str,0,-1);$str .= "\n";return $str;}