Subversion Repositories Applications.annuaire

Rev

Rev 233 | Rev 273 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 233 Rev 272
Line 166... Line 166...
166
				
166
				
167
		$valeurs_recherchees = $tableau_valeur_collectees['valeurs_recherchees']; 
167
		$valeurs_recherchees = $tableau_valeur_collectees['valeurs_recherchees']; 
168
		$valeurs_mappees = $tableau_valeur_collectees['valeurs_mappees']; 
168
		$valeurs_mappees = $tableau_valeur_collectees['valeurs_mappees']; 
Line -... Line 169...
-
 
169
		$valeurs_get = $tableau_valeur_collectees['valeurs_get']; 
-
 
170
		
-
 
171
		if(isset($criteres['tous']) && $criteres['tous'] == 1) {
-
 
172
			$this->chargerModele('AnnuaireModele');
-
 
173
			$resultat_annuaire_mappe = $this->AnnuaireModele->chargerAnnuaireListeInscrits($id_annuaire,0,0);
169
		$valeurs_get = $tableau_valeur_collectees['valeurs_get']; 
174
		} else {
170
		
175
		
171
		// on recherche dans les métadonnées
176
			// on recherche dans les métadonnées
172
		$this->chargerModele('MetadonneeModele');
177
			$this->chargerModele('MetadonneeModele');
173
		// le résultat est un ensemble d'identifiants
178
			// le résultat est un ensemble d'identifiants
174
		$resultat_metadonnees = $this->MetadonneeModele->rechercherDansValeurMetadonnees($id_annuaire,$valeurs_recherchees, $exclusive);
179
			$resultat_metadonnees = $this->MetadonneeModele->rechercherDansValeurMetadonnees($id_annuaire,$valeurs_recherchees, $exclusive);
175
		
180
			
176
		// on recherche les infos dans la table annuaire mappée
181
			// on recherche les infos dans la table annuaire mappée
177
		// en incluant ou excluant les id déjà trouvées dans les metadonnées
182
			// en incluant ou excluant les id déjà trouvées dans les metadonnées
178
		// suivant le critères d'exclusivité ou non
183
			// suivant le critères d'exclusivité ou non
-
 
184
			$this->chargerModele('AnnuaireModele');
-
 
185
			$resultat_annuaire_mappe = $this->AnnuaireModele->rechercherInscritDansAnnuaireMappe($id_annuaire,$valeurs_mappees, $resultat_metadonnees, $exclusive, 0, 0);
179
		$this->chargerModele('AnnuaireModele');
186
					
180
		$resultat_annuaire_mappe = $this->AnnuaireModele->rechercherInscritDansAnnuaireMappe($id_annuaire,$valeurs_mappees, $resultat_metadonnees, $exclusive, 0, 0);
187
		}
181
								
188
		
Line 182... Line 189...
182
		$resultat_recherche = $resultat_annuaire_mappe['resultat'];
189
		$resultat_recherche = $resultat_annuaire_mappe['resultat'];
Line 198... Line 205...
198
	public function envoyerMail($expediteur, $destinataires, $sujet, $message) {
205
	public function envoyerMail($expediteur, $destinataires, $sujet, $message) {
Line 199... Line 206...
199
 
206
 
200
		if(!is_array($destinataires)) {
207
		if(!is_array($destinataires)) {
201
			$destinataires = array($destinataires);
208
			$destinataires = array($destinataires);
-
 
209
		}
-
 
210
		
-
 
211
		$message_antislashe = $this->encoderChainePourEnvoiMail($message);
-
 
212
		
-
 
213
		$message_texte = $this->filtrerChaine($message_antislashe);
-
 
214
		
-
 
215
		$message_html = $message_antislashe;
-
 
216
		
Line 202... Line 217...
202
		}
217
		$limite = "_----------=_parties_".md5(uniqid (rand()));
203
 
-
 
204
		foreach($destinataires as $destinataire) {
-
 
205
			// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
-
 
-
 
218
 
206
			$entetes  = 'MIME-Version: 1.0' . "\r\n";
219
		foreach($destinataires as $destinataire) {
207
			$entetes .= 'Content-type: text/html; charset='.Config::get('appli_encodage'). "\r\n";
-
 
208
			//$entetes .= 'To:'.$destinataire . "\r\n";
220
			
-
 
221
			// Définition d'un mail en text simple et html				
-
 
222
			$entetes .= 'From: '.$expediteur."\r\n";
209
			// En-têtes additionnels
223
			$entetes .= 'MIME-Version: 1.0' . "\r\n";
-
 
224
			$entetes .= "Content-Type: multipart/alternative; boundary=\"".$limite."\";\r\n";
-
 
225
			
-
 
226
			$contenu = "";
-
 
227
			
-
 
228
			$contenu .= "\r\n--".$limite."\r\n";
-
 
229
			$contenu .= "Content-Type: text/plain;";
-
 
230
			$contenu .= "charset=\"".Config::get('appli_encodage')."\";\r\n";
-
 
231
			$contenu .= "Content-Transfer-Encoding: quoted-printable;\r\n";
-
 
232
			$contenu .= "\r\n";
-
 
233
			$contenu .= $message_texte;
-
 
234
			
-
 
235
			$contenu .= "\r\n--".$limite."\r\n";
210
			$entetes .= 'From: '.$expediteur."\r\n";
236
			$contenu .= "Content-Type: text/html;";
-
 
237
			$contenu .= "charset=\"".Config::get('appli_encodage')."\";\r\n";
-
 
238
			$contenu .= "Content-Transfer-Encoding: quoted-printable;\r\n";
-
 
239
			$contenu .= "\r\n";
211
 
240
			$contenu .= nl2br($message_antislashe);
212
			$contenu_mail = $this->encoderChainePourEnvoiMail($message);
241
						
213
			$sujet = $this->encoderChainePourEnvoiMail($sujet);
242
			$sujet = $this->encoderChainePourEnvoiMail($sujet);
214
	
243
			
215
			if(!mail($destinataire, mb_encode_mimeheader($sujet), $contenu_mail, $entetes)) {
244
			if(!mail($destinataire, mb_encode_mimeheader($sujet), $contenu, $entetes)) {
216
				return false;
245
				return false;
Line 217... Line 246...
217
			}
246
			}
Line 231... Line 260...
231
	 */
260
	 */
232
	public function envoyerMailDirectOuModere($id_annuaire, $expediteur, $destinataires, $sujet = '', $message = '') {
261
	public function envoyerMailDirectOuModere($id_annuaire, $expediteur, $destinataires, $sujet = '', $message = '') {
Line 233... Line 262...
233
		
262
		
Line -... Line 263...
-
 
263
		$destinataires_mail = $this->obtenirMailParTableauId($id_annuaire, $destinataires);
-
 
264
		
234
		$destinataires_mail = $this->obtenirMailParTableauId($id_annuaire, $destinataires);
265
		$donnees['erreurs'] = false;
235
		
266
		
236
		$donnees['contenu_message'] = $this->filtrerChaine($message);
267
		$donnees['contenu_message'] = $this->filtrerChaine($message);
Line 237... Line 268...
237
		$sujet = $this->filtrerChaine($sujet);
268
		$sujet = $this->filtrerChaine($sujet);
238
		$message = $this->getVue(Config::get('dossier_squelettes_mails').'mail_messagerie',$donnees);
269
		$message = $this->getVue(Config::get('dossier_squelettes_mails').'mail_messagerie',$donnees);
Line 239... Line 270...
239
 
270
 
240
		// si on modere les mails et s'il y a trop de destinataires
271
		// si on modere les mails et s'il y a trop de destinataires
Line -... Line 272...
-
 
272
		if($this->moderer_mail && count($destinataires_mail) >= $this->seuil_moderation) {
-
 
273
 
-
 
274
			$stockage_mail = $this->stockerMailPourModeration($expediteur, $destinataires_mail, $sujet, $message);
-
 
275
			$donnees['moderation'] = true;
241
		if($this->moderer_mail && count($destinataires_mail) >= $this->seuil_moderation) {
276
			
Line 242... Line 277...
242
 
277
			if(!$stockage_mail) {
243
			$this->stockerMailPourModeration($expediteur, $destinataires_mail, $sujet, $message);
278
				$donnees['erreurs'] = true;
Line 244... Line 279...
244
			$donnees['moderation'] = true;
279
			}
245
			
280
			
246
		} else {
281
		} else {
Line -... Line 282...
-
 
282
			
-
 
283
			// sinon, envoi direct
-
 
284
			$envoi_mail_direct = $this->envoyerMail($expediteur, $destinataires_mail, $sujet, $message);
-
 
285
			
247
			
286
			if($this->moderation_copie) {
248
			// sinon, envoi direct
287
				$this->envoyerCopieMessageAuModerateur($id_annuaire, $expediteur, $sujet, $destinataires_mail, $message);
Line 249... Line 288...
249
			$this->envoyerMail($expediteur, $destinataires_mail, $sujet, $message);
288
			}
Line 401... Line 440...
401
 
440
 
Line 402... Line 441...
402
		return $this->envoyerMail($this->adresse_mail_annuaire, $this->mail_moderateur, 'Un message est en attente de modération', $contenu_mail);
441
		return $this->envoyerMail($this->adresse_mail_annuaire, $this->mail_moderateur, 'Un message est en attente de modération', $contenu_mail);
Line -... Line 442...
-
 
442
 
-
 
443
	}
-
 
444
	
-
 
445
	private function envoyerMailAvecPieceJointe($chemin, $type_mime_fichier) {
-
 
446
		
-
 
447
		/* Pièce jointe, on va dire que notre fichier s'appelle bidule.doc et qu'il se situe dans le répertoire courant */
-
 
448
		$fichier=file_get_contents($chemin);
-
 
449
		/* On utilise aussi chunk_split() qui organisera comme il faut l'encodage fait en base 64 pour se conformer aux standards */
-
 
450
		$fichier=chunk_split( base64_encode($fichier) );
-
 
451
		
-
 
452
		//Écriture de la pièce jointe
-
 
453
		$body = $body . "--" .$boundary. "\n
-
 
454
		Content-Type: application/msword; name=\"nom_fichier\"\r\n
-
 
455
		Content-Transfer-Encoding: base64\r\n
-
 
456
		Content-Disposition: attachment; filename=\"nom_fichier\"\r\n\n
-
 
457
		$fichier";
-
 
458
		
-
 
459
		//Fermeture de la frontière
-
 
460
		$body = $body . "--" . $boundary ."--";
403
 
461
		
Line 404... Line 462...
404
	}
462
	}
405
	
463