summaryrefslogtreecommitdiff
path: root/model
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2021-08-10 02:11:20 +0200
committerpolo <ordipolo@gmx.fr>2021-08-10 02:13:54 +0200
commit48e4b0bf8796dcd6a80c8f443a31832c512424fd (patch)
tree06b639e0226f5896285d3cd8292b969dfa90508b /model
parent86c2a611e55c9e35384febecf34964e214c0296e (diff)
downloadmelaine-48e4b0bf8796dcd6a80c8f443a31832c512424fd.zip
disco
Diffstat (limited to 'model')
-rw-r--r--model/Article.php92
-rw-r--r--model/Classes.php176
-rw-r--r--model/melaine-read.php59
-rw-r--r--model/melaine-write.php32
4 files changed, 176 insertions, 183 deletions
diff --git a/model/Article.php b/model/Article.php
deleted file mode 100644
index aee4f5d..0000000
--- a/model/Article.php
+++ /dev/null
@@ -1,92 +0,0 @@
1<?php
2// model/Article.php
3
4class Article
5{
6 private $page = ''; // page et donc dossier concerné
7 private $croissant = True; // ordre des éléments du tableau $files
8 private $files; // noms des fichiers d'un dossier
9 private $oneFile; // correspond à $_SESSION['nomFichier']
10 private $nbArticles; // un fichier = un article
11 private $articles; // contenu des fichiers
12
13 private function getFiles()
14 {
15 if($this->page == '')
16 {
17 die("debug: la méthode setPage() doit être appelée avant toute autre.");
18 }
19
20 $this->files = glob('data/' . $this->page . '/html/*.html');
21
22 if($croissant == False)
23 {
24 $files = array_reverse($files);
25 }
26
27 $this->nbArticles = count($this->files);
28 }
29
30 // fonctions CRUD (create - read - update - delete)
31 // ce sont les 4 opérations de base qu'un programme doit permettre pour être complet
32
33 // create
34 public function create($content)
35 {
36 if($this->page == '')
37 {
38 die("debug: la méthode setPage() doit être appelée avant toute autre.");
39 }
40
41 $nom_fichier = time() . '.html';
42 $fichier = fopen('data/' . $this->page . '/html/' . $nom_fichier, 'w'); // w peut créer un fichier, si il existe déjà, il est effacé par le nouveau contenu
43 fputs($fichier, $content);
44 fclose($fichier);
45 chmod('data/' . $this->page . '/html/' . $nom_fichier, 0666);
46 }
47
48 // read
49 public function getNumber()
50 {
51 return $this->nbArticles;
52 }
53
54 public function getOne()
55 {}
56
57 public function getAll($croissant)
58 {
59 $this->croissant = $croissant; // inversion de $files?
60 getFiles();
61
62 $i = 0;
63 $articles = array();
64 foreach ($this->files as $file)
65 {
66 $articles[$i] = file_get_contents($file);
67 $i++;
68 }
69
70 return $articles;
71 }
72
73 public function getDate($fileNumber)
74 {
75 // le 2è paramètre exclut le suffixe .html
76 $timestamp = basename($this->files[$fileNumber], '.html');
77 return getdate($timestamp);
78 }
79
80 // update
81 public function update()
82 {}
83
84 public function setPage($page)
85 {
86 $this->page = $page;
87 }
88
89 // delete
90 public function delete()
91 {}
92}
diff --git a/model/Classes.php b/model/Classes.php
new file mode 100644
index 0000000..d940e53
--- /dev/null
+++ b/model/Classes.php
@@ -0,0 +1,176 @@
1<?php
2// model/ArticlesManager.php
3
4class ArticlesManager
5{
6 private $page = ''; // page et donc dossier concerné
7 //private $Ascending = True; // ordre des éléments du tableau $files
8 private $files; // noms des fichiers d'un dossier
9 private $fileName; // correspond à $_SESSION['nomFichier']
10 private $nbArticles; // un fichier = un article
11 private $articles; // contenu des fichiers
12
13 // SET
14 public function setPage($page)
15 {
16 $this->page = $page;
17 }
18
19 //public function setAscending($croissant)
20 //{
21 // $this->Ascending = $croissant;
22 //}
23
24 public function findFileName($numArticle)
25 {
26 $this->fileName = $this->files[$numArticle - 1];
27 }
28
29 public function setFileName($nomFichier)
30 {
31 $this->fileName = $nomFichier;
32 }
33
34 // GET
35 public function getPage()
36 {
37 return($this->page);
38 }
39
40 public function getFileName()
41 {
42 return($this->fileName);
43 }
44
45 public function nbArticles()
46 {
47 return($this->nbArticles);
48 }
49
50
51 // tableau des noms des articles
52 public function getFiles()
53 {
54 if($this->page == '')
55 {
56 die("debug: la méthode setPage() doit être appelée avant toute autre.");
57 }
58
59 $this->files = glob('data/' . $this->page . '/html/*.html');
60
61 //$this->nbArticles = count($this->files);
62 }
63
64 // ordre du tableau des noms de fichiers
65 public function reverseFilesArray()
66 {
67 $this->files = array_reverse($this->files);
68 }
69
70
71 // fonctions CRUD (create - read - update - delete)
72 // ce sont les 4 opérations de base qu'un programme doit permettre pour être complet
73
74 // create
75 public function create($content)
76 {
77 if($this->page == '')
78 {
79 die("debug: la méthode setPage() doit être appelée avant toute autre.");
80 }
81
82 // nommer les fichiers avec le timestamp
83 // - trie par ordre chronologique
84 // - rendre quasi impossible d'avoir deux fois le même nom (à la condition de gérer la "concurrence")
85 $nom_fichier = 'data/' . $this->page . '/html/' . time() . '.html';
86
87 $fichier = fopen($nom_fichier, 'w'); // w peut créer un fichier, si il existe déjà, il est effacé par le nouveau contenu
88 fputs($fichier, $content);
89 fclose($fichier);
90 chmod($nom_fichier, 0666);
91 }
92
93 // read
94 public function getNumber()
95 {
96 return $this->nbArticles;
97 }
98
99 public function getOne()
100 {
101 return(file_get_contents($this->fileName));
102 }
103
104 public function getAll()
105 {
106 //$this->getFiles();
107
108 $i = 0;
109 $articles = array();
110 foreach ($this->files as $file)
111 {
112 $articles[$i] = file_get_contents($file);
113 $i++;
114 }
115
116 //print_r($articles);
117 return $articles;
118 }
119
120 public function getDate($fileNumber)
121 {
122 // le 2è paramètre exclut le suffixe .html
123 $timestamp = basename($this->files[$fileNumber], '.html');
124 return getdate($timestamp);
125 }
126
127 // update
128 public function update($content)
129 {
130 $file = fopen($this->fileName, 'w');
131 // w peut créer un fichier, si il existe déjà, il est effacé par le nouveau contenu
132 fputs($file, $content);
133 fclose($file);
134 //chown($this->fileName, 'http');
135 chmod($this->fileName, 0666);
136 }
137
138 // delete
139 public function delete()
140 {
141 unlink($this->fileName);
142 }
143}
144
145// note: les pros font de l'hydration
146// le code du modèle est orienté objet et "refactorisé" d'une manière précise:
147// on utilise un objet pour une chose (des articles, commentaires, etc),
148// un objet article contiendrait ainsi tout le nécessaire pour lire, écrire ou modifier un article
149// 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
150
151class AlbumsManager extends ArticlesManager
152{
153 // variables
154
155 // SET
156
157 // GET
158
159 // fonctions CRUD
160
161 // create
162 public function create()
163 {}
164
165 // read
166 public function read()
167 {}
168
169 // update
170 public function update()
171 {}
172
173 // delete
174 public function delete()
175 {}
176} \ No newline at end of file
diff --git a/model/melaine-read.php b/model/melaine-read.php
deleted file mode 100644
index 7105acd..0000000
--- a/model/melaine-read.php
+++ /dev/null
@@ -1,59 +0,0 @@
1<?php
2// model/melaine-read.php
3//
4// accès en lecture seule
5
6// obtenir le nom du fichier de l'article qu'on modifie
7function getFileName($page, $numArticle)
8{
9 $files = lireNomsFichiers($page);
10 $fileName = $files[$numArticle - 1];
11
12 return($fileName);
13}
14
15function lireNomsFichiers($page)
16{
17 // créer un tableau avec le nom des fichiers html
18 $files = glob('data/' . $page . '/html/*.html');
19
20 return $files;
21}
22
23function lireUnArticle($nomFichier)
24// ce nom est le chemin complet, donc la page y figure
25{
26 return(file_get_contents($nomFichier));
27}
28
29function lireArticles($page, $croissant)
30{
31 // créer un tableau avec le nom des fichiers html
32 $files = lireNomsFichiers($page);
33
34 // inverse l'ordre du tableau retourné
35 if($croissant == False)
36 {
37 $files = array_reverse($files);
38 }
39
40 $i = 0;
41 $articles = array();
42 foreach ($files as $oneFile)
43 {
44 $articles[$i] = file_get_contents($oneFile);
45 $i++;
46 }
47 // nombre de fichiers (= taille du tableau $files)
48 //$nombreDarticles = count($files);
49
50 //print_r($articles);
51
52 return($articles);
53}
54
55// note: les pros font de l'hydration
56// le code du modèle est orienté objet et "refactorisé" d'une manière précise:
57// on utilise un objet pour une chose (des articles, commentaires, etc),
58// un objet article contiendrait ainsi tout le nécessaire pour lire, écrire ou modifier un article
59// 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/melaine-write.php b/model/melaine-write.php
deleted file mode 100644
index 462d59e..0000000
--- a/model/melaine-write.php
+++ /dev/null
@@ -1,32 +0,0 @@
1<?php
2// model/melaine-write.php
3//
4// accès en écriture pour créer ou modifier des articles
5
6
7
8function nouvelArticle($page, $contenuHTML)
9{
10 // nommer les fichiers avec le timestamp
11 // pour les trier par ordre chronologique
12 // rendre impossible d'avoir deux fois le même nom (à la condition de gérer la "concurrence")
13 $nom_fichier = 'data/' . $_GET['page'] . '/html/' . time() . '.html';
14
15 $fichier = fopen($nom_fichier, 'w'); // w peut créer un fichier, si il existe déjà, il est effacé par le nouveau contenu
16 fputs($fichier, $contenuHTML);
17 fclose($fichier);
18 chmod($nom_fichier, 0666);
19}
20
21function modifArticle($page, $nomFichier, $contenuHTML)
22{
23 // manipulation du fichier
24 //$fichier = fopen('data/' . $page . '/html/' . $nom_fichier, 'w');
25 $fichier = fopen($nomFichier, 'w');
26 // w peut créer un fichier, si il existe déjà, il est effacé par le nouveau contenu
27 fputs($fichier, $contenuHTML);
28 fclose($fichier);
29 //chmod('data/' . $page . '/html/' . $nom_fichier, 0666);
30 chown($nomFichier, 'http');
31 chmod($nomFichier, 0666);
32} \ No newline at end of file