Passed
Push — master ( a4e006...aa467b )
by Anthony
03:08
created

GestionContenus::setErreurContenus()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 12
rs 9.4285
cc 1
eloc 10
nc 1
nop 10

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
	use core\Navigation;
9
10
	class GestionContenus extends Contenus {
11
		private $parent_texte;
12
		private $erreur;
13
14
15
		//-------------------------- CONSTRUCTEUR ----------------------------------------------------------------------------//
16
		public function __construct() {
17
18
		}
19
		//-------------------------- FIN CONSTRUCTEUR ----------------------------------------------------------------------------//
20
21
22
23
		//-------------------------- GETTER ----------------------------------------------------------------------------//
24
		public function getErreur() {
25
			return $this->erreur;
26
		}
27
28
		public function getParentTexte($parent) {
29
			$dbc = \core\App::getDb();
30
31
			$query = $dbc->select("titre")->from("page")->where("ID_page", "=", $parent)->get();
32
33
			if ((is_array($query)) && (count($query) > 0)) {
34
				foreach ($query as $obj) $this->parent_texte = $obj->titre;
35
			}
36
37
			return $this->parent_texte;
38
		}
39
40
		private function getOrdrePage($parent) {
41
			if (($parent != "") || ($parent != 0)) {
42
				$dbc = \core\App::getDb();
43
				$ordre = "";
44
45
				$query = $dbc->select("ordre")->from("page")->orderBy("ordre", "DESC")->limit(0, 1)->get();
46
				if ((is_array($query)) && (count($query) > 0)) {
47
					foreach ($query as $obj) {
48
						$ordre = $obj->ordre;
49
					}
50
				}
51
52
				return $ordre;
53
			}
54
		}
55
56
		private function getParentId($parent) {
57
			$dbc = \core\App::getDb();
58
59
			$query = $dbc->select("ID_page")->from("page")->where("titre", " LIKE ", '"%'.$parent.'%"', true)->get();
0 ignored issues
show
Documentation introduced by
true is of type boolean, but the function expects a string.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
60
61
			if ((is_array($query)) && (count($query) == 1)) {
62
				foreach ($query as $obj) {
63
					return $obj->ID_page;
64
				}
65
			}
66
67
			return 0;
68
		}
69
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
70
71
72
73
		//-------------------------- SETTER ----------------------------------------------------------------------------//
74
75
		/**
76
		 * @param string $url
77
		 * @param string $err_balise_title
78
		 * @param string $err_url
79
		 * @param string $err_meta_description
80
		 * @param string $err_titre_page
81
		 */
82
		private function setErreurContenus($balise_title, $url, $meta_description, $titre_page, $parent, $contenu, $err_balise_title, $err_url, $err_meta_description, $err_titre_page) {
83
			$_SESSION['balise_title'] = $balise_title;
84
			$_SESSION['url'] = $url;
85
			$_SESSION['meta_description'] = $meta_description;
86
			$_SESSION['titre_page'] = $titre_page;
87
			$_SESSION['parent'] = $parent;
88
			$_SESSION['contenu'] = $contenu;
89
			$_SESSION['err_modification_contenu'] = true;
90
91
			$message = "<ul>".$err_balise_title.$err_url.$err_meta_description.$err_titre_page."</ul>";
92
			FlashMessage::setFlash($message);
93
		}
94
95
		/**
96
		 * fonction qui permet de créer un page
97
		 * @param $balise_title
98
		 * @param $url
99
		 * @param $meta_description
100
		 * @param $titre_page
101
		 * @param $parent
102
		 * @param $contenu
103
		 */
104
		public function setCreerPage($balise_title, $url, $meta_description, $titre_page, $parent, $contenu, $affiche = 1) {
105
			$dbc = \core\App::getDb();
106
107
			$url = ChaineCaractere::setUrl($url);
108
109
			$nom_page = explode("/", $url);
110
			$nom_page = end($nom_page);
111
112
			$page_type = ROOT."config/page_type/page_type.php";
113
			$new_page = ROOT."app/views/".$nom_page.".php";
114
115
			$err_balise_title_char = "Le titre pour le navigateur ne doit pas dépasser 70 caractères";
116
			$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";
117
			$err_balise_title = App::getVerifChamp("page", "ID_page", "balise_title", $balise_title, 70, $err_balise_title_char, $err_balise_title_egalite);
118
119
			$err_url_char = "L'url ne doit pas dépasser 92 caractères";
120
			$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";
121
			$err_url = App::getVerifChamp("page", "ID_page", "url", $url, 92, $err_url_char, $err_url_egalite);
122
123
			$err_meta_description_char = "La description de cette page ne doit pas dépasser 158 caractères";
124
			$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";
125
			$err_meta_description = App::getVerifChamp("page", "ID_page", "meta_description", $meta_description, 158, $err_meta_description_char, $err_meta_description_egalite);
126
127
			$err_titre_page_char = "Le titre de cette page ne doit pas dépasser 50 caractères";
128
			$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";
129
			$err_titre_page = App::getVerifChamp("page", "ID_page", "titre", $titre_page, 50, $err_titre_page_char, $err_titre_page_egalite);
130
131
			if (App::getErreur() !== true) {
132
				//si le fichier n'existe pas et que la copy est ok on insert en bdd
133
				if ((!file_exists($new_page)) && (copy($page_type, $new_page))) {
134
					$dbc->insert("titre", $titre_page)
135
						->insert("contenu", $contenu)
136
						->insert("url", $url)
137
						->insert("meta_description", $meta_description)
138
						->insert("balise_title", $balise_title)
139
						->insert("ordre", $this->getOrdrePage($parent))
140
						->insert("parent", $parent)
141
						->insert("affiche", $affiche)
142
						->into("page")
143
						->set();
144
145
					$this->id_page = $dbc->lastInsertId();
146
					$this->setAjoutLienNavigation("ID_page", $this->id_page, 1);
147
				}
148
				else {
149
					FlashMessage::setFlash("Impossible de créer cette page, veuillez réeseyer dans un moment. Si le problème persiste contactez votre administrateur.");
150
					$this->erreur = true;
151
				}
152
			}
153
			else {
154
				$this->setErreurContenus($balise_title, $url, $meta_description, $titre_page, $parent, $contenu, $err_balise_title, $err_url, $err_meta_description, $err_titre_page);
155
			}
156
		}
157
158
		/**
159
		 * fonction qui permet de modifier une page en fonction de son id
160
		 * @param $id_page
161
		 * @param $balise_title
162
		 * @param $url
163
		 * @param $meta_description
164
		 * @param $titre_page
165
		 * @param $parent
166
		 * @param $contenu
167
		 */
168
		public function setModifierPage($id_page, $balise_title, $url, $meta_description, $titre_page, $parent, $contenu, $affiche = 1) {
169
			$dbc = \core\App::getDb();
170
171
			//on trouve l'ancien fichier à parir de la fin de l'url
172
			$this->getHeadPage($id_page);
173
			$this->getContenuPage($id_page);
174
			$old_url = explode("/", $this->url);
175
			$filename = ROOT."app/views/".end($old_url).".php";
176
177
			//si le fichier existe on modifie le tout
178
			if (file_exists($filename) || ($id_page == 1)) {
179
				$this->id_page = $id_page;
180
				$url = ChaineCaractere::setUrl($url);
181
182
				$err_balise_title_char = "Le titre pour le navigateur ne doit pas dépasser 70 caractères";
183
				$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";
184
				$err_balise_title = App::getVerifChamp("page", "ID_page", "balise_title", $balise_title, 70, $err_balise_title_char, $err_balise_title_egalite, $this->id_page);
185
186
				$err_url_char = "L'url ne doit pas dépasser 92 caractères";
187
				$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";
188
				$err_url = App::getVerifChamp("page", "ID_page", "url", $url, 92, $err_url_char, $err_url_egalite, $this->id_page);
189
190
				$err_meta_description_char = "La description de cette page ne doit pas dépasser 158 caractères";
191
				$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";
192
				$err_meta_description = App::getVerifChamp("page", "ID_page", "meta_description", $meta_description, 158, $err_meta_description_char, $err_meta_description_egalite, $this->id_page);
193
194
				$err_titre_page_char = "Le titre de cette page ne doit pas dépasser 50 caractères";
195
				$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";
196
				$err_titre_page = App::getVerifChamp("page", "ID_page", "titre", $titre_page, 50, $err_titre_page_char, $err_titre_page_egalite, $this->id_page);
197
198
				if (App::getErreur() !== true) {
199
					$new_url = explode("/", $url);
200
					$new_filename = ROOT."app/views/".end($new_url).".php";
201
202
					rename($filename, $new_filename);
203
204
					$parent = $this->getParentId($parent);
205
					$dbc->update("titre", $titre_page)
206
						->update("contenu", $contenu)
207
						->update("url", $url)
208
						->update("meta_description", $meta_description)
209
						->update("balise_title", $balise_title)
210
						->update("parent", $parent)
211
						->update("affiche", $affiche)
212
						->from("page")
213
						->where("ID_page", "=", $id_page, "", true)
214
						->set();
215
216
					$this->setModifierLienNavigation("ID_page", $id_page, $this->getParentId($parent), $affiche);
217
				}
218
				else {
219
					$this->setErreurContenus($balise_title, $url, $meta_description, $titre_page, $parent, $contenu, $err_balise_title, $err_url, $err_meta_description, $err_titre_page);
220
				}
221
			}
222
			//sinon on renvoi une erreur en disant que le fichier n'existe pas et qu'il faut contacter un administrateur
223
			else {
224
				FlashMessage::setFlash("Impossible de modifier cette page, veuillez contacter votre administrateur pour corriger ce problème");
225
				$this->erreur = true;
226
			}
227
		}
228
229
		/**
230
		 * @param $id_page
231
		 * @param $contenu
232
		 */
233
		public function setModifierContenu($id_page, $contenu) {
234
			$dbc = \core\App::getDb();
235
236
			$dbc->update("contenu", $contenu)->from("page")->where("ID_page", "=", $id_page)->set();
237
		}
238
239
		/**
240
		 * fonction qui permet de supprimer une page, test si fichier exist, si oui on delete
241
		 * @param $id_page
242
		 */
243
		public function setSupprimerPage($id_page) {
244
			$dbc = \core\App::getDb();
245
246
			//le premier id_page sera tojours l'accueil donc on ne peut pas le delete
247
			if ($id_page != 1) {
248
				$this->getContenuPage($id_page);
249
250
				$url = explode("/", $this->url);
251
				$filename = ROOT."app/views/".end($url).".php";
252
253
				//si le fichier existe supprimer en bdd plus l fichier
254
				if (file_exists($filename)) {
255
					unlink($filename);
256
257
					$dbc->delete()->from("page")->where("ID_page", "=", $id_page)->del();
258
259
					$nav = new Navigation();
260
					$nav->setSupprimerLien("ID_page", $id_page);
261
				}
262
				//sinon on renvoi une erreur en disant que le fichier n'existe pas et qu'il faut contacter un administrateur
263
				else {
264
					FlashMessage::setFlash("Impossible de supprimer cette page, veuillez contacter votre administrateur pour corriger ce problème");
265
					$this->erreur = true;
266
				}
267
			}
268
			else {
269
				FlashMessage::setFlash("Impossible de supprimer cette page, veuillez contacter votre administrateur pour corriger ce problème");
270
				$this->erreur = true;
271
			}
272
		}
273
274
		private function setAjoutLienNavigation($id, $value_id, $affiche) {
275
			if ($affiche !== null) {
276
				$nav = new Navigation();
277
				$nav->setAjoutLien($id, $value_id);
278
			}
279
		}
280
281
		/**
282
		 * @param string $id
283
		 * @param integer $affiche
284
		 */
285
		private function setModifierLienNavigation($id, $id_page, $parent, $affiche) {
286
			if ($parent != "") {
287
				$nav = new Navigation();
288
				$nav->setSupprimerLien($id, $id_page);
289
			}
290
			else if (($affiche == 1) && ($parent == "")) {
291
				$this->setAjoutLienNavigation($id, $id_page, $affiche);
292
			}
293
		}
294
		//-------------------------- FIN SETTER ----------------------------------------------------------------------------//
295
	}