. /** * The report that displays the certificates the user has throughout the site. * * @package mod_htmlcert * @copyright 2016 Mark Nelson , 2022 Kumi Systems e.U. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace mod_htmlcert; defined('MOODLE_INTERNAL') || die; global $CFG; require_once($CFG->libdir . '/tablelib.php'); /** * Class for the report that displays the certificates the user has throughout the site. * * @package mod_htmlcert * @copyright 2016 Mark Nelson , 2022 Kumi Systems e.U. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class my_certificates_table extends \table_sql { /** * @var int $userid The user id */ protected $userid; /** * Sets up the table. * * @param int $userid * @param string|null $download The file type, null if we are not downloading */ public function __construct($userid, $download = null) { parent::__construct('mod_htmlcert_report_table'); $columns = array( 'name', 'coursename', 'timecreated', 'code' ); $headers = array( get_string('name'), get_string('course'), get_string('receiveddate', 'htmlcert'), get_string('code', 'htmlcert') ); // Check if we were passed a filename, which means we want to download it. if ($download) { $this->is_downloading($download, 'htmlcert-report'); } if (!$this->is_downloading()) { $columns[] = 'download'; $headers[] = get_string('file'); } $this->define_columns($columns); $this->define_headers($headers); $this->collapsible(false); $this->sortable(true); $this->no_sorting('code'); $this->no_sorting('download'); $this->is_downloadable(true); $this->userid = $userid; } /** * Generate the name column. * * @param \stdClass $certificate * @return string */ public function col_name($certificate) { $cm = get_coursemodule_from_instance('htmlcert', $certificate->id); $context = \context_module::instance($cm->id); return format_string($certificate->name, true, ['context' => $context]); } /** * Generate the course name column. * * @param \stdClass $certificate * @return string */ public function col_coursename($certificate) { $cm = get_coursemodule_from_instance('htmlcert', $certificate->id); $context = \context_module::instance($cm->id); return format_string($certificate->coursename, true, ['context' => $context]); } /** * Generate the certificate time created column. * * @param \stdClass $certificate * @return string */ public function col_timecreated($certificate) { return userdate($certificate->timecreated); } /** * Generate the code column. * * @param \stdClass $certificate * @return string */ public function col_code($certificate) { return $certificate->code; } /** * Generate the download column. * * @param \stdClass $certificate * @return string */ public function col_download($certificate) { global $OUTPUT; $icon = new \pix_icon('download', get_string('download'), 'htmlcert'); $link = new \moodle_url('/mod/htmlcert/my_certificates.php', array('userid' => $this->userid, 'certificateid' => $certificate->id, 'downloadcert' => '1')); return $OUTPUT->action_link($link, '', new \popup_action('click', $link), null, $icon); } /** * Query the reader. * * @param int $pagesize size of page for paginated displayed table. * @param bool $useinitialsbar do you want to use the initials bar. */ public function query_db($pagesize, $useinitialsbar = true) { $total = certificate::get_number_of_certificates_for_user($this->userid); $this->pagesize($pagesize, $total); $this->rawdata = certificate::get_certificates_for_user($this->userid, $this->get_page_start(), $this->get_page_size(), $this->get_sql_sort()); // Set initial bars. if ($useinitialsbar) { $this->initialbars($total > $pagesize); } } /** * Download the data. */ public function download() { \core\session\manager::write_close(); $total = certificate::get_number_of_certificates_for_user($this->userid); $this->out($total, false); exit; } }