From cdf1bda847edd3e22e9fe817a802219ad8e0f626 Mon Sep 17 00:00:00 2001 From: polo Date: Wed, 8 Sep 2021 02:09:34 +0200 Subject: vignette --- model/Classes.php | 26 +++++++++++------------- model/Image.php | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 14 deletions(-) create mode 100644 model/Image.php (limited to 'model') diff --git a/model/Classes.php b/model/Classes.php index 1846ce3..97a137a 100644 --- a/model/Classes.php +++ b/model/Classes.php @@ -31,7 +31,7 @@ class AllArticles { return($this->nbArticles); } - public function getFileNames() + public function getFileList() { return($this->files); } @@ -154,21 +154,27 @@ class Album extends OneArticle { // variables //private $fileNameJSON; // même nom en .json - //protected $format = 'json'; // GET // SET // fonctions CRUD - // create public function createVignette($titre, $annee, $pochette) { + $this->format = 'json'; + if($pochette != '') { - // enregistrer le fichier - // retourner une erreur en cas d'échec de l'upload + // télécharger la pochette + require('model/Image.php'); + $Image = new Image(false); + $Image->upload(); + + /*$erreur = $Image->getError(); + if(!empty($erreur)) + {}*/ } $albumJSON = json_encode([$titre, $annee, $pochette]); @@ -192,12 +198,4 @@ class Album extends OneArticle // delete public function delete() {} -} - - - -// note: les pros font de l'hydration -// le code du modèle est orienté objet et "refactorisé" d'une manière précise: -// on utilise un objet pour une chose (des articles, commentaires, etc), -// un objet article contiendrait ainsi tout le nécessaire pour lire, écrire ou modifier un article -// il y a pour ça un programme appelé "doctrine" (inclu dans symphony) qui est capable de lire une base de données et d'en écrire les objets PHP \ No newline at end of file +} \ No newline at end of file diff --git a/model/Image.php b/model/Image.php new file mode 100644 index 0000000..0070b70 --- /dev/null +++ b/model/Image.php @@ -0,0 +1,59 @@ +page = $_GET['page']; + $this->ajax = $ajax; + } + + // GET + public function getError() + { + return($this->erreur); + } + + public function upload() + { + + // traitement et enregistrement de l'image + if (isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok + { + if ($_FILES['upload']['size'] <= self::MAX_WEIGHT) + { + $infos = pathinfo($_FILES['upload']['name']); + $extension = $infos['extension']; + $extautorisées = array('jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff'); + // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur) + if (in_array($extension, $extautorisées)) + { + move_uploaded_file($_FILES['upload']['tmp_name'], 'data/' . $this->page . '/images/' . $_FILES['upload']['name']); + chmod('data/' . $this->page . '/images/' . $_FILES['upload']['name'], 0666); + } + else{$this->erreur = 'mauvais format, veuillez utiliser une image comportant un de ces formats: jpg ou jpeg, png, gif, bmp, webp, tiff
le format svg n\'est pas supporté';} + } + else{$this->erreur = 'fichier trop lourd';} + } + else + { + $this->erreur = $_FILES['upload']['error']; + } + + // retour des rêquetes AJAX + if($this->ajax) + { + // nouveau chemin à renvoyer en format json + $chemin = '{"url": "data/' . $this->page . '/images/' . $_FILES['upload']['name'] . '"}'; + //echo json_encode($chemin); + echo $chemin; + } + } +} \ No newline at end of file -- cgit v1.2.3