Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 271 → Rev 272

/trunk/controleurs/MessageControleur.php
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);