fonction envoyer_gamumail OK (y compris docs attachés). Intégration des en tant que mix id_auteurs et mails séparés par des virgules dans le CVT gamumail.
This commit is contained in:
parent
28e73628ae
commit
f0221e8221
5 changed files with 138 additions and 65 deletions
|
@ -8,21 +8,25 @@ include_spip('inc/filtres');
|
|||
* 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 string $destinataires = adresses mails et id_auteurs séparées par ,
|
||||
* si un des destinataire est au format numérique, on considère que c'est un id_auteur et on va choper son mail dans spip_auteurs
|
||||
* @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 = []){
|
||||
|
||||
function formulaires_gamumail_charger_dist($slug, $destinataires = 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;
|
||||
$destinataires = explode(',', $destinataires);
|
||||
foreach ($destinataires as $dest) {
|
||||
if (is_numeric($dest)) {
|
||||
if ($mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) {
|
||||
$Tmails[] = $mail;
|
||||
}
|
||||
}
|
||||
elseif (email_valide($dest)) {
|
||||
$Tmails[] = $dest;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -65,35 +69,64 @@ function formulaires_gamumail_charger_dist($slug, $auteur = 0, $Tclient = [], $T
|
|||
);
|
||||
|
||||
if ($f = charger_fonction('charger', 'gamumail', true)) {
|
||||
$valeurs = $f($valeurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect);
|
||||
$valeurs = $f($valeurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
|
||||
}
|
||||
if ($f = charger_fonction($slug . '_charger', 'gamumail', true)) {
|
||||
$valeurs = $f($valeurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect);
|
||||
$valeurs = $f($valeurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
|
||||
}
|
||||
|
||||
return $valeurs;
|
||||
}
|
||||
|
||||
function formulaires_gamumail_verifier_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []) :Array{
|
||||
|
||||
function formulaires_gamumail_verifier_dist($slug, $destinataires = 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';
|
||||
}
|
||||
|
||||
// le slug est il OK ?
|
||||
if (preg_match('/[^a-zA-Z0-9_\-]/', $slug)) {
|
||||
$erreurs['message_erreur'] = _T("gamumail:erreur_format_slug");
|
||||
}
|
||||
$res = sql_fetsel('slug', 'spip_gamumails', 'slug = "'.$slug.'"');
|
||||
if (!$res) {
|
||||
$erreurs['message_erreur'] = _T("gamumail:pas_de_slug");
|
||||
}
|
||||
|
||||
// vérif des destinataires
|
||||
$Tid_erreur = $Tmails_erreur = [];
|
||||
$pour = explode(',', _request('pour'));
|
||||
foreach ($pour as $dest) {
|
||||
if (is_numeric($dest)) {
|
||||
if (!$mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) {
|
||||
$Tid_erreur[] = $dest;
|
||||
}
|
||||
}
|
||||
elseif (!email_valide($dest)) {
|
||||
$Tmails_erreur[] = $dest;
|
||||
}
|
||||
}
|
||||
$erreurs['pour'] = '';
|
||||
if (count($Tid_erreur)) {
|
||||
$erreurs['pour'] .= _T("gamumail:id_destinataires_sans_mails", ['ids_erreur' => join(', ', $Tid_erreur)]).' ';
|
||||
}
|
||||
if (count($Tmails_erreur)) {
|
||||
$erreurs['pour'] .= _T("gamumail:mails_destinataires_en_erreur", ['mails_erreur' => join(', ', $Tmails_erreur)]);
|
||||
}
|
||||
|
||||
// surcharges
|
||||
if ($f = charger_fonction('verifier', 'gamumail', true)) {
|
||||
$erreurs = $f($erreurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect);
|
||||
$erreurs = $f($erreurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
|
||||
}
|
||||
if ($f = charger_fonction($slug . '_verifier', 'gamumail', true)) {
|
||||
$erreurs = $f($erreurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect);
|
||||
$erreurs = $f($erreurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
|
||||
}
|
||||
|
||||
return $erreurs;
|
||||
}
|
||||
|
||||
function formulaires_gamumail_traiter_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []) :Array{
|
||||
|
||||
function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []) :Array{
|
||||
include_spip('inc/texte');
|
||||
include_spip('classes/facteur');
|
||||
|
||||
|
@ -112,14 +145,25 @@ function formulaires_gamumail_traiter_dist($slug, $auteur = 0, $Tclient = [], $T
|
|||
$cc = explode(',', $cc);
|
||||
$cci = explode(',', $cci);
|
||||
|
||||
$Tmails = [];
|
||||
foreach ($pour as $dest) {
|
||||
if (is_numeric($dest)) {
|
||||
if ($mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) {
|
||||
$Tmails[] = $mail;
|
||||
}
|
||||
}
|
||||
elseif (email_valide($dest)) {
|
||||
$Tmails[] = $dest;
|
||||
}
|
||||
}
|
||||
|
||||
$pieces_jointes = [];
|
||||
|
||||
if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) {
|
||||
$options = $f($options, $auteur, $Tclient, $Tpdf);
|
||||
$options = $f($options, $destinataires, $Tclient, $Tpdf);
|
||||
}
|
||||
if ($f = charger_fonction($slug . '_traiter_av_pdf', 'gamumail', true)) {
|
||||
$options = $f($options, $auteur, $Tclient, $Tpdf);
|
||||
$options = $f($options, $destinataires, $Tclient, $Tpdf);
|
||||
}
|
||||
|
||||
// les documents joints
|
||||
|
@ -198,17 +242,17 @@ function formulaires_gamumail_traiter_dist($slug, $auteur = 0, $Tclient = [], $T
|
|||
];
|
||||
|
||||
if ($f = charger_fonction('traiter', 'gamumail', true)) {
|
||||
$corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect);
|
||||
$corps = $f($corps, $options, $slug, $Tmails, $Tclient, $Tpdf, $redirect);
|
||||
}
|
||||
if ($f = charger_fonction($slug . '_traiter', 'gamumail', true)) {
|
||||
$corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect);
|
||||
$corps = $f($corps, $options, $slug, $Tmails, $Tclient, $Tpdf, $redirect);
|
||||
}
|
||||
|
||||
$envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
|
||||
$ok = $envoyer_mail($pour, $sujet, $corps);
|
||||
$ok = $envoyer_mail($Tmails, $sujet, $corps);
|
||||
if (!$ok) {
|
||||
spip_log("Erreur d'envoi du mail : ","roc_mail");
|
||||
spip_log($corps,"roc");
|
||||
spip_log("Erreur d'envoi du mail : ","gamumail");
|
||||
spip_log($corps,"gamumail");
|
||||
$retour['message_erreur'] = _T("gamumail:erreur_envoi_mail");
|
||||
} else {
|
||||
$retour['message_ok'] = _T('gamumail:mail_envoye');
|
||||
|
@ -227,9 +271,3 @@ function formulaires_gamumail_traiter_dist($slug, $auteur = 0, $Tclient = [], $T
|
|||
|
||||
return $retour;
|
||||
}
|
||||
|
||||
function gamumail_supprimer_si_vide($v){
|
||||
if (!empty($v)) {
|
||||
return $v;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,6 @@
|
|||
</head>
|
||||
<body style="background-color:rgb(255, 255, 255)">
|
||||
<div class="mail">
|
||||
[(#LOGO_SITE_SPIP|image_reduire{200})]
|
||||
[<img src="(#LOGO_SITE_SPIP|image_reduire{200}|extraire_attribut{src}|url_absolue)" >]
|
||||
<br>
|
||||
<br>
|
||||
|
|
|
@ -17,6 +17,11 @@ function gamumail_TabClient($objet, $id_objet, $champ){
|
|||
return compact('objet', 'id_objet', 'champ');
|
||||
}
|
||||
|
||||
function gamumail_supprimer_si_vide($v){
|
||||
if (!empty($v)) {
|
||||
return $v;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* modèles pour surcharge des fonctions du CVT gamumail
|
||||
|
@ -27,7 +32,7 @@ function gamumail_TabClient($objet, $id_objet, $champ){
|
|||
/**
|
||||
* fonction appelée en fin de gamumail_charger_dist()
|
||||
*
|
||||
* $valeurs = array(
|
||||
* @return $valeurs = array(
|
||||
* "slug" => $slug,
|
||||
* 'sujet' => $gamuMail['sujet'],
|
||||
* 'texte' => $gamuMail['texte'],
|
||||
|
@ -40,10 +45,8 @@ function gamumail_TabClient($objet, $id_objet, $champ){
|
|||
* 'options' => $options
|
||||
* );
|
||||
*
|
||||
* @return array $valeurs
|
||||
*
|
||||
**/
|
||||
function gamumail_charger_dist($valeurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect) {
|
||||
function gamumail_charger_dist($valeurs, $options, $slug, $destinataires='', $Tclient=[], $Tpdf=[], $redirect='') {
|
||||
|
||||
return $valeurs;
|
||||
}
|
||||
|
@ -54,7 +57,7 @@ function gamumail_charger_dist($valeurs, $options, $slug, $auteur, $Tclient, $Tp
|
|||
* @return array $erreurs
|
||||
*
|
||||
**/
|
||||
function gamumail_verifier_dist($erreurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect) {
|
||||
function gamumail_verifier_dist($erreurs, $options, $slug, $destinataires='', $Tclient=[], $Tpdf=[], $redirect='') {
|
||||
|
||||
return $erreurs;
|
||||
}
|
||||
|
@ -63,7 +66,7 @@ function gamumail_verifier_dist($erreurs, $options, $slug, $auteur, $Tclient, $T
|
|||
* fonctions appelée en fin de gamumail_traiter_dist()
|
||||
*
|
||||
* @param string $slug modele du mail a charger
|
||||
* @param int|string $auteur id_auteur ou email du destinataire
|
||||
* @param string $destinataires = adresses mails et id_auteurs séparées par ,
|
||||
* @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
|
||||
|
@ -78,7 +81,7 @@ function gamumail_verifier_dist($erreurs, $options, $slug, $auteur, $Tclient, $T
|
|||
* ];
|
||||
*
|
||||
**/
|
||||
function gamumail_traiter_dist($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect) {
|
||||
function gamumail_traiter_dist($corps, $options, $slug, $destinataires='', $Tclient=[], $Tpdf=[], $redirect) {
|
||||
|
||||
$html = $corps['html'];
|
||||
$html = str_replace('@@truc_a_remplacer@@', 'le machin qui remplace', $html);
|
||||
|
|
|
@ -7,11 +7,13 @@ if (!defined('_ECRIRE_INC_VERSION')){
|
|||
* fonction pour préparer et envoyer un mail basé sur un slug gamumail
|
||||
*
|
||||
* @param string $slug
|
||||
* @param string $destinataires (éventuellement plusieurs adresses séparées par ,)
|
||||
* @param string $destinataires = adresses mails et id_auteur séparées par ,
|
||||
* si un des destinataire est au format numérique, on considère que c'est un id_auteur et on va choper son mail dans spip_auteurs
|
||||
* @param array $options (au cas où...)
|
||||
* $options['debug' => true] pour afficher le $corps final sans envoyer le mail
|
||||
*
|
||||
**/
|
||||
function envoyer_gamumail($slug, $destinataires, $options = []) {
|
||||
function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
|
||||
include_spip('inc/texte');
|
||||
include_spip('classes/facteur');
|
||||
|
||||
|
@ -26,8 +28,8 @@ function envoyer_gamumail($slug, $destinataires, $options = []) {
|
|||
// contenu
|
||||
$res = sql_fetsel('*', 'spip_gamumails', 'slug = "'.$slug.'"');
|
||||
if ($res) {
|
||||
$sujet = $res('sujet');
|
||||
$html = propre($res('texte'));
|
||||
$sujet = $res['sujet'];
|
||||
$html = propre($res['texte']);
|
||||
$texte = facteur_mail_html2text($html);
|
||||
$id_docs = $res['id_docs'];
|
||||
}
|
||||
|
@ -37,32 +39,43 @@ function envoyer_gamumail($slug, $destinataires, $options = []) {
|
|||
}
|
||||
|
||||
// destinataires
|
||||
$pour = explode(',', $destinataires);
|
||||
$cc = explode(',', lire_config('gamumail/mail_cc'));
|
||||
$cci = explode(',', lire_config('gamumail/mail_cci'));
|
||||
$destinataires = explode(',', $destinataires);
|
||||
$pour = array();
|
||||
foreach ($destinataires as $dest) {
|
||||
if (is_numeric($dest)) {
|
||||
if ($mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) {
|
||||
$pour[] = $mail;
|
||||
}
|
||||
}
|
||||
elseif (email_valide($dest)) {
|
||||
$pour[] = $dest;
|
||||
}
|
||||
}
|
||||
|
||||
function test_vide($elem) {
|
||||
return ($elem != NULL AND $elem != '');
|
||||
}
|
||||
$cc = array_filter(explode(',', lire_config('gamumail/mail_cc')), 'test_vide');
|
||||
$cci = array_filter(explode(',', lire_config('gamumail/mail_cci')), 'test_vide');
|
||||
|
||||
// si on a plusieurs destinataires, les passer en cci et mettre le compte expéditeur du site en to
|
||||
if (count($pour) > 1) {
|
||||
$cci = array_unique(array_merge($cci, $pour));
|
||||
$pour = [lire_config('facteur/adresse_envoi_email',lire_config('email_webmaster'))];
|
||||
}
|
||||
|
||||
// docs attachés
|
||||
function entier($val) {
|
||||
return is_integer($val);
|
||||
}
|
||||
$Tid_doc = array_filter(explode(',', $id_docs), 'entier');
|
||||
//$Tpdfs_ok = _request('Tpdfs_ok');
|
||||
|
||||
// documents joints
|
||||
$pieces_jointes = [];
|
||||
/*
|
||||
if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) {
|
||||
$options = $f($options, $auteur, $Tclient, $Tpdf);
|
||||
|
||||
// filtrage des id_docs attachés au slug (ici on ne veut que des id_docs valides)
|
||||
$Tid_doc = [];
|
||||
$id_docs = array_filter(explode(',', $id_docs), 'is_numeric');
|
||||
foreach ($id_docs as $doc) {
|
||||
if ($res = sql_getfetsel('id_document', 'spip_documents', 'id_document='.$doc)) {
|
||||
$Tid_doc[] = $doc;
|
||||
}
|
||||
if ($f = charger_fonction($slug . '_traiter_av_pdf', 'gamumail', true)) {
|
||||
$options = $f($options, $auteur, $Tclient, $Tpdf);
|
||||
}
|
||||
*/
|
||||
// les documents joints
|
||||
// récup des paramètres des fichiers à attacher
|
||||
if (!empty($Tid_doc)) {
|
||||
foreach ($Tid_doc as $id_document) {
|
||||
$Tdocument = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_document));
|
||||
|
@ -70,7 +83,8 @@ function envoyer_gamumail($slug, $destinataires, $options = []) {
|
|||
$extension = $Tdocument['extension'];
|
||||
if ($Tdocument['titre']) {
|
||||
$nom_fichier = $Tdocument['titre'] .".".$extension;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
$nom_fichier = basename($Tdocument['fichier']);
|
||||
}
|
||||
$type_mime = bigup_get_mime_type_extension($extension);
|
||||
|
@ -84,6 +98,14 @@ function envoyer_gamumail($slug, $destinataires, $options = []) {
|
|||
}
|
||||
/*
|
||||
// les pdfs
|
||||
$Tpdfs_ok = _request('Tpdfs_ok');
|
||||
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);
|
||||
}
|
||||
|
||||
$Tpdf_dell = [];
|
||||
if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) {
|
||||
if (array_key_exists('fichier', $Tpdf)) {
|
||||
|
@ -136,7 +158,6 @@ function envoyer_gamumail($slug, $destinataires, $options = []) {
|
|||
'cci' => $cci,
|
||||
'pieces_jointes' => $pieces_jointes
|
||||
];
|
||||
|
||||
if ($f = charger_fonction('traiter', 'gamumail', true)) {
|
||||
$corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect);
|
||||
}
|
||||
|
@ -144,11 +165,20 @@ function envoyer_gamumail($slug, $destinataires, $options = []) {
|
|||
$corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect);
|
||||
}
|
||||
|
||||
// si debug on affiche sans envoyer le mail
|
||||
if ($options['debug']) {
|
||||
echo '$pour : ';
|
||||
var_dump($pour);
|
||||
echo '<br>$sujet: '.$sujet.'<br>$corps : ';
|
||||
var_dump($corps);
|
||||
die;
|
||||
}
|
||||
|
||||
$envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
|
||||
$ok = $envoyer_mail($pour, $sujet, $corps);
|
||||
if (!$ok) {
|
||||
spip_log("Erreur d'envoi du mail : ","gamumail");
|
||||
spip_log($corps,"roc");
|
||||
spip_log($corps,"gamumail");
|
||||
$retour['message_erreur'] = _T("gamumail:erreur_envoi_mail");
|
||||
} else {
|
||||
$retour['message_ok'] = _T('gamumail:mail_envoye');
|
||||
|
|
|
@ -30,9 +30,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
|
|||
'info_aucun_gamumail' => 'Aucun gamumail',
|
||||
'info_gamumails_auteur' => 'Les gamumails de cet auteur',
|
||||
'info_nb_gamumails' => '@nb@ gamumails',
|
||||
'id_destinataires_sans_mails' => 'Les id_auteur @ids_erreur@ n\'ont pas d\'adresse mail',
|
||||
|
||||
//MM
|
||||
"mail_envoye" => "Votre message a bien été envoyé",
|
||||
'mails_destinataires_en_erreur' => 'Les destinataires @mails_erreur@ ne sont pas des adresses mails valides',
|
||||
|
||||
// P
|
||||
'pas_de_slug' => 'Pas de slug avec cet identifiant',
|
||||
|
|
Loading…
Add table
Reference in a new issue