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.tar.gz melaine-cdf1bda847edd3e22e9fe817a802219ad8e0f626.tar.bz2 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 | ||
