summaryrefslogtreecommitdiff
path: root/model
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2021-09-01 23:35:42 +0200
committerpolo <ordipolo@gmx.fr>2021-09-01 23:35:42 +0200
commit10954c386cacb270e4ae16837483120ca3406259 (patch)
treee3107a29984b0e91db899fc08d4a7e066eaf2710 /model
parent452420d0cd05822a9974fe27f0edc4cc4dc300cc (diff)
downloadmelaine-10954c386cacb270e4ae16837483120ca3406259.zip
albums
Diffstat (limited to 'model')
-rw-r--r--model/Classes.php190
1 files changed, 108 insertions, 82 deletions
diff --git a/model/Classes.php b/model/Classes.php
index e574eeb..1349cd7 100644
--- a/model/Classes.php
+++ b/model/Classes.php
@@ -1,127 +1,137 @@
1<?php 1<?php
2// model/Classes.php 2// model/Classes.php
3 3
4class ArticlesManager 4class AllArticles
5{ 5{
6 private $page = ''; // page et donc dossier concerné 6 protected $page; // page et donc dossier concerné
7 //private $Ascending = True; // ordre des éléments du tableau $files 7 protected $format = 'html'; // vaut 'html' ou 'json'
8 private $files; // noms des fichiers d'un dossier 8 protected $files; // noms des fichiers dans ce dossier
9 private $fileName; // correspond à $_SESSION['nomFichier'] 9 protected $time; // timestamp pour création de fichiers
10 private $articles; // contenu
10 private $nbArticles; // un fichier = un article 11 private $nbArticles; // un fichier = un article
11 private $articles; // contenu des fichiers
12 12
13 // SET 13 // en paramètre à l'instanciation
14 public function setPage($page) 14 public function __construct($page)
15 { 15 {
16 $this->page = $page; 16 $this->page = $page;
17 $this->time = time();
18 if($this->page == 'discographie')
19 {
20 $this->format = 'json';
21 }
17 } 22 }
18 23
19 public function findFileName($numArticle) 24 // GET
25 public function getPage()
20 { 26 {
21 $this->fileName = $this->files[$numArticle - 1]; 27 return($this->page);
22 } 28 }
23 29
24 public function setFileName($nomFichier) 30 public function getNbArticles()
25 { 31 {
26 $this->fileName = $nomFichier; 32 return($this->nbArticles);
27 } 33 }
28 34 public function getFileNames()
29 // GET
30 public function getPage()
31 { 35 {
32 return($this->page); 36 return($this->files);
33 } 37 }
34 38
35 public function getFileName() 39 // SET
40 public function setFormat($format)
36 { 41 {
37 return($this->fileName); 42 $this->format = $format;
38 } 43 }
39 44
40 public function nbArticles() 45 // tableaux des noms des fichiers
46 public function makeFileList()
41 { 47 {
42 return($this->nbArticles); 48 $this->files = glob('data/' . $this->page . '/' . $this->format . '/*.' . $this->format);
49 //$this->files = glob('*.' . $this->format);
43 } 50 }
51 /*public function makeFilePath()
52 {}*/
44 53
54 // fonctions CRUD (create - read - update - delete)
55
56 // create
45 57
46 // tableau des noms des articles 58 // read
47 public function getFiles() 59 public function readAll()
48 { 60 {
49 if($this->page == '') 61 $i = 0;
62 $articles = array();
63 foreach ($this->files as $oneFile)
50 { 64 {
51 die("debug: la méthode setPage() doit être appelée avant getFiles()."); 65 $articles[$i] = file_get_contents($oneFile);
66 $i++;
52 } 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']
53 81
54 $this->files = glob('data/' . $this->page . '/html/*.html'); 82 // GET
83 public function getFileName()
84 {
85 return($this->fileName);
55 } 86 }
56 87
57 // ordre du tableau des noms de fichiers 88 // SET
58 public function reverseFilesArray() 89 public function setFileName($nomFichier) // modification
59 { 90 {
60 $this->files = array_reverse($this->files); 91 $this->fileName = $nomFichier;
61 } 92 }
62 93
94 public function findFileName($numArticle) // nouvel article
95 {
96 $this->fileName = $this->files[$numArticle - 1];
97 }
63 98
64 // fonctions CRUD (create - read - update - delete) 99 // fonctions CRUD (create - read - update - delete)
65 // ce sont les 4 opérations de base qu'un programme doit permettre pour être complet 100
66
67 // create 101 // create
68 public function create($content) 102 public function create($content)
69 { 103 {
70 if($this->page == '') 104 $format = 'html';
71 { 105
72 die("debug: la méthode setPage() doit être appelée avant toute autre."); 106 // nommer les fichiers avec le timestamp pour:
73 } 107 // - les trier par ordre chronologique
74
75 // nommer les fichiers avec le timestamp
76 // - trie par ordre chronologique
77 // - rendre quasi impossible d'avoir deux fois le même nom (à la condition de gérer la "concurrence") 108 // - rendre quasi impossible d'avoir deux fois le même nom (à la condition de gérer la "concurrence")
78 $nom_fichier = 'data/' . $this->page . '/html/' . time() . '.html'; 109 $nom_fichier = 'data/' . $this->page . '/' . $format . '/' . $this->time . '.' . $format;
79 110
80 $fichier = fopen($nom_fichier, 'w'); // w peut créer un fichier, si il existe déjà, il est effacé par le nouveau contenu 111 $fichier = fopen($nom_fichier, 'w'); // w pour créer ou écraser
81 fputs($fichier, $content); 112 fputs($fichier, $content);
82 fclose($fichier); 113 fclose($fichier);
83 chmod($nom_fichier, 0666); 114 chmod($nom_fichier, 0666);
84 } 115 }
85 116
86 // read 117 // read
87 public function getNumber() 118 public function readOne()
88 {
89 return $this->nbArticles;
90 }
91
92 public function getOne()
93 { 119 {
94 return(file_get_contents($this->fileName)); 120 return(file_get_contents($this->fileName));
95 } 121 }
96 122
97 public function getAll() 123 // pour afficher des dates
98 { 124 /*public function getDate($fileNumber)
99 //$this->getFiles();
100
101 $i = 0;
102 $articles = array();
103 foreach ($this->files as $file)
104 {
105 $articles[$i] = file_get_contents($file);
106 $i++;
107 }
108
109 //print_r($articles);
110 return $articles;
111 }
112
113 public function getDate($fileNumber)
114 { 125 {
115 // le 2è paramètre exclut le suffixe .html 126 // le 2è paramètre exclut le suffixe .html
116 $timestamp = basename($this->files[$fileNumber], '.html'); 127 $timestamp = basename($this->files[$fileNumber], '.html');
117 return getdate($timestamp); 128 return getdate($timestamp);
118 } 129 }*/
119 130
120 // update 131 // update
121 public function update($content) 132 public function update($content)
122 { 133 {
123 $file = fopen($this->fileName, 'w'); 134 $file = fopen($this->fileName, 'w'); // crée ou écrase
124 // w peut créer un fichier, si il existe déjà, il est effacé par le nouveau contenu
125 fputs($file, $content); 135 fputs($file, $content);
126 fclose($file); 136 fclose($file);
127 //chown($this->fileName, 'http'); 137 //chown($this->fileName, 'http');
@@ -135,39 +145,55 @@ class ArticlesManager
135 } 145 }
136} 146}
137 147
138// note: les pros font de l'hydration
139// le code du modèle est orienté objet et "refactorisé" d'une manière précise:
140// on utilise un objet pour une chose (des articles, commentaires, etc),
141// un objet article contiendrait ainsi tout le nécessaire pour lire, écrire ou modifier un article
142// 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
143 148
144class AlbumsManager extends ArticlesManager 149class Album extends OneArticle
145{ 150{
146 // variables 151 // variables
147 152 //private $fileNameJSON; // même nom en .json
148 // SET 153 //protected $format = 'json';
149 154
150 // GET 155 // GET
151 156
157 // SET
158
152 // fonctions CRUD 159 // fonctions CRUD
153 160
154 // create 161 // create
155 //public function create($titre, $annee, $pochette) 162 public function createVignette($titre, $annee, $pochette)
156 public function create($content) 163 {
157 //public function create($content, $titre, $annee, $pochette) 164 if($pochette != '')
158 {} 165 {
166 // enregistrer le fichier
167 // retourner une erreur en cas d'échec de l'upload
168 }
169
170 $albumJSON = json_encode([$titre, $annee, $pochette]);
171
172 $nom_fichier = 'data/' . $this->page . '/' . $this->format . '/' . $this->time . '.' . $this->format;
173
174 $fichier = fopen($nom_fichier, 'w'); // w pour créer ou écraser
175 fputs($fichier, $albumJSON);
176 fclose($fichier);
177 chmod($nom_fichier, 0666);
178 }
159 179
160 // read 180 // read
161 public function read() 181 public function read()
162 {} 182 {}
163 183
164 // update 184 // update
165 //public function update($titre, $annee, $pochette) 185 public function updateVignette($titre, $annee, $pochette)
166 public function update($content)
167 //public function update($content, $titre, $annee, $pochette)
168 {} 186 {}
169 187
170 // delete 188 // delete
171 public function delete() 189 public function delete()
172 {} 190 {}
173} \ No newline at end of file 191}
192
193
194
195// note: les pros font de l'hydration
196// le code du modèle est orienté objet et "refactorisé" d'une manière précise:
197// on utilise un objet pour une chose (des articles, commentaires, etc),
198// un objet article contiendrait ainsi tout le nécessaire pour lire, écrire ou modifier un article
199// 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