/** * Generate the report for given certificate * * @param srCertificate $cert * @throws ilException * @return bool */ public function generate(srCertificate $cert) { if (!$this->isAvailable()) { throw new ilException("Generating certificates with TemplateTypeHtml is only available for ILIAS > 4.4"); } $template = $cert->getDefinition()->getType()->getCertificateTemplatesPath(true); // A template is required, so quit early if it does not exist for some reason if (!is_file($template)) { return false; } require_once './Services/PDFGeneration/classes/class.ilPDFGeneration.php'; // Get HTML markup by parsing the template and replace placeholders $markup = file_get_contents($template); $markup = srCertificatePlaceholdersParser::getInstance()->parse($markup, $cert->getPlaceholders()); try { $job = new ilPDFGenerationJob(); $job->setMarginLeft('20'); $job->setMarginBottom('20'); $job->setMarginRight('20'); $job->setMarginTop('20'); $job->setOutputMode('F'); // Save to disk $job->setFilename($cert->getFilePath()); $job->addPage($markup); ilPDFGeneration::doJob($job); return true; // Method above gives no feedback so assume true -.- } catch (Exception $e) { $this->log->write("srCertificateTemplyteTypeHtml::generate() : " . $e->getMessage()); return false; } }
/** * Generate the report for given certificate * * @param srCertificate $cert * @throws ilException * @return bool */ public function generate(srCertificate $cert) { if (!$this->isAvailable()) { throw new ilException("Generating certificates with TemplateTypeJasper is only available if the JasperReport service is installed"); } require_once self::JASPER_CLASS; $template = $cert->getDefinition()->getType()->getCertificateTemplatesPath(true); // A template is required, so quit early if it does not exist for some reason if (!is_file($template)) { return false; } $placeholders = $cert->getPlaceholders(); try { $defined_placeholders = $this->parseDefinedPlaceholders($template); } catch (Exception $e) { // XML is not valid return false; } // Only send defined placeholders to jasper, otherwise the template file is not considered as valid $placeholders = array_intersect_key($placeholders, $defined_placeholders); $placeholders = $this->nl2br($placeholders); $report = new JasperReport($template, $cert->getFilename(false)); if ($locale = $this->pl->config('jasper_locale')) { $report->setLocale($this->pl->config('jasper_locale')); } if ($java = $this->pl->config('jasper_path_java')) { $report->setPathJava($java); } $report->setDataSource(JasperReport::DATASOURCE_EMPTY); $report->setParameters($placeholders); try { $report->generateOutput(); $report_file = $report->getOutputFile(); // Move pdf to correct certificate location $cert_path = $cert->getCertificatePath(); if (!file_exists($cert_path)) { ilUtil::makeDirParents($cert_path); } $from = $report_file . '.pdf'; $to = $cert->getFilePath(); return ilUtil::moveUploadedFile($from, '', $to, false, 'rename'); } catch (JasperReportException $e) { $this->log->write("srCertificateTemplyteTypeJasper::generate() Report file of certificate with ID {$cert->getId()} was not created by Jasper: " . implode(', ', $e->getErrors())); return false; } }
/** * Execute notification * * @return bool */ public function notify() { global $ilSetting; if (!$this->email) { return false; } $this->mailer->To($this->email); $from = $ilSetting->get('mail_external_sender_noreply'); if ($from) { $this->mailer->From($from); } $this->mailer->Subject($this->getSubject()); $this->mailer->Body($this->getBody()); if ($this->attach_certificate) { $this->mailer->Attach($this->certificate->getFilePath()); } $this->mailer->Send(); return true; }