. /** * A4_embedded certificate type * * @package mod * @subpackage certificate * @copyright Mark Nelson * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ if (!defined('MOODLE_INTERNAL')) { die('Direct access to this script is forbidden.'); // It must be included from view.php } /** * Gets the course start date (for ILB start date is the date of enrollment) * and completion date from course completion framework. * Finally format them to print */ require_once("$CFG->dirroot/completion/completion_completion.php"); // Obtem as preferências para exibição do período do certificado $periodo_certificado = certificate_obtemCampoCustomizadoCurso($course->id, 'periodo_certificado'); if (empty(trim($periodo_certificado))) { $periodo_certificado = 'Duração do curso'; } if ($periodo_certificado == 'Duração do curso') { // Datas inicial e final são configuradas no curso $start_date = $course->startdate; $end_date = $course->enddate; } else { // $periodo_certificado == 'Sem período' ou 'Matrícula até conclusão' require_once("$CFG->dirroot/enrol/locallib.php"); // Data inicial é a matrícula $enrol_manager = new course_enrolment_manager($PAGE, $course); // Store the result in a variable first $user_enrolments = $enrol_manager->get_user_enrolments($USER->id); $user_enrol = reset($user_enrolments); // Check if $user_enrol is an object before accessing its property if ($user_enrol && is_object($user_enrol)) { $start_date = $user_enrol->timestart; } else { // Handle the case where there is no enrolment object $start_date = time(); // Default value } // Data final é quando completou o curso $cc = new completion_completion(array('userid' => $USER->id, 'course' => $course->id)); $end_date = $cc->timecompleted; } $fmt = '%d/%m/%Y'; // Default format if ($certificate->datefmt == 1) { $fmt = '%B %d, %Y'; } else if ($certificate->datefmt == 2) { $suffix = certificate_get_ordinal_number_suffix(userdate($ts, '%d')); $fmt = '%B %d' . $suffix . ', %Y'; } else if ($certificate->datefmt == 3) { $fmt = '%d de %B de %Y'; } else if ($certificate->datefmt == 4) { $fmt = '%B de %Y'; } else if ($certificate->datefmt == 5) { $fmt = get_string('strftimedate', 'langconfig'); } $dataInicio = userdate($start_date, $fmt); $dataFim = userdate($end_date, $fmt); $cert_date = $end_date; // para fins de obtenção automática de assinatura (COTREN apenas) $anoInicio = userdate($start_date, '%Y'); $anoFim = userdate($end_date, '%Y'); $mesInicio = userdate($start_date, '%B'); $mesFim = userdate($end_date, '%B'); $diaInicio = userdate($start_date, '%d'); $diaFim = userdate($end_date, '%d'); $nome_curso = $course->fullname; if ($diaInicio == '1') { $diaInicio .= "º"; } if ($diaFim == '1') { $diaFim .= "º"; } $nome_acao = certificate_obtemCampoCustomizadoCurso($course->id, 'nome_acao_certificado'); if (empty(trim($nome_acao))) { $nome_acao = mb_strtoupper($course->fullname, 'UTF-8'); } $verbo_acao = certificate_obtemCampoCustomizadoCurso($course->id, 'papel_acao_capacitacao'); if (empty($verbo_acao)) { $verbo_acao = 'participou'; } $tipo_acao = certificate_obtemCampoCustomizadoCurso($course->id, 'tipo_acao_capacitacao'); if ($tipo_acao == "") { $tipo_acao = 'do curso'; } $modalidade_acao = certificate_obtemCampoCustomizadoCurso($course->id, 'modalidade_capacitacao'); $entidade_certificadora = certificate_obtemCampoCustomizadoCurso($course->id, 'entidade_certificadora'); if ($entidade_certificadora == '') { $entidade_certificadora = 'O Instituto Legislativo Brasileiro certifica que'; } function montaPeriodo() { global $anoInicio, $anoFim, $mesInicio, $mesFim, $diaInicio, $diaFim, $dataInicio, $dataFim; if ($anoInicio != $anoFim) { // ano diferente return "realizado no período de {$dataInicio} a {$dataFim}"; } else { if ($mesInicio != $mesFim) { // mesmo ano, mês diferente return "realizado no período de $diaInicio de $mesInicio a $diaFim de $mesFim de $anoInicio"; } else { if ($diaInicio != $diaFim) { // mesmo mês, dia diferente return "realizado no período de $diaInicio a $diaFim de $mesInicio de $anoInicio"; } else { // evento de um dia return "realizado em {$dataInicio}"; } } } } // MASK para CPF function mask($val, $mask) { $maskared = ''; $k = 0; for ($i = 0; $i <= strlen($mask) - 1; $i++) { if ($mask[$i] == '#') { if (isset($val[$k])) { $maskared .= $val[$k++]; } } else { if (isset($mask[$i])) { $maskared .= $mask[$i]; } } } return $maskared; } $cpf = mask($USER->username, '###.###.###-##'); require_once($CFG->dirroot . '/user/profile/field/cpf/field.class.php'); $pdf = new PDF($certificate->orientation, 'mm', 'A4', true, 'UTF-8', false); $pdf->SetTitle($certificate->name); $pdf->SetProtection(array('modify')); $pdf->setPrintHeader(false); $pdf->setPrintFooter(false); $pdf->SetAutoPageBreak(false, 0); $pdf->AddPage(); // Define variables // Only Landscape $x = 10; $y = 60; $sealx = 230; $sealy = 150; $sigx = 0; $sigy = 135; $sigw = 297; $sigh = 44; $custx = 15; $custy = $y + 25; $wmarkx = 40; $wmarky = 31; $wmarkw = 212; $wmarkh = 148; $brdrx = 0; $brdry = 0; $brdrw = 297; $brdrh = 210; $codex = $x; $codey = 165; // Front page ------------------------------------------------------------------------------------------------------------ // Add images and lines certificate_print_image($pdf, $certificate, CERT_IMAGE_BORDER, $brdrx, $brdry, $brdrw, $brdrh); certificate_draw_frame($pdf, $certificate); // Set alpha to semi-transparency $pdf->SetAlpha(0.2); certificate_print_image($pdf, $certificate, CERT_IMAGE_WATERMARK, $wmarkx, $wmarky, $wmarkw, $wmarkh); $pdf->SetAlpha(1); certificate_print_image($pdf, $certificate, CERT_IMAGE_SEAL, $sealx, $sealy, '', ''); // assinatura esperada: 1863x276 certificate_print_image($pdf, $certificate, CERT_IMAGE_SIGNATURE, $sigx, $sigy, $sigw, $sigh, $cert_date); // Add text $pdf->SetTextColor(0, 0, 0); // $entidade_certificadora = 'O Instituto Legislativo Brasileiro (ILB), do Senado Federal, em parceria com // as escolas de governo da Câmara dos Deputados (CEFOR) e do Tribunal de Contas da União (ISC), certifica que'; $nome_aluno = mb_strtoupper(fullname($USER), 'UTF-8'); $dados_aluno = "CPF nº $cpf"; $periodo = montaPeriodo(); $carga_horaria = "com carga horária de {$certificate->printhours}"; $nota = (certificate_get_grade($certificate, $course) ? certificate_get_grade($certificate, $course) : ''); $texto_base_certificado = $entidade_certificadora . "

" . "" . $nome_aluno . "

" . $dados_aluno . ", " . $verbo_acao . ($modalidade_acao ? ", na modalidade " . $modalidade_acao . ',' : "") . ' ' . $tipo_acao . ' ' . "" . $nome_acao . "" . ($certificate->printhours ? ", com carga horária de $certificate->printhours" : '') . ($periodo_certificado != 'Sem período' ? ', ' . $periodo : '') . ($nota ? ', ' . $nota : '') . '.'; certificate_print_text($pdf, $x, $y, 'C', 'freesans', '', 20, get_string('title', 'certificate')); certificate_print_text($pdf, $x, $y + 15, 'C', 'freesans', '', 17, $texto_base_certificado); // Deve ser fixo certificate_print_text($pdf, $x, $y + 75, 'R', 'freesans', 'B', 14, "Brasília, {$dataFim}."); // Verse page ----------------------------------------------------------------------------------------------------------- $pdf->AddPage(); // Add images and lines certificate_print_image($pdf, $certificate, CERT_IMAGE_BORDER, $brdrx, $brdry, $brdrw, $brdrh); certificate_draw_frame($pdf, $certificate); // Set alpha to semi-transparency $pdf->SetAlpha(0.2); certificate_print_image($pdf, $certificate, CERT_IMAGE_WATERMARK, $wmarkx, $wmarky, $wmarkw, $wmarkh); $pdf->SetAlpha(1); certificate_print_image($pdf, $certificate, CERT_IMAGE_SEAL, $sealx, $sealy, '', ''); // Add text $pdf->SetTextColor(0, 0, 0); certificate_print_text($pdf, $x, $y, 'C', 'freesans', '', 20, 'PROGRAMA DO CURSO'); certificate_print_text($pdf, $x, $y + 10, 'C', 'freesans', '', 20, $nome_curso); certificate_print_text($pdf, $custx, $custy, 'L', 'freesans', '', 10, $certificate->customtext); certificate_print_text($pdf, $codex, $codey, 'C', 'freesans', '', 10, 'CÓDIGO DE VALIDAÇÃO'); certificate_print_text($pdf, $codex, $codey + 5, 'C', 'freesans', 'B', 12, certificate_get_code($certificate, $certrecord)); certificate_print_text($pdf, $codex, $codey + 10, 'C', 'freesans', '', 10, 'Para verificar a autenticidade deste certificado, acesse http://saberes.senado.leg.br/ e informe o código acima'); ?>