Passed
Push — master ( de0e88...de0e88 )
by Anthony
04:58 queued 02:36
created

Admin::getunUser()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 16
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 16
rs 9.2
cc 4
eloc 11
nc 3
nop 1
1
<?php
2
	namespace core\admin;
3
4
	use core\App;
5
	use core\auth\Encrypt;
6
	use core\auth\Membre;
7
	use core\Configuration;
8
	use core\functions\ChaineCaractere;
9
	use core\HTML\flashmessage\FlashMessage;
10
	use core\mail\Mail;
11
12
	class Admin extends Membre {
13
		private $acces_admin;
14
15
16
		//-------------------------- CONSTRUCTEUR ----------------------------------------------------------------------------//
17
		public function __construct($id_identite) {
18
			$dbc = \core\App::getDb();
19
20
			//on récupere le lvl de l'admin
21
			$query = $dbc->query("SELECT acces_admin FROM identite WHERE ID_identite=".$id_identite);
22
			if ((is_array($query)) && (count($query) > 0)) {
23
				foreach ($query as $obj) {
24
					$this->acces_admin = $obj->acces_admin;
25
				}
26
			}
27
28
			//si on ne passe pas dans le foreach -> on est pas admin donc on deco le compte
29
			if ((!isset($this->acces_admin)) || ($this->acces_admin != 1)) {
30
				FlashMessage::setFlash("Vous n'êtes pas un administrateur, vous ne pouvez pas accéder à cette page");
31
				header("location:".WEBROOT."index.php");
32
			}
33
		}
34
		//-------------------------- FIN CONSTRUCTEUR ----------------------------------------------------------------------------//
35
36
37
38
		//-------------------------- GETTER ----------------------------------------------------------------------------//
39
		public function getAccesAdmin() {
40
			return $this->acces_admin;
41
		}
42
43
44
		/**
45
		 * Pour récupérer la liste de tous les users afin d'activer un compte ou modifier des trucs dessus
46
		 * si archiver == null on récupère les utilisateurs actifs sur le site sinon on récupere les utilisateurs archives
47
		 */
48
		public function getAllUser($archiver = null) {
49
			$dbc = \core\App::getDb();
50
			$this->setAllUser(null, null, null, null, null, null, null);
51
52
			if ($archiver == null) {
53
				$query = $dbc->query("SELECT * FROM identite WHERE archiver IS NULL AND ID_identite > 1");
54
			}
55
			else {
56
				$query = $dbc->query("SELECT * FROM identite WHERE archiver IS NOT NULL AND ID_identite > 1");
57
			}
58
59
			$config = new Configuration();
60
61
			if ((is_array($query)) && (count($query) > 0)) {
62
				$id_identite = [];
63
				$nom = [];
64
				$prenom = [];
65
				$pseudo = [];
66
				$mail = [];
67
				$img_profil = [];
68
				$valide = "";
69
70
				foreach ($query as $obj) {
71
					$id_identite[] = $obj->ID_identite;
72
					$nom[] = $obj->nom;
73
					$prenom[] = $obj->prenom;
74
					$pseudo[] = $obj->pseudo;
75
					$mail[] = $obj->mail;
76
					$img_profil[] = $obj->img_profil;
77
78
					if (($config->getValiderInscription() == 1) && ($obj->valide == 0)) {
79
						$valide[] = "<a href=".ADMWEBROOT."controller/core/admin/comptes/valider_compte?id_identite=$obj->ID_identite>Valider cet utilisateur</a>";
80
					}
81
					else {
82
						$valide[] = "Utilisateur validé";
83
					}
84
				}
85
86
				$this->setAllUser($id_identite, $nom, $prenom, $mail, $pseudo, $img_profil, $valide);
87
			}
88
		}
89
90
		/**
91
		 * Fonctio qui premet de setter les différents élément d'un user
92
		 * @param $id_identite
93
		 */
94
		public function getunUser($id_identite) {
95
			$dbc = \core\App::getDb();
96
97
			$query = $dbc->query("SELECT * FROM identite WHERE ID_identite=".$id_identite);
98
99
			if ((is_array($query)) && (count($query) > 0)) {
100
				foreach ($query as $obj) {
101
					$this->id_identite = $obj->ID_identite;
102
					$this->nom = $obj->nom;
103
					$this->prenom = $obj->prenom;
104
					$this->img = $obj->img_profil;
105
					$this->mail = $obj->mail;
106
					$this->valide = $obj->valide;
107
				}
108
			}
109
		}
110
111
		/**
112
		 * fonction qui si égale a 1 alors il y a une notification dans l'admin du site
113
		 * @return mixed
114
		 */
115
		public function getNotification() {
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
116
			$dbc = App::getDb();
117
118
			$query = $dbc->query("SELECT admin FROM notification");
119
120
			if ((is_array($query)) && (count($query) > 0)) {
121
				foreach ($query as $obj) {
122
					return $obj->admin;
123
				}
124
			}
125
		}
126
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
127
128
129
130
		//-------------------------- SETTER ----------------------------------------------------------------------------//
131
132
		/**
133
		 * @param null|string $valide
134
		 */
135
		private function setAllUser($id_identite, $nom, $prenom, $mail, $pseudo, $img_profil, $valide) {
136
			$this->id_identite = $id_identite;
137
			$this->nom = $nom;
138
			$this->prenom = $prenom;
139
			$this->mail = $mail;
140
			$this->pseudo = $pseudo;
141
			$this->img = $img_profil;
142
			$this->valide = $valide;
143
		}
144
145
		/**
146
		 * Fonction qui permet de valider un compte utilisateur pour qu'il puisse se conecter au site
147
		 * @param $id_identite
148
		 */
149
		public function setValideCompte($id_identite) {
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
150
			$dbc = \core\App::getDb();
151
152
			$value = array("id_identite" => $id_identite);
153
154
			$dbc->prepare("UPDATE identite SET valide=1 WHERE ID_identite=:id_identite", $value);
155
156
			$this->getunUser($id_identite);
157
		}
158
159
		/**
160
		 * fonction quir genere un mot de passe aleatoire pour le compte spécifié en param
161
		 * @param $id_identite
162
		 */
163
		public function setReinitialiserMdp($id_identite) {
164
			$dbc = \core\App::getDb();
165
166
			$this->getunUser($id_identite);
167
168
			if (($this->mail != "") || ($this->mail != null)) {
169
				$mdp = ChaineCaractere::random(6);
170
				$mdp_encode = Encrypt::setEncryptMdp($mdp, $id_identite);
171
172
				$value = array(
173
					"mdp" => $mdp_encode,
174
					"id_identite" => $id_identite,
175
					"last_change_mdp" => date("Y-m-d")
176
				);
177
178
				FlashMessage::setFlash("Mot de passe réinitialisé avec succès ! L'utilisateur à reçu un E-mail avec son nouveau mot de passe", "success");
179
180
				$dbc->prepare("UPDATE identite SET mdp=:mdp, last_change_mdp=:last_change_mdp WHERE ID_identite=:id_identite", $value);
181
182
				$mail = new Mail($this->mail);
183
				$mail->setEnvoyerMail("Réinitialisation de votre E-mail effectuée", "Votre mot de passe a été réinitialisé");
184
			}
185
			else {
186
				FlashMessage::setFlash("le mot de passe de $this->pseudo ne peu pas être réinitialisé car il ne possède pas d'E-mail");
187
				$this->erreur = true;
188
			}
189
		}
190
191
		/**
192
		 * Supprime le compte en question et enleve l'image de profil aussi
193
		 * @param $id_identite
194
		 */
195
		public function setArchiverCompte($id_identite) {
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
196
			$dbc = \core\App::getDb();
197
198
			$value = array(
199
				"id_identite" => $id_identite,
200
				"archiver" => 1
201
			);
202
203
			$dbc->prepare("UPDATE identite SET archiver=:archiver WHERE ID_identite=:id_identite", $value);
204
		}
205
206
		/**
207
		 * Supprime le compte en question et enleve l'image de profil aussi
208
		 * @param $id_identite
209
		 */
210
		public function setActiverCompte($id_identite) {
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
211
			$dbc = \core\App::getDb();
212
213
			$value = array(
214
				"id_identite" => $id_identite,
215
				"archiver" => NULL
216
			);
217
218
			$dbc->prepare("UPDATE identite SET archiver=:archiver WHERE ID_identite=:id_identite", $value);
219
		}
220
221
		/**
222
		 * Supprime le compte en question et enleve l'image de profil aussi
223
		 * @param $id_identite
224
		 */
225
		public function setSupprimerCompte($id_identite) {
226
			$dbc = \core\App::getDb();
227
228
			$oldimg_profil = "";
229
230
			//test si il y a deja une img
231
			$query = $dbc->query("SELECT img_profil FROM identite where ID_identite=$id_identite");
232
233
			if ((is_array($query)) && (count($query) > 0)) {
234
				foreach ($query as $obj) {
235
					$oldimg_profil = $obj->img_profil;
236
				}
237
			}
238
239
			$oldimg_profil = explode("/", $oldimg_profil);
240
			if (end($oldimg_profil) != "defaut.png") {
241
				unlink("../../images/profil/".$oldimg_profil[7]);
242
			}
243
244
			$value = array(
245
				"id_identite" => $id_identite
246
			);
247
248
			$dbc->prepare("DELETE FROM identite WHERE ID_identite=:id_identite", $value);
249
		}
250
251
		/**
252
		 * permet de dire qu'on a vue une notification dans l'administration du site internet
253
		 */
254
		public static function setNotificationVue() {
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
255
			$dbc = App::getDb();
256
257
			$value = [
258
				"admin" => 0,
259
				"id" => 1
260
			];
261
262
			$dbc->prepare("UPDATE notification SET admin=:admin WHERE ID_notification=:id", $value);
263
		}
264
		//-------------------------- FIN SETTER ----------------------------------------------------------------------------//
265
266
267
268
	}