5 |
aurelien |
1 |
<?php
|
|
|
2 |
/**
|
|
|
3 |
* Modèle d'accès à la base de données des administrateurs
|
|
|
4 |
* de papyrus
|
|
|
5 |
*/
|
|
|
6 |
class listeAdmin extends Modele {
|
|
|
7 |
|
83 |
jpm |
8 |
private $config = array();
|
5 |
aurelien |
9 |
|
|
|
10 |
/**
|
|
|
11 |
* Charge la liste complète des administrateurs
|
|
|
12 |
* return array un tableau contenant des objets d'informations sur les administrateurs
|
|
|
13 |
* @return array un tableau d'objets contenant la liste des administrateurs
|
|
|
14 |
*/
|
83 |
jpm |
15 |
public function chargerAdmin() {
|
|
|
16 |
$requete = 'SELECT * '.
|
|
|
17 |
'FROM gen_annuaire '.
|
|
|
18 |
'ORDER BY ga_id_administrateur';
|
|
|
19 |
$resultat = $this->requete($requete);
|
|
|
20 |
$admin = array();
|
|
|
21 |
foreach ($resultat->fetchAll() as $ligne) {
|
|
|
22 |
if ($ligne['ga_id_administrateur'] != 0) {
|
|
|
23 |
$admin[] = $ligne;
|
5 |
aurelien |
24 |
}
|
|
|
25 |
}
|
83 |
jpm |
26 |
return $admin;
|
5 |
aurelien |
27 |
}
|
|
|
28 |
|
|
|
29 |
/**
|
|
|
30 |
* Charge les informations liées à un administrateur
|
|
|
31 |
* grâce à son id
|
|
|
32 |
* @param int l'identifiant de l'administrateur.
|
|
|
33 |
* @return object un object contenant les informations de l'administrateur demandé
|
|
|
34 |
*/
|
83 |
jpm |
35 |
public function loadDetailsAdmin($id) {
|
|
|
36 |
$requete = 'SELECT * '.
|
|
|
37 |
'FROM gen_annuaire '.
|
|
|
38 |
"WHERE ga_id_administrateur = '$id' ";
|
|
|
39 |
$resultat = $this->requete($requete);
|
|
|
40 |
|
|
|
41 |
$admin = array();
|
|
|
42 |
foreach ($resultat->fetchAll() as $ligne) {
|
|
|
43 |
$admin = $ligne;
|
5 |
aurelien |
44 |
}
|
83 |
jpm |
45 |
return $admin;
|
5 |
aurelien |
46 |
}
|
|
|
47 |
|
|
|
48 |
|
|
|
49 |
/**
|
|
|
50 |
* Modifie les informations liées à un administrateur dans la base de données
|
|
|
51 |
* Si le mot de passe n'est pas renseigné, il n'est pas changé
|
|
|
52 |
* @param int identifiant de l'admiistrateur
|
|
|
53 |
* @param string nom
|
|
|
54 |
* @param string prenom
|
|
|
55 |
* @param string le mail
|
|
|
56 |
* @param string le code de langue
|
|
|
57 |
* @param string le mot de passe (optionnel)
|
|
|
58 |
* @param string la confirmation du mot de passe (optionnel)
|
|
|
59 |
* @return array un tableau contenant les erreurs s'il y en a, vide sinon
|
|
|
60 |
*/
|
83 |
jpm |
61 |
function modifDetailsAdmin($id, $nom, $prenom, $mail, $lang, $pass = '', $pass_conf = '') {
|
|
|
62 |
$res = array();
|
|
|
63 |
$nb_admin = 0;
|
5 |
aurelien |
64 |
|
83 |
jpm |
65 |
if (!$this->validerMail($mail)) {
|
|
|
66 |
$res['mail'] = 'Adresse mail invalide';
|
5 |
aurelien |
67 |
}
|
|
|
68 |
|
83 |
jpm |
69 |
$query_verif_mail = 'SELECT COUNT(*) AS nb_admin '.
|
|
|
70 |
'FROM gen_annuaire '.
|
|
|
71 |
"WHERE ga_mail = '{$this->proteger($mail)}'".
|
|
|
72 |
" AND ga_id_administrateur != $id ";
|
|
|
73 |
if ($res_nb = $this->requete($query_verif_mail)) {
|
5 |
aurelien |
74 |
$ligne = $res_nb->fetch();
|
|
|
75 |
$nb_admin = $ligne['nb_admin'] ;
|
|
|
76 |
} else {
|
|
|
77 |
$res['bdd'] = 'Erreur dans la base de données' ;
|
83 |
jpm |
78 |
return $res;
|
5 |
aurelien |
79 |
}
|
|
|
80 |
|
|
|
81 |
if($nb_admin != 0) {
|
|
|
82 |
$res['mail'] = 'Cet email est déjà utilisé par un autre utilisateur' ;
|
|
|
83 |
}
|
|
|
84 |
|
|
|
85 |
$query = 'UPDATE gen_annuaire SET ga_ce_i18n='.$this->proteger($lang).', ga_nom='.$this->proteger($nom).',ga_prenom='.
|
|
|
86 |
$this->proteger($prenom).',ga_mail='.$this->proteger($mail) ;
|
|
|
87 |
|
|
|
88 |
// si on a entré quelque chose dans les deux champs de mot de passe
|
|
|
89 |
if($pass != '' || $pass_conf != '') {
|
|
|
90 |
// on vérifie si les deux concordent
|
|
|
91 |
if($pass == $pass_conf) {
|
|
|
92 |
// si oui, on les modifie
|
|
|
93 |
$query .= ',ga_mot_de_passe='.$this->proteger(md5($pass)) ;
|
|
|
94 |
} else {
|
|
|
95 |
// si non, on notifiera l'utilisateur
|
|
|
96 |
$res['pass'] = 'mot de passe invalide' ;
|
|
|
97 |
}
|
|
|
98 |
}
|
|
|
99 |
|
|
|
100 |
$query .= ' WHERE ga_id_administrateur='.$id ;
|
|
|
101 |
|
|
|
102 |
if(count($res) != 0) {
|
|
|
103 |
return $res ;
|
|
|
104 |
}
|
|
|
105 |
|
|
|
106 |
if($req_maj = $this->requete($query)) {
|
|
|
107 |
|
|
|
108 |
} else {
|
|
|
109 |
$res['bdd'] = 'Erreur de la requête dans la base de données' ;
|
|
|
110 |
}
|
|
|
111 |
|
83 |
jpm |
112 |
return $res;
|
5 |
aurelien |
113 |
}
|
|
|
114 |
|
|
|
115 |
/**
|
|
|
116 |
* Supprime un administrateur ayant un id donnée
|
|
|
117 |
* @param int l'identifiant de l'administrateur
|
|
|
118 |
* @return array un tableau contenant les erreurs s'il y en a, vide sinon
|
|
|
119 |
*/
|
|
|
120 |
function suppAdmin($id) {
|
|
|
121 |
|
|
|
122 |
$nb_admin = 0 ;
|
|
|
123 |
$res = '' ;
|
|
|
124 |
|
|
|
125 |
$query_verif = 'SELECT COUNT(*) AS nb_admin FROM gen_annuaire' ;
|
|
|
126 |
if($res_nb = $this->requete($query_verif)) {
|
|
|
127 |
$ligne = $res_nb->fetch();
|
|
|
128 |
$nb_admin = $ligne['nb_admin'] ;
|
|
|
129 |
} else {
|
|
|
130 |
$res = 'Erreur dans la base de données' ;
|
|
|
131 |
return $res ;
|
|
|
132 |
}
|
|
|
133 |
|
|
|
134 |
if($nb_admin == 2) {
|
|
|
135 |
$res = 'Impossible de supprimer le dernier administrateur' ;
|
|
|
136 |
return $res ;
|
|
|
137 |
}
|
|
|
138 |
|
|
|
139 |
$query = 'DELETE FROM gen_annuaire WHERE ga_id_administrateur='.$id ;
|
|
|
140 |
|
|
|
141 |
if($res_supp = $this->requete($query)) {
|
|
|
142 |
return $res ;
|
|
|
143 |
} else {
|
|
|
144 |
$res = 'Erreur dans la base de données' ;
|
|
|
145 |
return $res ;
|
|
|
146 |
}
|
|
|
147 |
}
|
|
|
148 |
|
|
|
149 |
/**
|
|
|
150 |
* Ajoute un administrateur dans la base de données
|
|
|
151 |
* @param string nom
|
|
|
152 |
* @param string prenom
|
|
|
153 |
* @param string le mail
|
|
|
154 |
* @param string le code de langue
|
|
|
155 |
* @param string le mot de passe
|
|
|
156 |
* @param string la confirmation du mot de passe
|
|
|
157 |
* @return array un tableau contenant les erreurs s'il y en a, vide sinon
|
|
|
158 |
*/
|
|
|
159 |
function ajoutAdmin($nom,$prenom,$mail,$lang,$pass,$pass_conf) {
|
|
|
160 |
|
|
|
161 |
$nouvel_id = 0 ;
|
|
|
162 |
$nb_admin = 0 ;
|
|
|
163 |
$res = array() ;
|
|
|
164 |
|
|
|
165 |
if(!$this->validerMail($mail)) {
|
|
|
166 |
$res['mail'] = 'adresse mail invalide' ;
|
|
|
167 |
}
|
|
|
168 |
|
|
|
169 |
$query_verif_mail = 'SELECT COUNT(*) AS nb_admin FROM gen_annuaire WHERE ga_mail = '.$this->proteger($mail) ;
|
|
|
170 |
if($res_nb = $this->requete($query_verif_mail)) {
|
|
|
171 |
$ligne = $res_nb->fetch() ;
|
|
|
172 |
$nb_admin = $ligne['nb_admin'] ;
|
|
|
173 |
} else {
|
|
|
174 |
$res['bdd'] = 'Erreur dans la base de données' ;
|
|
|
175 |
return $res ;
|
|
|
176 |
}
|
|
|
177 |
|
|
|
178 |
if($nb_admin != 0) {
|
|
|
179 |
$res['mail'] = 'Cet email est déjà utilisé par un autre utilisateur' ;
|
|
|
180 |
}
|
|
|
181 |
|
|
|
182 |
if($pass != '' || $pass_conf != '') {
|
|
|
183 |
// on vérifie si les deux concordent
|
|
|
184 |
if($pass == $pass_conf) {
|
|
|
185 |
|
|
|
186 |
} else {
|
|
|
187 |
// si non, on notifiera l'utilisateur
|
|
|
188 |
$res['pass'] = 'mot de passe invalide' ;
|
|
|
189 |
}
|
|
|
190 |
}
|
|
|
191 |
|
|
|
192 |
$query = 'SELECT MAX(ga_id_administrateur) as nouvel_id FROM gen_annuaire' ;
|
|
|
193 |
|
|
|
194 |
if($res_requete_id = $this->requete($query)) {
|
|
|
195 |
|
|
|
196 |
$ligne = $res_requete_id->fetch() ;
|
|
|
197 |
$nouvel_id = $ligne['nouvel_id'] + 1 ;
|
|
|
198 |
} else {
|
|
|
199 |
return $res ;
|
|
|
200 |
}
|
|
|
201 |
|
|
|
202 |
$query = 'INSERT INTO gen_annuaire VALUES ('.$nouvel_id.','.$this->proteger($lang).','.
|
|
|
203 |
$this->proteger($nom).','.$this->proteger($prenom).','.$this->proteger(md5($pass)).','.
|
|
|
204 |
$this->proteger($mail).')' ;
|
|
|
205 |
|
|
|
206 |
if(count($res) != 0) {
|
|
|
207 |
return $res ;
|
|
|
208 |
}
|
|
|
209 |
|
|
|
210 |
if($res_ajout = $this->requete($query)) {
|
|
|
211 |
|
|
|
212 |
} else {
|
|
|
213 |
$res['bdd'] = 'Erreur de la requête dans la base de données' ;
|
|
|
214 |
}
|
|
|
215 |
|
|
|
216 |
return $res ;
|
|
|
217 |
}
|
|
|
218 |
|
|
|
219 |
/**
|
|
|
220 |
* Fonction qui prend une chaine en paramètre et renvoie vrai
|
|
|
221 |
* si elle constitue un email syntaxiquement valide, faux sinon.
|
|
|
222 |
* @param string le mail à valider
|
|
|
223 |
* @return bool true si le mail est valide, false sinon
|
|
|
224 |
*/
|
|
|
225 |
function validerMail($mail) {
|
83 |
jpm |
226 |
$atom = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]'; // Caractères autorisés avant l'arobase
|
|
|
227 |
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // Caractères autorisés après l'arobase (nom de domaine)
|
5 |
aurelien |
228 |
|
83 |
jpm |
229 |
$regex = '/^'.$atom.'+'. // Une ou plusieurs fois les caractères autorisés avant l'arobase
|
|
|
230 |
'(\.'.$atom.'+)*'. // Suivis par zéro point ou plus, séparés par des caractères autorisés avant l'arobase
|
|
|
231 |
'@'.// Suivis d'un arobase
|
|
|
232 |
'('.$domain .'{1,63}\.)+'.// Suivis par 1 à 63 caractères autorisés pour le nom de domaine, séparés par des points
|
|
|
233 |
$domain.'{2,63}$/i';// Suivi de 2 à 63 caractères autorisés pour le nom de domaine
|
5 |
aurelien |
234 |
|
83 |
jpm |
235 |
// Test de l'adresse e-mail
|
5 |
aurelien |
236 |
if (preg_match($regex, $mail)) {
|
83 |
jpm |
237 |
return true;
|
5 |
aurelien |
238 |
} else {
|
83 |
jpm |
239 |
return false;
|
5 |
aurelien |
240 |
}
|
|
|
241 |
}
|
|
|
242 |
}
|
|
|
243 |
?>
|