236 lines
6.8 KiB
PHP
236 lines
6.8 KiB
PHP
<?php
|
|
if (!defined('_ECRIRE_INC_VERSION')) return;
|
|
|
|
|
|
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 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 = []){
|
|
|
|
$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;
|
|
}
|
|
}
|