1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 require_once("{$CFG->dirroot}/mod/assign/tests/generator/assignsubmission_subplugin_generator.php"); 18 19 /** 20 * Online Text assignment submission subplugin data generator. 21 * 22 * @package assignsubmission_file 23 * @category test 24 * @copyright 2021 Andrew Lyons <andrew@nicols.co.uk> 25 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 26 */ 27 class assignsubmission_file_generator extends assignsubmission_subplugin_generator { 28 /** 29 * Add submission data in the correct format for a call to `assign::save_submission()` from a table containing 30 * submission data for a single activity. 31 * 32 * Data should be added to the $submission object passed into the function. 33 * 34 * @param stdClass $submission The submission record to be modified 35 * @param assign $assign The assignment being submitted to 36 * @param array $data The data received 37 */ 38 public function add_submission_data(stdClass $submission, assign $assign, array $data): void { 39 global $CFG; 40 41 if (array_key_exists('file', $data)) { 42 $files = explode(',', $data['file']); 43 $itemid = file_get_unused_draft_itemid(); 44 45 $fs = get_file_storage(); 46 47 foreach ($files as $filepath) { 48 // All paths are relative to $CFG->dirroot. 49 $filepath = trim($filepath); 50 $filepath = "{$CFG->dirroot}/{$filepath}"; 51 $filename = basename($filepath); 52 53 $fs->create_file_from_pathname((object) [ 54 'itemid' => $itemid, 55 'contextid' => context_user::instance($submission->userid)->id, 56 'component' => 'user', 57 'filearea' => 'draft', 58 'filepath' => '/', 59 'filename' => $filename, 60 ], $filepath); 61 } 62 $submission->files_filemanager = $itemid; 63 64 $submission->file_editor = [ 65 'itemid' => $itemid, 66 ]; 67 } 68 } 69 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body