Passed
Push — master ( 7ee1fc...2d537f )
by Anthony
03:35
created

Admin::setSupprimerCompte()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 21
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

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