Passed
Push — master ( d2bb28...8a1794 )
by Anthony
02:48
created

GestionContenus::setAjoutLienNavigation()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
rs 9.4285
cc 2
eloc 4
nc 2
nop 3
1
<?php
2
	namespace core\admin\contenus;
3
4
	use core\App;
5
	use core\contenus\Contenus;
6
	use core\admin\droitsacces\DroitAcces;
7
	use core\functions\ChaineCaractere;
8
	use core\HTML\flashmessage\FlashMessage;
9
	use core\Navigation;
10
11
	class GestionContenus extends Contenus {
12
		private $parent_texte;
13
		private $erreur;
14
15
16
		//-------------------------- CONSTRUCTEUR ----------------------------------------------------------------------------//
17
		public function __construct($init_all = 0) {
18
			$dbc = \core\App::getDb();
19
20
			if ($init_all == 1) {
21
				$droit_acces = new DroitAcces();
22
				$id_identite = $_SESSION["idlogin".CLEF_SITE];
23
24
				//on construit le menu
25
				if ($droit_acces->getSuperAdmin() != 1) {
26
					$query = $dbc->query("SELECT page.ID_page, page.titre, page.balise_title, page.parent, page.url, droit_acces_page.seo, droit_acces_page.contenu, droit_acces_page.navigation, droit_acces_page.supprimer FROM page, droit_acces_page, liste_droit_acces, identite WHERE
27
                                    identite.liste_droit = liste_droit_acces.ID_liste_droit_acces AND
28
									liste_droit_acces.ID_liste_droit_acces = droit_acces_page.ID_liste_droit_acces AND
29
									page.ID_page = droit_acces_page.ID_page AND
30
									(droit_acces_page.seo != 0 OR droit_acces_page.contenu != 0 OR droit_acces_page.navigation != 0 OR droit_acces_page.supprimer != 0 OR identite.super_admin = 1) AND
31
									identite.ID_identite = $id_identite
32
                                    ORDER BY page.ordre
33
                    ");
34
				}
35
				else {
36
					$query = $dbc->query("SELECT ID_page, titre, balise_title, parent, url FROM page ORDER BY ordre");
37
				}
38
39
				$this->getMenu($query);
40
			}
41
		}
42
		//-------------------------- FIN CONSTRUCTEUR ----------------------------------------------------------------------------//
43
44
45
46
		//-------------------------- GETTER ----------------------------------------------------------------------------//
47
		public function getParentTexte($parent) {
0 ignored issues
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...
48
			$dbc = \core\App::getDb();
49
50
			$query = $dbc->query("SELECT titre FROM page WHERE ID_page=".$parent);
51
			if ((is_array($query)) && (count($query) > 0)) {
52
				foreach ($query as $obj) $this->parent_texte = $obj->titre;
53
			}
54
55
			return $this->parent_texte;
56
		}
57
		public function getErreur() {
58
			return $this->erreur;
59
		}
60
61
		private function getLastOrdre() {
0 ignored issues
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...
62
			$dbc = \core\App::getDb();
63
			$ordre = "";
64
65
			$query = $dbc->query("SELECT ordre FROM page ORDER BY ordre ASC LIMIT 1");
66
			if ((is_array($query)) && (count($query) > 0)) {
67
				foreach ($query as $obj) {
68
					$ordre = $obj->ordre;
69
				}
70
			}
71
72
			return $ordre;
73
		}
74
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
75
76
77
78
		//-------------------------- SETTER ----------------------------------------------------------------------------//
79
		/**
80
		 * fonction qui permet de créer un page
81
		 * @param $balise_title
82
		 * @param $url
83
		 * @param $meta_description
84
		 * @param $titre_page
85
		 * @param $parent
86
		 * @param $contenu
87
		 */
88
		public function setCreerPage($balise_title, $url, $meta_description, $titre_page, $parent, $contenu, $affiche = null) {
0 ignored issues
show
Unused Code introduced by
The parameter $affiche is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
89
			$dbc = \core\App::getDb();
90
91
			$url = ChaineCaractere::setUrl($url);
92
93
			$nom_page = explode("/", $url);
94
			$nom_page = end($nom_page);
95
96
			$page_type = ROOT."config/page_type/page_type.php";
97
			$new_page = ROOT."app/views/".$nom_page.".php";
98
99
			$err_balise_title_char = "Le titre pour le navigateur ne doit pas dépasser 70 caractères";
100
			$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";
101
			$err_balise_title = App::getVerifChamp("page", "ID_page", "balise_title", $balise_title, 70, $err_balise_title_char, $err_balise_title_egalite);
102
103
			$err_url_char = "L'url ne doit pas dépasser 92 caractères";
104
			$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";
105
			$err_url = App::getVerifChamp("page", "ID_page", "url", $url, 92, $err_url_char, $err_url_egalite);
106
107
			$err_meta_description_char = "La description de cette page ne doit pas dépasser 158 caractères";
108
			$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";
109
			$err_meta_description = App::getVerifChamp("page", "ID_page", "meta_description", $meta_description, 158, $err_meta_description_char, $err_meta_description_egalite);
110
111
			$err_titre_page_char = "Le titre de cette page ne doit pas dépasser 50 caractères";
112
			$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";
113
			$err_titre_page = App::getVerifChamp("page", "ID_page", "titre", $titre_page, 50, $err_titre_page_char, $err_titre_page_egalite);
114
115
			if (App::getErreur() !== true) {
116
				//si le fichier n'existe pas et que la copy est ok on insert en bdd
117
				if ((!file_exists($new_page)) && (copy($page_type, $new_page))) {
118
					$ordre = $this->getLastOrdre() + 1;
119
					$value = array(
120
						"balise_title" => $balise_title,
121
						"url" => $url,
122
						"meta_description" => $meta_description,
123
						"titre" => $titre_page,
124
						"parent" => $parent,
125
						"contenu" => $contenu,
126
						"ordre" => $ordre,
127
						"affiche" => 1
128
					);
129
130
					$dbc->prepare("INSERT INTO page (titre, contenu, url, meta_description, balise_title, ordre, parent, affiche) VALUES (:titre, :contenu, :url, :meta_description, :balise_title, :ordre, :parent, :affiche)", $value);
131
					$this->id_page = $dbc->lastInsertId();
132
					$this->setAjoutLienNavigation("ID_page", $this->id_page , 1);
133
				}
134
				else {
135
					FlashMessage::setFlash("Impossible de créer cette page, veuillez réeseyer dans un moment. Si le problème persiste contactez votre administrateur.");
136
					$this->erreur = true;
137
				}
138
			}
139
			else {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across 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...
140
				$_SESSION['balise_title'] = $balise_title;
141
				$_SESSION['url'] = $url;
142
				$_SESSION['meta_description'] = $meta_description;
143
				$_SESSION['titre_page'] = $titre_page;
144
				$_SESSION['parent'] = $parent;
145
				$_SESSION['contenu'] = $contenu;
146
				$_SESSION['err_modification_contenu'] = true;
147
148
				$message = "<ul>".$err_balise_title.$err_url.$err_meta_description.$err_titre_page."</ul>";
149
				FlashMessage::setFlash($message);
150
			}
151
		}
152
153
		/**
154
		 * fonction qui permet de modifier une page en fonction de son id
155
		 * @param $id_page
156
		 * @param $balise_title
157
		 * @param $url
158
		 * @param $meta_description
159
		 * @param $titre_page
160
		 * @param $parent
161
		 * @param $contenu
162
		 */
163
		public function setModifierPage($id_page, $balise_title, $url, $meta_description, $titre_page, $parent, $contenu, $affiche = null) {
0 ignored issues
show
Unused Code introduced by
The parameter $affiche is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
164
			$dbc = \core\App::getDb();
165
166
			//on trouve l'ancien fichier à parir de la fin de l'url
167
			$this->getHeadPage($id_page);
168
			$this->getContenuPage($id_page);
169
			$old_url = explode("/", $this->url);
170
			$filename = ROOT."app/views/".end($old_url).".php";
171
172
			//si le fichier existe on modifie le tout
173
			if (file_exists($filename) || ($id_page == 1)) {
174
				$this->id_page = $id_page;
175
				$url = ChaineCaractere::setUrl($url);
176
177
				$err_balise_title_char = "Le titre pour le navigateur ne doit pas dépasser 70 caractères";
178
				$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";
179
				$err_balise_title = App::getVerifChamp("page", "ID_page", "balise_title", $balise_title, 70, $err_balise_title_char, $err_balise_title_egalite, $this->id_page);
180
181
				$err_url_char = "L'url ne doit pas dépasser 92 caractères";
182
				$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";
183
				$err_url = App::getVerifChamp("page", "ID_page", "url", $url, 92, $err_url_char, $err_url_egalite, $this->id_page);
184
185
				$err_meta_description_char = "La description de cette page ne doit pas dépasser 158 caractères";
186
				$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";
187
				$err_meta_description = App::getVerifChamp("page", "ID_page", "meta_description", $meta_description, 158, $err_meta_description_char, $err_meta_description_egalite, $this->id_page);
188
189
				$err_titre_page_char = "Le titre de cette page ne doit pas dépasser 50 caractères";
190
				$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";
191
				$err_titre_page = App::getVerifChamp("page", "ID_page", "titre", $titre_page, 50, $err_titre_page_char, $err_titre_page_egalite, $this->id_page);
192
193
				if (App::getErreur() !== true) {
194
					$new_url = explode("/", $url);
195
					$new_filename = ROOT."app/views/".end($new_url).".php";
196
197
					rename($filename, $new_filename);
198
199
					$value = array(
200
						"id_page" => $id_page,
201
						"balise_title" => $balise_title,
202
						"url" => $url,
203
						"meta_description" => $meta_description,
204
						"titre_page" => $titre_page,
205
						"parent" => $parent,
206
						"contenu" => $contenu
207
					);
208
209
					$dbc->prepare("UPDATE page SET titre=:titre_page, contenu=:contenu, url=:url, meta_description=:meta_description, balise_title=:balise_title, parent=:parent WHERE ID_page=:id_page", $value);
210
					$this->setAjoutLienNavigation("ID_page", $id_page, 1);
211
				}
212
				else {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across 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...
213
					$_SESSION['balise_title'] = $balise_title;
214
					$_SESSION['url'] = $url;
215
					$_SESSION['meta_description'] = $meta_description;
216
					$_SESSION['titre_page'] = $titre_page;
217
					$_SESSION['parent'] = $parent;
218
					$_SESSION['contenu'] = $contenu;
219
					$_SESSION['err_modification_contenu'] = true;
220
221
					$message = "<ul>".$err_balise_title.$err_url.$err_meta_description.$err_titre_page."</ul>";
222
					FlashMessage::setFlash($message);
223
				}
224
			}
225
			//sinon on renvoi une erreur en disant que le fichier n'existe pas et qu'il faut contacter un administrateur
226
			else {
227
				FlashMessage::setFlash("Impossible de modifier cette page, veuillez contacter votre administrateur pour corriger ce problème");
228
				$this->erreur = true;
229
			}
230
		}
231
232
		/**
233
		 * fonction qui permet de supprimer une page, test si fichier exist, si oui on delete
234
		 * @param $id_page
235
		 */
236
		public function setSupprimerPage($id_page) {
237
			$dbc = \core\App::getDb();
238
239
			//le premier id_page sera tojours l'accueil donc on ne peut pas le delete
240
			if ($id_page != 1) {
241
				$this->getContenuPage($id_page);
242
243
				$url = explode("/", $this->url);
244
				$filename = ROOT."app/views/".end($url).".php";
245
246
				//si le fichier existe supprimer en bdd plus l fichier
247
				if (file_exists($filename)) {
248
					unlink($filename);
249
250
					$value = array(
251
						"id_page" => $id_page
252
					);
253
254
					$dbc->prepare("DELETE FROM page WHERE ID_page=:id_page", $value);
255
256
					$nav = new Navigation();
257
					$nav->setSupprimerLien("ID_page", $id_page);
258
				}
259
				//sinon on renvoi une erreur en disant que le fichier n'existe pas et qu'il faut contacter un administrateur
260
				else {
261
					FlashMessage::setFlash("Impossible de supprimer cette page, veuillez contacter votre administrateur pour corriger ce problème");
262
					$this->erreur = true;
263
				}
264
			}
265
			else {
266
				FlashMessage::setFlash("Impossible de supprimer cette page, veuillez contacter votre administrateur pour corriger ce problème");
267
				$this->erreur = true;
268
			}
269
		}
270
271
		private function setAjoutLienNavigation($id, $value_id, $affiche) {
272
			if ($affiche !== null) {
273
				$nav = new Navigation();
274
				$nav->setTestAjoutLien($id, $value_id, $affiche);
275
			}
276
		}
277
		//-------------------------- FIN SETTER ----------------------------------------------------------------------------//
278
	}