From 10954c386cacb270e4ae16837483120ca3406259 Mon Sep 17 00:00:00 2001 From: polo Date: Wed, 1 Sep 2021 23:35:42 +0200 Subject: albums --- model/Classes.php | 190 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 108 insertions(+), 82 deletions(-) (limited to 'model') 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 @@ page = $page; + $this->time = time(); + if($this->page == 'discographie') + { + $this->format = 'json'; + } } - public function findFileName($numArticle) + // GET + public function getPage() { - $this->fileName = $this->files[$numArticle - 1]; + return($this->page); } - public function setFileName($nomFichier) + public function getNbArticles() { - $this->fileName = $nomFichier; + return($this->nbArticles); } - - // GET - public function getPage() + public function getFileNames() { - return($this->page); + return($this->files); } - public function getFileName() + // SET + public function setFormat($format) { - return($this->fileName); + $this->format = $format; } - - public function nbArticles() + + // tableaux des noms des fichiers + public function makeFileList() { - return($this->nbArticles); + $this->files = glob('data/' . $this->page . '/' . $this->format . '/*.' . $this->format); + //$this->files = glob('*.' . $this->format); } + /*public function makeFilePath() + {}*/ + // fonctions CRUD (create - read - update - delete) + + // create - // tableau des noms des articles - public function getFiles() + // read + public function readAll() { - if($this->page == '') + $i = 0; + $articles = array(); + foreach ($this->files as $oneFile) { - die("debug: la méthode setPage() doit être appelée avant getFiles()."); + $articles[$i] = file_get_contents($oneFile); + $i++; } + //print_r($articles); + return $articles; + } + + // update + + // delete +} + +// article créé ou ciblé pour modification/suppression +class OneArticle extends AllArticles +{ + private $fileName; // correspond à $_SESSION['nomFichier'] - $this->files = glob('data/' . $this->page . '/html/*.html'); + // GET + public function getFileName() + { + return($this->fileName); } - // ordre du tableau des noms de fichiers - public function reverseFilesArray() + // SET + public function setFileName($nomFichier) // modification { - $this->files = array_reverse($this->files); + $this->fileName = $nomFichier; } + public function findFileName($numArticle) // nouvel article + { + $this->fileName = $this->files[$numArticle - 1]; + } // fonctions CRUD (create - read - update - delete) - // ce sont les 4 opérations de base qu'un programme doit permettre pour être complet - + // create public function create($content) { - if($this->page == '') - { - die("debug: la méthode setPage() doit être appelée avant toute autre."); - } - - // nommer les fichiers avec le timestamp - // - trie par ordre chronologique + $format = 'html'; + + // nommer les fichiers avec le timestamp pour: + // - les trier par ordre chronologique // - rendre quasi impossible d'avoir deux fois le même nom (à la condition de gérer la "concurrence") - $nom_fichier = 'data/' . $this->page . '/html/' . time() . '.html'; + $nom_fichier = 'data/' . $this->page . '/' . $format . '/' . $this->time . '.' . $format; - $fichier = fopen($nom_fichier, 'w'); // w peut créer un fichier, si il existe déjà, il est effacé par le nouveau contenu + $fichier = fopen($nom_fichier, 'w'); // w pour créer ou écraser fputs($fichier, $content); fclose($fichier); chmod($nom_fichier, 0666); } // read - public function getNumber() - { - return $this->nbArticles; - } - - public function getOne() + public function readOne() { return(file_get_contents($this->fileName)); } - public function getAll() - { - //$this->getFiles(); - - $i = 0; - $articles = array(); - foreach ($this->files as $file) - { - $articles[$i] = file_get_contents($file); - $i++; - } - - //print_r($articles); - return $articles; - } - - public function getDate($fileNumber) + // pour afficher des dates + /*public function getDate($fileNumber) { // le 2è paramètre exclut le suffixe .html $timestamp = basename($this->files[$fileNumber], '.html'); return getdate($timestamp); - } + }*/ // update public function update($content) { - $file = fopen($this->fileName, 'w'); - // w peut créer un fichier, si il existe déjà, il est effacé par le nouveau contenu + $file = fopen($this->fileName, 'w'); // crée ou écrase fputs($file, $content); fclose($file); //chown($this->fileName, 'http'); @@ -135,39 +145,55 @@ class ArticlesManager } } -// note: les pros font de l'hydration -// le code du modèle est orienté objet et "refactorisé" d'une manière précise: -// on utilise un objet pour une chose (des articles, commentaires, etc), -// un objet article contiendrait ainsi tout le nécessaire pour lire, écrire ou modifier un article -// 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 -class AlbumsManager extends ArticlesManager +class Album extends OneArticle { // variables - - // SET + //private $fileNameJSON; // même nom en .json + //protected $format = 'json'; // GET + // SET + // fonctions CRUD // create - //public function create($titre, $annee, $pochette) - public function create($content) - //public function create($content, $titre, $annee, $pochette) - {} + public function createVignette($titre, $annee, $pochette) + { + if($pochette != '') + { + // enregistrer le fichier + // retourner une erreur en cas d'échec de l'upload + } + + $albumJSON = json_encode([$titre, $annee, $pochette]); + + $nom_fichier = 'data/' . $this->page . '/' . $this->format . '/' . $this->time . '.' . $this->format; + + $fichier = fopen($nom_fichier, 'w'); // w pour créer ou écraser + fputs($fichier, $albumJSON); + fclose($fichier); + chmod($nom_fichier, 0666); + } // read public function read() {} // update - //public function update($titre, $annee, $pochette) - public function update($content) - //public function update($content, $titre, $annee, $pochette) + public function updateVignette($titre, $annee, $pochette) {} // delete public function delete() {} -} \ No newline at end of file +} + + + +// note: les pros font de l'hydration +// le code du modèle est orienté objet et "refactorisé" d'une manière précise: +// on utilise un objet pour une chose (des articles, commentaires, etc), +// un objet article contiendrait ainsi tout le nécessaire pour lire, écrire ou modifier un article +// 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 -- cgit v1.2.3