'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 = []){ $Tmails = []; if (intval($auteur)) { $Tmails[] = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.intval($auteur)); } elseif (is_string($auteur)) { if (email_valide($auteur)) { $Tmails[] = $auteur; } } if (is_array($Tclient) and count($Tclient)) { if (array_key_exists('objet', $Tclient)) { $Tclient = [$Tclient]; } foreach ($Tclient as $o) { $table = table_objet_sql($o['objet']); $id = id_table_objet($o['objet']); $mail = sql_getfetsel("{$o['champ']}", $table, "$id=".intval($o['id_objet'])); if (email_valide($mail)) { $Tmails[] = $mail; } } } $TFichierPdf = []; if (is_array($Tpdf) and count($Tpdf)) { if (array_key_exists('fichier', $Tpdf)) { $Tpdf = [$Tpdf]; } foreach ($Tpdf as $pdf) { $TFichierPdf[] = $pdf['fichier']; } } $gamuMail = sql_fetsel('sujet, texte', 'spip_gamumails', 'slug='.sql_quote($slug)); $valeurs = array( "slug" => $slug, 'sujet' => $gamuMail['sujet'], 'texte' => $gamuMail['texte'], 'pour' => implode(',', $Tmails), 'cc' => lire_config('gamumail/mail_cc'), 'cci' => lire_config('gamumail/mail_cci'), 'TFichierpdfs' => $TFichierPdf, 'Tpdfs_ok' => [], 'Tid_doc' => [], 'options' => $options ); if ($f = charger_fonction('charger', 'gamumail', true)) { $valeurs = $f($valeurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); } if ($f = charger_fonction($slug . '_charger', 'gamumail', true)) { $valeurs = $f($valeurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); } return $valeurs; } function formulaires_gamumail_verifier_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []) :Array{ $erreurs = array(); //champs obligatoire foreach (array ('pour', 'sujet', 'texte') as $obligatoire) { if (!_request($obligatoire)) $erreurs[$obligatoire] = 'Ce champs est obligatoire'; } if ($f = charger_fonction('verifier', 'gamumail', true)) { $erreurs = $f($erreurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); } if ($f = charger_fonction($slug . '_verifier', 'gamumail', true)) { $erreurs = $f($erreurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); } return $erreurs; } function formulaires_gamumail_traiter_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []) :Array{ include_spip('inc/texte'); include_spip('classes/facteur'); $retour = array(); $pour = _request('pour'); $cc = _request('cc'); $cci = _request('cci'); $sujet = _request('sujet'); $html = propre(_request('texte')); $Tid_doc = _request('Tid_doc'); $Tpdfs_ok = _request('Tpdfs_ok'); $texte = facteur_mail_html2text($html); $pour = explode(',', $pour); $cc = explode(',', $cc); $cci = explode(',', $cci); $pieces_jointes = []; if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) { $options = $f($options, $auteur, $Tclient, $Tpdf); } if ($f = charger_fonction($slug . '_traiter_av_pdf', 'gamumail', true)) { $options = $f($options, $auteur, $Tclient, $Tpdf); } // les documents joints if (!empty($Tid_doc)) { foreach ($Tid_doc as $id_document) { $Tdocument = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_document)); $destination = _DIR_IMG.$Tdocument['fichier']; $extension = $Tdocument['extension']; if ($Tdocument['titre']) { $nom_fichier = $Tdocument['titre'] .".".$extension; } else { $nom_fichier = basename($Tdocument['fichier']); } $type_mime = bigup_get_mime_type_extension($extension); $pieces_jointes[] = [ 'chemin' => $destination, 'nom' => $nom_fichier, 'encodage' => 'base64', 'mime' => $type_mime ]; } } // les pdfs $Tpdf_dell = []; if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) { if (array_key_exists('fichier', $Tpdf)) { $Tpdf = [$Tpdf]; } $recup_pdf = charger_fonction('charger_pdf','inc'); foreach ($Tpdfs_ok as $pdf) { foreach ($Tpdf as $p) { if ($p['fichier'] === $pdf) { $c = $p['contexte']; $nom = $p['nom']; } } $pdf = $recup_pdf($pdf, $c); $nom_fichier = $nom.'.pdf'; $destination = _DIR_TMP.basename($nom_fichier); $Tpdf_dell[] = $destination; file_put_contents($destination,$pdf); $pieces_jointes[] = [ 'chemin' => $destination, 'nom' => $nom_fichier, 'encodage' => 'base64', 'mime' => 'application/pdf' ]; } } $html_header = ''; if(find_in_path('gamumail/html_header.html')){ $html_header = recuperer_fond('gamumail/html_header', $options); } elseif (find_in_path($slug . '_html_header.html')) { $html_header = recuperer_fond('gamumail/'.$slug . '_html_header', $options); } $html_footer = ''; if(find_in_path('gamumail/html_footer.html')){ $html_footer = recuperer_fond('gamumail/html_footer', $options); }elseif (find_in_path($slug . '_html_footer.html')) { $html_footer = recuperer_fond('gamumail/'.$slug . '_html_footer', $options); } $html = $html_header . $html . $html_footer; $corps = [ 'html' => $html, 'texte' => $texte, 'cc' => $cc, 'cci' => $cci, 'pieces_jointes' => $pieces_jointes ]; if ($f = charger_fonction('traiter', 'gamumail', true)) { $corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); } if ($f = charger_fonction($slug . '_traiter', 'gamumail', true)) { $corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); } $envoyer_mail = charger_fonction('envoyer_mail', 'inc/'); $ok = $envoyer_mail($pour, $sujet, $corps); if (!$ok) { spip_log("Erreur d'envoi du mail : ","roc_mail"); spip_log($corps,"roc"); $retour['message_erreur'] = _T("gamumail:erreur_envoi_mail"); } else { $retour['message_ok'] = _T('gamumail:mail_envoye'); } // on supprime les pdfs temporaires if (count($Tpdf_dell)) { foreach ($Tpdf_dell as $pdf) { unlink($pdf); } } if ($redirect) { $retour['redirect'] = $redirect; } return $retour; } function gamumail_supprimer_si_vide($v){ if (!empty($v)) { return $v; } }