summaryrefslogtreecommitdiff
path: root/src/controller/ajax.php
diff options
context:
space:
mode:
authorpolo-pc-greta <ordipolo@gmx.fr>2025-03-27 10:13:03 +0100
committerpolo-pc-greta <ordipolo@gmx.fr>2025-03-27 10:13:03 +0100
commitdf3612ed7e6691530503f79483d2fdbc032d01b8 (patch)
tree56d1c68fdc8625f5dad1937a654299d45142c79a /src/controller/ajax.php
downloadcms-df3612ed7e6691530503f79483d2fdbc032d01b8.zip
mise en ligne github
Diffstat (limited to 'src/controller/ajax.php')
-rw-r--r--src/controller/ajax.php104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/controller/ajax.php b/src/controller/ajax.php
new file mode 100644
index 0000000..130c4c6
--- /dev/null
+++ b/src/controller/ajax.php
@@ -0,0 +1,104 @@
1<?php
2// src/controller/ajax.php
3
4declare(strict_types=1);
5
6// détection des requêtes de tinymce
7if($_SERVER['CONTENT_TYPE'] === 'application/json' && isset($_GET['action']))
8{
9 // récupération des données
10 $data = file_get_contents('php://input');
11 $json = json_decode($data, true);
12
13 if($_GET['action'] === 'editor_submit' && isset($json['id']) && isset($json['content']))
14 {
15 if(json_last_error() === JSON_ERROR_NONE)
16 {
17 $articleId = $json['id'];
18 $content = Security::secureString($json['content']);
19
20 $director = new Director($entityManager);
21 if($director->makeArticleNode($articleId)) // une entrée est trouvée
22 {
23 $node = $director->getRootNode();
24 $node->getArticle()->setContent($content);
25 $entityManager->flush();
26
27 echo json_encode(['success' => true]);
28 }
29 else{
30 echo json_encode(['success' => false, 'message' => 'Aucune entrée trouvée en BDD']);
31 }
32 }
33 else{
34 echo json_encode(['success' => false, 'message' => 'Erreur de décodage JSON']);
35 }
36 die;
37 }
38 elseif($_GET['action'] === 'delete_article' && isset($json['id']))
39 {
40 $articleId = $json['id'];
41
42 $director = new Director($entityManager);
43 $director->makeArticleNode($articleId);
44 $node = $director->getRootNode();
45 $entityManager->remove($node);
46 $entityManager->flush();
47
48 // test avec une nouvelle requête qui ne devrait rien trouver
49 if(!$director->makeArticleNode($articleId))
50 {
51 echo json_encode(['success' => true]);
52
53 // on pourrait afficher une notification "toast"
54 }
55 else{
56 http_response_code(500);
57 echo json_encode(['success' => false, 'message' => 'Erreur lors de la suppression de l\'article.']);
58 }
59 die;
60 }
61}
62
63// détection des requêtes d'upload d'image de tinymce
64if(strpos($_SERVER['CONTENT_TYPE'], 'multipart/form-data') !== false && isset($_GET['action']) && $_GET['action'] === 'upload_image'){
65 if (isset($_FILES['file'])) {
66 $file = $_FILES['file'];
67 $dest = 'images/';
68 $dest_mini = 'images-mini/';
69
70 // Vérifier si les répertoires existent, sinon les créer
71 if(!is_dir($dest)) {
72 mkdir($dest, 0700, true);
73 }
74 if(!is_dir($dest_mini)) {
75 mkdir($dest_mini, 0700, true);
76 }
77
78 $filePath = $dest . basename($file['name']);
79
80 // créer une miniature de l'image
81
82 if(move_uploaded_file($file['tmp_name'], $filePath)) {
83 $image_url = str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
84 echo json_encode(['location' => $image_url . $filePath]); // renvoyer l'URL de l'image téléchargée
85 }
86 else{
87 http_response_code(500);
88 echo json_encode(['message' => 'Erreur 500: Internal Server Error']);
89 }
90 }
91 else{
92 http_response_code(400);
93 echo json_encode(['message' => 'Erreur 400: Bad Request']);
94 }
95 die;
96}
97
98// détection des requêtes de type XHR, pas d'utilité pour l'instant
99/*elseif(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'){
100 echo "requête XHR reçue par le serveur";
101 die;
102}*/
103
104