|
21 | 21 | *
|
22 | 22 | * @package mod_customcert
|
23 | 23 | * @author Gonzalo Romero
|
24 |
| - * @author Giorgio Consorti <g.consorti@lynxalb.com> |
| 24 | + * @author Giorgio Consorti <g.consorti@lynxlab.com> |
25 | 25 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
26 | 26 | */
|
27 | 27 |
|
|
53 | 53 | unset($cert);
|
54 | 54 | }
|
55 | 55 |
|
56 |
| -$context = $DB->get_record('context', ['contextlevel' => '50', 'instanceid' => $courseid]); |
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); |
60 |
| - |
61 | 56 | // Build a list of files to zip.
|
62 | 57 | $filesforzipping = [];
|
63 | 58 |
|
64 | 59 | foreach ($certs as $certid => $cert_fields) {
|
65 |
| - $template = null; |
66 |
| - foreach ($users as $roleAssignmentId => $user_fields) { |
67 |
| - if (!$DB->get_record('customcert_issues', ['userid' => $user_fields->userid, 'customcertid' => $certid])) { |
68 |
| - continue; |
69 |
| - } |
70 |
| - if (is_null($template)) { |
71 |
| - $template = $DB->get_record('customcert_templates', ['id' => $cert_fields->templateid], '*', MUST_EXIST); |
72 |
| - $template = new \mod_customcert\template($template); |
73 |
| - } |
74 |
| - $lf = new \mod_customcert\localfile($template); |
75 |
| - if (false === $file = $lf->getPDF($user_fields->userid)) { |
| 60 | + $issues = $DB->get_records('customcert_issues', ['customcertid' => $certid]); |
| 61 | + list($userssql, $params) = $DB->get_in_or_equal(array_map(fn($i) => $i->userid, $issues), SQL_PARAMS_NAMED); |
| 62 | + $usersObjs = $DB->get_records_select('user', "id {$userssql}", $params); |
| 63 | + $template = $DB->get_record('customcert_templates', ['id' => $cert_fields->templateid], '*', MUST_EXIST); |
| 64 | + $template = new \mod_customcert\template($template); |
| 65 | + $lf = new \mod_customcert\localfile($template); |
| 66 | + foreach ($issues as $issue) { |
| 67 | + if (false === $file = $lf->getPDF($issue->userid)) { |
76 | 68 | // must generate the pdf
|
77 |
| - $pdf = $template->generate_pdf(false, $user_fields->userid, true); |
| 69 | + $pdf = $template->generate_pdf(false, $issue->userid, true); |
78 | 70 | if (!empty($pdf)) {
|
79 | 71 | if ($cert_fields->keeplocalcopy) {
|
80 |
| - $file = $lf->getPDF($user_fields->userid); |
| 72 | + $file = $lf->getPDF($issue->userid); |
81 | 73 | } else {
|
82 | 74 | $file = [
|
83 | 75 | 'content' => $pdf,
|
|
86 | 78 | }
|
87 | 79 | }
|
88 | 80 | if ($file) {
|
89 |
| - $filename = \mod_customcert\localfile::buildFileName($usersObjs[$user_fields->userid]->username, $template->get_id(), $course->shortname); |
| 81 | + $filename = \mod_customcert\localfile::buildFileName($usersObjs[$issue->userid]->username, $template->get_id(), $course->shortname); |
90 | 82 | $filesforzipping['/' . $course->shortname . '/' . $cert_fields->name . '/' . $filename] = $file;
|
91 | 83 | }
|
92 | 84 | }
|
|
0 commit comments