summaryrefslogtreecommitdiff
path: root/model
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2021-11-26 04:29:10 +0100
committerpolo <ordipolo@gmx.fr>2021-11-26 04:29:10 +0100
commitb97a68343ec5c4ff1fae25ff5dc41f1a2ce6a17f (patch)
tree528ec98f86a61b492d7ebce61486647f633b1f42 /model
parentcdf1bda847edd3e22e9fe817a802219ad8e0f626 (diff)
downloadmelaine-b97a68343ec5c4ff1fae25ff5dc41f1a2ce6a17f.zip
disco modif/suppr désordre
Diffstat (limited to 'model')
-rw-r--r--model/Album.php75
-rw-r--r--model/Classes.php201
-rw-r--r--model/Image.php9
-rw-r--r--model/Page.php97
4 files changed, 175 insertions, 207 deletions
diff --git a/model/Album.php b/model/Album.php
new file mode 100644
index 0000000..2254c10
--- /dev/null
+++ b/model/Album.php
@@ -0,0 +1,75 @@
1<?php
2// model/Album.php
3
4class Album extends Page // classe "objet"
5{
6 public function __construct($page)
7 {
8 $this->page = $page;
9 $this->format = 'json'; // vaut 'html' dans la classe mère
10 $this->time = time();
11 }
12
13 // GET
14
15 // SET
16
17 // fonctions CRUD
18
19 // create
20 public function createVignette($titre, $annee, $pochette)
21 {
22 $this->format = 'json';
23
24 if($pochette != '')
25 {
26 // télécharger la pochette
27 require('model/Image.php');
28 $Image = new Image(false);
29 $Image->upload();
30
31 /*$erreur = $Image->getError();
32 if(!empty($erreur))
33 {}*/
34 }
35
36 $albumJSON = json_encode([$titre, $annee, $pochette]);
37
38 $nom_fichier = 'data/' . $this->page . '/' . $this->format . '/' . $this->time . '.' . $this->format;
39
40 $fichier = fopen($nom_fichier, 'w'); // w pour créer ou écraser
41 fputs($fichier, $albumJSON);
42 fclose($fichier);
43 chmod($nom_fichier, 0666);
44 }
45
46 // read
47 public function getVignette()
48 {
49 return(file_get_contents($this->fileName));
50 }
51
52 // page de l'album
53 public static function readOneAlbum($albumCode)
54 {
55 return(file_get_contents('data/discographie/html/' . $albumCode . '.html'));
56 }
57
58 // pour afficher des dates
59 /*public function getDate($fileNumber)
60 {
61 // le 2è paramètre exclut le suffixe .html
62 $timestamp = basename($this->files[$fileNumber], '.html');
63 return getdate($timestamp);
64 }*/
65
66 // update
67 public function updateVignette()
68 {}
69
70 // delete
71 public function delete()
72 {
73 unlink($this->fileName);
74 }
75}
diff --git a/model/Classes.php b/model/Classes.php
deleted file mode 100644
index 97a137a..0000000
--- a/model/Classes.php
+++ /dev/null
@@ -1,201 +0,0 @@
1<?php
2// model/Classes.php
3
4class AllArticles
5{
6 protected $page; // page et donc dossier concerné
7 protected $format = 'html'; // vaut 'html' ou 'json'
8 protected $files; // noms des fichiers dans ce dossier
9 protected $time; // timestamp pour création de fichiers
10 private $articles; // contenu
11 private $nbArticles; // un fichier = un article
12
13 // en paramètre à l'instanciation
14 public function __construct($page)
15 {
16 $this->page = $page;
17 $this->time = time();
18 if($this->page == 'discographie')
19 {
20 $this->format = 'json';
21 }
22 }
23
24 // GET
25 public function getPage()
26 {
27 return($this->page);
28 }
29
30 public function getNbArticles()
31 {
32 return($this->nbArticles);
33 }
34 public function getFileList()
35 {
36 return($this->files);
37 }
38
39 // SET
40 public function setFormat($format)
41 {
42 $this->format = $format;
43 }
44
45 // tableaux des noms des fichiers
46 public function makeFileList()
47 {
48 $this->files = glob('data/' . $this->page . '/' . $this->format . '/*.' . $this->format);
49 //$this->files = glob('*.' . $this->format);
50 }
51 /*public function makeFilePath()
52 {}*/
53
54 // fonctions CRUD (create - read - update - delete)
55
56 // create
57
58 // read
59 public function readAll()
60 {
61 $i = 0;
62 $articles = array();
63 foreach ($this->files as $oneFile)
64 {
65 $articles[$i] = file_get_contents($oneFile);
66 $i++;
67 }
68 //print_r($articles);
69 return $articles;
70 }
71
72 // update
73
74 // delete
75}
76
77// article créé ou ciblé pour modification/suppression
78class OneArticle extends AllArticles
79{
80 private $fileName; // correspond à $_SESSION['nomFichier']
81
82 // GET
83 public function getFileName()
84 {
85 return($this->fileName);
86 }
87
88 // SET
89 public function setFileName($nomFichier) // modification
90 {
91 $this->fileName = $nomFichier;
92 }
93
94 public function findFileName($numArticle) // nouvel article
95 {
96 $this->fileName = $this->files[$numArticle - 1];
97 }
98
99 // fonctions CRUD (create - read - update - delete)
100
101 // create
102 public function create($content)
103 {
104 $format = 'html';
105
106 // nommer les fichiers avec le timestamp pour:
107 // - les trier par ordre chronologique
108 // - rendre quasi impossible d'avoir deux fois le même nom (à la condition de gérer la "concurrence")
109 $nom_fichier = 'data/' . $this->page . '/' . $format . '/' . $this->time . '.' . $format;
110
111 $fichier = fopen($nom_fichier, 'w'); // w pour créer ou écraser
112 fputs($fichier, $content);
113 fclose($fichier);
114 chmod($nom_fichier, 0666);
115 }
116
117 // read
118 public function readOne()
119 {
120 return(file_get_contents($this->fileName));
121 }
122 public static function readOneAlbum($albumCode)
123 {
124 return(file_get_contents('data/discographie/html/' . $albumCode . '.html'));
125 }
126
127 // pour afficher des dates
128 /*public function getDate($fileNumber)
129 {
130 // le 2è paramètre exclut le suffixe .html
131 $timestamp = basename($this->files[$fileNumber], '.html');
132 return getdate($timestamp);
133 }*/
134
135 // update
136 public function update($content)
137 {
138 $file = fopen($this->fileName, 'w'); // crée ou écrase
139 fputs($file, $content);
140 fclose($file);
141 //chown($this->fileName, 'http');
142 chmod($this->fileName, 0666);
143 }
144
145 // delete
146 public function delete()
147 {
148 unlink($this->fileName);
149 }
150}
151
152
153class Album extends OneArticle
154{
155 // variables
156 //private $fileNameJSON; // même nom en .json
157
158 // GET
159
160 // SET
161
162 // fonctions CRUD
163 // create
164 public function createVignette($titre, $annee, $pochette)
165 {
166 $this->format = 'json';
167
168 if($pochette != '')
169 {
170 // télécharger la pochette
171 require('model/Image.php');
172 $Image = new Image(false);
173 $Image->upload();
174
175 /*$erreur = $Image->getError();
176 if(!empty($erreur))
177 {}*/
178 }
179
180 $albumJSON = json_encode([$titre, $annee, $pochette]);
181
182 $nom_fichier = 'data/' . $this->page . '/' . $this->format . '/' . $this->time . '.' . $this->format;
183
184 $fichier = fopen($nom_fichier, 'w'); // w pour créer ou écraser
185 fputs($fichier, $albumJSON);
186 fclose($fichier);
187 chmod($nom_fichier, 0666);
188 }
189
190 // read
191 public function read()
192 {}
193
194 // update
195 public function updateVignette($titre, $annee, $pochette)
196 {}
197
198 // delete
199 public function delete()
200 {}
201} \ No newline at end of file
diff --git a/model/Image.php b/model/Image.php
index 0070b70..efd75cc 100644
--- a/model/Image.php
+++ b/model/Image.php
@@ -6,7 +6,7 @@ class Image
6 private const MAX_WEIGHT = 2000000; // taille max des images (par défaut 2Mo dans php.ini) 6 private const MAX_WEIGHT = 2000000; // taille max des images (par défaut 2Mo dans php.ini)
7 private $page; 7 private $page;
8 private $ajax = false; 8 private $ajax = false;
9 private $erreur = ''; 9 public $erreur = '';
10 10
11 public function __construct($ajax) 11 public function __construct($ajax)
12 { 12 {
@@ -16,14 +16,11 @@ class Image
16 } 16 }
17 17
18 // GET 18 // GET
19 public function getError() 19
20 { 20 // SET
21 return($this->erreur);
22 }
23 21
24 public function upload() 22 public function upload()
25 { 23 {
26
27 // traitement et enregistrement de l'image 24 // traitement et enregistrement de l'image
28 if (isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok 25 if (isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok
29 { 26 {
diff --git a/model/Page.php b/model/Page.php
new file mode 100644
index 0000000..e03efe1
--- /dev/null
+++ b/model/Page.php
@@ -0,0 +1,97 @@
1<?php
2// model/Page.php
3
4class Page // classe "objet"
5{
6 public $page; // page et donc dossier concerné
7 public $format = 'html'; // vaut 'html' ou 'json'
8 public $fileList; // noms des fichiers dans ce dossier
9 protected $articles; // contenu de toute la page
10 protected $nbArticles; // un fichier = un article
11
12 // gestion d'un article spécifique
13 public $fileName = ''; // correspond à $_SESSION['nomFichier']
14 protected $time; // timestamp pour noms des fichiers créés
15
16 public function __construct($page, $format)
17 {
18 $this->page = $page;
19 $this->format = $format;
20 $this->time = time();
21 $this->makeFileList();
22 }
23
24 // tableaux des noms des fichiers
25 public function makeFileList()
26 {
27 $this->fileList = glob('data/' . $this->page . '/' . $this->format . '/*.' . $this->format);
28 //$this->files = glob('*.' . $this->format);
29 }
30 /*public function makeFilePath()
31 {}*/
32
33 // nom d'un fichier
34 public function findFileName($numArticle)
35 {
36 if($numArticle > 0)
37 {
38 $this->fileName = $this->fileList[$numArticle - 1];
39 }
40 }
41
42 // GET
43
44 // SET
45
46 // fonctions CRUD (create - read - update - delete)
47
48 // create
49 public function create($content)
50 {
51 $format = 'html';
52
53 // nommer les fichiers avec le timestamp pour:
54 // - les trier par ordre chronologique
55 // - rendre quasi impossible d'avoir deux fois le même nom (à la condition de gérer la "concurrence")
56 $nom_fichier = 'data/' . $this->page . '/' . $format . '/' . $this->time . '.' . $format;
57
58 $fichier = fopen($nom_fichier, 'w'); // w pour créer ou écraser
59 fputs($fichier, $content);
60 fclose($fichier);
61 chmod($nom_fichier, 0666);
62 }
63
64 // read
65 public function readAll()
66 {
67 $i = 0;
68 $articles = array();
69 foreach ($this->fileList as $oneFile)
70 {
71 $articles[$i] = file_get_contents($oneFile);
72 $i++;
73 }
74 //print_r($articles);
75 return $articles;
76 }
77 public function readOne()
78 {
79 return(file_get_contents($this->fileName));
80 }
81
82 // update
83 public function update($content)
84 {
85 $file = fopen($this->fileName, 'w'); // crée ou écrase
86 fputs($file, $content);
87 fclose($file);
88 //chown($this->fileName, 'http');
89 chmod($this->fileName, 0666);
90 }
91
92 // delete
93 public function delete()
94 {
95 unlink($this->fileName);
96 }
97} \ No newline at end of file