158 lines
4.1 KiB
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.';
|
|
}
|
|
}
|