diff options
| author | polo <ordipolo@gmx.fr> | 2023-06-02 01:21:06 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2023-06-02 01:21:06 +0200 |
| commit | ce10c0ff1dd0b47bd494ae88ab2eaf6ab354b2b3 (patch) | |
| tree | 53fd317773354c86e9eff1a19ea9abad81137901 /model | |
| parent | 082ae3df0b9dd759d56684b0221df62ea171f8ec (diff) | |
| download | melaine-ce10c0ff1dd0b47bd494ae88ab2eaf6ab354b2b3.tar.gz melaine-ce10c0ff1dd0b47bd494ae88ab2eaf6ab354b2b3.tar.bz2 melaine-ce10c0ff1dd0b47bd494ae88ab2eaf6ab354b2b3.zip | |
filtre nom des images + reorg code Image
Diffstat (limited to 'model')
| -rw-r--r-- | model/Album.php | 31 | ||||
| -rw-r--r-- | model/Article.php | 2 | ||||
| -rw-r--r-- | model/Image.php | 37 |
3 files changed, 26 insertions, 44 deletions
diff --git a/model/Album.php b/model/Album.php index d2537f7..801afef 100644 --- a/model/Album.php +++ b/model/Album.php | |||
| @@ -39,25 +39,10 @@ class Album extends Article | |||
| 39 | // fonctions CRUD | 39 | // fonctions CRUD |
| 40 | 40 | ||
| 41 | // create | 41 | // create |
| 42 | public function createVignette($titre, $annee, $pochette, $pochetteMini) | 42 | public function createVignetteJSON($titre, $annee, $pochette, $pochetteMini) |
| 43 | { | 43 | { |
| 44 | //$this->format = 'json'; | 44 | //$this->format = 'json'; |
| 45 | 45 | ||
| 46 | if($pochette != '') | ||
| 47 | { | ||
| 48 | //echo($pochette); die(); // = nom sans chemin | ||
| 49 | |||
| 50 | // télécharger la pochette | ||
| 51 | require('model/Image.php'); | ||
| 52 | $Image = new Image($this->page, $this->folder, false); | ||
| 53 | $Image->upload(); | ||
| 54 | $Image->makeThumbnail(201); | ||
| 55 | |||
| 56 | $erreur = $Image->erreur; | ||
| 57 | if(!empty($erreur)) | ||
| 58 | {} | ||
| 59 | } | ||
| 60 | |||
| 61 | $albumJSON = json_encode([$titre, $annee, $pochette, $pochetteMini]); | 46 | $albumJSON = json_encode([$titre, $annee, $pochette, $pochetteMini]); |
| 62 | //var_dump($albumJSON); die(); | 47 | //var_dump($albumJSON); die(); |
| 63 | 48 | ||
| @@ -171,20 +156,6 @@ class Album extends Article | |||
| 171 | $pochette = $albumJSON[2]; | 156 | $pochette = $albumJSON[2]; |
| 172 | $pochetteMini = $albumJSON[3]; | 157 | $pochetteMini = $albumJSON[3]; |
| 173 | } | 158 | } |
| 174 | else | ||
| 175 | { | ||
| 176 | // télécharger la pochette | ||
| 177 | require('model/Image.php'); | ||
| 178 | $Image = new Image($this->page, $this->folder, false); | ||
| 179 | $Image->upload(); | ||
| 180 | $Image->makeThumbnail(201); | ||
| 181 | $erreur = $Image->erreur; | ||
| 182 | if(!empty($erreur)) | ||
| 183 | { | ||
| 184 | // remettre pochette d'avant | ||
| 185 | //$pochette | ||
| 186 | } | ||
| 187 | } | ||
| 188 | 159 | ||
| 189 | $albumJSON = json_encode([$titre, $annee, $pochette, $pochetteMini]); | 160 | $albumJSON = json_encode([$titre, $annee, $pochette, $pochetteMini]); |
| 190 | 161 | ||
diff --git a/model/Article.php b/model/Article.php index 0e8db61..d94ba01 100644 --- a/model/Article.php +++ b/model/Article.php | |||
| @@ -198,8 +198,6 @@ class Article | |||
| 198 | fputs($file, $content); | 198 | fputs($file, $content); |
| 199 | fclose($file); | 199 | fclose($file); |
| 200 | chmod($fileName, 0666); | 200 | chmod($fileName, 0666); |
| 201 | |||
| 202 | |||
| 203 | } | 201 | } |
| 204 | 202 | ||
| 205 | // read | 203 | // read |
diff --git a/model/Image.php b/model/Image.php index d71b96a..dbdad62 100644 --- a/model/Image.php +++ b/model/Image.php | |||
| @@ -11,6 +11,8 @@ class Image | |||
| 11 | 11 | ||
| 12 | public $path; | 12 | public $path; |
| 13 | public $pathMini; | 13 | public $pathMini; |
| 14 | public $FileName; // après sécurisation | ||
| 15 | public $width; | ||
| 14 | public $pathInfos; | 16 | public $pathInfos; |
| 15 | public $erreur; | 17 | public $erreur; |
| 16 | 18 | ||
| @@ -33,20 +35,31 @@ class Image | |||
| 33 | $this->pathMini = 'data/' . $this->folder . '/images-mini/'; | 35 | $this->pathMini = 'data/' . $this->folder . '/images-mini/'; |
| 34 | } | 36 | } |
| 35 | 37 | ||
| 38 | public function setFileName($fileName) | ||
| 39 | { | ||
| 40 | $this->FileName = $fileName; | ||
| 41 | } | ||
| 42 | |||
| 43 | public function setThumbnailWidth($width) | ||
| 44 | { | ||
| 45 | $this->width = $width; | ||
| 46 | } | ||
| 36 | 47 | ||
| 37 | public function upload() | 48 | public function upload() |
| 38 | { | 49 | { |
| 39 | // traitement et enregistrement de l'image | 50 | // traitement et enregistrement de l'image |
| 40 | if (isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok | 51 | if (isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok |
| 41 | { | 52 | { |
| 42 | $this->pathInfos = pathinfo($_FILES['upload']['name']); | 53 | //$this->pathInfos = pathinfo($_FILES['upload']['name']); |
| 54 | $this->pathInfos = pathinfo($this->FileName); | ||
| 55 | |||
| 43 | $extension = $this->pathInfos['extension']; | 56 | $extension = $this->pathInfos['extension']; |
| 44 | $extautorisées = array('jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff'); | 57 | $extautorisées = array('jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff'); |
| 45 | // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur) | 58 | // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur) |
| 46 | if (in_array($extension, $extautorisées)) | 59 | if (in_array($extension, $extautorisées)) |
| 47 | { | 60 | { |
| 48 | move_uploaded_file($_FILES['upload']['tmp_name'], $this->path . $_FILES['upload']['name']); | 61 | move_uploaded_file($_FILES['upload']['tmp_name'], $this->path . $this->FileName); |
| 49 | chmod($this->path . $_FILES['upload']['name'], 0666); | 62 | chmod($this->path . $this->FileName, 0666); |
| 50 | } | 63 | } |
| 51 | else | 64 | else |
| 52 | { | 65 | { |
| @@ -63,24 +76,24 @@ class Image | |||
| 63 | if($this->ajax && empty($Image->erreur)) | 76 | if($this->ajax && empty($Image->erreur)) |
| 64 | { | 77 | { |
| 65 | // chemin en JSON attendu par l'éditeur | 78 | // chemin en JSON attendu par l'éditeur |
| 66 | $this->reponseAjax = '{"url": "data/' . $this->folder . '/images/' . $_FILES['upload']['name'] . '"}'; | 79 | $this->reponseAjax = '{"url": "data/' . $this->folder . '/images/' . $this->FileName . '"}'; |
| 67 | } | 80 | } |
| 68 | } | 81 | } |
| 69 | 82 | ||
| 70 | // miniatures des photos | 83 | // miniatures des photos |
| 71 | public function makeThumbnail($largeur) | 84 | public function makeThumbnail() |
| 72 | { | 85 | { |
| 73 | global $imageLibrary; | 86 | global $imageLibrary; |
| 74 | 87 | ||
| 75 | if($imageLibrary == 'imagick') | 88 | if($imageLibrary == 'imagick') |
| 76 | { | 89 | { |
| 77 | $Image = new Imagick($this->path . $_FILES['upload']['name']); | 90 | $Image = new Imagick($this->path . $this->FileName); |
| 78 | 91 | ||
| 79 | $source = $Image->getImageGeometry(); | 92 | $source = $Image->getImageGeometry(); |
| 80 | if($source['width'] > $largeur) | 93 | if($source['width'] > $this->width) |
| 81 | { | 94 | { |
| 82 | // 0 signifie qu'on conserve les proportions | 95 | // 0 signifie qu'on conserve les proportions |
| 83 | $Image->thumbnailImage($largeur, 0); | 96 | $Image->thumbnailImage($this->width, 0); |
| 84 | } | 97 | } |
| 85 | 98 | ||
| 86 | // écriture dans un fichier | 99 | // écriture dans un fichier |
| @@ -89,18 +102,18 @@ class Image | |||
| 89 | elseif($imageLibrary == 'gd') | 102 | elseif($imageLibrary == 'gd') |
| 90 | { | 103 | { |
| 91 | // cette fonction fonctionne pour tous les formats | 104 | // cette fonction fonctionne pour tous les formats |
| 92 | $source = imagecreatefromstring(file_get_contents($this->path . $_FILES['upload']['name'])); | 105 | $source = imagecreatefromstring(file_get_contents($this->path . $this->FileName)); |
| 93 | $nomMiniImage = $this->pathMini . $this->pathInfos['filename'] . '-mini.jpg'; | 106 | $nomMiniImage = $this->pathMini . $this->pathInfos['filename'] . '-mini.jpg'; |
| 94 | $forme = imagesy($source) / imagesx($source); | 107 | $forme = imagesy($source) / imagesx($source); |
| 95 | 108 | ||
| 96 | if(imagesx($source) > $largeur) | 109 | if(imagesx($source) > $this->width) |
| 97 | { | 110 | { |
| 98 | // créer un rectangle noir | 111 | // créer un rectangle noir |
| 99 | $destination = imagecreatetruecolor($largeur, $largeur * $forme); | 112 | $destination = imagecreatetruecolor($this->width, $this->width * $forme); |
| 100 | 113 | ||
| 101 | // sélectionne un rectangle dans l'image source | 114 | // sélectionne un rectangle dans l'image source |
| 102 | // et le place dans un rectangle dans la nouvelle | 115 | // et le place dans un rectangle dans la nouvelle |
| 103 | imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur, $largeur * $forme, imagesx($source), imagesy($source)); | 116 | imagecopyresampled($destination, $source, 0, 0, 0, 0, $this->width, $this->width * $forme, imagesx($source), imagesy($source)); |
| 104 | 117 | ||
| 105 | // envoie l'image dans un fichier | 118 | // envoie l'image dans un fichier |
| 106 | imagejpeg($destination, $nomMiniImage); | 119 | imagejpeg($destination, $nomMiniImage); |
