Admin: Gradebook: Add configuration setting 'certificate_export_report_user_extra_fields' to add a CSV report on issued certificates - refs #4658

Author: Juan Cortizas Ponte <124381395+juancpbinario@users.noreply.github.com>
pull/4737/head
juancp-contidosdixitais 2 years ago committed by GitHub
parent acb01fb33f
commit bb0ab206f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 71
      main/gradebook/gradebook_display_certificate.php
  2. 3
      main/install/configuration.dist.php

@ -172,6 +172,72 @@ switch ($action) {
api_not_allowed(true);
}
break;
case 'download_certificates_report':
$exportData = array_map(function($learner) {
return [
$learner['user_id'],
$learner['username'],
$learner['firstname'],
$learner['lastname'],
];
}, $certificate_list);
$csvContent = [];
$csvHeaders = [];
$csvHeaders[] = get_lang('Id');
$csvHeaders[] = get_lang('UserName');
$csvHeaders[] = get_lang('FirstName');
$csvHeaders[] = get_lang('LastName');
$csvHeaders[] = get_lang('Score');
$csvHeaders[] = get_lang('Date');
$extraFields = [];
$extraFieldsFromSettings = [];
$extraFieldsFromSettings = api_get_configuration_value('certificate_export_report_user_extra_fields');
if (!empty($extraFieldsFromSettings) && isset($extraFieldsFromSettings['extra_fields'])) {
$extraFields = $extraFieldsFromSettings['extra_fields'];
$usersProfileInfo = [];
$userIds = array_column($certificate_list, 'user_id', 'user_id');
foreach ($extraFields as $fieldName) {
$extraFieldInfo = UserManager::get_extra_field_information_by_name($fieldName);
if (!empty($extraFieldInfo)) {
$csvHeaders[] = $fieldName;
$usersProfileInfo[$extraFieldInfo['id']] = TrackingCourseLog::getAdditionalProfileInformationOfFieldByUser(
$extraFieldInfo['id'],
$userIds
);
}
}
foreach($exportData as $key => $row) {
$list = GradebookUtils::get_list_gradebook_certificates_by_user_id(
$row[0],
$categoryId
);
foreach ($list as $valueCertificate) {
$row[] = $valueCertificate['score_certificate'];
$row[] = api_convert_and_format_date($valueCertificate['created_at']);
}
foreach($usersProfileInfo as $extraInfo) {
$row[] = $extraInfo[$row[0]][0];
}
$csvContent[] = $row;
}
}
array_unshift($csvContent, $csvHeaders);
$fileName = 'learner_certificate_report_'.api_get_local_time();
Export::arrayToCsv($csvContent, $fileName);
break;
}
$interbreadcrumb[] = [
@ -290,6 +356,11 @@ if (count($certificate_list) > 0 && $hideCertificateExport !== 'true') {
);
}
$actions .= Display::url(
Display::return_icon('export_csv.png', get_lang('ExportCertificateReport'), [], ICON_SIZE_MEDIUM),
$url.'&action=download_certificates_report'
);
if ($allowCustomCertificate) {
$actions .= Display::url(
Display::return_icon('file_zip.png', get_lang('ExportAllCertificatesToZIP'), [], ICON_SIZE_MEDIUM),

@ -2432,6 +2432,9 @@ INSERT INTO extra_field (extra_field_type, field_type, variable, display_text, d
// main URL (where the access_url_changeable field = 0)
// $_configuration['multiple_url_hide_disabled_settings'] = false;
// List of learner certificates - User extra fields to include at the exported CSV as columns
//$_configuration['certificate_export_report_user_extra_fields'] = ['extra_fields' => ['office_address', 'office_phone_extension']];
// Only courses with this option will be visible in catalogue
// Requires DB changes:
/*

Loading…
Cancel
Save