1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
<?php
// src/controller/ajax.php
declare(strict_types=1);
// détection des requêtes de tinymce
if($_SERVER['CONTENT_TYPE'] === 'application/json' && isset($_GET['action']))
{
// récupération des données
$data = file_get_contents('php://input');
$json = json_decode($data, true);
if($_GET['action'] === 'editor_submit' && isset($json['id']) && isset($json['content']))
{
if(json_last_error() === JSON_ERROR_NONE)
{
$articleId = $json['id'];
$content = Security::secureString($json['content']);
$director = new Director($entityManager);
if($director->makeArticleNode($articleId)) // une entrée est trouvée
{
$node = $director->getRootNode();
$node->getArticle()->setContent($content);
$entityManager->flush();
echo json_encode(['success' => true]);
}
else{
echo json_encode(['success' => false, 'message' => 'Aucune entrée trouvée en BDD']);
}
}
else{
echo json_encode(['success' => false, 'message' => 'Erreur de décodage JSON']);
}
die;
}
elseif($_GET['action'] === 'delete_article' && isset($json['id']))
{
$articleId = $json['id'];
$director = new Director($entityManager);
$director->makeArticleNode($articleId);
$node = $director->getRootNode();
$entityManager->remove($node);
$entityManager->flush();
// test avec une nouvelle requête qui ne devrait rien trouver
if(!$director->makeArticleNode($articleId))
{
echo json_encode(['success' => true]);
// on pourrait afficher une notification "toast"
}
else{
http_response_code(500);
echo json_encode(['success' => false, 'message' => 'Erreur lors de la suppression de l\'article.']);
}
die;
}
// inversion de la position de deux noeuds
elseif($_GET['action'] === 'switch_positions' && isset($json['id1']) && isset($json['id2']))
{
$director = new Director($entityManager);
$director->makeArticleNode($json['id1']);
$node1 = $director->getRootNode();
$director->makeArticleNode($json['id2']);
$node2 = $director->getRootNode();
$tmp = $node1->getPosition();
$node1->setPosition($node2->getPosition());
$node2->setPosition($tmp);
$entityManager->flush();
echo json_encode(['success' => true]);
die;
}
}
// détection des requêtes d'upload d'image de tinymce
if(strpos($_SERVER['CONTENT_TYPE'], 'multipart/form-data') !== false && isset($_GET['action']) && $_GET['action'] === 'upload_image'){
if (isset($_FILES['file'])) {
$file = $_FILES['file'];
$dest = 'images/';
$dest_mini = 'images-mini/';
// Vérifier si les répertoires existent, sinon les créer
if(!is_dir($dest)) {
mkdir($dest, 0700, true);
}
if(!is_dir($dest_mini)) {
mkdir($dest_mini, 0700, true);
}
$filePath = $dest . basename($file['name']);
// créer une miniature de l'image
if(move_uploaded_file($file['tmp_name'], $filePath)) {
$image_url = str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
echo json_encode(['location' => $image_url . $filePath]); // renvoyer l'URL de l'image téléchargée
}
else{
http_response_code(500);
echo json_encode(['message' => 'Erreur 500: Internal Server Error']);
}
}
else{
http_response_code(400);
echo json_encode(['message' => 'Erreur 400: Bad Request']);
}
die;
}
// détection des requêtes de type XHR, pas d'utilité pour l'instant
/*elseif(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'){
echo "requête XHR reçue par le serveur";
die;
}*/
|