Passed
Push — master ( 1faf28...95951e )
by Anthony
02:22
created

Admin   A

Complexity

Total Complexity 35

Size/Duplication

Total Lines 237
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Importance

Changes 0
Metric Value
dl 0
loc 237
rs 9
c 0
b 0
f 0
wmc 35
lcom 1
cbo 7
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->select("acces_admin")->from("identite")->where("ID_identite", "=", $id_identite)->get();
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 = 0) {
49
			$dbc = \core\App::getDb();
50
			$this->setAllUser(null, null, null, null, null, null, null);
51
52
			$query = $dbc->select()->from("identite")->where("archiver", "=", $archiver, "AND")->where("ID_identite", ">", 1)->get();
53
54
			if ((is_array($query)) && (count($query) > 0)) {
55
				$id_identite = [];
56
				$nom = [];
57
				$prenom = [];
58
				$pseudo = [];
59
				$mail = [];
60
				$img_profil = [];
61
				$valide = "";
62
63
				foreach ($query as $obj) {
64
					$id_identite[] = $obj->ID_identite;
65
					$nom[] = $obj->nom;
66
					$prenom[] = $obj->prenom;
67
					$pseudo[] = $obj->pseudo;
68
					$mail[] = $obj->mail;
69
					$img_profil[] = $obj->img_profil;
70
					$valide[] = $this->getValideCompteLien($obj->valide, $obj->ID_identite);
71
72
				}
73
74
				$this->setAllUser($id_identite, $nom, $prenom, $mail, $pseudo, $img_profil, $valide);
75
			}
76
		}
77
78
		/**
79
		 * @param $valide
80
		 * @return string
81
		 */
82
		private function getValideCompteLien($valide, $id_identite) {
83
			$config = new Configuration();
84
85
			if (($config->getValiderInscription() == 1) && ($valide == 0)) {
86
				return "<a href=".ADMWEBROOT."controller/core/admin/comptes/valider_compte?id_identite=$id_identite>Valider cet utilisateur</a>";
87
			}
88
			else {
89
				return "Utilisateur validé";
90
			}
91
		}
92
93
		/**
94
		 * Fonctio qui premet de setter les différents élément d'un user
95
		 * @param $id_identite
96
		 */
97
		public function getunUser($id_identite) {
98
			$dbc = \core\App::getDb();
99
100
			$query = $dbc->select()->from("identite")->where("ID_identite", "=", $id_identite);
101
102
			if ((is_array($query)) && (count($query) > 0)) {
103
				foreach ($query as $obj) {
104
					$this->id_identite = $obj->ID_identite;
105
					$this->nom = $obj->nom;
106
					$this->prenom = $obj->prenom;
107
					$this->img = $obj->img_profil;
108
					$this->mail = $obj->mail;
109
					$this->valide = $obj->valide;
110
				}
111
			}
112
		}
113
114
		/**
115
		 * fonction qui si égale a 1 alors il y a une notification dans l'admin du site
116
		 * @return mixed
117
		 */
118
		public function getNotification() {
119
			$dbc = App::getDb();
120
121
			$query = $dbc->select("admin")->from("notification")->get();
122
123
			if ((is_array($query)) && (count($query) > 0)) {
124
				foreach ($query as $obj) {
125
					return $obj->admin;
126
				}
127
			}
128
		}
129
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
130
131
132
133
		//-------------------------- SETTER ----------------------------------------------------------------------------//
134
135
		/**
136
		 * @param null|string $valide
137
		 */
138
		private function setAllUser($id_identite, $nom, $prenom, $mail, $pseudo, $img_profil, $valide) {
139
			$this->id_identite = $id_identite;
140
			$this->nom = $nom;
141
			$this->prenom = $prenom;
142
			$this->mail = $mail;
143
			$this->pseudo = $pseudo;
144
			$this->img = $img_profil;
145
			$this->valide = $valide;
146
		}
147
148
		/**
149
		 * Fonction qui permet de valider un compte utilisateur pour qu'il puisse se conecter au site
150
		 * @param $id_identite
151
		 */
152
		public function setValideCompte($id_identite) {
153
			$dbc = \core\App::getDb();
154
155
			$dbc->update("valide", 1)->from("identite")->where("ID_identite", "=", $id_identite)->set();
156
157
			$this->getunUser($id_identite);
158
		}
159
160
		/**
161
		 * fonction quir genere un mot de passe aleatoire pour le compte spécifié en param
162
		 * @param $id_identite
163
		 */
164
		public function setReinitialiserMdp($id_identite) {
165
			$dbc = \core\App::getDb();
166
167
			$this->getunUser($id_identite);
168
169
			if (($this->mail != "") || ($this->mail != null)) {
170
				$mdp = ChaineCaractere::random(6);
171
				$mdp_encode = Encrypt::setEncryptMdp($mdp, $id_identite);
172
173
				FlashMessage::setFlash("Mot de passe réinitialisé avec succès ! L'utilisateur à reçu un E-mail avec son nouveau mot de passe", "success");
174
175
				$dbc->update("mdp", $mdp_encode)
176
					->update("last_change_mdp", date("Y-m-d"))
177
					->from("identite")
178
					->where("ID_identite", "=", $id_identite)
179
					->set();
180
181
				$mail = new Mail();
182
				$mail->setEnvoyerMail("Réinitialisation de votre E-mail effectuée", "Votre mot de passe a été réinitialisé", $this->mail);
183
			}
184
			else {
185
				FlashMessage::setFlash("le mot de passe de $this->pseudo ne peu pas être réinitialisé car il ne possède pas d'E-mail");
186
				$this->erreur = true;
187
			}
188
		}
189
190
		/**
191
		 * Supprime le compte en question et enleve l'image de profil aussi
192
		 * @param $id_identite
193
		 */
194
		public function setArchiverCompte($id_identite) {
195
			$dbc = \core\App::getDb();
196
197
			$dbc->update("archiver", 1)->from("identite")->where("ID_identite", "=", $id_identite)->set();
198
		}
199
200
		/**
201
		 * Supprime le compte en question et enleve l'image de profil aussi
202
		 * @param $id_identite
203
		 */
204
		public function setActiverCompte($id_identite) {
205
			$dbc = \core\App::getDb();
206
207
			$dbc->update("archiver", "null")->from("identite")->where("ID_identite", "=", $id_identite)->set();
208
		}
209
210
		/**
211
		 * Supprime le compte en question et enleve l'image de profil aussi
212
		 * @param $id_identite
213
		 */
214
		public function setSupprimerCompte($id_identite) {
215
			$dbc = \core\App::getDb();
216
217
			$oldimg_profil = "";
218
219
			//test si il y a deja une img
220
			$query = $dbc->select("img_profil")->from("identite")->where("ID_identite", "=", $id_identite)->get();
221
222
			if ((is_array($query)) && (count($query) > 0)) {
223
				foreach ($query as $obj) {
224
					$oldimg_profil = $obj->img_profil;
225
				}
226
			}
227
228
			$oldimg_profil = explode("/", $oldimg_profil);
229
			if (end($oldimg_profil) != "defaut.png") {
230
				unlink("../../images/profil/".end($oldimg_profil));
231
			}
232
233
			$dbc->delete()->from("identite")->where("ID_identite", "=", $id_identite)->del();
234
		}
235
236
		/**
237
		 * permet de dire qu'on a vue une notification dans l'administration du site internet
238
		 */
239
		public static function setNotificationVue() {
240
			$dbc = App::getDb();
241
242
			$dbc->update("admin", 0)->from("notification")->where("ID_notification", "=", 1)->set();
243
		}
244
		//-------------------------- FIN SETTER ----------------------------------------------------------------------------//
245
246
247
248
	}