diff options
author | polo-pc-greta <ordipolo@gmx.fr> | 2025-03-27 10:13:03 +0100 |
---|---|---|
committer | polo-pc-greta <ordipolo@gmx.fr> | 2025-03-27 10:13:03 +0100 |
commit | df3612ed7e6691530503f79483d2fdbc032d01b8 (patch) | |
tree | 56d1c68fdc8625f5dad1937a654299d45142c79a /src/controller/ajax.php | |
download | cms-df3612ed7e6691530503f79483d2fdbc032d01b8.zip |
mise en ligne github
Diffstat (limited to 'src/controller/ajax.php')
-rw-r--r-- | src/controller/ajax.php | 104 |
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 | |||
4 | declare(strict_types=1); | ||
5 | |||
6 | // détection des requêtes de tinymce | ||
7 | if($_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 | ||
64 | if(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 | |||