From f9a9bf1ae4fac9317fd71f0bcb207544b000e6f1 Mon Sep 17 00:00:00 2001 From: polo Date: Thu, 23 Oct 2025 14:15:01 +0200 Subject: =?UTF-8?q?t=C3=A9l=C3=A9chargement=20d'assets=20dans=20head,=20he?= =?UTF-8?q?ader=20et=20footer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controller/HeadFootController.php | 60 ++++++++++++++++++++++++++++---- src/controller/ImageUploadController.php | 22 ++++++------ 2 files changed, 65 insertions(+), 17 deletions(-) (limited to 'src/controller') diff --git a/src/controller/HeadFootController.php b/src/controller/HeadFootController.php index 8d59d10..0429aac 100644 --- a/src/controller/HeadFootController.php +++ b/src/controller/HeadFootController.php @@ -5,23 +5,24 @@ declare(strict_types=1); //use App\Entity\Node; //use App\Entity\NodeData; -//use App\Entity\Image; -//use Doctrine\Common\Collections\ArrayCollection; +use App\Entity\Asset; +use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\EntityManager; class HeadFootController { - static public function setTextData(EntityManager $entityManager, array $request_params, array $json): void + static public function setTextData(EntityManager $entityManager, string $request_params, array $json): void { - if(count($request_params) !== 2){ + $params_array = explode('_', $request_params); // header_title, header_description, footer_name, footer_address, footer_email + if(count($params_array) !== 2){ echo json_encode(['success' => false]); die; } $model = new Model($entityManager); - if($model->findWhateverNode('name_node', $request_params[0])){ + if($model->findWhateverNode('name_node', $params_array[0])){ $node_data = $model->getNode()->getNodeData(); - $node_data->updateData($request_params[1], $json['new_text']); // $request_params[1] n'est pas contrôlé + $node_data->updateData($params_array[1], $json['new_text']); // $params_array[1] n'est pas contrôlé $entityManager->flush(); echo json_encode(['success' => true]); } @@ -30,4 +31,51 @@ class HeadFootController } die; } + static public function uploadAsset(EntityManager $entityManager, string $request_params): void + { + if(empty($_FILES)){ + http_response_code(400); + echo json_encode(['success' => false]); + } + else{ + $file = $_FILES['file']; + + if(!is_dir(Asset::USER_PATH)){ + mkdir(Asset::USER_PATH, 0700, true); + } + + $allowed_extensions = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'tiff', 'tif', 'ico', 'bmp']; // pas de SVG + $name = Security::secureFileName(pathinfo($file['name'], PATHINFO_FILENAME)); + $extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)); + if(!in_array($extension, $allowed_extensions) || $extension === 'jpg'){ + $extension = 'jpeg'; + } + $file_path = uniqid($name . '_') . '.' . $extension; + + if(ImageUploadController::imagickCleanImage(file_get_contents($file['tmp_name']), Asset::USER_PATH . $file_path, $extension)){ // recréer l’image pour la nettoyer + $params_array = explode('_', $request_params); // favicon, header_logo, header_background, footer_logo + + $model = new Model($entityManager); + if($model->findWhateverNode('name_node', $params_array[0])){ + $node_data = $model->getNode()->getNodeData(); + $image = new Asset($name, $file_path, mime_content_type($file['tmp_name']), $request_params); + $node_data->addAsset($image); + + $entityManager->persist($image); + $entityManager->flush(); + echo json_encode(['success' => true, 'location' => Asset::USER_PATH . $file_path]); + } + else{ + echo json_encode(['success' => false, 'message' => 'Erreur noeud non trouvé.']); + } + } + else{ + http_response_code(500); + echo json_encode(['success' => false, 'message' => 'Erreur image non valide.']); + } + } + die; + } + + //static public function uploadImage(EntityManager $entityManager, array $request_params): void } \ No newline at end of file diff --git a/src/controller/ImageUploadController.php b/src/controller/ImageUploadController.php index 29b8059..5e80ba5 100644 --- a/src/controller/ImageUploadController.php +++ b/src/controller/ImageUploadController.php @@ -61,14 +61,14 @@ class ImageUploadController { if(isset($_FILES['file'])){ $file = $_FILES['file']; - $dest = 'images/'; - $dest_mini = 'images-mini/'; + $dest = 'user_data/images/'; + $dest_mini = 'user_data/images-mini/'; // Vérifier si les répertoires existent, sinon les créer - if(!is_dir($dest)) { + if(!is_dir($dest)){ mkdir($dest, 0700, true); } - if(!is_dir($dest_mini)) { + if(!is_dir($dest_mini)){ mkdir($dest_mini, 0700, true); } @@ -78,7 +78,7 @@ class ImageUploadController if(!in_array($extension, $allowed_extensions) || $extension === 'jpg'){ $extension = 'jpeg'; } - $file_path = $dest . $name . '_' . uniqid() . '.' . $extension; + $file_path = uniqid($dest . $name . '_') . '.' . $extension; // créer une miniature de l'image // @@ -105,7 +105,7 @@ class ImageUploadController if(isset($json['image_url'])){ $image_data = self::curlDownloadImage($json['image_url']); // téléchargement de l’image par le serveur avec cURL au lieu de file_get_contents - $dest = 'images/'; + $dest = 'user_data/images/'; if(!is_dir($dest)) { // Vérifier si le répertoire existe, sinon le créer mkdir($dest, 0777, true); @@ -124,7 +124,7 @@ class ImageUploadController if(!in_array($extension, $allowed_extensions) || $extension === 'jpg'){ $extension = 'jpeg'; } - $local_path = $dest . $name . '_' . uniqid() . '.' . $extension; + $local_path = uniqid($dest . $name . '_') . '.' . $extension; if(self::imagickCleanImage($image_data, $local_path, $extension)){ // recréer l’image pour la nettoyer echo json_encode(['location' => $local_path]); // nouvelle adresse @@ -144,10 +144,10 @@ class ImageUploadController static public function uploadImageBase64(): void { $json = json_decode(file_get_contents('php://input'), true); - $dest = 'images/'; + $dest = 'user_data/images/'; - if(!is_dir('images')){ - mkdir('images', 0777, true); + if(!is_dir($dest)){ + mkdir($dest, 0777, true); } // détection de data:image/ et de ;base64, et capture du format dans $type @@ -170,7 +170,7 @@ class ImageUploadController die; } - $local_path = $dest . 'pasted_image_' . uniqid() . '.' . $extension; + $local_path = uniqid($dest . 'pasted_image_') . '.' . $extension; if(self::imagickCleanImage($image_data, $local_path)){ echo json_encode(['location' => $local_path]); -- cgit v1.2.3