Subversion Repositories Applications.papyrus

Rev

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

Rev 2003 Rev 2009
Line 1... Line 1...
1
<?php
1
<?php
-
 
2
 
-
 
3
/**
-
 
4
 * Modèle d'accès à la base de données des administrateurs 
-
 
5
 * de papyrus
-
 
6
 */
2
class liste_admin_model extends Model { 
7
class liste_admin_model extends Model { 
Line 3... Line 8...
3
	
8
	
Line -... Line 9...
-
 
9
	var $config = array() ;
-
 
10
	
-
 
11
	/**
4
	var $config = array() ;
12
	 * Constructeur sans arguments
Line 5... Line 13...
5
	
13
	 */
6
	function __construct() {
14
	function __construct() {
7
		
15
		
-
 
16
		parent::Model() ;
-
 
17
	}
-
 
18
	
-
 
19
	/**
8
		parent::Model() ;
20
	 * Charge la liste complète des administrateurs
Line 9... Line 21...
9
	}
21
	 * return array un tableau contenant des objets d'informations sur les administrateurs
10
		
22
	 */	
11
	function loadAdmin() {
23
	function loadAdmin() {
12
			
24
			
13
		$this->load->database() ;	
25
		$this->load->database() ;	
14
		$query = 'SELECT * FROM  gen_annuaire ORDER BY ga_id_administrateur' ;
26
		$query = 'SELECT * FROM  gen_annuaire ORDER BY ga_id_administrateur' ;
-
 
27
		$res = $this->db->query($query) ;
15
		$res = $this->db->query($query) ;
28
		$admin = array() ;
-
 
29
		foreach ($res->result() as $ligne)
16
		$admin = array() ;
30
		{
Line 17... Line 31...
17
		foreach ($res->result() as $ligne)
31
			if($ligne->ga_id_administrateur != 0) { 
18
		{
32
				$admin[] = $ligne ;
Line -... Line 33...
-
 
33
			}
-
 
34
		}
-
 
35
	
-
 
36
		return $admin ;
-
 
37
	}
19
			$admin[] = $ligne ;
38
	
Line 20... Line 39...
20
		}
39
	/**
21
	
40
	 * Charge les informations liées à un administrateur
22
		return $admin ;
41
	 * grâce à son id 
23
	}
42
	 * @param  int   l'identifiant de l'administrateur.
24
	
43
	 */
25
	function loadDetailsAdmin($id) {
-
 
26
			
44
	function loadDetailsAdmin($id) {
27
		$this->load->database() ;	
45
			
Line 28... Line 46...
28
		$query = 'SELECT * FROM  gen_annuaire where ga_id_administrateur="'.$id.'"' ;
46
		$this->load->database() ;	
29
		$res = $this->db->query($query) ;
47
		$query = 'SELECT * FROM  gen_annuaire where ga_id_administrateur="'.$id.'"' ;
Line -... Line 48...
-
 
48
		$res = $this->db->query($query) ;
-
 
49
		$admin = array() ;
-
 
50
		foreach ($res->result() as $ligne) {
-
 
51
			$admin = $ligne ;
-
 
52
		}
-
 
53
	
-
 
54
		return $admin ;
-
 
55
	}
-
 
56
	
-
 
57
	
-
 
58
	/**
-
 
59
	 * Modifie les informations liées à un administrateur dans la base de données
30
		$admin = array() ;
60
	 * Si le mot de passe n'est pas renseigné, il n'est pas changé
-
 
61
	 * @param  int   identifiant de l'admiistrateur
-
 
62
	 * @param  string   nom
-
 
63
	 * @param  string   prenom
-
 
64
	 * @param  string   le mail
-
 
65
	 * @param  string   le code de langue
-
 
66
	 * @param  string   le mot de passe (optionnel)
Line 31... Line 67...
31
		foreach ($res->result() as $ligne)
67
	 * @param  string   la confirmation du mot de passe (optionnel)
32
		{
68
	 */
-
 
69
	function modifDetailsAdmin($id,$nom,$prenom,$mail,$lang,$pass='',$pass_conf='') {
-
 
70
		
-
 
71
		$res = array() ;
-
 
72
		
-
 
73
		if(!$this->validerMail($mail)) {
-
 
74
			$res['mail'] = 'adresse mail invalide' ;
-
 
75
		}
-
 
76
		
-
 
77
		$this->load->database() ;	
-
 
78
		$query = 'UPDATE gen_annuaire SET ga_ce_i18n='.$this->db->escape($lang).', ga_nom='.$this->db->escape($nom).',ga_prenom='.
-
 
79
		$this->db->escape($prenom).',ga_mail='.$this->db->escape($mail) ;
-
 
80
		
-
 
81
		// si on a entré quelque chose dans les deux champs de mot de passe
-
 
82
		if($pass != '' || $pass_conf != '') {
33
			$admin[] = $ligne ;
83
			// on vérifie si les deux concordent			
-
 
84
			if($pass == $pass_conf) {
-
 
85
				// si oui, on les modifie
-
 
86
				$query .= ',ga_mot_de_passe='.$this->db->escape(md5($pass)) ;
-
 
87
			} else {
Line 34... Line 88...
34
		}
88
				// si non, on notifiera l'utilisateur
35
	
-
 
-
 
89
				$res['pass'] = 'mot de passe invalide' ;
36
		return $admin ;
90
			}
37
	}
91
		}
38
	
92
 
Line -... Line 93...
-
 
93
		$query .= ' WHERE ga_id_administrateur='.$id ;
-
 
94
		
39
	function modifDetailsAdmin($id,$nom,$prenom,$mail,$lang) {
95
		if(count($res) != 0) {
Line -... Line 96...
-
 
96
			return $res ;
-
 
97
		}
-
 
98
		
-
 
99
		if($res = $this->db->query($query)) {
40
		
100
			
Line -... Line 101...
-
 
101
		} else {
-
 
102
			$res['$bdd'] = 'Erreur de la requête dans la base de données' ;
-
 
103
		}
41
		$this->load->database() ;	
104
		
42
		$query = 'UPDATE gen_annuaire SET ga_ce_i18n="'.$lang.'", ga_nom="'.$nom.'",ga_prenom="'.$prenom.'",ga_mail="'.$mail.'"
105
		return $res ;
-
 
106
		
-
 
107
	}
-
 
108
	
-
 
109
	/**
-
 
110
	 * Supprime un administrateur ayant un id donnée
-
 
111
	 * @param  int   l'identifiant de l'administrateur
-
 
112
	 */
Line -... Line 113...
-
 
113
	function suppAdmin($id) {
-
 
114
		
-
 
115
		$nb_admin = 0 ;
-
 
116
		$res = '' ;
-
 
117
		
-
 
118
		$this->load->database() ;
-
 
119
		$query_verif = 'SELECT COUNT(*) AS nb_admin FROM gen_annuaire' ;
43
		WHERE ga_id_administrateur="'.$id.'"' ;
120
		if($res_nb = $this->db->query($query_verif)) {
44
		
121
			$ligne = $res_nb->result() ;
45
		if($res = $this->db->query($query)) {
122
			$nb_admin = $ligne[0]->nb_admin ;
-
 
123
		} else {
46
			return true ;
124
			$res = 'Erreur dans la base de données' ;
47
		} else {
125
			return $res ;
48
			return false ;
126
		}
Line -... Line 127...
-
 
127
		
-
 
128
		if($nb_admin == 2) {
-
 
129
			$res = 'Impossible de supprimer le dernier administrateur' ;
-
 
130
			return $res ;
-
 
131
		}
-
 
132
		
-
 
133
		$query = 'DELETE FROM gen_annuaire WHERE ga_id_administrateur='.$id ;
-
 
134
		
-
 
135
		if($res_supp = $this->db->query($query)) {
49
		}
136
			return $res ;
-
 
137
		} else {
50
		
138
			$res = 'Erreur dans la base de données' ;
51
	}
139
			return $res ;
-
 
140
		}
-
 
141
	}
-
 
142
	
-
 
143
	/**
-
 
144
	 * Ajoute un administrateur dans la base de données
-
 
145
	 * @param  string   nom
-
 
146
	 * @param  string   prenom
-
 
147
	 * @param  string   le mail
-
 
148
	 * @param  string   le code de langue
-
 
149
	 * @param  string   le mot de passe 
-
 
150
	 * @param  string   la confirmation du mot de passe
-
 
151
	 */
-
 
152
	function ajoutAdmin($nom,$prenom,$mail,$lang,$pass,$pass_conf) {
-
 
153
		
52
	
154
		$this->load->database() ;
Line 53... Line 155...
53
	function suppAdmin($id) {
155
		$nouvel_id = 0 ;
Line 54... Line 156...
54
		
156
		$res = array() ;
55
		$this->load->database() ;
157
		
56
		$query = 'DELETE FROM gen_annuaire WHERE ga_id_administrateur="'.$id.'"' ;
158
		if(!$this->validerMail($mail)) {
57
		
159
			$res['mail'] = 'adresse mail invalide' ;
-
 
160
		}
-
 
161
		
-
 
162
		if($pass != '' AND $pass_conf != '') {
-
 
163
			if($pass == $pass_conf) {
-
 
164
 
-
 
165
			} else {
-
 
166
				$res['pass'] = 'mot de passe invalide' ;
-
 
167
			}
58
		if($res = $this->db->query($query)) {
168
		}
Line 59... Line -...
59
			return true ;
-
 
60
		} else {
169
		
-
 
170
		$query = 'SELECT MAX(ga_id_administrateur) as nouvel_id FROM gen_annuaire' ;
-
 
171
		
-
 
172
		if($res_requete_id = $this->db->query($query)) {
-
 
173
			
-
 
174
			$ligne = $res_requete_id->result() ;
-
 
175
			$nouvel_id = $ligne[0]->nouvel_id + 1 ;			
-
 
176
		} else {
-
 
177
			return $res ;
-
 
178
		}
-
 
179
		
-
 
180
		$query = 'INSERT INTO gen_annuaire VALUES ('.$nouvel_id.','.$this->db->escape($lang).','.
-
 
181
		$this->db->escape($nom).','.$this->db->escape($prenom).','.$this->db->escape(md5($pass)).','.
-
 
182
		$this->db->escape($mail).')' ;
-
 
183
		
-
 
184
		if(count($res) != 0) {
-
 
185
			return $res ;
-
 
186
		}
-
 
187
		
-
 
188
		if($res = $this->db->query($query)) {
-
 
189
			
-
 
190
		} else {
-
 
191
			$res['$bdd'] = 'Erreur de la requête dans la base de données' ;
-
 
192
		}
-
 
193
		
-
 
194
		return $res ;
-
 
195
	}
-
 
196
	
61
			return false ;
197
	/**
62
		}
198
	 * Fonction qui prend une chaine en paramètre et renvoie vrai 
63
	}
199
	 * si elle constitue un email syntaxiquement valide, faux sinon.
64
	
200
	 */
-
 
201
	function validerMail($mail) {
65
	function ajoutAdmin($nom,$prenom,$mail,$lang,$pass,$pass_conf) {
202
		
Line 66... Line 203...
66
		$this->load->database() ;
203
		$atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // caractères autorisés avant l'arobase
Line 67... Line 204...
67
		$nouvel_id = 0 ;
204
		$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
68
		$query = 'SELECT MAX(ga_id_administrateur) as nouvel_id FROM gen_annuaire' ;
205