Passed
Push — master ( d58d86...648729 )
by Anthony
03:51
created

Admin::getValideCompteLien()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

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