191 lines
5.5 KiB
PHP
191 lines
5.5 KiB
PHP
<?php
|
|
|
|
add_filter('gform_addon_navigation', 'add_menu_item');
|
|
function add_menu_item($menu_items)
|
|
{
|
|
$menu_items[] = array("name" => "Homegrade Stats", "label" => "Homegrade Datas", "callback" => "homegrade_stats_option_page", "permission" => "edit_posts");
|
|
return $menu_items;
|
|
}
|
|
|
|
|
|
|
|
function homegrade_stats_option_page()
|
|
{
|
|
?>
|
|
<div class="wrap ">
|
|
<h1>Exports de données Homegrade</h1>
|
|
|
|
<div class="homegrade-data-exports-page">
|
|
|
|
<div class="card export-card">
|
|
<h2>Formulaire de commande <br />des brochures papier</h2>
|
|
<img class="export-card__illustration" src="<?php echo get_template_directory_uri() . '/resources/img/illustrations/homegrade_formations-peb.svg' ?>" alt="">
|
|
<form method="post" action="<?php echo admin_url('admin-post.php'); ?>">
|
|
<input type="hidden" name="action" value="export_paper_order_datas">
|
|
<input type="hidden" name="export_paper_order_datas_nonce" value="<?php echo wp_create_nonce('export_paper_order_datas_nonce'); ?>">
|
|
<button type="submit" name="custom_action_button" class="button button-primary">
|
|
<?php echo __("Exporter les données", "homegrade-theme__texte-fonctionnel"); ?>
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
add_action('admin_post_export_paper_order_datas', 'handle_download_pdf_request');
|
|
|
|
function handle_download_pdf_request()
|
|
{
|
|
// Vérifier la nonce pour des raisons de sécurité
|
|
if (!isset($_POST['export_paper_order_datas_nonce']) || !wp_verify_nonce($_POST['export_paper_order_datas_nonce'], 'export_paper_order_datas_nonce') || !current_user_can('read')) {
|
|
wp_die('Vérification de sécurité échouée.');
|
|
}
|
|
|
|
generate_order_datas_to_csv();
|
|
exit;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function generate_order_datas_to_csv()
|
|
{
|
|
$form_id = 18;
|
|
|
|
$entries = GFAPI::get_entries($form_id);
|
|
|
|
if (is_wp_error($entries)) {
|
|
wp_die('Erreur lors de la récupération des données du formulaire.');
|
|
}
|
|
|
|
$output_formatted_entries = array();
|
|
|
|
|
|
foreach ($entries as $key => $entry) {
|
|
|
|
$clientFirstName = $entry['3'];
|
|
$clientLastName = $entry['2'];
|
|
$zipCode = $entry['9.5'];
|
|
|
|
|
|
$synthesePrimes = $entry['24'] ? unserialize($entry['24']) : [];
|
|
$brochures = $entry['25'] ? unserialize($entry['25']) : [];
|
|
$autrePublications = $entry['26'] ? unserialize($entry['26']) : [];
|
|
|
|
|
|
|
|
|
|
$explodedEntryDocuments = array_merge($synthesePrimes, $brochures, $autrePublications);
|
|
|
|
|
|
foreach ($explodedEntryDocuments as $key => $document) {
|
|
$document_quantity_fr = $document['quantity_fr'] ?? null;
|
|
$document_quantity_nl = $document['quantity_nl'] ?? null;
|
|
|
|
|
|
|
|
if (!$document_quantity_fr && !$document_quantity_nl) {
|
|
continue;
|
|
}
|
|
|
|
|
|
if ($document_quantity_nl) {
|
|
// $document_formatted_order_nl = $clientFirstName . ' ' . $clientLastName . ' | ' . $zipCode . ' | ' . $key . ' | ' . $document_quantity_nl . ' NL';
|
|
|
|
$document_formatted_order_nl = [
|
|
'client' => $clientFirstName . ' ' . $clientLastName,
|
|
'zipCode' => $zipCode,
|
|
'publication' => $key,
|
|
'quantity' => $document_quantity_nl,
|
|
'language' => 'NL'
|
|
];
|
|
array_push($output_formatted_entries, $document_formatted_order_nl);
|
|
}
|
|
|
|
if ($document_quantity_fr) {
|
|
// $document_formatted_order_fr = $clientFirstName . ' ' . $clientLastName . ' | ' . $zipCode . ' | ' . $key . ' | ' . $document_quantity_fr . ' FR';
|
|
$document_formatted_order_fr = [
|
|
'client' => $clientFirstName . ' ' . $clientLastName,
|
|
'zipCode' => $zipCode,
|
|
'publication' => $key,
|
|
'quantity' => $document_quantity_fr,
|
|
'language' => 'FR'
|
|
];
|
|
array_push($output_formatted_entries, $document_formatted_order_fr);
|
|
}
|
|
}
|
|
}
|
|
// write_log($output_formatted_entries);
|
|
|
|
// Définir le nom du fichier CSV
|
|
$filename = 'order_data_' . date('Ymd_His') . '.csv';
|
|
|
|
// Ouvrir un fichier CSV en mode écriture
|
|
$file = fopen($filename, 'w');
|
|
|
|
if ($file === false) {
|
|
wp_die('Erreur lors de la création du fichier CSV.');
|
|
}
|
|
|
|
// Ajouter les en-têtes du CSV
|
|
fputcsv($file, ['Client', 'Code Postal', 'Publication', 'Quantité', 'Langue']);
|
|
|
|
// Boucler sur chaque entrée formatée et l'écrire dans le CSV
|
|
foreach ($output_formatted_entries as $entry) {
|
|
fputcsv($file, $entry);
|
|
}
|
|
|
|
// Fermer le fichier
|
|
fclose($file);
|
|
|
|
// Télécharger le fichier CSV
|
|
header('Content-Type: text/csv');
|
|
header('Content-Disposition: attachment;filename="' . $filename . '"');
|
|
readfile($filename);
|
|
|
|
// Supprimer le fichier après téléchargement
|
|
unlink($filename);
|
|
|
|
exit();
|
|
|
|
|
|
// if ($output_formatted_entries) {
|
|
// // 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.';
|
|
// }
|
|
}
|