# 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

``` ### 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_SLUG.php** avec une fonction : ```php function gamumail_charger_SLUG($valeurs, $options = []){ return $valeurs; } ``` * pour verifier : **gamumail/verifier_SLUG.php** avec une fonction : ```php function gamumail_verifier_SLUG($erreurs, $options = []){ return $erreurs; } ``` * pour traiter : **gamumail/traiter_SLUG.php** avec une fonction ex: ```php function gamumail_traiter_contrat_resa($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; } ```