summaryrefslogtreecommitdiff
path: root/model
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2022-02-18 05:38:40 +0100
committerpolo <ordipolo@gmx.fr>2022-02-18 05:38:40 +0100
commit9a1fb624fd1089087bd363551ba64f5862d9919f (patch)
tree87f33f1b1bede404efa2cfd8f4285d32e149d986 /model
parentf2c1f219dcd6e25b812d4dbed46f4c0c30541d83 (diff)
downloadmelaine-9a1fb624fd1089087bd363551ba64f5862d9919f.zip
miniatures GD
Diffstat (limited to 'model')
-rw-r--r--model/Album.php21
-rw-r--r--model/Image.php62
2 files changed, 68 insertions, 15 deletions
diff --git a/model/Album.php b/model/Album.php
index 386a50f..e716a99 100644
--- a/model/Album.php
+++ b/model/Album.php
@@ -21,7 +21,7 @@ class Album extends Article
21 // fonctions CRUD 21 // fonctions CRUD
22 22
23 // create 23 // create
24 public function createVignette($titre, $annee, $pochette) 24 public function createVignette($titre, $annee, $pochette, $pochetteMini)
25 { 25 {
26 //$this->format = 'json'; 26 //$this->format = 'json';
27 27
@@ -33,6 +33,7 @@ class Album extends Article
33 require('model/Image.php'); 33 require('model/Image.php');
34 $Image = new Image(false); 34 $Image = new Image(false);
35 $Image->upload(); 35 $Image->upload();
36 $Image->makeThumbnail();
36 37
37 $erreur = $Image->erreur; 38 $erreur = $Image->erreur;
38 if(!empty($erreur)) 39 if(!empty($erreur))
@@ -40,7 +41,7 @@ class Album extends Article
40 } 41 }
41 42
42 // encodage avec un tableau simple 43 // encodage avec un tableau simple
43 $albumJSON = json_encode([$titre, $annee, $pochette]); 44 $albumJSON = json_encode([$titre, $annee, $pochette, $pochetteMini]);
44 //var_dump($albumJSON); die(); 45 //var_dump($albumJSON); die();
45 46
46 // encodage avec un tableau associatif 47 // encodage avec un tableau associatif
@@ -66,15 +67,13 @@ class Album extends Article
66 for($i = 0; $i < $this->fileListCount; $i++) 67 for($i = 0; $i < $this->fileListCount; $i++)
67 { 68 {
68 // ajout du JSON 69 // ajout du JSON
69 /*$content = file_get_contents($this->fileList[$i]['fileName']);
70 $content = json_decode($content, true);*/
71 $content = json_decode($this->fileList[$i]['content'], true); 70 $content = json_decode($this->fileList[$i]['content'], true);
72 //var_dump($content); die();
73 71
74 // lecture de $content étant un tableau simple 72 // lecture de $content étant un tableau simple
75 $this->fileList[$i]['titre'] = $content[0]; 73 $this->fileList[$i]['titre'] = $content[0];
76 $this->fileList[$i]['annee'] = $content[1]; 74 $this->fileList[$i]['annee'] = $content[1];
77 $this->fileList[$i]['pochette'] = $content[2]; 75 $this->fileList[$i]['pochette'] = $content[2];
76 $this->fileList[$i]['pochetteMini'] = $content[3];
78 77
79 // ajout du HTML si il existe 78 // ajout du HTML si il existe
80 if(file_exists('data/' . $this->page . '/' . $this->format . '/' . $this->fileList[$i]['fileCode'] . '.' . $this->format)) 79 if(file_exists('data/' . $this->page . '/' . $this->format . '/' . $this->fileList[$i]['fileCode'] . '.' . $this->format))
@@ -107,6 +106,7 @@ class Album extends Article
107 $this->oneAlbum['titre'] = $content[0]; 106 $this->oneAlbum['titre'] = $content[0];
108 $this->oneAlbum['annee'] = $content[1]; 107 $this->oneAlbum['annee'] = $content[1];
109 $this->oneAlbum['pochette'] = $content[2]; 108 $this->oneAlbum['pochette'] = $content[2];
109 $this->oneAlbum['pochetteMini'] = $content[3];
110 110
111 // html 111 // html
112 $this->format = 'html'; 112 $this->format = 'html';
@@ -138,14 +138,18 @@ class Album extends Article
138 } 138 }
139 139
140 // update 140 // update
141 public function updateVignetteJSON($titre, $annee, $pochette) 141 public function updateVignetteJSON($titre, $annee, $pochette, $pochetteMini)
142 { 142 {
143 // garder l'ancienne image 143 // garder l'image si aucune n'est sélectionnée
144 // (on ne peut pas préremplir un <input type="file">)
144 $albumJSON = self::getVignetteJSON(); 145 $albumJSON = self::getVignetteJSON();
146 /*var_dump($pochette); var_dump($pochetteMini);
147 var_dump($albumJSON); die();*/
145 148
146 if($pochette == '') 149 if($pochette == '')
147 { 150 {
148 $pochette = $albumJSON[2]; 151 $pochette = $albumJSON[2];
152 $pochetteMini = $albumJSON[3];
149 } 153 }
150 else 154 else
151 { 155 {
@@ -153,6 +157,7 @@ class Album extends Article
153 require('model/Image.php'); 157 require('model/Image.php');
154 $Image = new Image(false); 158 $Image = new Image(false);
155 $Image->upload(); 159 $Image->upload();
160 $Image->makeThumbnail();
156 $erreur = $Image->erreur; 161 $erreur = $Image->erreur;
157 if(!empty($erreur)) 162 if(!empty($erreur))
158 { 163 {
@@ -161,7 +166,7 @@ class Album extends Article
161 } 166 }
162 } 167 }
163 168
164 $albumJSON = json_encode([$titre, $annee, $pochette]); 169 $albumJSON = json_encode([$titre, $annee, $pochette, $pochetteMini]);
165 170
166 // écriture 171 // écriture
167 $nom_fichier = 'data/discographie/json/' . $this->albumCode . '.json'; 172 $nom_fichier = 'data/discographie/json/' . $this->albumCode . '.json';
diff --git a/model/Image.php b/model/Image.php
index 8ebcd16..c305984 100644
--- a/model/Image.php
+++ b/model/Image.php
@@ -5,7 +5,10 @@ class Image
5{ 5{
6 private const MAX_WEIGHT = 2000000; // à adapter au php.ini 6 private const MAX_WEIGHT = 2000000; // à adapter au php.ini
7 private $page; 7 private $page;
8 private $ajax = false; // vaut true avec le ckeditor 8 private $ajax; // vaut true avec le ckeditor
9 public $path;
10 public $pathMini;
11 public $pathInfos;
9 public $erreur; 12 public $erreur;
10 13
11 public function __construct($ajax) 14 public function __construct($ajax)
@@ -13,14 +16,14 @@ class Image
13 // get envoyé avec le javascript 16 // get envoyé avec le javascript
14 $this->page = $_GET['page']; 17 $this->page = $_GET['page'];
15 $this->ajax = $ajax; 18 $this->ajax = $ajax;
19 $this->path = 'data/' . $this->page . '/images/';
20 $this->pathMini = 'data/' . $this->page . '/images-mini/';
16 } 21 }
17 22
18 // GET 23 // GET
19 24
20 // SET 25 // SET
21 26
22 // miniatures des photos
23
24 public function upload() 27 public function upload()
25 { 28 {
26 // traitement et enregistrement de l'image 29 // traitement et enregistrement de l'image
@@ -28,14 +31,14 @@ class Image
28 { 31 {
29 if ($_FILES['upload']['size'] <= self::MAX_WEIGHT) 32 if ($_FILES['upload']['size'] <= self::MAX_WEIGHT)
30 { 33 {
31 $infos = pathinfo($_FILES['upload']['name']); 34 $this->pathInfos = pathinfo($_FILES['upload']['name']);
32 $extension = $infos['extension']; 35 $extension = $this->pathInfos['extension'];
33 $extautorisées = array('jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff'); 36 $extautorisées = array('jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff');
34 // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur) 37 // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur)
35 if (in_array($extension, $extautorisées)) 38 if (in_array($extension, $extautorisées))
36 { 39 {
37 move_uploaded_file($_FILES['upload']['tmp_name'], 'data/' . $this->page . '/images/' . $_FILES['upload']['name']); 40 move_uploaded_file($_FILES['upload']['tmp_name'], $this->path . $_FILES['upload']['name']);
38 chmod('data/' . $this->page . '/images/' . $_FILES['upload']['name'], 0666); 41 chmod($this->path . $_FILES['upload']['name'], 0666);
39 } 42 }
40 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é';} 43 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é';}
41 } 44 }
@@ -57,4 +60,49 @@ class Image
57 echo $chemin; 60 echo $chemin;
58 } 61 }
59 } 62 }
63
64 // miniatures des photos
65 public function makeThumbnail()
66 {
67 if($imageLibrary == 'gd')
68 {
69 // des infos sur GD
70 //print_r(gd_info());
71
72 // cette fonction fonctionne pour tous les formats
73 $source = imagecreatefromstring(file_get_contents($this->path . $_FILES['upload']['name']));
74 var_dump($source);
75
76 $nomMiniImage = $this->pathMini . $this->pathInfos['filename'] . '-mini.jpg';
77 var_dump($nomMiniImage);
78
79 //var_dump($nomMiniImage);
80 //var_dump(imagesx($image));
81
82 $forme = imagesy($source) / imagesx($source);
83 var_dump($forme);
84
85 if(imagesx($source) > 201)
86 {
87 // créer un rectangle noir
88 $destination = imagecreatetruecolor(201, 201 * $forme);
89 var_dump($destination);
90
91 // sélectionne un rectangle dans l'image source
92 // et le place dans un rectangle dans la nouvelle
93 imagecopyresampled($destination, $source, 0, 0, 0, 0, 201, 201 * $forme, imagesx($source), imagesy($source));
94
95 // envoie l'image dans un fichier
96 imagejpeg($destination, $nomMiniImage);
97 }
98 else
99 {
100 imagejpeg($source, $nomMiniImage);
101 }
102 }
103 elseif($imageLibrary == 'imagick')
104 {}
105 else
106 {}
107 }
60} \ No newline at end of file 108} \ No newline at end of file