summaryrefslogtreecommitdiff
path: root/model
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2021-09-08 02:09:34 +0200
committerpolo <ordipolo@gmx.fr>2021-09-08 02:09:34 +0200
commitcdf1bda847edd3e22e9fe817a802219ad8e0f626 (patch)
treeadbe2b35e9741a5db74491c85914f4c03d3d4c99 /model
parent9a552c6b751f25bac9e816cf605fb972da8b9e27 (diff)
downloadmelaine-cdf1bda847edd3e22e9fe817a802219ad8e0f626.zip
vignette
Diffstat (limited to 'model')
-rw-r--r--model/Classes.php26
-rw-r--r--model/Image.php59
2 files changed, 71 insertions, 14 deletions
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
31 { 31 {
32 return($this->nbArticles); 32 return($this->nbArticles);
33 } 33 }
34 public function getFileNames() 34 public function getFileList()
35 { 35 {
36 return($this->files); 36 return($this->files);
37 } 37 }
@@ -154,21 +154,27 @@ class Album extends OneArticle
154{ 154{
155 // variables 155 // variables
156 //private $fileNameJSON; // même nom en .json 156 //private $fileNameJSON; // même nom en .json
157 //protected $format = 'json';
158 157
159 // GET 158 // GET
160 159
161 // SET 160 // SET
162 161
163 // fonctions CRUD 162 // fonctions CRUD
164
165 // create 163 // create
166 public function createVignette($titre, $annee, $pochette) 164 public function createVignette($titre, $annee, $pochette)
167 { 165 {
166 $this->format = 'json';
167
168 if($pochette != '') 168 if($pochette != '')
169 { 169 {
170 // enregistrer le fichier 170 // télécharger la pochette
171 // retourner une erreur en cas d'échec de l'upload 171 require('model/Image.php');
172 $Image = new Image(false);
173 $Image->upload();
174
175 /*$erreur = $Image->getError();
176 if(!empty($erreur))
177 {}*/
172 } 178 }
173 179
174 $albumJSON = json_encode([$titre, $annee, $pochette]); 180 $albumJSON = json_encode([$titre, $annee, $pochette]);
@@ -192,12 +198,4 @@ class Album extends OneArticle
192 // delete 198 // delete
193 public function delete() 199 public function delete()
194 {} 200 {}
195} 201} \ No newline at end of file
196
197
198
199// note: les pros font de l'hydration
200// le code du modèle est orienté objet et "refactorisé" d'une manière précise:
201// on utilise un objet pour une chose (des articles, commentaires, etc),
202// un objet article contiendrait ainsi tout le nécessaire pour lire, écrire ou modifier un article
203// 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
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 @@
1<?php
2// model/Image.php
3
4class Image
5{
6 private const MAX_WEIGHT = 2000000; // taille max des images (par défaut 2Mo dans php.ini)
7 private $page;
8 private $ajax = false;
9 private $erreur = '';
10
11 public function __construct($ajax)
12 {
13 // get envoyé avec le javascript
14 $this->page = $_GET['page'];
15 $this->ajax = $ajax;
16 }
17
18 // GET
19 public function getError()
20 {
21 return($this->erreur);
22 }
23
24 public function upload()
25 {
26
27 // traitement et enregistrement de l'image
28 if (isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok
29 {
30 if ($_FILES['upload']['size'] <= self::MAX_WEIGHT)
31 {
32 $infos = pathinfo($_FILES['upload']['name']);
33 $extension = $infos['extension'];
34 $extautorisées = array('jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff');
35 // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur)
36 if (in_array($extension, $extautorisées))
37 {
38 move_uploaded_file($_FILES['upload']['tmp_name'], 'data/' . $this->page . '/images/' . $_FILES['upload']['name']);
39 chmod('data/' . $this->page . '/images/' . $_FILES['upload']['name'], 0666);
40 }
41 else{$this->erreur = 'mauvais format, veuillez utiliser une image comportant un de ces formats: jpg ou jpeg, png, gif, bmp, webp, tiff<br />le format svg n\'est pas supporté';}
42 }
43 else{$this->erreur = 'fichier trop lourd';}
44 }
45 else
46 {
47 $this->erreur = $_FILES['upload']['error'];
48 }
49
50 // retour des rêquetes AJAX
51 if($this->ajax)
52 {
53 // nouveau chemin à renvoyer en format json
54 $chemin = '{"url": "data/' . $this->page . '/images/' . $_FILES['upload']['name'] . '"}';
55 //echo json_encode($chemin);
56 echo $chemin;
57 }
58 }
59} \ No newline at end of file