Subversion Repositories Applications.annuaire

Rev

Rev 161 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
144 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/
12
*/
13
 
14
class MappageControleur extends AppControleur {
15
 
16
	private $id_liste_champs = 30768;
17
 
18
	/**
19
	 * Charge la vue contenant les informations d'un annuaire géré par l'application
20
	 * @param int $id l'annuaire dont on veut consulter les informations
21
	 * @return string la vue contenant les informations
22
	 */
23
	public function chargerAnnuaire($id) {
24
		$this->chargerModele('AnnuaireModele');
25
		$this->chargerModele('MetadonneeModele');
26
		$data['erreurs'] = array();
27
		$data['annuaire'] = $this->AnnuaireModele->chargerAnnuaire($id,true);
28
		$data['metadonnees'] = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id);
29
		$annuaire = $this->getVue(Config::get('dossier_squelettes_gestion_annuaires').'annuaire', $data);
30
 
31
		return $annuaire;
32
	}
33
 
34
/**--------Fonctions d'ajout et de modification des annuaires --------*/
35
 
36
	public function ajouterAnnuaire($valeurs) {
37
 
38
		$champs = array(
39
			"aa_nom" => '',
40
			"aa_description" => '',
41
			"aa_bdd" => '',
42
			"aa_table" => '',
43
			"aa_code" => '',
44
			"aa_champ_id" => '',
45
			"aa_champ_nom" => '',
46
			"aa_champ_mail" => '',
47
			"aa_champ_pass" => ''
48
		);
49
 
50
		$donnees = array('erreurs_champs' => array());
51
 
52
		// vérification de la présence de tous les champs
53
		foreach($champs as $nom_champ => $valeur) {
54
			if(!isset($valeurs[$nom_champ]) || $valeurs[$nom_champ] == '') {
55
				$donnees['erreurs_champs'][$nom_champ] = 'Ce champ est obligatoire';
56
			}
57
		}
58
 
59
		// si il y a une erreur on réaffiche le formulaire
60
		if(!empty($donnees['erreurs_champs'])) {
61
			return $this->afficherFormulaireAjoutAnnuaire($donnees);
62
		}
63
 
64
		$champs_a_verifier = array($valeurs[aa_champ_id],$valeurs[aa_champ_nom],$valeurs[aa_champ_mail],$valeurs[aa_champ_pass]);
65
 
66
		$informations_annuaire = array(
67
			"aa_nom" => $valeurs['aa_nom'],
68
			"aa_description" => $valeurs['aa_description'],
69
			"aa_bdd" => $valeurs['aa_bdd'],
70
			"aa_table" => $valeurs['aa_table'],
71
			"aa_code" => $valeurs['aa_code'],
72
		);
73
 
74
		$informations_champs = array(
75
			"aa_champ_id" => $valeurs['aa_champ_id'],
76
			"aa_champ_nom" => $valeurs['aa_champ_nom'],
77
			"aa_champ_mail" => $valeurs['aa_champ_mail'],
78
			"aa_champ_pass" => $valeurs['aa_champ_pass']
79
		);
80
 
81
		$this->chargerModele('GestionAnnuaireModele');
82
		$annuaire_existe = $this->GestionAnnuaireModele->verifierPresenceTable($valeurs['aa_bdd'], $valeurs['aa_table']);
83
 
84
		// si l'annuaire existe déjà
85
		if($annuaire_existe) {
86
			$champs_existent = $this->GestionAnnuaireModele->verifierPresenceChamps($valeurs['aa_bdd'], $valeurs['aa_table'], $champs_a_verifier);
87
			// si l'annuaire existe déjà
88
			if($champs_existent) {
89
				// on insere un nouvel enregistrement dans la table des annuaire
90
				$id_annuaire = $this->GestionAnnuaireModele->AjouterAnnuaire($informations_annuaire);
91
 
92
				if(!$id_annuaire) {
93
					$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'] ;
94
				}
95
 
96
				// on cree un set de métadonnées minimal
97
				$this->creerEtMapperChampsMetadonneeMinimaux($id_annuaire, $informations_champs);
98
			}
99
		}
100
 
101
		return $this->chargerAnnuaire($id_annuaire);
102
 
103
	}
104
 
105
	private function creerEtMapperChampsMetadonneeMinimaux($id_annuaire, $informations_champs) {
106
 
107
		$metadonnee_controleur = new MetadonneeControleur();
108
		$this->chargerModele('MappageModele');
109
		$this->chargerModele('MetadonneeModele');
110
 
111
		foreach($informations_champs as $type_champ => $nom) {
112
 
113
			$role = str_replace('aa_','',$type_champ);
114
 
115
			if($role == 'champ_id') {
116
				$valeurs_mappage = array(
117
					'id_annuaire' => $id_annuaire,
118
					'id_champ_annuaire' => $nom,
119
					'role' => 'champ_id',
120
					'id_champ_metadonnee' => ''
121
				);
122
				$creation = $this->MappageModele->ajouterNouveauMappage($id_annuaire, $nom, 'champ_id', '0');
123
 
124
			} else {
125
 
126
				$valeurs_insertion = $this->renvoyerInformationChampPourType($id_annuaire, $role, $nom);
127
 
128
				$metadonnee_controleur->ajouterNouvelleMetadonnee($valeurs_insertion);
129
 
130
				$id_champ_metadonnee = $this->MetadonneeModele->renvoyerIdChampMetadonneeParAbreviation($id_annuaire, $valeurs_insertion['amc_abreviation']);
131
 
132
				// on affecte à chaque champ son role
133
				$this->MappageModele->ajouterNouveauMappage($id_annuaire, $nom, $role, $id_champ_metadonnee);
134
				// et on le rend obligatoire
135
				$this->MappageModele->ajouterNouveauMappage($id_annuaire, $nom, 'champ_obligatoire', $id_champ_metadonnee);
136
 
137
			}
138
		}
139
 
140
		return true;
141
	}
142
 
143
	private function renvoyerInformationChampPourType($id_annuaire, $type, $nom) {
144
 
145
		$valeurs = array();
146
		$this->chargerModele('MetadonneeModele');
147
 
148
		$id_liste_champs = $this->id_liste_champs;
149
 
150
		switch($type) {
151
			case 'champ_nom':
152
 
153
				$affichage = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation('text',$id_liste_champs);
154
 
155
				$valeurs = array('amc_nom' => $nom,
156
				'amc_abreviation' => 'nom' ,
157
				'amc_description' => 'Nom',
158
				'amc_ce_annuaire' => $id_annuaire,
159
				'amc_ce_type_affichage' => $affichage,
160
				'amc_ce_ontologie' => '0'
161
				);
162
			break;
163
 
164
			case 'champ_mail':
165
 
166
				$affichage = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation('mail',$id_liste_champs);
167
				$valeurs = array('amc_nom' => $nom,
168
				'amc_abreviation' => 'mail',
169
				'amc_description' => 'Adresse electronique',
170
				'amc_ce_annuaire' => $id_annuaire,
171
				'amc_ce_type_affichage' => $affichage,
172
				'amc_ce_ontologie' => '0'
173
				);
174
			break;
175
 
176
			case 'champ_pass':
177
 
178
				$affichage = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation('password',$id_liste_champs);
179
				$valeurs = array('amc_nom' => $nom,
180
				'amc_abreviation' => 'pass',
181
				'amc_description' => 'Mot de passe',
182
				'amc_ce_annuaire' => $id_annuaire,
183
				'amc_ce_type_affichage' => $affichage,
184
				'amc_ce_ontologie' => '0'
185
				);
186
			break;
187
		}
188
 
189
		return $valeurs;
190
	}
191
 
192
	/**
193
	 * Affiche le formulaire d'ajout d'une metadonnee
194
	 * @param Array $valeurs les valeurs à inclure dans le formulaire (dans le cas du retour erreur)
195
	 * @return string la vue contenant le formulaire
196
	 */
197
	public function afficherFormulaireAjoutAnnuaire($donnees) {
198
 
199
		$champs = array(
200
			"aa_nom" => '',
201
			"aa_description" => '',
202
			"aa_bdd" => '',
203
			"aa_table" => '',
204
			"aa_code" => '',
205
			"aa_champ_id" => '',
206
			"aa_champ_nom" => '',
207
			"aa_champ_mail" => '',
208
			"aa_champ_pass" => ''
209
		);
210
		$donnees = $donnees;
211
 
212
		$formulaire_ajout_annuaire = $this->getVue(Config::get('dossier_squelettes_gestion_annuaires').'annuaire_ajout',$donnees);
213
 
214
		return $formulaire_ajout_annuaire;
215
	}
216
 
217
 
218
 
219
/**--------Fonctions de gestion des champs de mappage associées à un annuaire et des formaulaires associés --------*/
220
	/**
221
	 * Affiche le formulaire d'ajout d'une metadonnee
222
	 * @param Array $valeurs les valeurs à inclure dans le formulaire (dans le cas du retour erreur)
223
	 * @return string la vue contenant le formulaire
224
	 */
225
	public function afficherFormulaireAjoutMappage($id_annuaire) {
226
 
227
		if(!isset($valeurs['amc_nom'])) {
228
			$valeurs['amc_nom'] = '';
229
		}
230
 
231
		if(!isset($valeurs['amc_abreviation'])) {
232
				$valeurs['amc_abreviation'] = '';
233
		}
234
 
235
		if(!isset($valeurs['amc_description'])) {
236
				$valeurs['amc_description'] = '';
237
		}
238
		$data['valeur'] = $valeurs;
239
 
240
		$this->chargerModele('MetadonneeModele');
241
		$data['types'] = $this->MetadonneeModele->chargerListeDesTypesDeMappage();
242
		$data['listes'] = $this->MetadonneeModele->chargerListeDesListes();
243
		$metadonnee_ajout = $this->getVue(Config::get('dossier_squelettes_metadonnees').'metadonnee_ajout',$data);
244
 
245
		return $metadonnee_ajout;
246
	}
247
 
248
	/**
249
	 * Affiche le formulaire de modification d'une metadonnee
250
	 * @param Array $valeurs les valeurs à inclure dans le formulaire
251
	 * @return string la vue contenant le formulaire
252
	 */
253
	public function afficherFormulaireModificationMappage($id_mappage) {
254
 
255
		if(!isset($valeurs['amc_nom'])) {
256
			$valeurs['amc_nom'] = '';
257
		}
258
 
259
		if(!isset($valeurs['amc_abreviation'])) {
260
				$valeurs['amc_abreviation'] = '';
261
		}
262
 
263
		if(!isset($valeurs['amc_description'])) {
264
				$valeurs['amc_description'] = '';
265
		}
266
		$data['valeur'] = $valeurs;
267
 
268
		$this->chargerModele('MetadonneeModele');
269
		$data['valeur'] = $this->MetadonneeModele->chargerInformationsMetadonnee($valeurs['amc_id_champ']);
270
		$data['types'] = $this->MetadonneeModele->chargerListeDesTypesDeChamps();
271
		$data['listes'] = $this->MetadonneeModele->chargerListeDesListes();
272
		$metadonnee_modification = $this->getVue(Config::get('dossier_squelettes_metadonnees').'metadonnee_modification',$data);
273
 
274
		return $metadonnee_modification;
275
	}
276
 
277
	/**
278
	 * Ajoute un nouveau champ de métadonnée à un annuaire
279
	 * @param Array $valeurs les valeurs à ajouter
280
	 * @return string la vue contenant l'annuaire associé, ou le formulaire en cas d'échec
281
	 */
282
	public function ajouterNouveauMappage($valeurs) {
283
 
284
		if(isset($valeurs['id_annuaire'])
285
			&& isset($valeurs['id_champ_annuaire'])
286
			&& isset($valeurs['role'])
287
			&& isset($valeurs['id_champ_metadonnee'])) {
288
			$this->chargerModele('MappageModele');
289
			$this->MetadonneeModele->ajouterNouveauMappage($valeurs);
290
		} else  {
291
			return $this->afficherFormulaireAjoutMappage($valeurs);
292
		}
293
		return $this->chargerAnnuaire($valeurs['amc_ce_annuaire']);
294
	}
295
 
296
	/**
297
	 * Modifie un champ de mapagge associé à un annuaire
298
	 * @param Array $valeurs les valeurs à modifier
299
	 * @return string la vue contenant l'annuaire associé, ou le formulaire en cas d'échec
300
	 */
301
	public function modifierMappage($valeurs) {
302
 
303
		if(isset($valeurs['amc_id_champ'])
304
			&& isset($valeurs['amc_nom'])
305
			&& isset($valeurs['amc_abreviation'])
306
			&& isset($valeurs['amc_description'])
307
			&& isset($valeurs['amc_ce_annuaire'])
308
			&& isset($valeurs['amc_ce_type_affichage'])) {
309
			$this->chargerModele('MetadonneeModele');
310
			$this->MetadonneeModele->modifierMetadonnee($valeurs);
311
		} else  {
312
			return $this->afficherFormulaireModificationMetadonnee($valeurs);
313
		}
314
		return $this->chargerAnnuaire($valeurs['amc_ce_annuaire']);
315
	}
316
 
317
	/**
318
	 * Supprime un champ de métadonnée associé à un annuaire
319
	 * @return string la vue contenant l'annuaire associé, ou le formulaire en cas d'échec
320
	 */
321
	public function supprimerMappage($id_annuaire, $id_mappage) {
322
 
323
		if($id_metadonnee != '') {
324
			$this->chargerModele('MetadonneeModele');
325
			$this->MetadonneeModele->supprimerMetadonneeParId($id_metadonnee);
326
		} else  {
327
			return false;
328
		}
329
		return $this->chargerAnnuaire($id_annuaire);
330
	}
331
 
332
}