diff --git a/includes/export-datas.php b/includes/export-datas.php new file mode 100644 index 0000000..7399e4c --- /dev/null +++ b/includes/export-datas.php @@ -0,0 +1,145 @@ +Title + 'Export', // link text + 'manage_options', // user capabilities + 'export_datas', // page slug + 'export_datas_page_callback', // this function prints the page content + 'dashicons-external', // icon (from Dashicons for example) + 12 // menu position + ); +} + +function export_datas_page_callback() +{ +?> +
+

Exports de données

+ +
+ +
+

Export des artisans

+ +

Exporter les données des artisans au format CSV.

+
+ + + +
+
+
+
+ 'artisans', + 'posts_per_page' => -1, // Récupérer tous les posts + 'post_status' => 'publish', + ); + + $artisans = new WP_Query($args); + + // Vérifier si des posts ont été trouvés + if (empty($artisans)) { + wp_die('Aucun post trouvé pour le type "artisans".'); + } + + // Définir le nom du fichier CSV + $filename = 'artisans_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, ['Artisan', 'N° Téléphone', 'Mail', 'Adresse', 'Site web', 'TVA', 'Conseiller', 'Action requise', 'Précision pour contact', 'ID de l\'artisan', 'Date de création',]); + + // Boucler sur chaque post et écrire les données dans le CSV + foreach ($artisans->posts as $artisan) { + + $postID = $artisan->ID; + $phoneNumber = get_field('phone_number', $postID); + $formattedPhoneNumber = preg_replace('/^(\+\d{2})(\d{3})(\d{2})(\d{2})(\d{2})$/', '$1 $2 $3 $4 $5', $phoneNumber); + $email = get_field('email', $postID); + $website = get_field('website', $postID); + $vat_number = get_field('vat_number', $postID); + $tva = $vat_number ? format_belgian_vat_number($vat_number) : ''; + + $adresseDatas = get_field('adresse', $postID); + $street_number = isset($adresseDatas['street_number']) ? $adresseDatas['street_number'] . ' ' : ''; + $street_name = isset($adresseDatas['street_name']) ? $adresseDatas['street_name'] . ', ' : ''; + $post_code = isset($adresseDatas['post_code']) ? $adresseDatas['post_code'] . ' ' : ''; + $city = isset($adresseDatas['city']) ? $adresseDatas['city'] : ''; + $adresse = $street_number . $street_name . $post_code . ' ' . $city; + + + $conseiller = getArtisanConseillerName($postID) ?? ''; + $requiredAction = get_field('required_action', $postID); + $requiredAction = $requiredAction ? 'Oui' : ''; + $contactComments = get_field('contact_comments', $postID); + + fputcsv($file, [ + $artisan->post_title, + $formattedPhoneNumber, + $email, + $adresse, + $website, + $tva, + $conseiller, + $requiredAction, + $contactComments, + $artisan->ID, + $artisan->post_date, + ]); + } + + // 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(); +}