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 |
}
|