Artículo

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:

  1. global $USER;
  2. //Traer Número de documento, campo personalizado creado en el formulario del perfil de los usuarios
  3. $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
  4.  
  5. if ($value) {
  6. $value = $value->data; // selecciono el campo donde se encuentra el campo personalizado
  7. } else {
  8. $value = '';
  9. }
  10. $numeroDoc = "Con cédula de ciudadanía N° " . $value; // Igualo la variable con texto adicional
  11.  
  12. 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.

  1. 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

  1. //Muestro Ciudad
  2. $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
  3.  
  4. if ($ciudad) {
  5. $ciudad = $ciudad->city; // selecciono el campo que voy a mostrar
  6. } else {
  7. $ciudad = '';
  8. }
  9. 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:

  1. function certificate_get_date($certificate, $certrecord, $course, $ciudad, $userid = null) { // linea 849 Moodle 3.0.2
  2.  
  3. if ($certificate->printdate > 0) { //línea 875
  4.         if ($certificate->datefmt == 1) {
  5.             $certificatedate = $ciudad.' '.userdate($date, '%B %d, %Y');
  6.         } else if ($certificate->datefmt == 2) {
  7.             $suffix = certificate_get_ordinal_number_suffix(userdate($date, '%d'));
  8.             $certificatedate = $ciudad.' '.userdate($date, '%B %d' . $suffix . ', %Y');
  9.         } else if ($certificate->datefmt == 3) {
  10.             $certificatedate = $ciudad.' '.userdate($date, '%d %B %Y');
  11.         } else if ($certificate->datefmt == 4) {
  12.             $certificatedate = ciudad.' '.userdate($date, '%B %Y');
  13.         } else if ($certificate->datefmt == 5) {
  14.             $certificatedate = $ciudad.' '.userdate($date, get_string('strftimedate', 'langconfig'));
  15.         }
  16.  
  17.         return $certificatedate;
  18.     }

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

  1. 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