diff options
Diffstat (limited to 'src/router.php')
| -rw-r--r-- | src/router.php | 149 |
1 files changed, 83 insertions, 66 deletions
diff --git a/src/router.php b/src/router.php index 8aa0aa9..92dccb6 100644 --- a/src/router.php +++ b/src/router.php | |||
| @@ -39,7 +39,7 @@ if($_SERVER['REQUEST_METHOD'] === 'GET'){ | |||
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | // construction d'une page | 41 | // construction d'une page |
| 42 | $response = (new ViewController)->buildView($entityManager, $request); | 42 | $response = (new ViewController)->buildView($entityManager, $request); // utilise Director |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | 45 | ||
| @@ -87,25 +87,19 @@ elseif($_SERVER['REQUEST_METHOD'] === 'POST'){ | |||
| 87 | $data = file_get_contents('php://input'); | 87 | $data = file_get_contents('php://input'); |
| 88 | $json = json_decode($data, true); | 88 | $json = json_decode($data, true); |
| 89 | 89 | ||
| 90 | if(isset($_GET['action'])) | 90 | if($request->query->has('action')) |
| 91 | { | 91 | { |
| 92 | /* -- manipulation des articles -- */ | 92 | /* -- manipulation des articles -- */ |
| 93 | if($_GET['action'] === 'editor_submit' && isset($json['id']) && isset($json['content'])) | 93 | if($_GET['action'] === 'editor_submit' && isset($json['id']) && isset($json['content'])){ |
| 94 | { | ||
| 95 | ArticleController::editorSubmit($entityManager, $json); | 94 | ArticleController::editorSubmit($entityManager, $json); |
| 96 | } | 95 | } |
| 97 | elseif($_GET['action'] === 'delete_article' && isset($json['id'])){ | 96 | elseif($_GET['action'] === 'delete_article' && isset($json['id'])){ |
| 98 | $response = ArticleController::deleteArticle($entityManager, $json); // version AJAX | 97 | $response = ArticleController::deleteArticle($entityManager, $json); // version AJAX |
| 99 | $response->send(); | ||
| 100 | die; | ||
| 101 | } | 98 | } |
| 102 | // inversion de la position de deux noeuds | 99 | elseif($_GET['action'] === 'switch_positions' && isset($json['id1']) && isset($json['id2'])){ |
| 103 | elseif($_GET['action'] === 'switch_positions' && isset($json['id1']) && isset($json['id2'])) | ||
| 104 | { | ||
| 105 | ArticleController::switchPositions($entityManager, $json); | 100 | ArticleController::switchPositions($entityManager, $json); |
| 106 | } | 101 | } |
| 107 | elseif($_GET['action'] === 'date_submit' && isset($json['id']) && isset($json['date'])) | 102 | elseif($_GET['action'] === 'date_submit' && isset($json['id']) && isset($json['date'])){ |
| 108 | { | ||
| 109 | ArticleController::dateSubmit($entityManager, $json); | 103 | ArticleController::dateSubmit($entityManager, $json); |
| 110 | } | 104 | } |
| 111 | 105 | ||
| @@ -116,29 +110,54 @@ elseif($_SERVER['REQUEST_METHOD'] === 'POST'){ | |||
| 116 | elseif($_GET['action'] === 'test_email'){ | 110 | elseif($_GET['action'] === 'test_email'){ |
| 117 | ContactFormController::sendTestEmail($entityManager, $json); | 111 | ContactFormController::sendTestEmail($entityManager, $json); |
| 118 | } | 112 | } |
| 113 | |||
| 114 | |||
| 115 | /* -- upload d'image dans tinymce par copier-coller -- */ | ||
| 116 | // collage de HTML contenant une ou plusieurs balises <img> | ||
| 117 | elseif($request->query->get('action') === 'upload_image_url'){ | ||
| 118 | ImageUploadController::uploadImageHtml(); | ||
| 119 | } | ||
| 120 | // collage d'une image (code base64 dans le presse-papier) non encapsulée dans du HTML | ||
| 121 | elseif($request->query->get('action') === 'upload_image_base64'){ | ||
| 122 | ImageUploadController::uploadImageBase64(); | ||
| 123 | } | ||
| 124 | |||
| 125 | |||
| 126 | /* -- requêtes spécifiques au calendrier -- */ | ||
| 127 | elseif($request->query->get('action') === 'new_event'){ | ||
| 128 | CalendarController::newEvent($json, $entityManager); | ||
| 129 | } | ||
| 130 | elseif($request->query->get('action') === 'update_event'){ | ||
| 131 | CalendarController::updateEvent($json, $entityManager); | ||
| 132 | } | ||
| 133 | elseif($request->query->get('action') === 'remove_event'){ | ||
| 134 | CalendarController::removeEvent($json, $entityManager); | ||
| 135 | } | ||
| 136 | else{ | ||
| 137 | echo json_encode(['success' => false]); | ||
| 138 | die; | ||
| 139 | } | ||
| 119 | } | 140 | } |
| 120 | 141 | ||
| 142 | |||
| 121 | /* -- page Menu et chemins -- */ | 143 | /* -- page Menu et chemins -- */ |
| 122 | elseif(isset($_GET['menu_edit'])) | 144 | elseif(isset($_GET['menu_edit'])) |
| 123 | { | 145 | { |
| 124 | // récupération des données (serait peut-être mieux dans la classe) | 146 | // ne suit pas la règle, faire ça dans un contrôleur |
| 125 | Director::$menu_data = new Menu($entityManager); | 147 | Director::$menu_data = new Menu($entityManager); // récupération des données |
| 126 | 148 | ||
| 127 | // flèche gauche <=: position = position du parent + 1, parent = grand-parent, recalculer les positions | 149 | // flèche gauche <=: position = position du parent + 1, parent = grand-parent, recalculer les positions |
| 128 | if($_GET['menu_edit'] === 'move_one_level_up' && isset($json['id'])){ | 150 | if($_GET['menu_edit'] === 'move_one_level_up' && isset($json['id'])){ |
| 129 | MenuAndPathsController::MoveOneLevelUp($entityManager, $json); | 151 | MenuAndPathsController::MoveOneLevelUp($entityManager, $json); |
| 130 | } | 152 | } |
| 131 | |||
| 132 | // flèche droite =>: position = nombre d'éléments de la fraterie + 1, l'élément précédent devient le parent | 153 | // flèche droite =>: position = nombre d'éléments de la fraterie + 1, l'élément précédent devient le parent |
| 133 | if($_GET['menu_edit'] === 'move_one_level_down' && isset($json['id'])){ | 154 | elseif($_GET['menu_edit'] === 'move_one_level_down' && isset($json['id'])){ |
| 134 | MenuAndPathsController::MoveOneLevelDown($entityManager, $json); | 155 | MenuAndPathsController::MoveOneLevelDown($entityManager, $json); |
| 135 | } | 156 | } |
| 136 | 157 | elseif($_GET['menu_edit'] === 'switch_positions' && isset($json['id1']) && isset($json['id2'])){ | |
| 137 | if($_GET['menu_edit'] === 'switch_positions' && isset($json['id1']) && isset($json['id2'])){ | ||
| 138 | MenuAndPathsController::switchPositions($entityManager, $json); | 158 | MenuAndPathsController::switchPositions($entityManager, $json); |
| 139 | } | 159 | } |
| 140 | 160 | elseif($_GET['menu_edit'] === 'displayInMenu' && isset($json['id']) && isset($json['checked'])){ | |
| 141 | if($_GET['menu_edit'] === 'displayInMenu' && isset($json['id']) && isset($json['checked'])){ | ||
| 142 | MenuAndPathsController::displayInMenu($entityManager, $json); | 161 | MenuAndPathsController::displayInMenu($entityManager, $json); |
| 143 | } | 162 | } |
| 144 | } | 163 | } |
| @@ -161,45 +180,18 @@ elseif($_SERVER['REQUEST_METHOD'] === 'POST'){ | |||
| 161 | elseif($request->query->has('bloc_edit')) | 180 | elseif($request->query->has('bloc_edit')) |
| 162 | { | 181 | { |
| 163 | // renommage d'un bloc | 182 | // renommage d'un bloc |
| 164 | if($request->query->get('bloc_edit') === 'rename_page_bloc') | 183 | if($request->query->get('bloc_edit') === 'rename_page_bloc'){ |
| 165 | { | ||
| 166 | PageManagementController::renameBloc($entityManager, $json); | 184 | PageManagementController::renameBloc($entityManager, $json); |
| 167 | } | 185 | } |
| 168 | // inversion des positions de deux blocs | 186 | // inversion des positions de deux blocs |
| 169 | elseif($request->query->get('bloc_edit') === 'switch_blocs_positions') | 187 | elseif($request->query->get('bloc_edit') === 'switch_blocs_positions'){ |
| 170 | { | ||
| 171 | PageManagementController::SwitchBlocsPositions($entityManager, $json); | 188 | PageManagementController::SwitchBlocsPositions($entityManager, $json); |
| 172 | } | 189 | } |
| 173 | } | 190 | } |
| 174 | |||
| 175 | /* -- upload d'image dans tinymce par copier-coller -- */ | ||
| 176 | // collage de HTML contenant une ou plusieurs balises <img> | ||
| 177 | if($request->query->has('action') && $request->query->get('action') == 'upload_image_html'){ | ||
| 178 | ImageUploadController::uploadImageHtml(); | ||
| 179 | } | ||
| 180 | // collage d'une image (code base64 dans le presse-papier) non encapsulée dans du HTML | ||
| 181 | elseif($request->query->has('action') && $request->query->get('action') == 'upload_image_base64'){ | ||
| 182 | ImageUploadController::uploadImageBase64(); | ||
| 183 | } | ||
| 184 | |||
| 185 | /* -- requêtes spécifiques au calendrier -- */ | ||
| 186 | if($request->query->get('action') === 'new_event'){ | ||
| 187 | CalendarController::newEvent($json, $entityManager); | ||
| 188 | } | ||
| 189 | elseif($request->query->get('action') === 'update_event'){ | ||
| 190 | CalendarController::updateEvent($json, $entityManager); | ||
| 191 | } | ||
| 192 | elseif($request->query->get('action') === 'remove_event'){ | ||
| 193 | CalendarController::removeEvent($json, $entityManager); | ||
| 194 | } | ||
| 195 | else{ | ||
| 196 | echo json_encode(['success' => false]); | ||
| 197 | } | ||
| 198 | die; | ||
| 199 | } | 191 | } |
| 200 | 192 | ||
| 201 | // upload d'image dans tinymce avec le plugin (bouton "insérer une image" de l'éditeur) | 193 | // upload d'image dans tinymce avec le plugin (bouton "insérer une image" de l'éditeur) |
| 202 | elseif(strpos($_SERVER['CONTENT_TYPE'], 'multipart/form-data') !== false && $request->query->has('action') && $request->query->get('action') === 'upload_image') | 194 | elseif(strpos($_SERVER['CONTENT_TYPE'], 'multipart/form-data') !== false && $request->query->has('action') && $request->query->get('action') === 'upload_image_tinymce') |
| 203 | { | 195 | { |
| 204 | ImageUploadController::imageUploadTinyMce(); | 196 | ImageUploadController::imageUploadTinyMce(); |
| 205 | } | 197 | } |
| @@ -207,7 +199,7 @@ elseif($_SERVER['REQUEST_METHOD'] === 'POST'){ | |||
| 207 | elseif(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') | 199 | elseif(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') |
| 208 | { | 200 | { |
| 209 | //echo "requête XMLHttpRequest reçue par le serveur"; | 201 | //echo "requête XMLHttpRequest reçue par le serveur"; |
| 210 | echo json_encode(['success' => false]); // ça marche mais ça marche pas... | 202 | echo json_encode(['success' => false]); // noyer le poisson en laissant penser que le site gère les requêtes XHR |
| 211 | die; | 203 | die; |
| 212 | } | 204 | } |
| 213 | 205 | ||
| @@ -215,14 +207,7 @@ elseif($_SERVER['REQUEST_METHOD'] === 'POST'){ | |||
| 215 | elseif($_SERVER['CONTENT_TYPE'] === 'application/x-www-form-urlencoded') | 207 | elseif($_SERVER['CONTENT_TYPE'] === 'application/x-www-form-urlencoded') |
| 216 | { | 208 | { |
| 217 | if($_GET['action'] === 'delete_article' && isset($_GET['id'])){ | 209 | if($_GET['action'] === 'delete_article' && isset($_GET['id'])){ |
| 218 | $response = json_decode(ArticleController::deleteArticle($entityManager, $_GET)->getContent(), true); // version formulaire | 210 | $response = ArticleController::deleteArticle($entityManager, $_GET); // version formulaire |
| 219 | $url = new URL; | ||
| 220 | if(isset($_GET['from'])){ | ||
| 221 | $url->addParams(['page' => $_GET['from']]); | ||
| 222 | } | ||
| 223 | $url->addParams(['success' => $response['success'], 'message' => $response['message']]); | ||
| 224 | header('Location: ' . $url); | ||
| 225 | die; | ||
| 226 | } | 211 | } |
| 227 | 212 | ||
| 228 | /* -- nouvelle page -- */ | 213 | /* -- nouvelle page -- */ |
| @@ -242,6 +227,7 @@ elseif($_SERVER['REQUEST_METHOD'] === 'POST'){ | |||
| 242 | PageManagementController::deletePage($entityManager); | 227 | PageManagementController::deletePage($entityManager); |
| 243 | } | 228 | } |
| 244 | 229 | ||
| 230 | |||
| 245 | /* -- mode Modification d'une page -- */ | 231 | /* -- mode Modification d'une page -- */ |
| 246 | 232 | ||
| 247 | // modification du chemins en snake_case | 233 | // modification du chemins en snake_case |
| @@ -294,20 +280,51 @@ elseif($_SERVER['REQUEST_METHOD'] === 'POST'){ | |||
| 294 | die; | 280 | die; |
| 295 | } | 281 | } |
| 296 | } | 282 | } |
| 283 | // POST admin ne matchant pas | ||
| 284 | else{ | ||
| 285 | echo json_encode(['success' => false]); | ||
| 286 | die; | ||
| 287 | } | ||
| 288 | } | ||
| 289 | // POST non admin ne matchant pas | ||
| 290 | else{ | ||
| 291 | echo json_encode(['success' => false]); | ||
| 292 | die; | ||
| 297 | } | 293 | } |
| 298 | |||
| 299 | // rien ne match | ||
| 300 | header("Location: " . new URL); | ||
| 301 | die; | ||
| 302 | } | 294 | } |
| 303 | 295 | ||
| 304 | 296 | // méthode inconnue | |
| 305 | else{ | 297 | else{ |
| 306 | header("Location: " . new URL(['error' => 'tu fais quoi là mec?'])); | 298 | header("Location: " . new URL(['error' => 'tu fais quoi là mec?'])); |
| 307 | die; | 299 | die; |
| 308 | } | 300 | } |
| 309 | 301 | ||
| 310 | // enlever le test isset à terme | 302 | |
| 303 | |||
| 304 | /* -- utilisation de la réponse -- */ | ||
| 311 | if(isset($response)){ | 305 | if(isset($response)){ |
| 312 | $response->send(); | 306 | if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SERVER['CONTENT_TYPE'] === 'application/x-www-form-urlencoded') |
| 313 | } \ No newline at end of file | 307 | { |
| 308 | $response_data = json_decode(($response)->getContent(), true); | ||
| 309 | $url = new URL; | ||
| 310 | if(isset($_GET['from'])){ | ||
| 311 | $url->addParams(['page' => $_GET['from']]); | ||
| 312 | } | ||
| 313 | $url->addParams(['success' => $response_data['success'], 'message' => $response_data['message']]); | ||
| 314 | header('Location: ' . $url); | ||
| 315 | } | ||
| 316 | else{ | ||
| 317 | $response->send(); | ||
| 318 | } | ||
| 319 | } | ||
| 320 | else{ | ||
| 321 | if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SERVER['CONTENT_TYPE'] === 'application/x-www-form-urlencoded') | ||
| 322 | { | ||
| 323 | header("Location: " . new URL(['error' => 'erreur côté serveur'])); | ||
| 324 | } | ||
| 325 | else{ | ||
| 326 | http_response_code(500); | ||
| 327 | echo "erreur côté serveur"; | ||
| 328 | } | ||
| 329 | } | ||
| 330 | //die; // inutile normalement \ No newline at end of file | ||
