|
36 | 36 | die();
|
37 | 37 | }
|
38 | 38 |
|
| 39 | +/** @var \moodle_database $DB */ |
39 | 40 | global $DB;
|
40 | 41 |
|
41 | 42 | // Increase the server timeout to handle the creation and sending of large zip files.
|
|
54 | 55 |
|
55 | 56 | $context = $DB->get_record('context', ['contextlevel' => '50', 'instanceid' => $courseid]);
|
56 | 57 | $users = $DB->get_records('role_assignments', ['contextid' => $context->id]);
|
| 58 | +list($userssql, $params) = $DB->get_in_or_equal(array_map(fn($u) => $u->userid, $users), SQL_PARAMS_NAMED); |
| 59 | +$usersObjs = $DB->get_records_select('user', "id {$userssql}", $params); |
57 | 60 |
|
58 | 61 | // Build a list of files to zip.
|
59 | 62 | $filesforzipping = [];
|
60 | 63 |
|
61 | 64 | foreach ($certs as $certid => $cert_fields) {
|
62 | 65 | $template = null;
|
63 |
| - foreach ($users as $userid => $user_fields) { |
| 66 | + foreach ($users as $roleAssignmentId => $user_fields) { |
64 | 67 | if (!$DB->get_record('customcert_issues', ['userid' => $user_fields->userid, 'customcertid' => $certid])) {
|
65 | 68 | continue;
|
66 | 69 | }
|
|
73 | 76 | // must generate the pdf
|
74 | 77 | $pdf = $template->generate_pdf(false, $user_fields->userid, true);
|
75 | 78 | if (!empty($pdf)) {
|
76 |
| - $file = $lf->getPDF($user_fields->userid); |
| 79 | + if ($cert_fields->keeplocalcopy) { |
| 80 | + $file = $lf->getPDF($user_fields->userid); |
| 81 | + } else { |
| 82 | + $file = [ |
| 83 | + 'content' => $pdf, |
| 84 | + ]; |
| 85 | + } |
77 | 86 | }
|
78 | 87 | }
|
79 | 88 | if ($file) {
|
80 |
| - $filesforzipping['/' . $course->shortname . '/' . $cert_fields->name . '/' .$file->get_filename()] = $file; |
| 89 | + $filename = \mod_customcert\localfile::buildFileName($usersObjs[$user_fields->userid]->username, $template->get_id(), $course->shortname); |
| 90 | + $filesforzipping['/' . $course->shortname . '/' . $cert_fields->name . '/' . $filename] = $file; |
81 | 91 | }
|
82 | 92 | }
|
83 | 93 | }
|
|
0 commit comments