Subversion Repositories Applications.annuaire

Rev

Rev 405 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
15 aurelien 1
<?php
2
/**
3
* PHP Version 5
4
*
5
* @category  PHP
6
* @package   annuaire
7
* @author    aurelien <aurelien@tela-botanica.org>
8
* @copyright 2010 Tela-Botanica
9
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
10
* @version   SVN: <svn_id>
11
* @link      /doc/annuaire/
41 aurelien 12
*
15 aurelien 13
*/
14
 
41 aurelien 15
/**
120 aurelien 16
 * Controleur chargé de la vérification des formulaires
41 aurelien 17
 * Remplace aussi les valeurs lors des actions spéciales comme la modification du mail
120 aurelien 18
 * (l'inscription à la lettre d'actu se fait aussi ici même si ça n'est pas totalement sa place)
41 aurelien 19
 */
120 aurelien 20
class VerificationControleur extends AppControleur {
15 aurelien 21
 
22
	/**
41 aurelien 23
	 * Vérifie que les valeurs des champs de mappage et les valeurs obligatoires d'un annuaire donné
15 aurelien 24
	 * sont correctes
25
	 * @param int $id_annuaire l'identifiant de l'annuaire
26
	 * @param Array $valeurs les valeurs à vérifier
27
	 */
41 aurelien 28
	public function verifierErreursChampsSelonType($id_annuaire, $valeurs, $tableau_mappage) {
15 aurelien 29
 
60 aurelien 30
		$erreurs = array();
15 aurelien 31
 
32
		$this->chargerModele('AnnuaireModele');
41 aurelien 33
		$tableau_champs_obligatoire = $this->AnnuaireModele->obtenirChampsObligatoires($id_annuaire);
148 aurelien 34
 
35
		if(!$tableau_champs_obligatoire) {
36
			$tableau_champs_obligatoire = array();
37
		}
15 aurelien 38
 
41 aurelien 39
		foreach($valeurs as $id => $valeur_champ) {
15 aurelien 40
 
41 aurelien 41
			$type = $valeur_champ['type'];
42
			$valeur = $valeur_champ['valeur'];
43
			$condition = $valeur_champ['condition'];
15 aurelien 44
 
41 aurelien 45
			switch($type) {
46
 
47
				case 'text':
218 aurelien 48
 
41 aurelien 49
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && trim($valeur) == '') {
50
						$erreurs[$id] = 'Ce champ est obligatoire';
51
					}
52
				break;
53
 
54
				case 'mail':
55
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && trim($valeur) == '') {
56
						$erreurs[$id] = 'Le mail est obligatoire ';
57
					}
58
 
59
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && !$this->mailValide($valeur)) {
89 aurelien 60
						$erreurs[$id] = 'Le mail est invalide ';
41 aurelien 61
					}
62
 
63
					if($this->AnnuaireModele->utilisateurExisteParMail($id_annuaire, $valeur)) {
89 aurelien 64
						$erreurs[$id] = 'Cet email est déjà utilisé par quelqu\'un d\'autre ';
41 aurelien 65
					}
66
				break;
429 aurelien 67
 
68
				case 'select':
69
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && trim($valeur) == '') {
70
						$erreurs[$id] = 'Ce champ est obligatoire';
71
					}
72
				break;
41 aurelien 73
 
74
				case 'password':
75
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && trim($valeur) == ''
76
					|| $valeur != $condition) {
89 aurelien 77
						$erreurs[$id] = 'Le mot de passe est invalide';
41 aurelien 78
					}
79
				break;
80
 
81
				// cas du champ checkbox
82
				case 'checkbox':
83
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && trim($condition) != 'on') {
84
						$erreurs[$id] = 'N\'oubliez pas de cocher cette case';
85
					}
86
				break;
87
 
88
				default:
60 aurelien 89
 
41 aurelien 90
				break;
91
			}
15 aurelien 92
		}
93
 
60 aurelien 94
		if(count($erreurs) == 0) {
95
			$erreurs = false;
96
		}
97
 
15 aurelien 98
		return $erreurs;
99
	}
100
 
30 aurelien 101
	/**
102
	 * Vérifie les valeurs des champs pour la modification d'un formulaire
103
	 */
104
	public function verifierErreurChampModification($id_annuaire, $id_utilisateur, $type ,$valeur, $confirmation = false) {
15 aurelien 105
 
30 aurelien 106
		$retour = array(true,false);
15 aurelien 107
 
30 aurelien 108
		switch($type) {
109
			case 'mail':
110
				if(!$this->mailValide($valeur)) {
111
					$retour[0] = false;
112
					$retour[1] = 'mail invalide';
113
					break;
114
				}
15 aurelien 115
 
30 aurelien 116
				$this->chargerModele('AnnuaireModele');
117
				$ancien_mail = $this->AnnuaireModele->obtenirMailParId($id_annuaire,$id_utilisateur);
15 aurelien 118
 
30 aurelien 119
				if($ancien_mail != $valeur && $this->AnnuaireModele->utilisateurExisteParMail($id_annuaire, $valeur)) {
120
					$retour[0] = false;
121
					$retour[1] = 'cet email est déjà utilisé par quelqu\'un d\'autre';
122
				}
123
 
124
			break;
125
 
126
			case 'password':
127
 
128
				if(trim($valeur) != trim($confirmation)) {
129
					$retour[0] = false;
130
					$retour[1] = 'mot de passe invalide';
131
				}
15 aurelien 132
		}
133
 
30 aurelien 134
		return $retour;
15 aurelien 135
	}
136
 
137
	public function remplacerValeurChampPourInsertion($type, $valeur, $mail_utilisateur) {
138
 
139
		$valeur_modifiee = $valeur;
140
 
141
		switch($type) {
142
 
143
			// cas du champ texte, à priori, rien de particulier
144
			case 'text':
145
				$valeur_modifiee = $valeur;
146
			break;
147
 
148
			// cas du champ password : on le crypte
149
			case 'password':
150
				$valeur_modifiee = $this->encrypterMotDePasse($valeur);
151
			break;
152
 
153
			// cas du champ checkbox
154
			case 'checkbox':
155
				// Si c'est un groupe checkbox, alors c'est une liste de checkbox liée à une ontologie
156
				if(is_array($valeur)) {
157
					// on stocke les valeurs d'ontologies liées au cases cochées
158
					$valeur_modifiee = implode(Config::get('separateur_metadonnee'), array_keys($valeur));
159
 
160
				} else {
161
					if($valeur == 'on') {
162
						// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)
163
						$valeur_modifiee = 1;
164
					} else {
165
						$valeur_modifiee = 0;
166
					}
167
				}
168
 
169
			break;
170
 
171
			case 'lettre':
172
					if($valeur == 'on') {
173
						// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)
174
						$valeur_modifiee = 1;
175
						// Si c'est une inscription à la lettre d'actualité, on appelle la fonction d'inscription
176
						$lettre_controleur = new LettreControleur();
177
						$lettre_controleur->inscriptionLettreActualite($mail_utilisateur);
178
					} else {
179
						$valeur_modifiee = 0;
180
					}
30 aurelien 181
			break;
15 aurelien 182
 
183
			default:
184
				$valeur_modifiee = $valeur;
185
			break;
186
		}
187
 
188
		return $valeur_modifiee;
189
	}
190
 
30 aurelien 191
	public function remplacerValeurChampPourModification($id_annuaire, $id_utilisateur, $type, $valeur, $mail_utilisateur) {
15 aurelien 192
 
193
		$valeur_modifiee = $valeur;
194
 
195
		switch($type) {
196
 
197
			// cas du champ texte, à priori, rien de particulier
198
			case 'text':
199
				$valeur_modifiee = $valeur;
200
			break;
201
 
202
			// cas du champ password : on le crypte
203
			case 'password':
204
				$valeur_modifiee = $this->encrypterMotDePasse($valeur);
205
			break;
206
 
207
			// cas du champ checkbox
208
			case 'checkbox':
139 aurelien 209
 
15 aurelien 210
				// Si c'est un groupe checkbox, alors c'est une liste de checkbox liée à une ontologie
211
				if(is_array($valeur)) {
212
 
213
					// on stocke les valeurs d'ontologies liées au cases cochées
214
					$valeur_modifiee = implode(Config::get('separateur_metadonnee'), array_keys($valeur));
215
 
216
				} else {
161 aurelien 217
 
218
					if($valeur == 'on' || $valeur == '1') {
15 aurelien 219
						// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)
220
						$valeur_modifiee = 1;
221
					} else {
222
						$valeur_modifiee = 0;
223
					}
224
				}
225
 
226
			break;
227
 
228
			case 'lettre':
229
 
230
				// Si c'est une inscription à la lettre d'actualité, on appelle la fonction d'inscription
231
				$lettre_controleur = new LettreControleur();
232
 
30 aurelien 233
				$this->chargerModele('AnnuaireModele');
234
				$ancien_mail = $this->AnnuaireModele->obtenirMailParId($id_annuaire, $id_utilisateur);
235
 
236
				$changement_mail = false;
237
 
238
				if($ancien_mail != $mail_utilisateur) {
239
					$changement_mail = true;
240
				}
241
 
161 aurelien 242
				if($valeur == 'on' || $valeur == '1') {
56 aurelien 243
					// on stocke 1 pour indique que la case est cochée (comme la checkbox oui/non)
15 aurelien 244
					$valeur_modifiee = 1;
30 aurelien 245
 
56 aurelien 246
					// si le mail a changé on désinscrit l'ancien mail et on inscrit le nouveau
30 aurelien 247
					if($changement_mail) {
248
						$lettre_controleur->ModificationInscriptionLettreActualite($ancien_mail, $mail_utilisateur);
249
					} else {
143 aurelien 250
 
30 aurelien 251
						$lettre_controleur->inscriptionLettreActualite($mail_utilisateur);
252
					}
253
 
15 aurelien 254
				} else {
56 aurelien 255
					// sinon, si la case est vide
15 aurelien 256
					$valeur_modifiee = 0;
30 aurelien 257
					$mail_a_desinscrire = $mail_utilisateur;
258
					if($changement_mail) {
259
						$mail_a_desinscrire = $ancien_mail;
260
					}
56 aurelien 261
					// on desinscrit l'utilisateur
30 aurelien 262
					$lettre_controleur->desinscriptionLettreActualite($mail_a_desinscrire);
15 aurelien 263
				}
264
			break;
265
 
266
			default:
267
				$valeur_modifiee = $valeur;
268
			break;
269
		}
270
 
271
		return $valeur_modifiee;
272
	}
273
 
274
	public function verifierEtRemplacerValeurChampPourAffichage($type, $valeur, $id_annuaire) {
275
 
276
		if(!$type) {
277
			$valeur_modifiee = array();
278
 
279
			$valeur_modifiee['amv_type'] = 'champ_annuaire';
280
			$valeur_modifiee['amv_valeur_affichage'] = $valeur;
281
 
282
		} else {
105 aurelien 283
 
284
			if(!isset($valeur['amv_valeur'])) {
285
				$valeur['amv_valeur'] = '';
286
			}
15 aurelien 287
 
288
			$valeur_modifiee = $valeur;
289
 
290
			switch($type) {
291
 
292
				// cas du champ texte, à priori, rien de particulier
293
				case 'text':
120 aurelien 294
					$valeur_modifiee['amv_valeur_affichage'] = $this->remplacerLienHtml($valeur['amv_valeur']);
15 aurelien 295
				break;
120 aurelien 296
 
297
				// cas du champ texte long, à priori, rien de particulier
298
				case 'textarea':
299
					$valeur_modifiee['amv_valeur_affichage'] = $this->remplacerLienHtml($valeur['amv_valeur']);
300
				break;
15 aurelien 301
 
302
				// cas du champ checkbox
303
				case 'checkbox':
304
					// si c'est un groupe checkbox, alors c'est une liste de checkbox liée à une ontologie
305
					if(isset($valeur['amo_nom'])) {
306
						if(is_array($valeur['amo_nom']) && count($valeur['amo_nom']) > 0) {
307
						// on stocke les valeurs d'ontologies liées au cases cochées
308
							$valeur_modifiee['amv_valeur_affichage'] = implode(', ', $valeur['amo_nom']);
309
						} else {
310
							$valeur_modifiee['amv_valeur_affichage'] = $valeur['amo_nom'];
311
						}
312
					} else {
313
						// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)
361 aurelien 314
						if($valeur['amv_valeur'] == 1) {
15 aurelien 315
							$valeur_modifiee['amv_valeur_affichage'] = 'oui';
316
						} else {
317
							$valeur_modifiee['amv_valeur_affichage'] = 'non';
318
						}
319
					}
320
				break;
321
 
322
				case 'select':
56 aurelien 323
					// TODO: si ça n'existe pas on va le chercher ?
324
					if(isset($valeur['amo_nom'])) {
325
						$valeur_modifiee['amv_valeur_affichage'] = $valeur['amo_nom'];
60 aurelien 326
					} else {
327
						if(isset($valeur['amv_valeur'])) {
328
							$ontologie_modele = new OntologieModele();
329
							$infos_onto = $ontologie_modele->chargerInformationsOntologie($valeur['amv_valeur']);
330
							if(is_array($infos_onto) && !empty($infos_onto)) {
331
								$valeur_modifiee['amv_valeur_affichage'] = $infos_onto['amo_nom'];
332
							} else  {
333
								$valeur_modifiee['amv_valeur_affichage'] = '';
334
							}
105 aurelien 335
						} else  {
336
							$valeur_modifiee['amv_valeur_affichage'] = '';
60 aurelien 337
						}
56 aurelien 338
					}
105 aurelien 339
 
15 aurelien 340
				break;
341
 
342
				case 'radio':
343
					$valeur_modifiee['amv_valeur_affichage'] = $valeur['amo_nom'];
344
				break;
345
 
346
				case 'image':
347
					// si c'est une image, on recherche son url véritable à partir de l'id donnée en paramètre
348
					if(isset($valeur['amv_valeur']) && $valeur['amv_valeur'] != '') {
349
						$this->chargerModele('ImageModele');
350
						$valeur_modifiee['amv_valeur_affichage'] = $this->ImageModele->obtenirEmplacementFichierParId($valeur['amv_valeur'],$id_annuaire, 'S');
351
					}
352
				break;
353
 
354
				// cas du champ lettre
355
				case 'lettre':
356
 
357
					// on affiche oui ou non
358
					if($valeur_modifiee['amv_valeur'] == 1) {
359
						$valeur_modifiee['amv_valeur_affichage'] = 'oui';
360
					} else {
361
						$valeur_modifiee['amv_valeur_affichage'] = 'non';
362
					}
363
				break;
105 aurelien 364
 
365
				// cas de la date, on la formate
366
				case 'date':
139 aurelien 367
 
368
					//echo '|'.$valeur['amv_valeur'].'|';
369
 
105 aurelien 370
					$format = Config::get('date_format_simple');
143 aurelien 371
 
139 aurelien 372
					if(!isset($format)) {
373
						$format = 'd/m/Y';
374
					}
218 aurelien 375
 
139 aurelien 376
					$time = strtotime($valeur['amv_valeur']);
377
 
378
					if(!$time || $time == '') {
379
						$valeur_modifiee['amv_valeur_affichage'] = $valeur['amv_valeur'];
105 aurelien 380
					} else {
139 aurelien 381
						$valeur_modifiee['amv_valeur_affichage'] = date($format, $time);
105 aurelien 382
					}
383
 
384
				break;
15 aurelien 385
 
386
				default:
387
					$valeur_modifiee['amv_valeur_affichage'] = $valeur['amv_valeur'];
388
				break;
389
			}
390
		}
391
 
392
		return $valeur_modifiee;
393
	}
89 aurelien 394
 
395
	public function collecterValeurInscription($valeurs, $tableau_mappage) {
396
 
397
		$valeurs_mappees = array();
398
		$valeurs_a_inserer = array();
399
 
400
		// on itère sur le tableau de valeur pour récupérer les champs de mappage;
401
		foreach($valeurs as $nom_champ => $valeur) {
15 aurelien 402
 
89 aurelien 403
			// pour chaque valeur
404
			// on extrait l'id du champ
405
			$ids_champ = mb_split("_",$nom_champ, 3);
406
 
407
			if(count($ids_champ) == 3) {
408
 
409
				$type = $ids_champ[0];
410
				$id_champ = $ids_champ[2];
411
				$condition = $ids_champ[1];
412
 
413
				// cas de la checkbox qui devrait être là mais pas cochée
414
				if($condition == 'hidden' && !isset($valeurs[$type.'_'.$id_champ])) {
415
					// dans ce cas là on fabrique une valeur vide
416
					$valeurs[$type.'_'.$id_champ] = 0;
417
				}
418
 
419
			} else {
420
				$type = $ids_champ[0];
421
				$condition = false;
422
				$id_champ = $ids_champ[1];
423
			}
424
 
425
			// Si le champ fait partie des champs mappés
426
			$cle_champ = array_search($id_champ, $tableau_mappage[1]);
427
 
428
			// on ajoute sa clé correspondante dans le tableau des champs mappés
429
			// qui sont les champs à vérifier
430
			if($condition) {
431
				$condition = $valeurs[$type.'_'.$id_champ];
432
				$valeurs_mappees[$id_champ] = array('valeur' => $valeur, 'type' => $type, 'condition' => $condition);
433
			} else {
434
				//$valeurs_mappees[$cle_champ] = $valeur;
435
				$valeurs_mappees[$id_champ] = array('valeur' => $valeur, 'type' => $type, 'condition' => false);
436
			}
437
 
438
			if(!$condition) {
439
				$valeurs_a_inserer[$nom_champ] = $valeur;
440
			}
441
		}
442
 
443
		return array('valeurs_mappees' => $valeurs_mappees, 'valeurs_a_inserer' => $valeurs_a_inserer);
444
	}
218 aurelien 445
 
446
	public function collecterValeursRechercheMoteur($valeurs_recherchees, $tableau_mappage) {
447
 
448
		// on itère sur le tableau de valeur pour récupérer les métadonnées;
449
		foreach($valeurs_recherchees as $nom_champ => $valeur) {
89 aurelien 450
 
218 aurelien 451
			$ids_champ = mb_split("_",$nom_champ);
452
 
453
			if(count($ids_champ) == 2) {
454
 
455
				$type = $ids_champ[0];
456
				$id_champ = $ids_champ[1];
457
 
458
				$cle_champ = array_search($id_champ, $tableau_mappage[1]);
246 aurelien 459
				if($cle_champ && $cle_champ != 'champ_pays') {
218 aurelien 460
 
461
					$valeurs_mappees[$tableau_mappage[0][$cle_champ]] = $valeur;
462
 
463
				} else {
429 aurelien 464
					if($cle_champ && $cle_champ == 'champ_pays' && !is_numeric($valeur)) {
465
 
466
						$this->chargerModele('MetadonneeModele');
467
						$valeur = $this->MetadonneeModele->obtenirValeurPaysParAbbreviation($valeur);
468
					}
218 aurelien 469
					$valeurs_recherchees[$id_champ] = $valeur;
470
				}
294 aurelien 471
 
218 aurelien 472
				$valeurs_get[$nom_champ] = $valeur;
473
			}
474
 
475
			unset($valeurs_recherchees[$nom_champ]);
429 aurelien 476
		}
218 aurelien 477
		return array('valeurs_mappees' => $valeurs_mappees, 'valeurs_recherchees' => $valeurs_recherchees, 'valeurs_get' => $valeurs_get);
478
	}
405 aurelien 479
 
480
	public function convertirTableauRechercheVersChaine($id_annuaire, $valeurs_recherchees) {
481
 
482
		$this->chargerModele('MetadonneeModele');
483
		$metadonnees = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id_annuaire);
484
 
485
		$champs = array();
486
 
487
		foreach($metadonnees as $id => $metadonnee) {
488
			$id_champ_formulaire = $metadonnee['amc_ce_template_affichage'].'_'.$id;
489
			if(isset($valeurs_recherchees[$id_champ_formulaire]) && $valeurs_recherchees[$id_champ_formulaire] != '') {
490
				$valeur = $valeurs_recherchees[$id_champ_formulaire];
491
				$champs[] = array('label' => $metadonnee['amc_nom'],
492
								  'valeur' => $this->convertirValeurChampRechercheVersTexte($metadonnee, $valeur)
493
							);
494
			}
495
		}
496
		return $champs;
497
	}
498
 
499
	private function convertirValeurChampRechercheVersTexte($metadonnee, $valeur) {
500
		if($metadonnee['amc_ce_ontologie'] != 0) {
501
			$valeurs_onto = array();
502
			if(is_array($valeur)) {
503
				foreach($valeur as $id => $element) {
504
					$valeur_element = $this->MetadonneeModele->renvoyerCorrespondanceNomId($id, $metadonnee['amc_ce_ontologie']);
505
					$valeurs_onto[] = $valeur_element['amo_nom'];
506
				}
507
				$valeur = implode(', ',$valeurs_onto);
508
 
509
			} else {
510
				if(is_numeric($valeur)) {
511
					$valeurs_onto = $this->MetadonneeModele->renvoyerCorrespondanceNomId($valeur, $metadonnee['amc_ce_ontologie']);
512
					$valeur = $valeurs_onto['amo_nom'];
513
				} else {
514
					$valeur_onto = $this->MetadonneeModele->renvoyerCorrespondanceNomParAbreviation($valeur, $metadonnee['amc_ce_ontologie']);
515
					$valeur = $valeur_onto;
516
				}
517
			}
518
		}
519
		return $valeur;
520
	}
218 aurelien 521
 
15 aurelien 522
	/**
523
	 * Renvoie vrai ou faux suivant qu'un mail donné en paramètre est syntaxiquement valide (ne vérifie pas l'existence
524
	 * de l'adresse)
525
	 * @param string $mail le mail à tester
526
	 * @return boolean vrai ou faux suivant que le mail est valide ou non
527
	 */
528
	public function mailValide($mail) {
529
 
530
		$regexp_mail = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
338 aurelien 531
		return preg_match($regexp_mail, strtolower($mail));
15 aurelien 532
 
533
	}
534
 
535
	/**
536
	 * Renvoie un mot de passe crypté selon la fonction d'encryptage définie dans le fichier de configuration
537
	 * (si celle-ci n'existe pas on utilise une fonction par défaut)
538
	 * @param string $pass le mot de passe à encrypter
539
	 * @return string le mot de passe encrypté
540
	 */
541
	public function encrypterMotDePasse($pass) {
542
 
543
		$fonction = Config::get('pass_crypt_fonct');
544
 
545
		if(function_exists($fonction)) {
546
			return $fonction($pass);
547
		} else {
548
			return md5($pass);
549
		}
550
	}
41 aurelien 551
 
56 aurelien 552
	//TODO: créer une class util
553
	static function encrypterMotDepasseStatic($pass) {
554
 
555
		$fonction = Config::get('pass_crypt_fonct');
556
 
557
		if(function_exists($fonction)) {
558
			return $fonction($pass);
559
		} else {
560
			return md5($pass);
561
		}
562
	}
120 aurelien 563
 
148 aurelien 564
	static function convertirTailleFichier($taille) {
565
		if(!$taille) {
566
			return "0 Mo";
567
		}
568
 
569
		return number_format($taille*(1/1024)*(1/1024), 0).' Mo';
570
	}
571
 
120 aurelien 572
	public function genererMotDePasse() {
573
 
574
		$pass = "";
575
		$chaine = "abcdefghkmnpqrstuvwxyzABCDEFGHKLMNPQRSTUVWXYZ23456789";
56 aurelien 576
 
120 aurelien 577
		srand((double)microtime()*1000000);
578
		for($i = 0; $i < 10; $i++){
579
			$pass .= $chaine[rand()%strlen($chaine)];
580
		}
581
 
582
		return $pass;
583
 
584
	}
361 aurelien 585
 
586
	public static function champEstRempli($champ) {
587
		return is_array($champ) && isset($champ['amv_valeur_affichage']) && trim($champ['amv_valeur_affichage']) != '';
588
	}
589
 
590
	public static function AfficherSiChampRempli($champ, $chaine_format = '%s') {
591
 
592
		$affichage = '';
593
 
594
		if (self::champEstRempli($champ)) {
595
			$valeur = $champ['amv_valeur_affichage'];
596
			$affichage = sprintf($chaine_format,$valeur);
597
		}
598
 
599
		return $affichage;
600
	}
601
 
602
	public static function AfficherChampSiAdmin($champ, $chaine_format = '%s') {
603
 
604
		$affichage = '';
605
 
606
		if (Registre::getInstance()->get('est_admin')) {
607
			$affichage = self::AfficherSiChampRempli($champ, $chaine_format);
608
		}
609
 
610
		return $affichage;
611
	}
120 aurelien 612
 
56 aurelien 613
	/**
614
	 * Suivant un identifiant de champ et un tableau, renvoie vrai ou faux suivant que le champs est obligatoire ou non
615
	 * @param int $id_champ l'identifiant de champ
616
	 * @param int $champ_obligatoire le tableau des champs obligatoires
617
	 */
41 aurelien 618
	private function estUnchampObligatoire($id_champ, $champs_obligatoire) {
619
 
620
		return in_array($id_champ, $champs_obligatoire) || in_array($id_champ, array_keys($champs_obligatoire));
621
	}
120 aurelien 622
 
623
	/**
624
	 *
625
	 */
626
	private function remplacerLienHtml($texte) {
627
 
628
		$expr = "(http[\S\.\/:]*)";
629
 
630
		$matches = array();
631
		preg_match_all($expr, $texte, $matches);
632
 
633
		foreach($matches as $match) {
634
 
635
			foreach($match as $element) {
361 aurelien 636
				$str_lien = '<div><a class="info_resume" href="'.$element.'" >'.$element.'</a></div>';
120 aurelien 637
				$texte = str_replace($element, $str_lien, $texte);
638
			}
639
		}
640
 
641
		return $texte;
642
	}
15 aurelien 643
}
644
?>