summaryrefslogtreecommitdiff
path: root/src/controller/ajax.php
blob: bcba3f224941b4a60760d300ba9ab20444b39caf (plain)
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;
}*/