lhoist-stay-safe__backend-t.../includes/statistics-page.php

158 lines
4.1 KiB
PHP

<?php
// ###### HOME DASHBOARD WIDGET
function register_admin_dashboard_widget()
{
wp_add_dashboard_widget('admin_dashboard_widget', 'Consulter les statistiques', 'render_admin_dashboard_widget_content');
}
add_action('wp_dashboard_setup', 'register_admin_dashboard_widget');
function render_admin_dashboard_widget_content()
{
get_template_part('template-parts/statistics/dashboard-widget');
}
// ###### STATISTICS OPTION PAGE
function register_statistics_option_page()
{
add_menu_page(
'Statistiques des jeux',
'Statistiques des jeux',
'read',
'session-datas-options',
'render_statistics_option_page',
'dashicons-chart-area'
);
}
add_action('admin_menu', 'register_statistics_option_page');
function render_statistics_option_page()
{
get_template_part('template-parts/statistics/dashboard');
}
// ###### EXPORT PDF
function render_game_statistics_print_page()
{
get_template_part('template-parts/statistics/game-print-stats');
}
add_action('admin_post_download_pdf', 'handle_download_pdf_request');
add_action('admin_post_nopriv_download_pdf', 'handle_download_pdf_request');
function handle_download_pdf_request()
{
// Vérifier les autorisations ou les conditions nécessaires
if (!current_user_can('read')) {
wp_die('Access Denied');
}
// Générer le contenu HTML à partir de votre page d'options
ob_start();
render_game_statistics_print_page();
$html_content = ob_get_clean();
// Générer et télécharger le PDF
generate_pdf_from_html($html_content);
}
function generate_pdf_from_html($html_content, $filename = 'export.pdf')
{
// Inclure la bibliothèque TCPDF
require_once(get_template_directory() . '/vendor/autoload.php');
// Créer une instance de TCPDF
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// Définir les informations du document
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Your Name');
$pdf->SetTitle('Title');
$pdf->SetSubject('Subject');
$pdf->SetKeywords('Keywords');
// Définir l'en-tête et le pied de page
$pdf->setHeaderData('', PDF_HEADER_LOGO_WIDTH, 'Statistiques de jeu ', 'Lhoist Stay safe');
$pdf->setFooterData(array(0, 64, 0), array(0, 64, 128));
// Définir la police
$pdf->SetFont('helvetica', '', 12);
// Ajouter une page
$pdf->AddPage();
// Écrire le contenu HTML dans le PDF
$pdf->writeHTML($html_content, true, false, true, false, '');
// Sortie PDF
$pdf->Output($filename, 'I');
// $pdf->Output('report.pdf', 'F',);
}
// ###### EXPORT IN CSV
add_action('admin_post_export_csv', 'handle_export_csv_request');
add_action('admin_post_nopriv_export_csv', 'handle_export_csv_request');
function handle_export_csv_request()
{
// Vérifier les autorisations ou les conditions nécessaires
if (!current_user_can('read')) {
wp_die('Access Denied');
}
// Appeler la fonction pour exporter les données vers CSV
export_data_to_csv();
}
function export_data_to_csv()
{
global $wpdb;
$table_name = "wp_app_users_statistics";
// Récupérer les données de la base de données
$data = $wpdb->get_results("SELECT * FROM $table_name", ARRAY_A);
// Vérifier s'il y a des données à exporter
if ($data) {
// Nom du fichier CSV
$filename = 'export.csv';
// Entête du fichier CSV
$header_row = array_keys($data[0]);
// Ouvrir le fichier en écriture
$file = fopen($filename, 'w');
// Écrire l'entête dans le fichier CSV
fputcsv($file, $header_row);
// Écrire les données dans le fichier CSV
foreach ($data as $row) {
// $row["level_completion_time"] = $row["level_completion_time"] / 100;
fputcsv($file, $row);
}
// Fermer le fichier
fclose($file);
// Télécharger le fichier CSV
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/csv");
readfile($filename);
// Supprimer le fichier après téléchargement
unlink($filename);
exit();
} else {
// Aucune donnée à exporter
echo 'Aucune donnée à exporter.';
}
}