diff options
author | polo <ordipolo@gmx.fr> | 2021-09-08 02:09:34 +0200 |
---|---|---|
committer | polo <ordipolo@gmx.fr> | 2021-09-08 02:09:34 +0200 |
commit | cdf1bda847edd3e22e9fe817a802219ad8e0f626 (patch) | |
tree | adbe2b35e9741a5db74491c85914f4c03d3d4c99 /model | |
parent | 9a552c6b751f25bac9e816cf605fb972da8b9e27 (diff) | |
download | melaine-cdf1bda847edd3e22e9fe817a802219ad8e0f626.zip |
vignette
Diffstat (limited to 'model')
-rw-r--r-- | model/Classes.php | 26 | ||||
-rw-r--r-- | model/Image.php | 59 |
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 | |||
4 | class 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 | ||