# gamuMail > P.O.C pour généraliser un formulaire d'envoi de message ## Il gere nativement : * Pour * Cc en meta : **gamumail/mail_cc** * Cci en en meta : **gamumail/mail_cci** * Sujet * Texte * Les documents attachés au modèle (cf ci-dessous) * une liste de pdf (il faut le plugin spipdf) ![interface](doc/interface.png "interface") ## Il gere des modèles de contenu pour : * Sujet * Texte --- * Chaque modèle à un identifiant textuel : **slug** qui doit etre unique. Il ne peut etre creer / modifié QUE par les webmestres * Pour gerer ses modèles, il faut inclure dans une page : ```html ``` ![configuration](doc/configuration.png "Exemple de configuration") ## Personnalisation du formulaire d'envoi ### Dans le html On peut ajouter des documents via un fichier du type : **gamumail/SLUG_fichier.html** SLUG doit etre remplacé par le nom du slug du modèle > **/!\ Le name doit etre Tid_doc** > ex de fichier : ```html

Fichiers attachés au séjour

``` 3 branchements possibles : * gamumail/SLUG_debutform.html -> au début du form * gamumail/SLUG_soustexte.html -> sous le contenu du mail, avant les pièces jointes * gamumail/SLUG_fichier.html -> à la fin du formulaire ### Dans le php #### 1. Appel du formualire > Args du formulaire : > ```php /** * formulaire générique pour envoyer des mails avec pieces attachés * * @param string $slug modele du mail a charger * @param int|string $auteur id_auteur ou email du destinataire * @param array $Tclient []['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] * ou * ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] * @param array $Tpdf []['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] * ou * ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] * @param string $redirect * @param array $options * @return array $valeurs */ function formulaires_gamumail_charger_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){ } ``` > l'Argument $Tclient est utilisé pour récupérer des emails dans un ou X autres Objets SPIP #### 2. modification de chaque étape: charger / vérifier / traiter Pour chaque étape, on peut modifier l'Array de sortie : * charger -> $valeurs * verifier -> $erreurs * traiter -> $corps (array du message envoyé à facteur) Pour cela, il faut creer une fonction du type (qui utilise les memes arg que les fonctions CVT + premier arg l'Array que l'on veut modifier): * pour charger : **gamumail/charger.php** pour tous les formulaires ou * pour charger : **gamumail/SLUG_charger.php** avec une fonction : ```php function gamumail_SLUG_charger($valeurs, $options = []){ return $valeurs; } ``` * pour verifier : **gamumail/verifier.php** pour tous les formulaires ou * pour verifier : **gamumail/SLUG_verifier.php** avec une fonction : ```php function gamumail_SLUG_verifier($erreurs, $options = []){ return $erreurs; } ``` * pour traiter : **gamumail/traiter.php** pour tous les formulaires ou * pour traiter : **gamumail/SLUG_traiter.php** avec une fonction ex: ```php function gamumail_contrat_resa_traiter($corps, $options = []){ if (array_key_exists('id_article', $options)) { $htmlAdd = ''; $texteAdd = ''; $id_article = intval($options['id_article']); $htmlAdd = recuperer_fond('gamumail/traiter_contrat_resa', ['id_article' => $id_article]); if (!empty($htmlAdd)) { include_spip('classes/facteur'); $html = $corps['html']; $html = str_replace('@@pieces_jointes@@', $htmlAdd, $html); $texte = facteur_mail_html2text($html); $corps['html'] = $html; $corps['texte'] = $texte; } } return $corps; } ``` #### 3. Ajouter un header / footer dans notre content html on peut définir un header / footer pour les messages : * gamumail/html_header.html => header pour tous les mails * gamumail/html_footer.html => footer pour tous les mails * gamumail/SLUG_html_header.html => pour les mails du modele SLUG * gamumail/SLUG_html_footer.html => pour les mails du modele SLUG