module_de_creation_automatique_des_mails_craac.org
Ceci est une ancienne révision du document !
Module de création automatique des mails craac.org
Le besoin du CRAAC est le suivant : lorsqu'un utilisateur décide d'adhérer au CRAAC, celui-ci doit faire un paiement et ensuite avoir automatiquement une boite mail.
Le module de gestion des adhésions permet d'utiliser un webhook qui permet de faire une action lors d'un paiement réussi. Le webhook utilisé est celui-ci –> pmpro_after_checkout
Afin d'utiliser ce webhook, une extension Wordpress a été faite pour le CRAAC. Cette extension se situe dans le dossier des extensions de Wordpress
wp-content/plugins/webhook-adherent-mail
Et voic le code Php de l'extension
<?php /** * Plugin Name: Webhook adherent Mail pour le CRAAC * Description: Permet de créer automatiquement une boîte mail sous la fome prenom.nomCODEPOSTAL@craac.org quand un nouvel adhérent est crée à l'aide * d'une commande cURL passée à CPanel * * Les variables d'environnement suivantes pour cPanel doivent être définies dans le fichier de config de Wordpress 'wp-config.php' * define('CPANEL_URL', 'https://url.com'); * define('CPANEL_USERNAME', 'username'); * define('CPANEL_PASSWORD', 'password'); * * Version: 1.0 * Author: Laurent Scarciello * Author URI: https://laurentscarciello.fr */ // Fonction d'activation function activate_webhook_adherent_mail() { } register_activation_hook(__FILE__, 'activate_webhook_adherent_mail'); // Fonction principale function create_mail_callback($user_id, $morder) { ob_start(); // Activer la mise en mémoire tampon // Récupération des informations sur l'utilisateur $user_info = get_userdata($user_id); $user_email = $user_info->user_email; $user_prenom = $user_info->first_name; $user_nom = $user_info->last_name; // Récupération du code postal depuis la table pmpro_membership_orders global $wpdb; $user_postal_code = $wpdb->get_var( $wpdb->prepare( "SELECT billing_zip FROM {$wpdb->pmpro_membership_orders} WHERE user_id = %d ORDER BY id DESC LIMIT 1", $user_id ) ); // Paramètres d'authentification pour la requête cURL $username = defined('CPANEL_USERNAME') ? CPANEL_USERNAME : ''; $url = defined('CPANEL_URL') ? CPANEL_URL : ''; $password = defined('CPANEL_PASSWORD') ? CPANEL_PASSWORD : ''; // Vérification si les informations sont ok if (!$username || !$password) { // Enregistrez l'erreur dans les logs de WordPress error_log('Les informations d\'authentification CPanel pour la création de la boîte mail ne sont pas disponibles.', 0); } $user_prenom = clean_name($user_prenom); $user_nom = clean_name($user_nom); $email = $user_prenom.'.'.$user_nom.$user_postal_code.'@craac.org'; $bytes = openssl_random_pseudo_bytes(8); $passwordEmail = bin2hex($bytes); $quota = 1024; // Construire l'en-tête d'autorisation cURL $authorizationHeader = 'Authorization: cpanel '.$username.':'.$password; // Construire les données de la requête $postData = array( 'email' => $email, 'password' => $passwordEmail, 'quota' => $quota ); // Initialiser la session cURL $curl_session = curl_init($url); // Configurer les options cURL curl_setopt($curl_session, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl_session, CURLOPT_POST, true); curl_setopt($curl_session, CURLOPT_POSTFIELDS, http_build_query($postData)); curl_setopt($curl_session, CURLOPT_HTTPHEADER, array($authorizationHeader)); // Exécuter la requête cURL et récupérer la réponse $response = curl_exec($curl_session); // Vérifier s'il y a des erreurs if (curl_errno($curl_session)) { $error = 'Erreur cURL : ' . curl_error($curl_session); error_log($error, 0); // Mail avec l'erreur wp_mail('error-mail-craac@siick.fr', 'Erreur création mail CRAAC', $error); } else { // Fermer la session cURL curl_close($curl_session); // Second mail pour envoyer les informations de connexion à la boîte mail $body = '<p>Merci pour votre adhésion au CRAAC. Cette adhésion met également à disposition une boîte mail.</p>'; $body .= '<p>Voici votre nouvelle adresse mail '.$user_prenom.'.'.$user_nom.$user_postal_code.'@craac.org</p>'; $body .= '<p>La boîte mail se trouve à cette adresse <a href="https://mail.craac.org">https://mail.craac.org</a> et votre mot de passe de connexion est '.$passwordEmail.'</p>'; $body .= '<p><b>ATTENTION : Pour plus de sécurité VEUILLEZ CHANGER OBLIGATOIREMENT VOTRE MOT DE PASSE À VOTRE PREMIÈRE CONNEXION !</b></p>'; wp_mail($user_email, 'Confirmation de création de votre nouvelle boite mail @craac.org', $body); // mail debug à commenter pour la prod // wp_mail('devcraac@siick.fr', 'Debug', $passwordEmail); } ob_end_flush(); // Flush du tampon } // Clean les espaces et caractères spéciaux avant utilisation pour créer la boite mail function clean_name($str) { $str = htmlentities($str, ENT_NOQUOTES, 'utf-8'); $str = preg_replace('#&([A-za-z])(?:uml|circ|tilde|acute|grave|cedil|ring);#', '\1', $str); $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); $str = preg_replace('#&[^;]+;#', '', $str); $str = preg_replace('/\s+/', '', $str); return $str; } add_action('pmpro_after_checkout', 'create_mail_callback', 10, 2); ?>
module_de_creation_automatique_des_mails_craac.org.1711287911.txt.gz · Dernière modification : 2024/07/14 15:02 (modification externe)
