Passed
Push — master ( 517a2a...57bcce )
by Anthony
02:58
created

GestionContenus::setErreurContenus()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 11
rs 9.4285
cc 1
eloc 9
nc 1
nop 9

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
<?php
2
	namespace core\admin\contenus;
3
4
	use core\App;
5
	use core\contenus\Contenus;
6
	use core\functions\ChaineCaractere;
7
	use core\HTML\flashmessage\FlashMessage;
8
9
	class GestionContenus extends Contenus {
10
		use ParentTexte;
11
12
		private $erreur;
13
14
15
		//-------------------------- GETTER ----------------------------------------------------------------------------//
16
		public function getErreur() {
17
			return $this->erreur;
18
		}
19
		
20
		/**
21
		 * @param integer $parent
22
		 * @return int
23
		 */
24
		private function getOrdrePage($parent) {
25
			if ($parent != "") {
26
				$dbc = \core\App::getDb();
27
				$ordre = 1;
28
29
				$query = $dbc->select("ordre")->from("page")->orderBy("ordre", "DESC")->limit(0, 1)->get();
30
				if (count($query) > 0) {
31
					foreach ($query as $obj) {
32
						$ordre = $obj->ordre;
33
					}
34
				}
35
36
				return $ordre;
37
			}
38
		}
39
40
		private function getParentId($parent) {
41
			$dbc = \core\App::getDb();
42
43
			if ($parent == "") {
44
				return 0;
45
			}
46
47
			$query = $dbc->select("ID_page")->from("page")->where("titre", " LIKE ", '"%'.$parent.'%"', "", true)->get();
48
49
			if (count($query) == 1) {
50
				foreach ($query as $obj) {
51
					return $obj->ID_page;
52
				}
53
			}
54
55
			return 0;
56
		}
57
58
		/**
59
		 * @param string $nom_table
60
		 * @param string $nom_id_table
61
		 * @param string $champ
62
		 * @param $value
63
		 * @param integer $limit_char
64
		 * @param string $err_char
65
		 * @param string $err_egalite
66
		 * @param null $value_id_table
67
		 * @return string
68
		 * fonction qui permet de vérifier qu'il n'y ait pas d'erreur dans le champ spécifié ni de doublons
69
		 */
70
		private function getVerifChamp($nom_table, $nom_id_table, $champ, $value, $limit_char, $err_char, $err_egalite, $value_id_table = null) {
71
			$dbc = App::getDb();
72
73
			if (strlen(utf8_decode($value)) > $limit_char) {
74
				$this->erreur = true;
75
				return "<li>$err_char</li>";
76
			}
77
			else if ($dbc->rechercherEgalite($nom_table, $champ, $value, $nom_id_table, $value_id_table) == true) {
78
				$this->erreur = true;
79
				return "<li>$err_egalite</li>";
80
			}
81
		}
82
		
83
		private function getTestBaliseTitle($balise_title, $id_page = null) {
84
			$err_balise_title_char = "Le titre pour le navigateur ne doit pas dépasser 70 caractères";
85
			$err_balise_title_egalite = "Ce titre est déjà présent en base de données, merci d'en choisir un autre pour optimiser le référencement de votre site";
86
			return $this->getVerifChamp("page", "ID_page", "balise_title", $balise_title, 70, $err_balise_title_char, $err_balise_title_egalite, $id_page);
87
		}
88
		
89
		private function getTestUrl($url, $id_page = null) {
90
			$err_url_char = "L'url ne doit pas dépasser 92 caractères";
91
			$err_url_egalite = "Cette url est déjà présent en base de données, merci d'en choisir une autre pour ne pas avoir de conflit entre vos pages";
92
			return $this->getVerifChamp("page", "ID_page", "url", $url, 92, $err_url_char, $err_url_egalite, $id_page);
93
		}
94
		
95
		private function getTestMetaDescription($meta_description, $id_page = null) {
96
			$err_meta_description_char = "La description de cette page ne doit pas dépasser 158 caractères";
97
			$err_meta_description_egalite = "Cette description est déjà présent en base de données, merci d'en choisir une autre pour optimiser le référencement de votre site";
98
			return $this->getVerifChamp("page", "ID_page", "meta_description", $meta_description, 158, $err_meta_description_char, $err_meta_description_egalite, $id_page);
99
		}
100
		
101
		private function getTestTitrePage($titre_page, $id_page = null) {
102
			$err_titre_page_char = "Le titre de cette page ne doit pas dépasser 50 caractères";
103
			$err_titre_page_egalite = "Cette titre de page est déjà présent en base de données, merci d'en choisir un autre pour ne pas avoir de conflit dans votre navigation";
104
			return $this->getVerifChamp("page", "ID_page", "titre", $titre_page, 50, $err_titre_page_char, $err_titre_page_egalite, $id_page);
105
		}
106
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
107
108
109
110
		//-------------------------- SETTER ----------------------------------------------------------------------------//
111
		/**
112
		 * @param string $url
113
		 * @param string $err_balise_title
114
		 * @param string $err_url
115
		 * @param string $err_meta_description
116
		 * @param string $err_titre_page
117
		 */
118
		private function setErreurContenus($balise_title, $url, $meta_description, $titre_page, $parent, $err_balise_title, $err_url, $err_meta_description, $err_titre_page) {
119
			$_SESSION['balise_title'] = $balise_title;
120
			$_SESSION['url'] = $url;
121
			$_SESSION['meta_description'] = $meta_description;
122
			$_SESSION['titre_page'] = $titre_page;
123
			$_SESSION['parent'] = $parent;
124
			$_SESSION['err_modification_contenu'] = true;
125
126
			$message = "<ul>".$err_balise_title.$err_url.$err_meta_description.$err_titre_page."</ul>";
127
			FlashMessage::setFlash($message);
128
		}
129
130
		/**
131
		 * fonction qui permet de créer un page
132
		 * @param $balise_title
133
		 * @param $url
134
		 * @param $meta_description
135
		 * @param $titre_page
136
		 * @param $parent
137
		 */
138
		public function setCreerPage($balise_title, $url, $meta_description, $titre_page, $parent, $affiche = 1) {
139
			$dbc = \core\App::getDb();
140
141
			$url = ChaineCaractere::setUrl($url);
142
143
			$nom_page = explode("/", $url);
144
			$nom_page = end($nom_page);
145
146
			$page_type = ROOT."config/page_type/page_type.html";
147
			$new_page = ROOT."app/views/".$nom_page.".html";
148
			
149
			$err_balise_title = $this->getTestBaliseTitle($balise_title);
150
			$err_url = $this->getTestUrl($url);
151
			$err_meta_description = $this->getTestMetaDescription($meta_description);
152
			$err_titre_page = $this->getTestTitrePage($titre_page);
153
			
154
			if ($this->erreur === true) {
155
				$this->setErreurContenus($balise_title, $url, $meta_description, $titre_page, $parent, $err_balise_title, $err_url, $err_meta_description, $err_titre_page);
156
				return false;
157
			}
158
			
159
			if ((!file_exists($new_page)) && (copy($page_type, $new_page))) {
160
				$parent = intval($this->getParentId($parent));
161
				$ordre = intval($this->getOrdrePage($parent));
162
				$dbc->insert("titre", $titre_page)
163
					->insert("url", $url)
164
					->insert("meta_description", $meta_description)
165
					->insert("balise_title", $balise_title)
166
					->insert("ordre", $ordre)
167
					->insert("parent", $parent)
168
					->insert("affiche", $affiche)
169
					->into("page")
170
					->set();
171
				
172
				$this->id_page = $dbc->lastInsertId();
173
				$this->url = $url;
174
				if ($parent == "") {
175
					$this->setAjoutLienNavigation("ID_page", $this->id_page, 1);
176
				}
177
			}
178
			else {
179
				FlashMessage::setFlash("Impossible de créer cette page, veuillez réeseyer dans un moment. Si le problème persiste contactez votre administrateur.");
180
				$this->erreur = true;
181
			}
182
		}
183
184
		/**
185
		 * function that will create a redirection on an other site
186
		 * @param $balise_title
187
		 * @param $url
188
		 * @param $titre_page
189
		 * @param $parent
190
		 */
191
		public function setCreerPageRedirect($balise_title, $url, $titre_page, $parent, $affiche = 1) {
192
			$dbc = \core\App::getDb();
193
194
			$err_balise_title = $this->getTestBaliseTitle($balise_title);
195
			$err_url = $this->getTestUrl($url);
196
			$err_titre_page = $this->getTestTitrePage($titre_page);
197
			
198
			if ($this->erreur !== true) {
199
				//si le fichier n'existe pas et que la copy est ok on insert en bdd
200
				$parent = intval($this->getParentId($parent));
201
				$ordre = intval($this->getOrdrePage($parent));
202
				$dbc->insert("titre", $titre_page)
203
					->insert("url", $url)
204
					->insert("balise_title", $balise_title)
205
					->insert("ordre", $ordre)
206
					->insert("parent", $parent)
207
					->insert("affiche", $affiche)
208
					->insert("target", "_blanck")
209
					->into("page")
210
					->set();
211
212
				$this->id_page = $dbc->lastInsertId();
213
				if ($parent == "") {
214
					$this->setAjoutLienNavigation("ID_page", $this->id_page, 1);
215
				}
216
			}
217
			else {
218
				$this->setErreurContenus($balise_title, $url, "", $titre_page, $parent, $err_balise_title, $err_url, "", $err_titre_page);
219
				$this->erreur = true;
220
			}
221
		}
222
223
		/**
224
		 * fonction qui permet de modifier une page en fonction de son id
225
		 * @param $id_page
226
		 * @param $balise_title
227
		 * @param $url
228
		 * @param $meta_description
229
		 * @param $titre_page
230
		 * @param $parent
231
		 * @param $contenu
232
		 */
233
		public function setModifierPage($id_page, $balise_title, $url, $meta_description, $titre_page, $parent, $affiche = 1) {
234
			$dbc = \core\App::getDb();
235
236
			//on trouve l'ancien fichier à parir de la fin de l'url
237
			$old_url = explode("/", $this->url);
238
			$filename = ROOT."app/views/".end($old_url).".html";
239
240
			//si le fichier existe on modifie le tout
241
			if (file_exists($filename) || ($id_page == 1)) {
242
				$this->id_page = $id_page;
243
				$url = ChaineCaractere::setUrl($url);
244
				
245
				$err_balise_title = $this->getTestBaliseTitle($balise_title, $id_page);
246
				$err_url = $this->getTestUrl($url, $id_page);
247
				$err_meta_description = $this->getTestMetaDescription($meta_description , $id_page);
248
				$err_titre_page = $this->getTestTitrePage($titre_page, $id_page);
249
				
250
				if ($this->erreur !== true) {
251
					$new_url = explode("/", $url);
252
					$new_filename = ROOT."app/views/".end($new_url).".html";
253
254
					rename($filename, $new_filename);
255
256
					$parent = intval($this->getParentId($parent));
257
					$dbc->update("titre", $titre_page)
258
						->update("url", $url)
259
						->update("meta_description", $meta_description)
260
						->update("balise_title", $balise_title)
261
						->update("parent", $parent)
262
						->update("affiche", $affiche)
263
						->from("page")
264
						->where("ID_page", "=", $id_page, "", true)
265
						->set();
266
267
					$this->setModifierLienNavigation("ID_page", $id_page, $this->getParentId($parent), $affiche);
268
					$this->url = $url;
269
				}
270
				else {
271
					$this->setErreurContenus($balise_title, $url, $meta_description, $titre_page, $parent, $err_balise_title, $err_url, $err_meta_description, $err_titre_page);
272
				}
273
			}
274
			//sinon on renvoi une erreur en disant que le fichier n'existe pas et qu'il faut contacter un administrateur
275
			else {
276
				FlashMessage::setFlash("Impossible de modifier cette page, veuillez contacter votre administrateur pour corriger ce problème");
277
				$this->erreur = true;
278
			}
279
		}
280
281
		/**
282
		 * @param $id_page
283
		 * @param $contenu
284
		 */
285
		public function setModifierContenu($id_page, $contenu) {
286
			$dbc = \core\App::getDb();
287
288
			$dbc->update("contenu", $contenu)->from("page")->where("ID_page", "=", $id_page)->set();
289
		}
290
291
		/**
292
		 * fonction qui permet de supprimer une page, test si fichier exist, si oui on delete
293
		 * @param $id_page
294
		 */
295
		public function setSupprimerPage() {
296
			$url = explode("/", $this->url);
297
			$filename = ROOT."app/views/".end($url).".html";
298
			
299
			if (file_exists($filename) && $this->id_page != 1) {
300
				unlink($filename);
301
				$this->setSupprimerLienNavigation();
302
				
303
				return true;
304
			}
305
			else if (ChaineCaractere::FindInString($this->url, "http://") === true) {
306
				$this->setSupprimerLienNavigation();
307
			}
308
			else {
309
				FlashMessage::setFlash("Impossible de supprimer cette page, veuillez contacter votre administrateur pour corriger ce problème");
310
				$this->erreur = true;
311
				return false;
312
			}
313
		}
314
315
		/**
316
		 * @param string $id
317
		 * @param string $value_id
318
		 * @param integer $affiche
319
		 */
320
		private function setAjoutLienNavigation($id, $value_id, $affiche) {
321
			if ($affiche !== null) {
322
				App::getNav()->setAjoutLien($id, $value_id);
323
			}
324
		}
325
326
		/**
327
		 * @param string $id
328
		 * @param integer $affiche
329
		 */
330
		private function setModifierLienNavigation($id, $id_page, $parent, $affiche) {
331
			if ($parent != "") {
332
				App::getNav()->setSupprimerLien($id, $id_page);
333
			}
334
			else if (($affiche == 0) && ($parent == "")) {
335
				App::getNav()->setSupprimerLien($id, $id_page);
336
			}
337
		}
338
		
339
		/**
340
		 * delete link in nav and delete page in table
341
		 */
342
		private function setSupprimerLienNavigation() {
343
			$dbc = App::getDb();
344
			
345
			$dbc->delete()->from("page")->where("ID_page", "=", $this->id_page)->del();
346
			
347
			App::getNav()->setSupprimerLien("ID_page", $this->id_page);
348
		}
349
		//-------------------------- FIN SETTER ----------------------------------------------------------------------------//
350
	}