Passed
Push — master ( 70bd22...a47f7f )
by Anthony
03:21
created

PermissionsFaction::getTestChefFaction()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 9

Duplication

Lines 14
Ratio 100 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 14
loc 14
rs 9.4285
c 1
b 0
f 0
cc 2
eloc 9
nc 2
nop 2
1
<?php
2
	namespace modules\bataille\app\controller;
3
	
4
	
5
	use core\App;
6
	use core\functions\ChaineCaractere;
7
	use core\HTML\flashmessage\FlashMessage;
8
	
9
	class PermissionsFaction {
10
		//-------------------------- BUILDER ----------------------------------------------------------------------------//
11
		//-------------------------- END BUILDER ----------------------------------------------------------------------------//
12
		
13
		
14
		//-------------------------- GETTER ----------------------------------------------------------------------------//
15
		/**
16
		 * @param $id_identite
17
		 * @param $id_faction
18
		 * @return bool
19
		 * permet de savoir si le joueur en question est le chef de la faction
20
		 */
21 View Code Duplication
		protected function getTestChefFaction($id_identite, $id_faction) {
1 ignored issue
show
Duplication introduced by
This method seems to be duplicated in 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...
22
			$dbc = App::getDb();
23
			
24
			$query = $dbc->select("ID_identite")->from("_bataille_faction")
25
				->where("ID_identite", "=", $id_identite, "AND")
26
				->where("ID_faction", "=", $id_faction)
27
				->get();
28
			
29
			if (count($query) > 0) {
30
				return true;
31
			}
32
			
33
			return false;
34
		}
35
		
36
		/**
37
		 * @return int
38
		 * fonction qui renvoi le nombre de permissions
39
		 */
40
		private function getNombrePermissions() {
41
			$dbc = App::getDb();
42
			
43
			$query = $dbc->select()->from("_bataille_faction_permissions")->get();
44
			
45
			return count($query);
46
		}
47
		
48
		/**
49
		 * @return array
50
		 * fonction qui liste toutes les permissions
51
		 */
52
		public function getListePermissions() {
53
			$dbc = App::getDb();
54
			
55
			$query = $dbc->select()->from("_bataille_faction_permissions")->get();
56
			
57
			$permissions = [];
58
			if (count($query) > 0) {
59
				foreach ($query as $obj) {
60
					$permissions[] = str_replace("_", " ", $obj->permission);
61
				}
62
			}
63
			
64
			Bataille::setValues(["liste_permissions" => $permissions]);
65
			return $permissions;
66
		}
67
		
68
		/**
69
		 * @param $id_identite
70
		 * @param $id_faction
71
		 * @return array|string
72
		 * permet de récupérer les permissions d'un membre de la faction
73
		 */
74
		protected function getMembrePermissions($id_identite, $id_faction) {
75
			$dbc = App::getDb();
76
			
77
			$nb_permissions = $this->getNombrePermissions();
78
			
79
			if ($this->getTestChefFaction($id_identite, $id_faction) === true) {
80
				$permissions = [];
81
				for ($i=1 ; $i<=$nb_permissions ; $i++) {
82
					$permissions[$i] = "checked";
83
				}
84
				
85
				return $permissions;
86
			}
87
			
88
			
89
			$permissions = [];
90
			for ($i=1 ; $i<=$nb_permissions ; $i++) {
91
				$query = $dbc->select()->from("_bataille_faction_permission_player")
92
					->where("ID_faction", "=", $id_faction, "AND")
93
					->where("ID_identite", "=", $id_identite, "AND")
94
					->where("ID_permission", "=", $i)
95
					->get();
96
				
97
				$permissions[$i] = "";
98
				if (count($query) == 1) {
99
					$permissions[$i] = "checked";
100
				}
101
			}
102
			
103
			
104
			return $permissions;
105
		}
106
		
107
		/**
108
		 * @param $id_faction
109
		 * @return bool
110
		 * fonction qui renvoi les permission du membre connecté
111
		 */
112
		public function getPermissionsMembre($id_faction) {
113
			$dbc = App::getDb();
114
			
115
			if ($this->getTestChefFaction(Bataille::getIdIdentite(), $id_faction) == true) {
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like you are loosely comparing two booleans. Considering using the strict comparison === instead.

When comparing two booleans, it is generally considered safer to use the strict comparison operator.

Loading history...
116
				Bataille::setValues(["permission_player" => "chef"]);
117
				return "chef";
118
			}
119
			
120
			$query = $dbc->select()
121
				->from("_bataille_faction_permission_player")
122
				->from("_bataille_faction_permissions")
123
				->where("ID_identite", "=", Bataille::getIdIdentite(), "AND")
124
				->where("ID_faction", "=", $id_faction, "AND")
125
				->where("_bataille_faction_permission_player.ID_permission", "=", "_bataille_faction_permissions.ID_permissions", "", true)
126
				->get();
127
			
128
			$permissions = [];
129
			if ((count($query) > 0)) {
130
				foreach ($query as $obj) {
131
					$permissions[] = $obj->permission;
132
				}
133
			}
134
			
135
			Bataille::setValues(["permission_player" => $permissions]);
136
			return $permissions;
137
		}
138
		//-------------------------- END GETTER ----------------------------------------------------------------------------//
139
		
140
		
141
		//-------------------------- SETTER ----------------------------------------------------------------------------//
142
		/**
143
		 * @param $id_permission
144
		 * @param $id_identite
145
		 * @param $id_faction
146
		 * @param $type
147
		 * cette fonction permet d'ajouter ou de supprimer un permission à un joueur
148
		 */
149
		public function setGererPermission($id_permission, $id_identite, $id_faction, $type) {
150
			$dbc = App::getDb();
151
			
152
			$permissions_membre = $this->getPermissionsMembre($this->id_faction);
0 ignored issues
show
Bug introduced by
The property id_faction does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
153
			
154
			if ($permissions_membre == "chef" || in_array("GERER_RANG_MEMBRE", $permissions_membre)) {
155
				if ($type == "add") {
156
					$dbc->insert("ID_permission", $id_permission)
157
						->insert("ID_identite", $id_identite)
158
						->insert("ID_faction", $id_faction)
159
						->into("_bataille_faction_permission_player")
160
						->set();
161
					FlashMessage::setFlash("La permission a bien été ajoutée", "success");
162
				}
163
				else {
164
					$dbc->delete()->from("_bataille_faction_permission_player")
165
						->where("ID_faction", "=", $id_faction, "AND")
166
						->where("ID_permission", "=", $id_permission, "AND")
167
						->where("ID_identite", "=", $id_identite)
168
						->del();
169
					
170
					FlashMessage::setFlash("La permission a bien été supprimée", "success");
171
				}
172
				
173
				return true;
174
			}
175
			
176
			FlashMessage::setFlash("Vous n'avez pas la permission de gérer les permissions des membres");
177
			return false;
178
		}
179
		
180
		/**
181
		 * @param $id_identite
182
		 * fonction qui va supprimer tous les droits d'accès du user
183
		 */
184
		protected function setSupprilerAllPermissions($id_identite) {
185
			$dbc = App::getDb();
186
			
187
			$dbc->delete()->from("_bataille_faction_permission_player")->where("ID_identite", "=", $id_identite)->del();
188
		}
189
		//-------------------------- END SETTER ----------------------------------------------------------------------------//    
190
	}