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 18 require_once($CFG->dirroot.'/grade/export/lib.php'); 19 20 class grade_export_ods extends grade_export { 21 22 public $plugin = 'ods'; 23 24 /** 25 * Constructor should set up all the private variables ready to be pulled 26 * @param object $course 27 * @param int $groupid id of selected group, 0 means all 28 * @param stdClass $formdata The validated data from the grade export form. 29 */ 30 public function __construct($course, $groupid, $formdata) { 31 parent::__construct($course, $groupid, $formdata); 32 33 // Overrides. 34 $this->usercustomfields = true; 35 } 36 37 /** 38 * To be implemented by child classes 39 */ 40 function print_grades() { 41 global $CFG; 42 require_once($CFG->dirroot.'/lib/odslib.class.php'); 43 44 $export_tracking = $this->track_exports(); 45 46 $strgrades = get_string('grades'); 47 48 $shortname = format_string($this->course->shortname, true, array('context' => context_course::instance($this->course->id))); 49 50 // Calculate file name 51 $downloadfilename = clean_filename("$shortname $strgrades.ods"); 52 // Creating a workbook 53 $workbook = new MoodleODSWorkbook("-"); 54 // Sending HTTP headers 55 $workbook->send($downloadfilename); 56 // Adding the worksheet 57 $myxls = $workbook->add_worksheet($strgrades); 58 59 60 // Print names of all the fields. 61 $profilefields = grade_helper::get_user_profile_fields($this->course->id, $this->usercustomfields); 62 foreach ($profilefields as $id => $field) { 63 $myxls->write_string(0, $id, $field->fullname); 64 } 65 $pos = count($profilefields); 66 if (!$this->onlyactive) { 67 $myxls->write_string(0, $pos++, get_string("suspended")); 68 } 69 foreach ($this->columns as $grade_item) { 70 foreach ($this->displaytype as $gradedisplayname => $gradedisplayconst) { 71 $myxls->write_string(0, $pos++, $this->format_column_name($grade_item, false, $gradedisplayname)); 72 } 73 74 // Add a column_feedback column. 75 if ($this->export_feedback) { 76 $myxls->write_string(0, $pos++, $this->format_column_name($grade_item, true)); 77 } 78 } 79 // Last downloaded column header. 80 $myxls->write_string(0, $pos++, get_string('timeexported', 'gradeexport_ods')); 81 82 // Print all the lines of data. 83 $i = 0; 84 $geub = new grade_export_update_buffer(); 85 $gui = new graded_users_iterator($this->course, $this->columns, $this->groupid); 86 $gui->require_active_enrolment($this->onlyactive); 87 $gui->allow_user_custom_fields($this->usercustomfields); 88 $gui->init(); 89 while ($userdata = $gui->next_user()) { 90 $i++; 91 $user = $userdata->user; 92 93 foreach($profilefields as $id => $field) { 94 $fieldvalue = grade_helper::get_user_field_value($user, $field); 95 $myxls->write_string($i, $id, $fieldvalue); 96 } 97 $j = count($profilefields); 98 99 if (!$this->onlyactive) { 100 $issuspended = ($user->suspendedenrolment) ? get_string('yes') : ''; 101 $myxls->write_string($i, $j++, $issuspended); 102 } 103 foreach ($userdata->grades as $itemid => $grade) { 104 if ($export_tracking) { 105 $status = $geub->track($grade); 106 } 107 108 foreach ($this->displaytype as $gradedisplayconst) { 109 $gradestr = $this->format_grade($grade, $gradedisplayconst); 110 if (is_numeric($gradestr)) { 111 $myxls->write_number($i, $j++, $gradestr); 112 } else { 113 $myxls->write_string($i, $j++, $gradestr); 114 } 115 } 116 117 // writing feedback if requested 118 if ($this->export_feedback) { 119 $myxls->write_string($i, $j++, $this->format_feedback($userdata->feedbacks[$itemid], $grade)); 120 } 121 } 122 // Time exported. 123 $myxls->write_string($i, $j++, time()); 124 } 125 $gui->close(); 126 $geub->close(); 127 128 // Close the workbook. 129 $workbook->close(); 130 131 exit; 132 } 133 } 134 135
title
Description
Body
title
Description
Body
title
Description
Body
title
Body