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

GestionContenus::setModifierContenu()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 5
rs 9.4285
cc 1
eloc 3
nc 1
nop 2
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
	}