Subversion Repositories Applications.annuaire

Rev

Rev 144 | Rev 164 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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