Subversion Repositories Applications.annuaire

Rev

Rev 164 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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