$linkname = get_string('getcertificate', 'certificate'); $link = new moodle_url('/mod/certificate/view.php?id=' . $cm->id . '&action=get'); $button = new single_button($link, $linkname); if ($certificate->delivery != 1) { $button->add_action(new popup_action('click', $link, 'view' . $cm->id, array('height' => 600, 'width' => 800))); } echo html_writer::tag('div', $OUTPUT->render($button), array('style' => 'text-align:center')); echo $OUTPUT->footer($course); exit; } else { // Output to pdf // No debugging here, sorry. $CFG->debugdisplay = 0; @ini_set('display_errors', '0'); @ini_set('log_errors', '1'); $filename = certificate_get_certificate_filename($certificate, $cm, $course) . '.pdf'; require "{$CFG->dirroot}/mod/certificate/certificate_pdf_renderer.php"; $cpr = new certificate_pdf_renderer($certificate, $course, $cm); $pdf = $cpr->get_pdf(); // PDF contents are now in $file_contents as a string. $filecontents = $pdf->Output('', 'S'); if ($certificate->savecert == 1) { certificate_save_pdf($filecontents, $certrecord->id, $filename, $context->id); } if ($certificate->delivery == 0) { // Open in browser. send_file($filecontents, $filename, 0, 0, true, false, 'application/pdf'); } elseif ($certificate->delivery == 1) { // Force download. send_file($filecontents, $filename, 0, 0, true, true, 'application/pdf'); } elseif ($certificate->delivery == 2) {
public function test_certificate_email_student() { global $CFG, $USER; $certificate = $this->generator->create_instance(array('course' => $this->course->id)); $coursemodule = get_coursemodule_from_instance('certificate', $certificate->id); $certificateissues = certificate_get_issue($this->course, $USER, $certificate, $coursemodule); $this->setAdminUser(); require_once "{$CFG->dirroot}/mod/certificate/certificate_pdf_renderer.php"; $cpr = new certificate_pdf_renderer($certificate, $this->course, $coursemodule); $pdf = $cpr->get_pdf(); // PDF contents are now in $file_contents as a string. $filecontents = $pdf->Output('', 'S'); $filename = certificate_get_certificate_filename($certificate, $coursemodule, $this->course) . '.pdf'; $context = context_module::instance($coursemodule->id); unset_config('noemailever'); $sink = $this->redirectEmails(); certificate_email_student($this->course, $certificate, $certificateissues, $context, $filecontents, $filename); $messages = $sink->get_messages(); $this->assertEquals(1, count($messages)); $this->assertEquals($USER->email, $messages[0]->to); }
public function test_certificate_reset_userdata_nullify_old_recipients() { global $DB; // This should create certificate db entry as well as course module entry. $certificate = $this->generator->create_instance(array('course' => $this->course->id)); $coursemodule = get_coursemodule_from_instance('certificate', $certificate->id); $context = context_module::instance($coursemodule->id); $userarray = array(); for ($i = 0; $i < 10; $i++) { $userarray[] = $this->getDataGenerator()->create_user(); $certificateissue = certificate_get_issue($this->course, end($userarray), $certificate, $coursemodule); // Save the files along the way. $filename = certificate_get_certificate_filename($certificate, $coursemodule, $this->course) . '.pdf'; $cpr = new certificate_pdf_renderer($certificate, $this->course, $coursemodule); $pdf = $cpr->get_pdf(); // PDF contents are now in $file_contents as a string. $filecontents = $pdf->Output('', 'S'); certificate_save_pdf($filecontents, $certificate->id, $filename, $context->id); } // Assert that only one file exist. @see certificate_save_pdf $fs = get_file_storage(); $component = 'mod_certificate'; $filearea = 'issue'; $files = $fs->get_area_files($context->id, $component, $filearea, $certificate->id); $certfiles = array(); foreach ($files as $key => $file) { $validfile = trim($file->get_filename()) != "."; if ($validfile) { $certfiles[] = $file; } } $this->assertEquals(1, sizeof($certfiles)); $data = new stdClass(); $data->courseid = $this->course->id; $data->reset_certificate = true; $data->timeshift = 0; $componentstr = get_string('modulenameplural', 'certificate'); $statusarray = certificate_reset_userdata($data); $expectedstatus = array('component' => $componentstr, 'item' => get_string('removecert', 'certificate'), 'error' => false); // Ensure that we have the expected return status. $this->assertContains($expectedstatus, $statusarray); // Ensure that all certificate recpients are no longer a recipient. $this->assertEquals(0, $DB->count_records('certificate_issues', array('certificateid' => $certificate->id))); // Ensure that all saved pdf files are deleted. $files = $fs->get_area_files($context->id, $component, $filearea, $certificate->id); $certfiles = array(); foreach ($files as $key => $file) { $validfile = trim($file->get_filename()) != "."; if ($validfile) { $certfiles[] = $file; } } $this->assertEquals(0, sizeof($certfiles)); }