Outils pour utilisateurs

Outils du site


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.1720962128.txt.gz · Dernière modification : 2024/07/14 15:02 de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki