Passed
Push — master ( 85dc9e...13c680 )
by Anthony
02:45
created

DroitAcces::getDroitAccesContenu()   B

Complexity

Conditions 7
Paths 2

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 6
Bugs 0 Features 0
Metric Value
c 6
b 0
f 0
dl 0
loc 13
rs 8.2222
cc 7
eloc 7
nc 2
nop 2
1
<?php
2
	namespace core\admin\droitsacces;
3
4
	use core\App;
5
6
	class DroitAcces {
7
		private $logged;
8
9
		//pour la table identite
10
		private $id_identite;
11
		private $super_admin;
12
13
		//pour la table liste_droit_acces
14
		private $id_liste_droit_acces;
15
16
		//pour des droits pour la gestion des contenus
17
		private $modif_seo;
18
		private $modif_contenu;
19
		private $modif_navigation;
20
		private $supprimer_page;
21
22
23
		//-------------------------- CONSTRUCTEUR ----------------------------------------------------------------------------//
24
		public function __construct() {
25
			$dbc = \core\App::getDb();
26
27
			if (isset($_SESSION["idlogin".CLEF_SITE])) {
28
				$this->logged = true;
29
				$this->id_identite = $_SESSION["idlogin".CLEF_SITE];
30
31
				//on test voir si super admin
32
				$query = $dbc->query("SELECT super_admin,liste_droit FROM identite WHERE ID_identite=".$this->id_identite);
33
34
				if ((is_array($query)) && (count($query) > 0)) {
35
					foreach ($query as $obj) {
36
						$this->super_admin = $obj->super_admin;
37
						$this->id_liste_droit_acces = $obj->liste_droit;
38
					}
39
				}
40
			}
41
			else {
42
				$this->logged = false;
43
			}
44
		}
45
		//-------------------------- FIN CONSTRUCTEUR ----------------------------------------------------------------------------//
46
    
47
    
48
    
49
		//-------------------------- GETTER ----------------------------------------------------------------------------//
50
		public function getLogged(){
51
			return $this->logged;
52
		}
53
		public function getSuperAdmin(){
54
			return $this->super_admin;
55
		}
56
		public function getIdListeDroitAcces(){
57
			return $this->id_liste_droit_acces;
58
		}
59
		public function getModifSeo(){
60
			return $this->modif_seo;
61
		}
62
		public function getModifContenu(){
63
			return $this->modif_contenu;
64
		}
65
		public function getModifNavigation(){
66
			return $this->modif_navigation;
67
		}
68
		public function getSupprimerPage(){
69
			return $this->supprimer_page;
70
		}
71
72
		/**
73
		 * @return array
74
		 */
75
		private function getListeDroitAcces() {
76
			$dbc = App::getDb();
77
78
			$liste_droit_acces = [];
79
80
			$query = $dbc->query("SELECT * FROM droit_acces, liste_droit_acces, liaison_liste_droit WHERE
81
								droit_acces.ID_droit_acces = liaison_liste_droit.ID_droit_acces AND
82
								liste_droit_acces.ID_liste_droit_acces = liaison_liste_droit.ID_liste_droit_acces AND
83
								liste_droit_acces.ID_liste_droit_acces = $this->id_liste_droit_acces
84
				");
85
86
			if ((is_array($query)) && (count($query) > 0)) {
87
				foreach ($query as $obj) $liste_droit_acces[] = $obj->droit_acces;
88
			}
89
90
			return $liste_droit_acces;
91
		}
92
93
		/**
94
		 * @return array
95
		 */
96
		private function getListeDroitPage($page) {
97
			$dbc = App::getDb();
98
			$droit_acces = [];
99
100
			$query = $dbc->query("SELECT droit_acces FROM droit_acces WHERE page LIKE '%$page%'");
101
			if ((is_array($query)) && (count($query) > 0)) {
102
				foreach ($query as $obj) $droit_acces = $obj->droit_acces;
103
			}
104
105
			return $droit_acces;
106
		}
107
108
		/**
109
		 * @param $id_page
110
		 */
111
		private function getListeDroitModificationContenu($id_page) {
112
			$dbc = App::getDb();
113
114
			//on check si il a le droit de modifier ou supprimer cette page
115
			$query = $dbc->query("SELECT * FROM droit_acces_page, liste_droit_acces WHERE
116
									droit_acces_page.ID_liste_droit_acces = liste_droit_acces.ID_liste_droit_acces AND
117
									droit_acces_page.ID_page = $id_page AND
118
									liste_droit_acces.ID_liste_droit_acces = $this->id_liste_droit_acces
119
					");
120
121
			//si on a un resultat
122
			if ((is_array($query)) && (count($query) > 0)) {
123
				foreach ($query as $obj) {
124
					$this->modif_seo = $obj->seo;
125
					$this->modif_contenu = $obj->contenu;
126
					$this->modif_navigation = $obj->navigation;
127
					$this->supprimer_page = $obj->supprimer;
128
				}
129
			}
130
131
			if ($this->super_admin == 1) {
132
				$this->modif_seo = 1;
133
				$this->modif_contenu = 1;
134
				$this->modif_navigation = 1;
135
				$this->supprimer_page = 1;
136
			}
137
		}
138
139
		//autres getter
140
		/**
141
		 * pour savoir si en fonction des droits d'accès de l'utilisateur il peu ou non accéder à cete page
142
		 * on passe outre les test si on est super admin
143
		 * @param string $page
144
		 * @return bool
145
		 */
146
		public function getDroitAccesPage($page) {
147
			//page sans droit dans admin
148
			$all_access = array("gestion-comptes/mon-compte", "index");
149
150
			if (($this->super_admin == 1) || (in_array($this->getListeDroitPage($page), $this->getListeDroitAcces())) || (($page == "") || ($page == null)) || (in_array($page, $all_access))) {
151
				return true;
152
			}
153
			else {
154
				return false;
155
			}
156
		}
157
158
		/**
159
		 * fonction qui permet de gérer les droits d'accès sur les contenus :
160
		 * - creer une page
161
		 * - modifier du contenu (SEO, navigation, contenu)
162
		 * - supprimer une page
163
		 * si on est super admin on passe outre tous les tests
164
		 * @param $droit
165
		 * @param $id_page
166
		 * @return bool|null
167
		 */
168
		public function getDroitAccesContenu($droit, $id_page) {
169
			$liste_droit_acces = $this->getListeDroitAcces();
170
171
			$this->getListeDroitModificationContenu($id_page);
172
173
			//si les trois sont différent de 0 on renvoit true soinon false
174
			if (($this->super_admin == 1) || ((in_array($droit, $liste_droit_acces)) && (($this->modif_seo != 0) || ($this->modif_contenu != 0) || ($this->modif_navigation != 0) || ($this->supprimer_page != 0)))) {
175
				return true;
176
			}
177
			else {
178
				return false;
179
			}
180
		}
181
182
		/**
183
		 * pour savoir si un utilisateur à le droit de supprimer, modifier ou ajouter des trucs
184
		 * @param $droit_acces
185
		 * @return bool
186
		 */
187
		public function getDroitAccesAction($droit_acces) {
188
			$liste_droit_acces = $this->getListeDroitAcces();
189
190
			if (($this->super_admin == 1) || (in_array($droit_acces, $liste_droit_acces))) {
191
				return true;
192
			}
193
			else {
194
				return false;
195
			}
196
		}
197
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
198
    
199
    
200
    
201
		//-------------------------- SETTER ----------------------------------------------------------------------------//
202
203
		//-------------------------- FIN SETTER ----------------------------------------------------------------------------//
204
	}