diff options
Diffstat (limited to 'model/Article.php')
| -rw-r--r-- | model/Article.php | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/model/Article.php b/model/Article.php new file mode 100644 index 0000000..e640174 --- /dev/null +++ b/model/Article.php | |||
| @@ -0,0 +1,125 @@ | |||
| 1 | <?php | ||
| 2 | // model/Article.php | ||
| 3 | |||
| 4 | // structure de données de la variable $fileList | ||
| 5 | // on a 3 possibilités (on prendra la 3ème): | ||
| 6 | |||
| 7 | // - un tableau simple contenant des tableaux associatifs (avec des index façon BDD) | ||
| 8 | // $fileList[0] => [$fileCode => 'code', $fileName => 'nom, $content => 'contenu'], | ||
| 9 | |||
| 10 | // - un tableau associatif contenant des tableaux simples | ||
| 11 | // les catégories sont au premier niveau | ||
| 12 | // mauvaise idée, risque de croiser les fichiers | ||
| 13 | // $fileList['fileCode'] => [$fileCode1, $fileCode2] | ||
| 14 | // $fileList['fileName'] => [$fileName1, $fileName2], etc | ||
| 15 | |||
| 16 | // - un tableau associatif contenant des tableaux associatifs | ||
| 17 | // les catégories sont au deuxième niveau | ||
| 18 | // $fileList[$fileCode] => [$fileName => 'code', $content => 'contenu'], etc | ||
| 19 | |||
| 20 | |||
| 21 | class Article | ||
| 22 | { | ||
| 23 | // pour tous les articles | ||
| 24 | public $page; // page et donc dossier concerné | ||
| 25 | public $format = 'html'; // vaut 'html' ou 'json' | ||
| 26 | public $fileListCount; | ||
| 27 | public $fileList; // = toutes les données | ||
| 28 | //protected $articles; // contenu de toute la page | ||
| 29 | //protected $nbArticles; // un fichier = un article | ||
| 30 | |||
| 31 | // pour un article (ou album) spécifique | ||
| 32 | //public $fileName = ''; // = $_SESSION['nomFichier'] | ||
| 33 | public $fileCode = ''; // $_SESSION['target'] | ||
| 34 | protected $time; // timestamp pour noms des fichiers créés | ||
| 35 | |||
| 36 | public function __construct($page) | ||
| 37 | { | ||
| 38 | $this->page = $page; | ||
| 39 | $this->time = time(); | ||
| 40 | $this->makeFileList(); | ||
| 41 | } | ||
| 42 | |||
| 43 | // tableaux des noms des fichiers | ||
| 44 | // noter que le chemin et l'extension ne varient pas | ||
| 45 | public function makeFileList() | ||
| 46 | { | ||
| 47 | // globbing = utiliser un pattern pour cibler des fichiers | ||
| 48 | $nameList = glob('data/' . $this->page . '/' . $this->format . '/*.' . $this->format); | ||
| 49 | |||
| 50 | $this->fileListCount = count($nameList); | ||
| 51 | |||
| 52 | for($i = 0; $i < $this->fileListCount; $i++) | ||
| 53 | { | ||
| 54 | $pathInfo = pathinfo($nameList[$i]); | ||
| 55 | $fileCode = $pathInfo['filename']; | ||
| 56 | $this->fileList[$i] = [ | ||
| 57 | 'fileCode' => $fileCode, | ||
| 58 | 'fileName' => $nameList[$i], | ||
| 59 | 'content' => '', | ||
| 60 | //'date' => getdate() // peut-être utile plus tard | ||
| 61 | ]; | ||
| 62 | } | ||
| 63 | //var_dump($this->fileList); die(); | ||
| 64 | } | ||
| 65 | |||
| 66 | // GET | ||
| 67 | |||
| 68 | // SET | ||
| 69 | public function setFileName() | ||
| 70 | { | ||
| 71 | if(file_exists('data/' . $this->page . '/' . $this->format . '/' . $this->fileCode . '.' . $this->format)) | ||
| 72 | { | ||
| 73 | $this->fileName = 'data/' . $this->page . '/' . $this->format . '/' . $this->fileCode . '.' . $this->format; | ||
| 74 | } | ||
| 75 | } | ||
| 76 | |||
| 77 | // fonctions CRUD (create - read - update - delete) | ||
| 78 | |||
| 79 | // create | ||
| 80 | public function create($content) | ||
| 81 | { | ||
| 82 | //$format = 'html'; | ||
| 83 | |||
| 84 | // nommer les fichiers avec le timestamp pour: | ||
| 85 | // - les trier par ordre chronologique | ||
| 86 | // - rendre quasi impossible d'avoir deux fois le même nom (à la condition de gérer la "concurrence") | ||
| 87 | $nom_fichier = 'data/' . $this->page . '/' . $this->format . '/' . $this->time . '.' . $this->format; | ||
| 88 | |||
| 89 | $fichier = fopen($nom_fichier, 'w'); // w pour créer ou écraser | ||
| 90 | fputs($fichier, $content); | ||
| 91 | fclose($fichier); | ||
| 92 | chmod($nom_fichier, 0666); | ||
| 93 | } | ||
| 94 | |||
| 95 | // read | ||
| 96 | public function readAll() // ajoute le contenu à FileList | ||
| 97 | { | ||
| 98 | for($i = 0; $i < $this->fileListCount; $i++) | ||
| 99 | { | ||
| 100 | $this->fileList[$i]['content'] = file_get_contents($this->fileList[$i]['fileName']); | ||
| 101 | } | ||
| 102 | } | ||
| 103 | public function readOne() | ||
| 104 | { | ||
| 105 | //return(file_get_contents($this->fileName)); | ||
| 106 | return(file_get_contents('data/' . $this->page . '/' . $this->format . '/' . $this->fileCode . '.' . $this->format)); | ||
| 107 | } | ||
| 108 | |||
| 109 | // update | ||
| 110 | public function update($content) | ||
| 111 | { | ||
| 112 | // 'w' crée ou écrase | ||
| 113 | $file = fopen('data/' . $this->page . '/' . $this->format . '/' . $this->fileCode . '.' . $this->format, 'w'); | ||
| 114 | fputs($file, $content); | ||
| 115 | fclose($file); | ||
| 116 | //chown($this->fileName, 'http'); | ||
| 117 | chmod($this->fileName, 0666); | ||
| 118 | } | ||
| 119 | |||
| 120 | // delete | ||
| 121 | public function delete() | ||
| 122 | { | ||
| 123 | unlink('data/' . $this->page . '/' . $this->format . '/' . $this->fileCode . '.' . $this->format); | ||
| 124 | } | ||
| 125 | } | ||
