Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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
}