Subversion Repositories Applications.annuaire

Rev

Rev 161 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 161 Rev 164
1
<?php
1
<?php
2
/**
2
/**
3
* PHP Version 5
3
* PHP Version 5
4
*
4
*
5
* @category  PHP
5
* @category  PHP
6
* @package   annuaire
6
* @package   annuaire
7
* @author    aurelien <aurelien@tela-botanica.org>
7
* @author    aurelien <aurelien@tela-botanica.org>
8
* @copyright 2010 Tela-Botanica
8
* @copyright 2010 Tela-Botanica
9
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
9
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
10
* @version   SVN: <svn_id>
10
* @version   SVN: <svn_id>
11
* @link      /doc/annuaire/
11
* @link      /doc/annuaire/
12
*/
12
*/
13
 
13
 
14
class GestionAnnuaireControleur extends AppControleur {
14
class GestionAnnuaireControleur extends AppControleur {
15
 
15
 
16
	private $id_liste_champs = 30768;
16
	private $id_liste_champs = 30768;
17
	
17
	
18
/**--------Fonctions d'ajout et de modification des annuaires --------*/	
18
/**--------Fonctions d'ajout et de modification des annuaires --------*/	
19
	
19
	
20
	/**
20
	/**
-
 
21
	 * Charge la vue contenant les informations d'un annuaire donné en paramètre
-
 
22
	 * @param int $id l'identifiant de l'annuaire
-
 
23
	 * @return string la vue contenant les informations sur l'annuaire
-
 
24
	 */
-
 
25
	public function chargerAnnuaire($id) {
-
 
26
		$this->chargerModele('AnnuaireModele');
-
 
27
		$this->chargerModele('MetadonneeModele');
-
 
28
		$data['erreurs'] = array();
-
 
29
		$data['champs_mappage'] = $this->obtenirChampsMappageAnnuaire($id);
-
 
30
		$data['annuaire'] = $this->AnnuaireModele->chargerAnnuaire($id, true);
-
 
31
		$data['metadonnees'] = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id);
-
 
32
		$annuaire = $this->getVue(Config::get('dossier_squelettes_gestion_annuaires').'annuaire', $data);
-
 
33
 
-
 
34
		return $annuaire;
-
 
35
	}
-
 
36
	
-
 
37
	/**
21
	 * Affiche le formulaire d'ajout d'un annuaire
38
	 * Affiche le formulaire d'ajout d'un annuaire
22
	 * @param Array $valeurs les valeurs à inclure dans le formulaire (dans le cas du retour erreur)
39
	 * @param Array $valeurs les valeurs à inclure dans le formulaire (dans le cas du retour erreur)
23
	 * @return string la vue contenant le formulaire
40
	 * @return string la vue contenant le formulaire
24
	 */
41
	 */
25
	public function afficherFormulaireAjoutAnnuaire($donnees) {
42
	public function afficherFormulaireAjoutAnnuaire($donnees) {
26
 
43
 
27
		$champs = array(
44
		$champs = array(
28
			"aa_nom" => '',
45
			"aa_nom" => '',
29
			"aa_description" => '',
46
			"aa_description" => '',
30
			"aa_bdd" => '',
47
			"aa_bdd" => '',
31
			"aa_table" => '',
48
			"aa_table" => '',
32
			"aa_code" => '',
49
			"aa_code" => '',
33
			"aa_champ_id" => '',
50
			"aa_champ_id" => '',
34
			"aa_champ_nom" => '',
51
			"aa_champ_nom" => '',
35
			"aa_champ_mail" => '',
52
			"aa_champ_mail" => '',
36
			"aa_champ_pass" => ''
53
			"aa_champ_pass" => ''
37
		);
54
		);
38
		$donnees = $donnees;
55
		$donnees = $donnees;
39
 
56
 
40
		$formulaire_ajout_annuaire = $this->getVue(Config::get('dossier_squelettes_gestion_annuaires').'annuaire_ajout',$donnees);
57
		$formulaire_ajout_annuaire = $this->getVue(Config::get('dossier_squelettes_gestion_annuaires').'annuaire_ajout',$donnees);
41
 
58
 
42
		return $formulaire_ajout_annuaire;
59
		return $formulaire_ajout_annuaire;
43
	}
60
	}
44
	
61
	
45
	public function ajouterAnnuaire($valeurs) {
62
	public function ajouterAnnuaire($valeurs) {
46
		
63
		
47
		$champs = array(
64
		$champs = array(
48
			"aa_nom" => '',
65
			"aa_nom" => '',
49
			"aa_description" => '',
66
			"aa_description" => '',
50
			"aa_bdd" => '',
67
			"aa_bdd" => '',
51
			"aa_table" => '',
68
			"aa_table" => '',
52
			"aa_code" => '',
69
			"aa_code" => '',
53
			"aa_champ_id" => '',
70
			"aa_champ_id" => '',
54
			"aa_champ_nom" => '',
71
			"aa_champ_nom" => '',
55
			"aa_champ_mail" => '',
72
			"aa_champ_mail" => '',
56
			"aa_champ_pass" => ''
73
			"aa_champ_pass" => ''
57
		);
74
		);
58
		
75
		
59
		$donnees = array('erreurs_champs' => array());
76
		$donnees = array('erreurs_champs' => array());
60
		
77
		
61
		// vérification de la présence de tous les champs
78
		// vérification de la présence de tous les champs
62
		foreach($champs as $nom_champ => $valeur) {
79
		foreach($champs as $nom_champ => $valeur) {
63
			if(!isset($valeurs[$nom_champ]) || $valeurs[$nom_champ] == '') {
80
			if(!isset($valeurs[$nom_champ]) || $valeurs[$nom_champ] == '') {
64
				$donnees['erreurs_champs'][$nom_champ] = 'Ce champ est obligatoire';
81
				$donnees['erreurs_champs'][$nom_champ] = 'Ce champ est obligatoire';
65
			}
82
			}
66
		}
83
		}
67
		
84
		
68
		// si il y a une erreur on réaffiche le formulaire
85
		// si il y a une erreur on réaffiche le formulaire
69
		if(!empty($donnees['erreurs_champs'])) {
86
		if(!empty($donnees['erreurs_champs'])) {
70
			return $this->afficherFormulaireAjoutAnnuaire($donnees);
87
			return $this->afficherFormulaireAjoutAnnuaire($donnees);
71
		}
88
		}
72
		
89
		
73
		$champs_a_verifier = array($valeurs[aa_champ_id],$valeurs[aa_champ_nom],$valeurs[aa_champ_mail],$valeurs[aa_champ_pass]);
90
		$champs_a_verifier = array($valeurs[aa_champ_id],$valeurs[aa_champ_nom],$valeurs[aa_champ_mail],$valeurs[aa_champ_pass]);
74
		
91
		
75
		$informations_annuaire = array(
92
		$informations_annuaire = array(
76
			"aa_nom" => $valeurs['aa_nom'],
93
			"aa_nom" => $valeurs['aa_nom'],
77
			"aa_description" => $valeurs['aa_description'],
94
			"aa_description" => $valeurs['aa_description'],
78
			"aa_bdd" => $valeurs['aa_bdd'],
95
			"aa_bdd" => $valeurs['aa_bdd'],
79
			"aa_table" => $valeurs['aa_table'],
96
			"aa_table" => $valeurs['aa_table'],
80
			"aa_code" => $valeurs['aa_code'],
97
			"aa_code" => $valeurs['aa_code'],
81
		);
98
		);
82
		
99
		
83
		$informations_champs = array(
100
		$informations_champs = array(
84
			"aa_champ_id" => $valeurs['aa_champ_id'],
101
			"aa_champ_id" => $valeurs['aa_champ_id'],
85
			"aa_champ_nom" => $valeurs['aa_champ_nom'],
102
			"aa_champ_nom" => $valeurs['aa_champ_nom'],
86
			"aa_champ_mail" => $valeurs['aa_champ_mail'],
103
			"aa_champ_mail" => $valeurs['aa_champ_mail'],
87
			"aa_champ_pass" => $valeurs['aa_champ_pass']
104
			"aa_champ_pass" => $valeurs['aa_champ_pass']
88
		);
105
		);
89
		
106
		
90
		$this->chargerModele('GestionAnnuaireModele');
107
		$this->chargerModele('GestionAnnuaireModele');
91
		$annuaire_existe = $this->GestionAnnuaireModele->verifierPresenceTable($valeurs['aa_bdd'], $valeurs['aa_table']);
108
		$annuaire_existe = $this->GestionAnnuaireModele->verifierPresenceTable($valeurs['aa_bdd'], $valeurs['aa_table']);
92
		
109
		
93
		// si l'annuaire existe déjà
110
		// si l'annuaire existe déjà
94
		if($annuaire_existe) {
111
		if($annuaire_existe) {
95
			$champs_existent = $this->GestionAnnuaireModele->verifierPresenceChamps($valeurs['aa_bdd'], $valeurs['aa_table'], $champs_a_verifier);
112
			$champs_existent = $this->GestionAnnuaireModele->verifierPresenceChamps($valeurs['aa_bdd'], $valeurs['aa_table'], $champs_a_verifier);
96
			// si l'annuaire existe déjà
113
			// si l'annuaire existe déjà
97
			if($champs_existent) {
114
			if($champs_existent) {
98
				// tout existe déjà, rien à créer
115
				// tout existe déjà, rien à créer
99
			}
116
			}
100
		} else {
117
		} else {
101
			
118
			
102
			$creation_table = $this->creerTableAnnuaire($informations_annuaire, $informations_champs);
119
			$creation_table = $this->creerTableAnnuaire($informations_annuaire, $informations_champs);
103
			if(!$creation_table) {
120
			if(!$creation_table) {
104
				$donnees['erreurs'] = 'Impossible de créer la table '.$informations_annuaire['aa_table'].' dans la base '.$informations_annuaire['aa_bdd'];
121
				$donnees['erreurs'] = 'Impossible de créer la table '.$informations_annuaire['aa_table'].' dans la base '.$informations_annuaire['aa_bdd'];
105
			}
122
			}
106
		}
123
		}
107
		
124
		
108
		// on insere un nouvel enregistrement dans la table des annuaire
125
		// on insere un nouvel enregistrement dans la table des annuaire
109
		$id_annuaire = $this->GestionAnnuaireModele->AjouterAnnuaire($informations_annuaire);
126
		$id_annuaire = $this->GestionAnnuaireModele->AjouterAnnuaire($informations_annuaire);
110
		
127
		
111
		if(!$id_annuaire) {
128
		if(!$id_annuaire) {
112
			$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'] ;
129
			$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'] ;
113
		}
130
		}
114
				
131
				
115
		// on cree un set de métadonnées minimal
132
		// on cree un set de métadonnées minimal
116
		$this->creerEtMapperChampsMetadonneeMinimaux($id_annuaire, $informations_champs);
133
		$this->creerEtMapperChampsMetadonneeMinimaux($id_annuaire, $informations_champs);
117
		
134
		
118
		return $this->chargerAnnuaire($id_annuaire);
135
		return $this->chargerAnnuaire($id_annuaire);
119
		
136
		
120
	}
137
	}
121
	
138
	
122
	private function creerTableAnnuaire($informations_annuaire,  $information_champs) {
139
	private function creerTableAnnuaire($informations_annuaire,  $information_champs) {
123
		$this->chargerModele('GestionAnnuaireModele');
140
		$this->chargerModele('GestionAnnuaireModele');
124
		
141
		
125
		$this->GestionAnnuaireModele->creerTableAnnuaire($informations_annuaire, $information_champs);
142
		$this->GestionAnnuaireModele->creerTableAnnuaire($informations_annuaire, $information_champs);
126
	}
143
	}
127
	
144
	
128
	private function creerEtMapperChampsMetadonneeMinimaux($id_annuaire, $informations_champs) {
145
	private function creerEtMapperChampsMetadonneeMinimaux($id_annuaire, $informations_champs) {
129
		
146
		
130
		$metadonnee_controleur = new MetadonneeControleur();
147
		$metadonnee_controleur = new MetadonneeControleur();
131
		$this->chargerModele('MappageModele');
148
		$this->chargerModele('MappageModele');
132
		$this->chargerModele('MetadonneeModele');
149
		$this->chargerModele('MetadonneeModele');
133
		
150
		
134
		foreach($informations_champs as $type_champ => $nom) {
151
		foreach($informations_champs as $type_champ => $nom) {
135
			
152
			
136
			$role = str_replace('aa_','',$type_champ);
153
			$role = str_replace('aa_','',$type_champ);
137
			
154
			
138
			if($role == 'champ_id') {
155
			if($role == 'champ_id') {
139
				$valeurs_mappage = array(
156
				$valeurs_mappage = array(
140
					'id_annuaire' => $id_annuaire,
157
					'id_annuaire' => $id_annuaire,
141
					'id_champ_annuaire' => $nom,
158
					'id_champ_annuaire' => $nom,
142
					'role' => 'champ_id',
159
					'role' => 'champ_id',
143
					'id_champ_metadonnee' => ''
160
					'id_champ_metadonnee' => ''
144
				);
161
				);
145
				$creation = $this->MappageModele->ajouterNouveauMappage($id_annuaire, $nom, 'champ_id', '0');
162
				$creation = $this->MappageModele->ajouterNouveauMappage($id_annuaire, $nom, 'champ_id', '0');
146
 
163
 
147
			} else {
164
			} else {
148
				
165
				
149
				$valeurs_insertion = $this->renvoyerInformationChampPourType($id_annuaire, $role, $nom);
166
				$valeurs_insertion = $this->renvoyerInformationChampPourType($id_annuaire, $role, $nom);
150
				
167
				
151
				$metadonnee_controleur->ajouterNouvelleMetadonnee($valeurs_insertion);
168
				$metadonnee_controleur->ajouterNouvelleMetadonnee($valeurs_insertion);
152
				
169
				
153
				$id_champ_metadonnee = $this->MetadonneeModele->renvoyerIdChampMetadonneeParAbreviation($id_annuaire, $valeurs_insertion['amc_abreviation']);
170
				$id_champ_metadonnee = $this->MetadonneeModele->renvoyerIdChampMetadonneeParAbreviation($id_annuaire, $valeurs_insertion['amc_abreviation']);
154
				
171
				
155
				// on affecte à chaque champ son role
172
				// on affecte à chaque champ son role
156
				$this->MappageModele->ajouterNouveauMappage($id_annuaire, $nom, $role, $id_champ_metadonnee);
173
				$this->MappageModele->ajouterNouveauMappage($id_annuaire, $nom, $role, $id_champ_metadonnee);
157
				// et on le rend obligatoire
174
				// et on le rend obligatoire
158
				$this->MappageModele->ajouterNouveauMappage($id_annuaire, $nom, 'champ_obligatoire', $id_champ_metadonnee);
175
				$this->MappageModele->ajouterNouveauMappage($id_annuaire, $nom, 'champ_obligatoire', $id_champ_metadonnee);
159
 
176
 
160
			}
177
			}
161
		}
178
		}
162
		
179
		
163
		return true;
180
		return true;
164
	}
181
	}
165
	
182
	
166
	private function renvoyerInformationChampPourType($id_annuaire, $type, $nom) {
183
	private function renvoyerInformationChampPourType($id_annuaire, $type, $nom) {
167
		
184
		
168
		$valeurs = array();
185
		$valeurs = array();
169
		$this->chargerModele('MetadonneeModele');
186
		$this->chargerModele('MetadonneeModele');
170
		
187
		
171
		$id_liste_champs = $this->id_liste_champs;
188
		$id_liste_champs = $this->id_liste_champs;
172
		
189
		
173
		switch($type) {
190
		switch($type) {
174
			case 'champ_nom':
191
			case 'champ_nom':
175
				
192
				
176
				$affichage = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation('text',$id_liste_champs);
193
				$affichage = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation('text',$id_liste_champs);
177
				
194
				
178
				$valeurs = array('amc_nom' => $nom,
195
				$valeurs = array('amc_nom' => $nom,
179
				'amc_abreviation' => 'nom' ,
196
				'amc_abreviation' => 'nom' ,
180
				'amc_description' => 'Nom',
197
				'amc_description' => 'Nom',
181
				'amc_ce_annuaire' => $id_annuaire,
198
				'amc_ce_annuaire' => $id_annuaire,
182
				'amc_ce_type_affichage' => $affichage,
199
				'amc_ce_type_affichage' => $affichage,
183
				'amc_ce_ontologie' => '0'
200
				'amc_ce_ontologie' => '0'
184
				);
201
				);
185
			break;
202
			break;
186
			
203
			
187
			case 'champ_mail':
204
			case 'champ_mail':
188
				
205
				
189
				$affichage = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation('mail',$id_liste_champs);
206
				$affichage = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation('mail',$id_liste_champs);
190
				$valeurs = array('amc_nom' => $nom,
207
				$valeurs = array('amc_nom' => $nom,
191
				'amc_abreviation' => 'mail',
208
				'amc_abreviation' => 'mail',
192
				'amc_description' => 'Adresse electronique',
209
				'amc_description' => 'Adresse electronique',
193
				'amc_ce_annuaire' => $id_annuaire,
210
				'amc_ce_annuaire' => $id_annuaire,
194
				'amc_ce_type_affichage' => $affichage,
211
				'amc_ce_type_affichage' => $affichage,
195
				'amc_ce_ontologie' => '0'
212
				'amc_ce_ontologie' => '0'
196
				);
213
				);
197
			break;
214
			break;
198
			
215
			
199
			case 'champ_pass':
216
			case 'champ_pass':
200
				
217
				
201
				$affichage = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation('password',$id_liste_champs);
218
				$affichage = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation('password',$id_liste_champs);
202
				$valeurs = array('amc_nom' => $nom,
219
				$valeurs = array('amc_nom' => $nom,
203
				'amc_abreviation' => 'pass',
220
				'amc_abreviation' => 'pass',
204
				'amc_description' => 'Mot de passe',
221
				'amc_description' => 'Mot de passe',
205
				'amc_ce_annuaire' => $id_annuaire,
222
				'amc_ce_annuaire' => $id_annuaire,
206
				'amc_ce_type_affichage' => $affichage,
223
				'amc_ce_type_affichage' => $affichage,
207
				'amc_ce_ontologie' => '0'
224
				'amc_ce_ontologie' => '0'
208
				);
225
				);
209
			break;
226
			break;
210
		}
227
		}
211
		
228
		
212
		return $valeurs;
229
		return $valeurs;
213
	}
230
	}
214
}
231
}