168,17 → 168,24 |
$valeurs_mappees = $tableau_valeur_collectees['valeurs_mappees']; |
$valeurs_get = $tableau_valeur_collectees['valeurs_get']; |
|
// on recherche dans les métadonnées |
$this->chargerModele('MetadonneeModele'); |
// le résultat est un ensemble d'identifiants |
$resultat_metadonnees = $this->MetadonneeModele->rechercherDansValeurMetadonnees($id_annuaire,$valeurs_recherchees, $exclusive); |
if(isset($criteres['tous']) && $criteres['tous'] == 1) { |
$this->chargerModele('AnnuaireModele'); |
$resultat_annuaire_mappe = $this->AnnuaireModele->chargerAnnuaireListeInscrits($id_annuaire,0,0); |
} else { |
|
// on recherche les infos dans la table annuaire mappée |
// en incluant ou excluant les id déjà trouvées dans les metadonnées |
// suivant le critères d'exclusivité ou non |
$this->chargerModele('AnnuaireModele'); |
$resultat_annuaire_mappe = $this->AnnuaireModele->rechercherInscritDansAnnuaireMappe($id_annuaire,$valeurs_mappees, $resultat_metadonnees, $exclusive, 0, 0); |
|
// on recherche dans les métadonnées |
$this->chargerModele('MetadonneeModele'); |
// le résultat est un ensemble d'identifiants |
$resultat_metadonnees = $this->MetadonneeModele->rechercherDansValeurMetadonnees($id_annuaire,$valeurs_recherchees, $exclusive); |
|
// on recherche les infos dans la table annuaire mappée |
// en incluant ou excluant les id déjà trouvées dans les metadonnées |
// suivant le critères d'exclusivité ou non |
$this->chargerModele('AnnuaireModele'); |
$resultat_annuaire_mappe = $this->AnnuaireModele->rechercherInscritDansAnnuaireMappe($id_annuaire,$valeurs_mappees, $resultat_metadonnees, $exclusive, 0, 0); |
|
} |
|
$resultat_recherche = $resultat_annuaire_mappe['resultat']; |
$nb_resultats = $resultat_annuaire_mappe['total']; |
|
200,19 → 207,41 |
if(!is_array($destinataires)) { |
$destinataires = array($destinataires); |
} |
|
$message_antislashe = $this->encoderChainePourEnvoiMail($message); |
|
$message_texte = $this->filtrerChaine($message_antislashe); |
|
$message_html = $message_antislashe; |
|
$limite = "_----------=_parties_".md5(uniqid (rand())); |
|
foreach($destinataires as $destinataire) { |
// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini |
$entetes = 'MIME-Version: 1.0' . "\r\n"; |
$entetes .= 'Content-type: text/html; charset='.Config::get('appli_encodage'). "\r\n"; |
//$entetes .= 'To:'.$destinataire . "\r\n"; |
// En-têtes additionnels |
|
// Définition d'un mail en text simple et html |
$entetes .= 'From: '.$expediteur."\r\n"; |
|
$contenu_mail = $this->encoderChainePourEnvoiMail($message); |
$entetes .= 'MIME-Version: 1.0' . "\r\n"; |
$entetes .= "Content-Type: multipart/alternative; boundary=\"".$limite."\";\r\n"; |
|
$contenu = ""; |
|
$contenu .= "\r\n--".$limite."\r\n"; |
$contenu .= "Content-Type: text/plain;"; |
$contenu .= "charset=\"".Config::get('appli_encodage')."\";\r\n"; |
$contenu .= "Content-Transfer-Encoding: quoted-printable;\r\n"; |
$contenu .= "\r\n"; |
$contenu .= $message_texte; |
|
$contenu .= "\r\n--".$limite."\r\n"; |
$contenu .= "Content-Type: text/html;"; |
$contenu .= "charset=\"".Config::get('appli_encodage')."\";\r\n"; |
$contenu .= "Content-Transfer-Encoding: quoted-printable;\r\n"; |
$contenu .= "\r\n"; |
$contenu .= nl2br($message_antislashe); |
|
$sujet = $this->encoderChainePourEnvoiMail($sujet); |
|
if(!mail($destinataire, mb_encode_mimeheader($sujet), $contenu_mail, $entetes)) { |
|
if(!mail($destinataire, mb_encode_mimeheader($sujet), $contenu, $entetes)) { |
return false; |
} |
} |
233,6 → 262,8 |
|
$destinataires_mail = $this->obtenirMailParTableauId($id_annuaire, $destinataires); |
|
$donnees['erreurs'] = false; |
|
$donnees['contenu_message'] = $this->filtrerChaine($message); |
$sujet = $this->filtrerChaine($sujet); |
$message = $this->getVue(Config::get('dossier_squelettes_mails').'mail_messagerie',$donnees); |
240,18 → 271,26 |
// si on modere les mails et s'il y a trop de destinataires |
if($this->moderer_mail && count($destinataires_mail) >= $this->seuil_moderation) { |
|
$this->stockerMailPourModeration($expediteur, $destinataires_mail, $sujet, $message); |
$stockage_mail = $this->stockerMailPourModeration($expediteur, $destinataires_mail, $sujet, $message); |
$donnees['moderation'] = true; |
|
if(!$stockage_mail) { |
$donnees['erreurs'] = true; |
} |
|
} else { |
|
// sinon, envoi direct |
$this->envoyerMail($expediteur, $destinataires_mail, $sujet, $message); |
$envoi_mail_direct = $this->envoyerMail($expediteur, $destinataires_mail, $sujet, $message); |
|
if($this->moderation_copie) { |
$this->envoyerCopieMessageAuModerateur($id_annuaire, $expediteur, $sujet, $destinataires_mail, $message); |
} |
|
if(!$envoi_mail_direct) { |
$donnees['erreurs'] = true; |
} |
|
$donnees['moderation'] = false; |
} |
|
403,6 → 442,25 |
|
} |
|
private function envoyerMailAvecPieceJointe($chemin, $type_mime_fichier) { |
|
/* Pièce jointe, on va dire que notre fichier s'appelle bidule.doc et qu'il se situe dans le répertoire courant */ |
$fichier=file_get_contents($chemin); |
/* On utilise aussi chunk_split() qui organisera comme il faut l'encodage fait en base 64 pour se conformer aux standards */ |
$fichier=chunk_split( base64_encode($fichier) ); |
|
//Écriture de la pièce jointe |
$body = $body . "--" .$boundary. "\n |
Content-Type: application/msword; name=\"nom_fichier\"\r\n |
Content-Transfer-Encoding: base64\r\n |
Content-Disposition: attachment; filename=\"nom_fichier\"\r\n\n |
$fichier"; |
|
//Fermeture de la frontière |
$body = $body . "--" . $boundary ."--"; |
|
} |
|
private function filtrerChaine($message) { |
|
return strip_tags($message); |