En muchas ocasiones requerimos que en el certificado aparezca información adicional a la que comunmente trae por defecto moodle, por ejemplo podemos requerir que se muestre en el certificado, la ciudad y el número de documento que tiene el estudiante, para añadir estos campos debemos de ingresar a:
miMoodle/mod/certificate/type/miCertificado/certificate.php
y añadir las siguientes lineas de código:
global $USER;
//Traer Número de documento, campo personalizado creado en el formulario del perfil de los usuarios
$value = $DB->get_record_sql("SELECT * FROM mdl_user_info_data WHERE fieldid='1' AND userid='$USER->id'"); //query db y selecciono el id del campo personalizado que deseo traer, en este caso 1
if ($value) {
$value = $value->data; // selecciono el campo donde se encuentra el campo personalizado
} else {
$value = '';
}
$numeroDoc = "Con cédula de ciudadanía N° " . $value; // Igualo la variable con texto adicional
certificate_print_text($pdf, $x, $y + 48, 'C', 'courierI', '', 22, $numeroDoc); // imprimo número de documento en el certificado
Otra manera de hacerlo más fácil y rápido es adicionando la siguiente línea de código en al archivo certificate.php en donde CC corresponde al nombre corte del campo adicional que incluí en el formulario.
certificate_print_text($pdf, $x, $y + 60, 'C', 'freesans', 'b', 20, $USER->profile['CC']);
Si deseamos agregar el campo ciudad debemos de adicionar las siguientes líneas de código
//Muestro Ciudad
$ciudad = $DB->get_record_sql("SELECT city FROM mdl_user WHERE id='$USER->id'"); //query db y selecciono el campo del usuario que deseo mostrar
if ($ciudad) {
$ciudad = $ciudad->city; // selecciono el campo que voy a mostrar
} else {
$ciudad = '';
}
certificate_print_text($pdf, $x, $y + 98, 'C', 'Helvetica', '', 14, $ciudad); // Imprimo la Ciudad
Si deseamos adicionar el campo ciudad y este concatenarlo con la fecha para que se visualice algo como «Bogotá 11 marzo 2016» debemos de modificar el archivo mod/certificate/ locallib.php y modificar el método certificate_get_date adicionando el parámetro $ciudad y posteriormente concatenarlo con el formado de fecha de tal manera que quede asi:
function certificate_get_date($certificate, $certrecord, $course, $ciudad, $userid = null) { // linea 849 Moodle 3.0.2
if ($certificate->printdate > 0) { //línea 875
if ($certificate->datefmt == 1) {
$certificatedate = $ciudad.' '.userdate($date, '%B %d, %Y');
} else if ($certificate->datefmt == 2) {
$suffix = certificate_get_ordinal_number_suffix(userdate($date, '%d'));
$certificatedate = $ciudad.' '.userdate($date, '%B %d' . $suffix . ', %Y');
} else if ($certificate->datefmt == 3) {
$certificatedate = $ciudad.' '.userdate($date, '%d %B %Y');
} else if ($certificate->datefmt == 4) {
$certificatedate = ciudad.' '.userdate($date, '%B %Y');
} else if ($certificate->datefmt == 5) {
$certificatedate = $ciudad.' '.userdate($date, get_string('strftimedate', 'langconfig'));
}
return $certificatedate;
}
Una vez realizado esto, debemos de ir a nuestro archivo certificate.php (miMoodle/mod/certificate/type/miCertificado/certificate.php) y añadir la siguiente línea de código
certificate_print_text($pdf, $x, $y + 105, 'C', 'Times', '', 20, certificate_get_date($certificate, $certrecord, $course, $ciudad)); //Fecha del Curso con la ciudad
Lo anterior se trabajo para la versión de Moodle 3.0.2 y versión del modulo certificado 2015111601