New file |
0,0 → 1,332 |
<?php |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package annuaire |
* @author aurelien <aurelien@tela-botanica.org> |
* @copyright 2010 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/annuaire/ |
*/ |
|
class MappageControleur extends AppControleur { |
|
private $id_liste_champs = 30768; |
|
/** |
* Charge la vue contenant les informations d'un annuaire géré par l'application |
* @param int $id l'annuaire dont on veut consulter les informations |
* @return string la vue contenant les informations |
*/ |
public function chargerAnnuaire($id) { |
$this->chargerModele('AnnuaireModele'); |
$this->chargerModele('MetadonneeModele'); |
$data['erreurs'] = array(); |
$data['annuaire'] = $this->AnnuaireModele->chargerAnnuaire($id,true); |
$data['metadonnees'] = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id); |
$annuaire = $this->getVue(Config::get('dossier_squelettes_gestion_annuaires').'annuaire', $data); |
|
return $annuaire; |
} |
|
/**--------Fonctions d'ajout et de modification des annuaires --------*/ |
|
public function ajouterAnnuaire($valeurs) { |
|
$champs = array( |
"aa_nom" => '', |
"aa_description" => '', |
"aa_bdd" => '', |
"aa_table" => '', |
"aa_code" => '', |
"aa_champ_id" => '', |
"aa_champ_nom" => '', |
"aa_champ_mail" => '', |
"aa_champ_pass" => '' |
); |
|
$donnees = array('erreurs_champs' => array()); |
|
// vérification de la présence de tous les champs |
foreach($champs as $nom_champ => $valeur) { |
if(!isset($valeurs[$nom_champ]) || $valeurs[$nom_champ] == '') { |
$donnees['erreurs_champs'][$nom_champ] = 'Ce champ est obligatoire'; |
} |
} |
|
// si il y a une erreur on réaffiche le formulaire |
if(!empty($donnees['erreurs_champs'])) { |
return $this->afficherFormulaireAjoutAnnuaire($donnees); |
} |
|
$champs_a_verifier = array($valeurs[aa_champ_id],$valeurs[aa_champ_nom],$valeurs[aa_champ_mail],$valeurs[aa_champ_pass]); |
|
$informations_annuaire = array( |
"aa_nom" => $valeurs['aa_nom'], |
"aa_description" => $valeurs['aa_description'], |
"aa_bdd" => $valeurs['aa_bdd'], |
"aa_table" => $valeurs['aa_table'], |
"aa_code" => $valeurs['aa_code'], |
); |
|
$informations_champs = array( |
"aa_champ_id" => $valeurs['aa_champ_id'], |
"aa_champ_nom" => $valeurs['aa_champ_nom'], |
"aa_champ_mail" => $valeurs['aa_champ_mail'], |
"aa_champ_pass" => $valeurs['aa_champ_pass'] |
); |
|
$this->chargerModele('GestionAnnuaireModele'); |
$annuaire_existe = $this->GestionAnnuaireModele->verifierPresenceTable($valeurs['aa_bdd'], $valeurs['aa_table']); |
|
// si l'annuaire existe déjà |
if($annuaire_existe) { |
$champs_existent = $this->GestionAnnuaireModele->verifierPresenceChamps($valeurs['aa_bdd'], $valeurs['aa_table'], $champs_a_verifier); |
// si l'annuaire existe déjà |
if($champs_existent) { |
// on insere un nouvel enregistrement dans la table des annuaire |
$id_annuaire = $this->GestionAnnuaireModele->AjouterAnnuaire($informations_annuaire); |
|
if(!$id_annuaire) { |
$donnees['erreurs_champs'][$nom_champ] = 'Impossible d\'ajouter les infos de la table '.$valeurs['aa_table'].' dans la base de données '.$valeurs['aa_bdd'] ; |
} |
|
// on cree un set de métadonnées minimal |
$this->creerEtMapperChampsMetadonneeMinimaux($id_annuaire, $informations_champs); |
} |
} |
|
return $this->chargerAnnuaire($id_annuaire); |
|
} |
|
private function creerEtMapperChampsMetadonneeMinimaux($id_annuaire, $informations_champs) { |
|
$metadonnee_controleur = new MetadonneeControleur(); |
$this->chargerModele('MappageModele'); |
$this->chargerModele('MetadonneeModele'); |
|
foreach($informations_champs as $type_champ => $nom) { |
|
$role = str_replace('aa_','',$type_champ); |
|
if($role == 'champ_id') { |
$valeurs_mappage = array( |
'id_annuaire' => $id_annuaire, |
'id_champ_annuaire' => $nom, |
'role' => 'champ_id', |
'id_champ_metadonnee' => '' |
); |
$creation = $this->MappageModele->ajouterNouveauMappage($id_annuaire, $nom, 'champ_id', '0'); |
|
} else { |
|
$valeurs_insertion = $this->renvoyerInformationChampPourType($id_annuaire, $role, $nom); |
|
$metadonnee_controleur->ajouterNouvelleMetadonnee($valeurs_insertion); |
|
$id_champ_metadonnee = $this->MetadonneeModele->renvoyerIdChampMetadonneeParAbreviation($id_annuaire, $valeurs_insertion['amc_abreviation']); |
|
// on affecte à chaque champ son role |
$this->MappageModele->ajouterNouveauMappage($id_annuaire, $nom, $role, $id_champ_metadonnee); |
// et on le rend obligatoire |
$this->MappageModele->ajouterNouveauMappage($id_annuaire, $nom, 'champ_obligatoire', $id_champ_metadonnee); |
|
} |
} |
|
return true; |
} |
|
private function renvoyerInformationChampPourType($id_annuaire, $type, $nom) { |
|
$valeurs = array(); |
$this->chargerModele('MetadonneeModele'); |
|
$id_liste_champs = $this->id_liste_champs; |
|
switch($type) { |
case 'champ_nom': |
|
$affichage = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation('text',$id_liste_champs); |
|
$valeurs = array('amc_nom' => $nom, |
'amc_abreviation' => 'nom' , |
'amc_description' => 'Nom', |
'amc_ce_annuaire' => $id_annuaire, |
'amc_ce_type_affichage' => $affichage, |
'amc_ce_ontologie' => '0' |
); |
break; |
|
case 'champ_mail': |
|
$affichage = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation('mail',$id_liste_champs); |
$valeurs = array('amc_nom' => $nom, |
'amc_abreviation' => 'mail', |
'amc_description' => 'Adresse electronique', |
'amc_ce_annuaire' => $id_annuaire, |
'amc_ce_type_affichage' => $affichage, |
'amc_ce_ontologie' => '0' |
); |
break; |
|
case 'champ_pass': |
|
$affichage = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation('password',$id_liste_champs); |
$valeurs = array('amc_nom' => $nom, |
'amc_abreviation' => 'pass', |
'amc_description' => 'Mot de passe', |
'amc_ce_annuaire' => $id_annuaire, |
'amc_ce_type_affichage' => $affichage, |
'amc_ce_ontologie' => '0' |
); |
break; |
} |
|
return $valeurs; |
} |
|
/** |
* Affiche le formulaire d'ajout d'une metadonnee |
* @param Array $valeurs les valeurs à inclure dans le formulaire (dans le cas du retour erreur) |
* @return string la vue contenant le formulaire |
*/ |
public function afficherFormulaireAjoutAnnuaire($donnees) { |
|
$champs = array( |
"aa_nom" => '', |
"aa_description" => '', |
"aa_bdd" => '', |
"aa_table" => '', |
"aa_code" => '', |
"aa_champ_id" => '', |
"aa_champ_nom" => '', |
"aa_champ_mail" => '', |
"aa_champ_pass" => '' |
); |
$donnees = $donnees; |
|
$formulaire_ajout_annuaire = $this->getVue(Config::get('dossier_squelettes_gestion_annuaires').'annuaire_ajout',$donnees); |
|
return $formulaire_ajout_annuaire; |
} |
|
|
|
/**--------Fonctions de gestion des champs de mappage associées à un annuaire et des formaulaires associés --------*/ |
/** |
* Affiche le formulaire d'ajout d'une metadonnee |
* @param Array $valeurs les valeurs à inclure dans le formulaire (dans le cas du retour erreur) |
* @return string la vue contenant le formulaire |
*/ |
public function afficherFormulaireAjoutMappage($id_annuaire) { |
|
if(!isset($valeurs['amc_nom'])) { |
$valeurs['amc_nom'] = ''; |
} |
|
if(!isset($valeurs['amc_abreviation'])) { |
$valeurs['amc_abreviation'] = ''; |
} |
|
if(!isset($valeurs['amc_description'])) { |
$valeurs['amc_description'] = ''; |
} |
$data['valeur'] = $valeurs; |
|
$this->chargerModele('MetadonneeModele'); |
$data['types'] = $this->MetadonneeModele->chargerListeDesTypesDeMappage(); |
$data['listes'] = $this->MetadonneeModele->chargerListeDesListes(); |
$metadonnee_ajout = $this->getVue(Config::get('dossier_squelettes_metadonnees').'metadonnee_ajout',$data); |
|
return $metadonnee_ajout; |
} |
|
/** |
* Affiche le formulaire de modification d'une metadonnee |
* @param Array $valeurs les valeurs à inclure dans le formulaire |
* @return string la vue contenant le formulaire |
*/ |
public function afficherFormulaireModificationMappage($id_mappage) { |
|
if(!isset($valeurs['amc_nom'])) { |
$valeurs['amc_nom'] = ''; |
} |
|
if(!isset($valeurs['amc_abreviation'])) { |
$valeurs['amc_abreviation'] = ''; |
} |
|
if(!isset($valeurs['amc_description'])) { |
$valeurs['amc_description'] = ''; |
} |
$data['valeur'] = $valeurs; |
|
$this->chargerModele('MetadonneeModele'); |
$data['valeur'] = $this->MetadonneeModele->chargerInformationsMetadonnee($valeurs['amc_id_champ']); |
$data['types'] = $this->MetadonneeModele->chargerListeDesTypesDeChamps(); |
$data['listes'] = $this->MetadonneeModele->chargerListeDesListes(); |
$metadonnee_modification = $this->getVue(Config::get('dossier_squelettes_metadonnees').'metadonnee_modification',$data); |
|
return $metadonnee_modification; |
} |
|
/** |
* Ajoute un nouveau champ de métadonnée à un annuaire |
* @param Array $valeurs les valeurs à ajouter |
* @return string la vue contenant l'annuaire associé, ou le formulaire en cas d'échec |
*/ |
public function ajouterNouveauMappage($valeurs) { |
|
if(isset($valeurs['id_annuaire']) |
&& isset($valeurs['id_champ_annuaire']) |
&& isset($valeurs['role']) |
&& isset($valeurs['id_champ_metadonnee'])) { |
$this->chargerModele('MappageModele'); |
$this->MetadonneeModele->ajouterNouveauMappage($valeurs); |
} else { |
return $this->afficherFormulaireAjoutMappage($valeurs); |
} |
return $this->chargerAnnuaire($valeurs['amc_ce_annuaire']); |
} |
|
/** |
* Modifie un champ de mapagge associé à un annuaire |
* @param Array $valeurs les valeurs à modifier |
* @return string la vue contenant l'annuaire associé, ou le formulaire en cas d'échec |
*/ |
public function modifierMappage($valeurs) { |
|
if(isset($valeurs['amc_id_champ']) |
&& isset($valeurs['amc_nom']) |
&& isset($valeurs['amc_abreviation']) |
&& isset($valeurs['amc_description']) |
&& isset($valeurs['amc_ce_annuaire']) |
&& isset($valeurs['amc_ce_type_affichage'])) { |
$this->chargerModele('MetadonneeModele'); |
$this->MetadonneeModele->modifierMetadonnee($valeurs); |
} else { |
return $this->afficherFormulaireModificationMetadonnee($valeurs); |
} |
return $this->chargerAnnuaire($valeurs['amc_ce_annuaire']); |
} |
|
/** |
* Supprime un champ de métadonnée associé à un annuaire |
* @return string la vue contenant l'annuaire associé, ou le formulaire en cas d'échec |
*/ |
public function supprimerMappage($id_annuaire, $id_mappage) { |
|
if($id_metadonnee != '') { |
$this->chargerModele('MetadonneeModele'); |
$this->MetadonneeModele->supprimerMetadonneeParId($id_metadonnee); |
} else { |
return false; |
} |
return $this->chargerAnnuaire($id_annuaire); |
} |
|
} |