Subversion Repositories Applications.annuaire

Rev

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

Rev 167 Rev 313
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Modèle d'accès à la base de données des listes
4
 * Modèle d'accès à la base de données des listes
5
 * d'ontologies
5
 * d'ontologies
6
 *
6
 *
7
 * PHP Version 5
7
 * PHP Version 5
8
 *
8
 *
9
 * @package   Framework
9
 * @package   Framework
10
 * @category  Class
10
 * @category  Class
11
 * @author	aurelien <aurelien@tela-botanica.org>
11
 * @author	aurelien <aurelien@tela-botanica.org>
12
 * @copyright 2009 Tela-Botanica
12
 * @copyright 2009 Tela-Botanica
13
 * @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
13
 * @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
14
 * @license   http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
14
 * @license   http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
15
 * @version   SVN: $$Id: ListeAdmin.php 128 2009-09-02 12:20:55Z aurelien $$
15
 * @version   SVN: $$Id: ListeAdmin.php 128 2009-09-02 12:20:55Z aurelien $$
16
 * @link	  /doc/framework/
16
 * @link	  /doc/framework/
17
 *
17
 *
18
 */
18
 */
19
class GestionAnnuaireModele extends Modele {
19
class GestionAnnuaireModele extends Modele {
20
	
20
	
21
	public function verifierPresenceTable($bdd, $nom_table) {
21
	public function verifierPresenceTable($bdd, $nom_table) {
22
		
22
		
23
		if(!$bdd || !$nom_table) {
23
		if(!$bdd || !$nom_table) {
24
			return false;
24
			return false;
25
		}
25
		}
26
		
26
		
27
		$requete_presence_table = 'SELECT * FROM information_schema.tables
27
		$requete_presence_table = 'SELECT * FROM information_schema.tables
28
		WHERE TABLE_SCHEMA = '.$this->proteger($bdd).' AND TABLE_NAME = '.$this->proteger($nom_table);
28
		WHERE TABLE_SCHEMA = '.$this->proteger($bdd).' AND TABLE_NAME = '.$this->proteger($nom_table);
29
		
29
		
30
		$presence_table = $this->requeteUn($requete_presence_table);
30
		$presence_table = $this->requeteUn($requete_presence_table);
31
		
31
		
32
		return $presence_table;
32
		return $presence_table;
33
	}
33
	}
34
	
34
	
35
	public function verifierPresenceChamps($bdd, $nom_table, $champs_a_verifier) {
35
	public function verifierPresenceChamps($bdd, $nom_table, $champs_a_verifier) {
36
		
36
		
37
		$tableau_champs_table = $this->obtenirListeNomsChampsAnnuaireParBddNomTable($bdd, $nom_table);
37
		$tableau_champs_table = $this->obtenirListeNomsChampsAnnuaireParBddNomTable($bdd, $nom_table);
38
 
38
 
39
		foreach($champs_a_verifier as $champ) {
39
		foreach($champs_a_verifier as $champ) {
40
			if(!in_array($champ, $tableau_champs_table)) {
40
			if(!in_array($champ, $tableau_champs_table)) {
41
				return false;
41
				return false;
42
			}
42
			}
43
		}
43
		}
44
		
44
		
45
		return $resultat;
45
		return $resultat;
46
	}
46
	}
47
	
47
	
48
	public function obtenirListeNomsChampsAnnuaireParBddNomTable($bdd, $nom_table) {
48
	public function obtenirListeNomsChampsAnnuaireParBddNomTable($bdd, $nom_table) {
49
		
49
		
50
		if(!$bdd || !$nom_table) {
50
		if(!$bdd || !$nom_table) {
51
			return false;
51
			return false;
52
		}
52
		}
53
 
53
 
54
		$requete = 'DESCRIBE '.$bdd.'.'.$nom_table;
54
		$requete = 'DESCRIBE '.$bdd.'.'.$nom_table;
55
		
55
		
56
		$resultat = $this->requeteTous($requete);
56
		$resultat = $this->requeteTous($requete);
57
		
57
		
58
		if(!$resultat) {
58
		if(!$resultat) {
59
			return false;
59
			return false;
60
		}
60
		}
61
		
61
		
62
		$tableau_champs_table = array();;
62
		$tableau_champs_table = array();;
63
		
63
		
64
		foreach($resultat as $champ_table) {
64
		foreach($resultat as $champ_table) {
65
			$tableau_champs_table[] = $champ_table['Field'];
65
			$tableau_champs_table[] = $champ_table['Field'];
66
		}
66
		}
67
		
67
		
68
		return $tableau_champs_table;
68
		return $tableau_champs_table;
69
	}
69
	}
70
	
70
	
71
	public function obtenirListeNomsChampsAnnuaireParIdAnnuaire($id_annuaire) {
71
	public function obtenirListeNomsChampsAnnuaireParIdAnnuaire($id_annuaire) {
72
		
72
		
73
		
73
		
74
		$requete_selection_bdd_table =  'SELECT aa_bdd, aa_table FROM annu_annuaire '.
74
		$requete_selection_bdd_table =  'SELECT aa_bdd, aa_table FROM annu_annuaire '.
75
					' WHERE aa_id_annuaire = '.$this->proteger($id_annuaire);
75
					' WHERE aa_id_annuaire = '.$this->proteger($id_annuaire);
76
		
76
		
77
		$resultat_selection_bdd_table = $this->requeteUn($requete_selection_bdd_table);
77
		$resultat_selection_bdd_table = $this->requeteUn($requete_selection_bdd_table);
78
			
78
			
79
		if(!$resultat_selection_bdd_table) {
79
		if(!$resultat_selection_bdd_table) {
80
			return array();
80
			return array();
81
		}
81
		}
82
		
82
		
83
		return $this->obtenirListeNomsChampsAnnuaireParBddNomTable($resultat_selection_bdd_table['aa_bdd'], $resultat_selection_bdd_table['aa_table']);
83
		return $this->obtenirListeNomsChampsAnnuaireParBddNomTable($resultat_selection_bdd_table['aa_bdd'], $resultat_selection_bdd_table['aa_table']);
84
	}
84
	}
85
	
85
	
86
	public function ajouterAnnuaire($informations) {
86
	public function ajouterAnnuaire($informations) {
87
		
87
		
88
		if(!$informations) {
88
		if(!$informations) {
89
			return false;
89
			return false;
90
		}
90
		}
91
								
91
								
92
		$valeurs_prot = array_map(array($this,'proteger'),$informations);
92
		$valeurs_prot = array_map(array($this,'proteger'),$informations);
93
		
93
		
94
		$valeurs = implode(',',$valeurs_prot);
94
		$valeurs = implode(',',$valeurs_prot);
95
		$champs = implode(',',array_keys($informations));
95
		$champs = implode(',',array_keys($informations));
96
 
96
 
97
		$requete_insertion_annuaire =  'INSERT INTO annu_annuaire '.
97
		$requete_insertion_annuaire =  'INSERT INTO annu_annuaire '.
98
					'('.$champs.') '.
98
					'('.$champs.') '.
99
					'VALUES ('.$valeurs.')';
99
					'VALUES ('.$valeurs.')';
100
		
100
		
101
		$resultat_insertion_annuaire = $this->requete($requete_insertion_annuaire);
101
		$resultat_insertion_annuaire = $this->requete($requete_insertion_annuaire);
102
		
102
		
103
		$id_annuaire = false;
103
		$id_annuaire = false;
104
		
104
		
105
		if($resultat_insertion_annuaire) {
105
		if($resultat_insertion_annuaire) {
106
			
106
			
107
			$requete_selection_annuaire =  'SELECT aa_id_annuaire FROM annu_annuaire '.
107
			$requete_selection_annuaire =  'SELECT aa_id_annuaire FROM annu_annuaire '.
108
					' WHERE aa_code = '.$this->proteger($informations['aa_code']);
108
					' WHERE aa_code = '.$this->proteger($informations['aa_code']);
109
			
109
			
110
			$resultat_selection_annuaire = $this->requeteUn($requete_selection_annuaire);
110
			$resultat_selection_annuaire = $this->requeteUn($requete_selection_annuaire);
111
			
111
			
112
			if($resultat_selection_annuaire) {
112
			if($resultat_selection_annuaire) {
113
				$id_annuaire = $resultat_selection_annuaire['aa_id_annuaire'];
113
				$id_annuaire = $resultat_selection_annuaire['aa_id_annuaire'];
114
			}
114
			}
115
		}
115
		}
116
		
116
		
117
		return $id_annuaire;
117
		return $id_annuaire;
118
	}
118
	}
119
	
119
	
120
	public function creerTableAnnuaire($informations_table, $informations_champs) {
120
	public function creerTableAnnuaire($informations_table, $informations_champs) {
121
				
121
				
122
		$nom_bdd = $informations_table['aa_bdd'];
122
		$nom_bdd = $informations_table['aa_bdd'];
123
		$nom_table = $informations_table['aa_table'];
123
		$nom_table = $informations_table['aa_table'];
124
		
124
		
125
		$champ_id = $informations_champs['aa_champ_id'];
125
		$champ_id = $informations_champs['aa_champ_id'];
126
		$champ_nom = $informations_champs['aa_champ_nom'];
126
		$champ_nom = $informations_champs['aa_champ_nom'];
127
		$champ_mail = $informations_champs['aa_champ_mail'];
127
		$champ_mail = $informations_champs['aa_champ_mail'];
128
		$champ_mot_de_passe = $informations_champs['aa_champ_pass'];
128
		$champ_mot_de_passe = $informations_champs['aa_champ_pass'];
129
		
129
		
130
		$requete_creation_table = 'CREATE TABLE '.$nom_bdd.'.'.$nom_table.' '.
130
		$requete_creation_table = 'CREATE TABLE '.$nom_bdd.'.'.$nom_table.' '.
131
									'('.$champ_id.' INT NOT NULL AUTO_INCREMENT PRIMARY KEY,'. 
131
									'('.$champ_id.' INT NOT NULL AUTO_INCREMENT PRIMARY KEY,'. 
132
									$champ_nom.' VARCHAR(255) NOT NULL, '. 
132
									$champ_nom.' VARCHAR(255) NOT NULL, '. 
133
									$champ_mail.' VARCHAR(255) NOT NULL, '. 
133
									$champ_mail.' VARCHAR(255) NOT NULL, '. 
134
									$champ_mot_de_passe.' VARCHAR(255) NOT NULL)';
134
									$champ_mot_de_passe.' VARCHAR(255) NOT NULL)';
135
		
135
		
136
		return $this->requete($requete_creation_table);
136
		return $this->requete($requete_creation_table);
137
		
137
		
138
	}
138
	}
139
	
139
	
140
	/**
140
	/**
141
	 * Charge la liste complète des champs d'un annuaire
141
	 * Charge la liste complète des champs d'un annuaire
142
	 * @param int $identifiant l'identifiant de l'annuaire demandé
142
	 * @param int $identifiant l'identifiant de l'annuaire demandé
143
	 * @param boolean $charger_liste_champs indique si l'on doit ou non charger la liste des noms des champs
143
	 * @param boolean $charger_liste_champs indique si l'on doit ou non charger la liste des noms des champs
144
	 * @return array un tableau contenant des objets d'informations sur les annuaires
144
	 * @return array un tableau contenant des objets d'informations sur les annuaires
145
	 */
145
	 */
146
   	public function chargerAnnuaire($identifiant, $charger_liste_champs = true) {
146
   	public function chargerAnnuaire($identifiant, $charger_liste_champs = true) {
147
 
147
 
148
		$requete = 	'SELECT * '.
148
		$requete = 	'SELECT * '.
149
					'FROM  annu_annuaire '.
149
					'FROM  annu_annuaire '.
150
					'WHERE aa_id_annuaire = '.$identifiant.' ';
150
					'WHERE aa_id_annuaire = '.$identifiant.' ';
151
		$resultat = $this->requeteTous($requete);
151
		$resultat = $this->requeteTous($requete);
152
		$annuaire = array();
152
		$annuaire = array();
153
		foreach ($resultat as $ligne) {
153
		foreach ($resultat as $ligne) {
154
			$annuaire['informations'] = $ligne;
154
			$annuaire['informations'] = $ligne;
155
		}
155
		}
156
 
156
 
157
		if($charger_liste_champs) {
157
		if($charger_liste_champs) {
158
			$requete = 'DESCRIBE '.$annuaire['informations']['aa_bdd'].'.'.$annuaire['informations']['aa_table'];
158
			$requete = 'DESCRIBE '.$annuaire['informations']['aa_bdd'].'.'.$annuaire['informations']['aa_table'];
159
			$resultat = $this->requeteTous($requete);
159
			$resultat = $this->requeteTous($requete);
160
			foreach ($resultat as $colonne) {
160
			foreach ($resultat as $colonne) {
161
				$annuaire['colonnes'][] = $colonne;
161
				$annuaire['colonnes'][] = $colonne;
162
			}
162
			}
163
		}
163
		}
164
 
164
 
165
		return $annuaire;
165
		return $annuaire;
166
	}
166
	}
167
}
-
 
168
167
}
-
 
168
?>
-
 
169
169
170