Passed
Push — master ( dd3b74...86e6da )
by Anthony
04:19
created

Admin::setReinitialiserMdp()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 20
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 20
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 13
nc 2
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->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() {
49
			$dbc = \core\App::getDb();
50
51
			$query = $dbc->select()->from("identite")->where("ID_identite", ">", 1)->get();
52
53
			if ((is_array($query)) && (count($query) > 0)) {
54
				$values = [];
55
				foreach ($query as $obj) {
56
					$values[] = [
57
						"id_identite" => $obj->ID_identite,
58
						"nom" => $obj->nom,
59
						"prenom" => $obj->prenom,
60
						"pseudo" => $obj->pseudo,
61
						"mail" => $obj->mail,
62
						"img_profil" => $obj->img_profil,
63
						"valide" => $obj->valide,
64
						"archiver" => $obj->archiver
65
					];
66
				}
67
				App::setValues(["all_users" => $values]);
68
			}
69
		}
70
71
		/**
72
		 * Fonctio qui premet de setter les différents élément d'un user
73
		 * @param $id_identite
74
		 */
75
		public function getunUser($id_identite) {
76
			$dbc = \core\App::getDb();
77
			$query = $dbc->select()->from("identite")->where("ID_identite", "=", $id_identite);
78
79
			if ((is_array($query)) && (count($query) > 0)) {
80
				foreach ($query as $obj) {
81
					$this->id_identite = $obj->ID_identite;
82
					$this->nom = $obj->nom;
83
					$this->prenom = $obj->prenom;
84
					$this->img = $obj->img_profil;
85
					$this->mail = $obj->mail;
86
					$this->valide = $obj->valide;
87
				}
88
			}
89
		}
90
91
		/**
92
		 * fonction qui si égale a 1 alors il y a une notification dans l'admin du site
93
		 * @return mixed
94
		 */
95
		public function getNotification() {
96
			$dbc = App::getDb();
97
98
			$query = $dbc->select("admin")->from("notification")->get();
99
100 View Code Duplication
			if ((is_array($query)) && (count($query) > 0)) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across 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...
101
				foreach ($query as $obj) {
102
					return $obj->admin;
103
				}
104
			}
105
		}
106
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
107
108
109
110
		//-------------------------- SETTER ----------------------------------------------------------------------------//
111
112
		/**
113
		 * Fonction qui permet de valider un compte utilisateur pour qu'il puisse se conecter au site
114
		 * @param $id_identite
115
		 */
116
		public function setValideCompte($id_identite) {
117
			$dbc = \core\App::getDb();
118
119
			$dbc->update("valide", 1)->from("identite")->where("ID_identite", "=", $id_identite)->set();
120
121
			$this->getunUser($id_identite);
122
		}
123
124
		/**
125
		 * fonction quir genere un mot de passe aleatoire pour le compte spécifié en param
126
		 * @param $id_identite
127
		 */
128
		public function setReinitialiserMdp($id_identite) {
129
			$dbc = \core\App::getDb();
130
			$this->getunUser($id_identite);
131
132
			if (($this->mail != "") || ($this->mail != null)) {
133
				$mdp = ChaineCaractere::random(6);
134
				$mdp_encode = Encrypt::setEncryptMdp($mdp, $id_identite);
135
136
				FlashMessage::setFlash("Mot de passe réinitialisé avec succès ! L'utilisateur à reçu un E-mail avec son nouveau mot de passe", "success");
137
138
				$dbc->update("mdp", $mdp_encode)->update("last_change_mdp", date("Y-m-d"))->from("identite")->where("ID_identite", "=", $id_identite)->set();
139
140
				$mail = new Mail();
141
				$mail->setEnvoyerMail("Réinitialisation de votre E-mail effectuée", "Votre mot de passe a été réinitialisé", $this->mail);
142
			}
143
			else {
144
				FlashMessage::setFlash("le mot de passe de $this->pseudo ne peu pas être réinitialisé car il ne possède pas d'E-mail");
145
				$this->erreur = "le mot de passe de $this->pseudo ne peu pas être réinitialisé car il ne possède pas d'E-mail";
146
			}
147
		}
148
149
		/**
150
		 * Supprime le compte en question et enleve l'image de profil aussi
151
		 * @param $id_identite
152
		 */
153
		public function setArchiverCompte($id_identite) {
154
			$dbc = \core\App::getDb();
155
156
			$dbc->update("archiver", 1)->from("identite")->where("ID_identite", "=", $id_identite)->set();
157
		}
158
159
		/**
160
		 * Supprime le compte en question et enleve l'image de profil aussi
161
		 * @param $id_identite
162
		 */
163
		public function setActiverCompte($id_identite) {
164
			$dbc = \core\App::getDb();
165
166
			$dbc->update("archiver", "0")->from("identite")->where("ID_identite", "=", $id_identite)->set();
167
		}
168
169
		/**
170
		 * Supprime le compte en question et enleve l'image de profil aussi
171
		 * @param $id_identite
172
		 */
173
		public function setSupprimerCompte($id_identite) {
174
			$dbc = \core\App::getDb();
175
176
			$oldimg_profil = "";
177
178
			//test si il y a deja une img
179
			$query = $dbc->select("img_profil")->from("identite")->where("ID_identite", "=", $id_identite)->get();
180
181
			if (count($query) > 0) {
182
				foreach ($query as $obj) {
183
					$oldimg_profil = $obj->img_profil;
184
				}
185
			}
186
187
			$oldimg_profil = explode("/", $oldimg_profil);
188
			if (end($oldimg_profil) != "defaut.png") {
189
				unlink("../../images/profil/".end($oldimg_profil));
190
			}
191
192
			$dbc->delete()->from("identite")->where("ID_identite", "=", $id_identite)->del();
193
		}
194
195
		/**
196
		 * permet de dire qu'on a vue une notification dans l'administration du site internet
197
		 */
198
		public static function setNotificationVue() {
199
			$dbc = App::getDb();
200
201
			$dbc->update("admin", 0)->from("notification")->where("ID_notification", "=", 1)->set();
202
		}
203
		//-------------------------- FIN SETTER ----------------------------------------------------------------------------//
204
205
206
207
	}