Subversion Repositories Applications.annuaire

Rev

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

Rev 7 Rev 18
Line 39... Line 39...
39
		$annuaire = array();
39
		$annuaire = array();
40
		foreach ($resultat as $ligne) {
40
		foreach ($resultat as $ligne) {
41
			// On remplace l'identifiant du type d'affichage par son nom
41
			// On remplace l'identifiant du type d'affichage par son nom
42
			$type_affichage = $this->renvoyerCorrespondanceNomId($ligne['amc_ce_type_affichage'], $this->id_liste_champs);
42
			$type_affichage = $this->renvoyerCorrespondanceNomId($ligne['amc_ce_type_affichage'], $this->id_liste_champs);
43
			$ligne['amc_ce_nom_type_affichage']  = $type_affichage['amo_nom'];
43
			$ligne['amc_ce_nom_type_affichage']  = $type_affichage['amo_nom'];
44
			$annuaire[] = $ligne;
44
			$annuaire[$ligne['amc_id_champ']] = $ligne;
45
		}
45
		}
Line 46... Line 46...
46
 
46
 
47
		return $annuaire;
47
		return $annuaire;
Line 217... Line 217...
217
	/**
217
	/**
218
	 * Renvoie le nom du template associé à un champ grâce à son identifiant
218
	 * Renvoie le nom du template associé à un champ grâce à son identifiant
219
	 * @param int $id_ontologie l'identifiant du champ dont on veut le template
219
	 * @param int $id_ontologie l'identifiant du champ dont on veut le template
220
	 * @return string le nom du template (qui est l'abreviation du champ), ou false sinon
220
	 * @return string le nom du template (qui est l'abreviation du champ), ou false sinon
221
	 */
221
	 */
222
	public function renvoyerCorrespondanceNomTemplateChamp($id_champ) {
222
	public function renvoyerTypeAffichageParId($id_champ) {
Line 223... Line 223...
223
 
223
 
224
		$requete = 'SELECT amo_abreviation '.
224
		$requete = 'SELECT amo_abreviation '.
225
			'FROM annu_meta_ontologie '.
225
			'FROM annu_meta_ontologie '.
226
			'WHERE amo_ce_parent = '.$this->id_liste_champs.' '.
226
			'WHERE amo_ce_parent = '.$this->id_liste_champs.' '.
Line 227... Line 227...
227
			'AND amo_id_ontologie = '.$id_champ;
227
			'AND amo_id_ontologie = '.$id_champ;
Line 228... Line 228...
228
 
228
 
-
 
229
		$resultat = $this->requeteUn($requete);
-
 
230
 
-
 
231
		return $resultat['amo_abreviation'];
-
 
232
 
-
 
233
	}
-
 
234
 
-
 
235
	/**
-
 
236
	 * Renvoie le nom du template associé à un champ grâce à son identifiant
-
 
237
	 * @param int $id_ontologie l'identifiant du champ dont on veut le template
-
 
238
	 * @return string le nom du template (qui est l'abreviation du champ), ou false sinon
-
 
239
	 */
-
 
240
	public function renvoyerTypeAffichagePourColonne($id_colonne) {
-
 
241
 
-
 
242
		$requete = 'SELECT amo_abreviation '.
-
 
243
			'FROM annu_meta_ontologie '.
-
 
244
			'WHERE amo_ce_parent = '.$this->id_liste_champs.' '.
-
 
245
			'AND amo_id_ontologie =
-
 
246
			(SELECT amc_ce_type_affichage '.
-
 
247
				'FROM annu_meta_colonne '.
-
 
248
				'WHERE amc_id_champ = '.$id_colonne.')';
-
 
249
 
-
 
250
		$resultat = $this->requeteUn($requete);
-
 
251
 
-
 
252
		if($resultat) {
-
 
253
			return $resultat['amo_abreviation'];
-
 
254
		} else {
-
 
255
			return false;
-
 
256
		}
-
 
257
	}
-
 
258
 
-
 
259
	/**
-
 
260
	 * Renvoie vrai si un utilisateur possède une valeur de metadonnées pour une colonne donnée
-
 
261
	 */
-
 
262
	public function valeurExiste($id_champ, $id_enregistrement_lie) {
-
 
263
 
-
 
264
		$requete_existence_valeur = 	'SELECT COUNT(amv_valeur) as valeur_existe '.
-
 
265
					'FROM annu_meta_valeurs '.
-
 
266
					'WHERE amv_ce_colonne = '.$id_champ.' '.
-
 
267
					'AND amv_cle_ligne ='.$id_enregistrement_lie;
-
 
268
 
229
		$resultat = $this->requeteUn($requete);
269
		$resultat = $this->requeteUn($requete_existence_valeur);
Line 230... Line 270...
230
 
270
 
231
		return $resultat['amo_abreviation'];
271
		return ($resultat['valeur_existe'] > 1) ;
232
	}
272
	}
Line 253... Line 293...
253
	 * Modifie une valeur d'un champ de metadonnées pour une ligne dans un annuaire donné
293
	 * Modifie une valeur d'un champ de metadonnées pour une ligne dans un annuaire donné
254
	 * @param int $id_champ l'identifiant du champ dont on modifie la valeur
294
	 * @param int $id_champ l'identifiant du champ dont on modifie la valeur
255
	 * @param mixed $valeur la nouvelle valeur à associer au champ (peut-être une valeur brute ou bien un identifiant de liste d'ontologie)
295
	 * @param mixed $valeur la nouvelle valeur à associer au champ (peut-être une valeur brute ou bien un identifiant de liste d'ontologie)
256
	 * @return boolean true ou false suivant le succès de la requête
296
	 * @return boolean true ou false suivant le succès de la requête
257
	 */
297
	 */
258
	public function modifierValeurMetadonnee($id_valeur_metadonnee, $valeur) {
298
	public function modifierValeurMetadonnee($id_champ, $id_enregistrement_lie, $valeur) {
Line 259... Line 299...
259
 
299
 
260
		$requete = 'UPDATE annu_meta_valeurs '.
300
		$requete = 'UPDATE annu_meta_valeurs '.
261
		'SET amv_valeur = '.$this->proteger($valeur).' '.
301
		'SET amv_valeur = '.$this->proteger($valeur).' '.
-
 
302
		'WHERE amv_cle_ligne = '.$id_enregistrement_lie.' '.
Line 262... Line 303...
262
		'WHERE amv_id_valeur = '.$id_valeur_metadonnee;
303
		'AND amv_ce_colonne = '.$id_champ;
263
 
304
 
Line 264... Line 305...
264
		return $this->requete($requete);
305
		return $this->requete($requete);
Line 280... Line 321...
280
	/**
321
	/**
281
	 * Supprime les valeurs de metadonnées associés à un identifiant de ligne d'annuaire
322
	 * Supprime les valeurs de metadonnées associés à un identifiant de ligne d'annuaire
282
	 * @param int $id_enregistrement_lie l'identifiant de la ligne à laquelle sont associées les valeurs à supprimer
323
	 * @param int $id_enregistrement_lie l'identifiant de la ligne à laquelle sont associées les valeurs à supprimer
283
	 */
324
	 */
284
	public function supprimerValeursMetadonneesParIdEnregistrementLie($id_enregistrement_lie) {
325
	public function supprimerValeursMetadonneesParIdEnregistrementLie($id_enregistrement_lie) {
-
 
326
 
285
		$requete = 'DELETE FROM annu_meta_valeurs '.
327
		$requete = 'DELETE FROM annu_meta_valeurs '.
286
		'WHERE amv_cle_ligne = '.$id_enregistrement_lie;
328
		'WHERE amv_cle_ligne = '.$id_enregistrement_lie;
Line 287... Line 329...
287
 
329
 
288
		return $this->requete($requete);
330
		return $this->requete($requete);
Line 304... Line 346...
304
	 * @param int $id_utilisateur l'identifiant de la ligne dans l'annuaire pour laquelle on veut récupérer les valeur de metadonnées
346
	 * @param int $id_utilisateur l'identifiant de la ligne dans l'annuaire pour laquelle on veut récupérer les valeur de metadonnées
305
	 */
347
	 */
306
	 public function chargerListeValeursMetadonneesUtilisateur($id_annuaire, $id_enregistrement_lie) {
348
	 public function chargerListeValeursMetadonneesUtilisateur($id_annuaire, $id_enregistrement_lie) {
Line 307... Line 349...
307
 
349
 
308
		// première requete pour obtenir les valeurs des champs de metadonnées liées à la ligne
350
		// première requete pour obtenir les valeurs des champs de metadonnées liées à la ligne
309
	 	$requete_valeurs_metadonnees =  'SELECT amv_ce_colonne, amv_valeur, amc_ce_ontologie, amc_abreviation FROM annu_meta_valeurs '.
351
	 	$requete_valeurs_metadonnees =  'SELECT amv_ce_colonne, amv_valeur, amc_ce_ontologie, amc_abreviation, amc_ce_type_affichage FROM annu_meta_valeurs '.
310
	 		 						  	'LEFT JOIN annu_meta_colonne '.
352
	 		 						  	'LEFT JOIN annu_meta_colonne '.
311
	 									'ON annu_meta_colonne.amc_id_champ = annu_meta_valeurs.amv_ce_colonne '.
353
	 									'ON annu_meta_colonne.amc_id_champ = annu_meta_valeurs.amv_ce_colonne '.
Line 312... Line 354...
312
	 									'WHERE amv_cle_ligne = '.$id_enregistrement_lie.' ';
354
	 									'WHERE amv_cle_ligne = '.$id_enregistrement_lie.' ';
Line 321... Line 363...
321
	 		foreach ($resultat_valeurs_metadonnees as $ligne) {
363
	 		foreach ($resultat_valeurs_metadonnees as $ligne) {
Line 322... Line 364...
322
 
364
 
323
				// pour toutes les valeurs qui sont des élements d'une liste d'ontologie
365
				// pour toutes les valeurs qui sont des élements d'une liste d'ontologie
Line 324... Line 366...
324
				if($ligne['amc_ce_ontologie'] != 0) {
366
				if($ligne['amc_ce_ontologie'] != 0) {
325
 
367
 
Line 326... Line 368...
326
					// Si c'est un champ qui contient de multiples valeurs, alors il contient le séparateur de métadonnées
368
					// Si c'est un champ qui contient de multiples valeurs, alors il contient potientiellement le séparateur de métadonnées
327
					if(strpos($ligne['amv_valeur'],Config::get('separateur_metadonnee'))) {
369
					if(strpos($ligne['amv_valeur'],Config::get('separateur_metadonnee'))) {
Line 328... Line -...
328
 
-
 
329
						$id_valeurs_metadonnees = explode(Config::get('separateur_metadonnee'), $ligne['amv_valeur']);
370
 
330
						$ligne['amv_valeur'] = $id_valeurs_metadonnees;
371
						$id_valeurs_metadonnees = explode(Config::get('separateur_metadonnee'), $ligne['amv_valeur']);
331
 
372
						$ligne['amv_valeur'] = $id_valeurs_metadonnees;
332
						//TODO: faire le foreach
373
 
333
						foreach ($id_valeurs_metadonnees as $id_valeur) {
374
						foreach ($id_valeurs_metadonnees as $id_valeur) {
334
							$resultat_nom_valeur = $this->renvoyerCorrespondanceNomId($id_valeur,$ligne['amc_ce_ontologie']);
375
							$resultat_nom_valeur = $this->renvoyerCorrespondanceNomId($id_valeur,$ligne['amc_ce_ontologie']);
335
							$ligne['amo_nom'][] = $resultat_nom_valeur['amo_nom'];
376
							$ligne['amo_nom'][] = $resultat_nom_valeur['amo_nom'];
336
						}
377
						}
Line 337... Line 378...
337
					} else {
378
					} else {
338
						$resultat_nom_valeur = $this->renvoyerCorrespondanceNomId($ligne['amv_valeur'],$ligne['amc_ce_ontologie']);
-
 
339
						$ligne['amo_nom'] = $resultat_nom_valeur['amo_nom'];
-
 
340
					}
379
						$resultat_nom_valeur = $this->renvoyerCorrespondanceNomId($ligne['amv_valeur'],$ligne['amc_ce_ontologie']);
Line -... Line 380...
-
 
380
						$ligne['amo_nom'] = $resultat_nom_valeur['amo_nom'];
341
 
381
					}
342
					$nom_valeur = $resultat_nom_valeur['amo_nom'];
382
 
343
 
383
					$nom_valeur = $resultat_nom_valeur['amo_nom'];
Line -... Line 384...
-
 
384
				}
-
 
385
 
344
					//print_r($resultat_nom_valeur);
386
				$ligne['amc_ce_type_affichage'] = $this->renvoyerTypeAffichageParId($ligne['amc_ce_type_affichage']);
-
 
387
				$liste_metadonnee[$ligne['amc_abreviation']] = $ligne;
-
 
388
			}
-
 
389
		}
-
 
390
 
-
 
391
		$colonnes_totales = $this->chargerListeMetadonneeAnnuaire($id_annuaire);
-
 
392
 
-
 
393
		foreach ($colonnes_totales as $colonne) {
-
 
394
			if(!isset($liste_metadonnee[$colonne['amc_abreviation']])) {
-
 
395
 
-
 
396
				if($colonne['amc_ce_ontologie'] != 0) {
-
 
397
					$valeur = array();
-
 
398
				} else {
-
 
399
					$valeur = '';
-
 
400
				}
-
 
401
 
-
 
402
				$liste_metadonnee[$colonne['amc_abreviation']] = array('amv_ce_colonne' => $colonne['amc_id_champ'],
Line 345... Line 403...
345
				}
403
            		'amv_valeur' => $valeur,
Line 346... Line 404...
346
 
404
            		'amo_nom' => '',
-
 
405
            		'amc_ce_ontologie' => $colonne['amc_ce_ontologie'],
-
 
406
            		'amc_abreviation' => $colonne['amc_abreviation'],
-
 
407
            		'amc_ce_type_affichage' => $this->renvoyerTypeAffichageParId($colonne['amc_ce_type_affichage']));
-
 
408
			}
-
 
409
		}
-
 
410
 
-
 
411
		return $liste_metadonnee;
-
 
412
 
-
 
413
	 }
-
 
414
 
-
 
415
	/**
-
 
416
	 * Recherche les enregistrements correspondants au criètres donnés et renvoie une liste d'identifiants, correspondants
-
 
417
	 * @param int $id_annuaire l'identifiant de l'annuaire dans lequel on recherche
-
 
418
	 * @valeurs array un talbeau de valeurs à rechercher
-
 
419
	 * $exclusive boolean indique si la recherche doit se faire avec un ET ou bien un OU sur les critèrex
-
 
420
	 */
-
 
421
	 public function rechercherDansValeurMetadonnees($id_annuaire, $valeurs, $exclusive = true) {
-
 
422
 
-
 
423
		// Définition du séparateur de requête suivant la paramètre
-
 
424
		if($exclusive) {
-
 
425
			$separateur = ' AND ';
-
 
426
		} else {
-
 
427
			$separateur = ' OR ';
-
 
428
		}
-
 
429
 
-
 
430
		$chaine_recherche = '';
-
 
431
 
-
 
432
		foreach($valeurs as $nom_champ => $valeur) {
-
 
433
 
-
 
434
			if(is_array($valeur)) {
-
 
435
				foreach($valeur as $cle => $valeur_multi_meta) {
-
 
436
					$chaine_recherche .= '(amv_ce_colonne = '.$this->proteger($nom_champ).' AND amv_valeur LIKE '.$this->proteger('%'.$cle.'%').')'.$separateur;
-
 
437
				}
-
 
438
			} else {
-
 
439
				if(trim($valeur) != '') {
-
 
440
					$chaine_recherche .= '(amv_ce_colonne = '.$this->proteger($nom_champ).' AND amv_valeur = '.$this->proteger($valeur).')'.$separateur;
-
 
441
				}
-
 
442
			}
-
 
443
		}
-
 
444
 
-
 
445
		if(trim($chaine_recherche) == '') {
-
 
446
			return array();
-
 
447
		}
-
 
448
 
-
 
449
		$chaine_recherche = rtrim($chaine_recherche,$separateur);
-
 
450
 
-
 
451
	 	$requete_recherche = 'SELECT DISTINCT amv_cle_ligne '.
-
 
452
							'FROM annu_meta_valeurs '.
-
 
453
							'WHERE '.$chaine_recherche ;
-
 
454
 
-
 
455
		$resultat_recherche = $this->requeteTous($requete_recherche);
-
 
456
 
-
 
457
		//echo $requete_recherche;
-
 
458
 
-
 
459
		if($resultat_recherche) {
-
 
460
 
-
 
461
			$tableau_id = array();
347
				$liste_metadonnee[$ligne['amc_abreviation']] = $ligne;
462
			foreach($resultat_recherche as $resultat) {
348
			}
463
				$tableau_id[] = $resultat['amv_cle_ligne'];
349
		}
464
			}