aboutsummaryrefslogtreecommitdiff
path: root/lib/Minz/ModelTxt.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-15 03:30:24 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-15 03:30:24 +0100
commit878e96202e8a22e4857b98e29b0a1fce68eccbc9 (patch)
treef9233c3b48a0cd6e0ac2536ddcc1897201595ad4 /lib/Minz/ModelTxt.php
parent4af233e1f736eb2256e5e1696418635165467855 (diff)
Grosse refactorisation pour permettre le chargement automatique des classes
C'est parti de changements pour https://github.com/marienfressinaud/FreshRSS/issues/255 et finalement j'ai continué la refactorisation... Ajout de préfixes FreshRSS_ et Minz_ sur le modèle de SimplePie_. Toutes les classes sont maintenant en chargement automatique (devrait améliorer les performances en évitant de charger plein de classes inutilisées, et faciliter la maintenance). Suppression de set_include_path(). Si souhaité, certaines classes de Minz pourraient être déplacées dans un sous-répertoire, par exemple les exceptions. Tests et relecture nécessaires.
Diffstat (limited to 'lib/Minz/ModelTxt.php')
-rw-r--r--lib/Minz/ModelTxt.php84
1 files changed, 84 insertions, 0 deletions
diff --git a/lib/Minz/ModelTxt.php b/lib/Minz/ModelTxt.php
new file mode 100644
index 000000000..8c5973f4d
--- /dev/null
+++ b/lib/Minz/ModelTxt.php
@@ -0,0 +1,84 @@
+<?php
+/**
+ * MINZ - Copyright 2011 Marien Fressinaud
+ * Sous licence AGPL3 <http://www.gnu.org/licenses/>
+*/
+
+/**
+ * La classe Model_txt représente le modèle interragissant avec les fichiers de type texte
+ */
+class Minz_ModelTxt {
+ /**
+ * $file représente le fichier à ouvrir
+ */
+ protected $file;
+
+ /**
+ * $filename est le nom du fichier
+ */
+ protected $filename;
+
+ /**
+ * Ouvre un fichier dans $file
+ * @param $nameFile nom du fichier à ouvrir
+ * @param $mode mode d'ouverture du fichier ('a+' par défaut)
+ * @exception FileNotExistException si le fichier n'existe pas
+ * > ou ne peux pas être ouvert
+ */
+ public function __construct ($nameFile, $mode = 'a+') {
+ $this->filename = $nameFile;
+ if (!file_exists($this->filename)) {
+ throw new Minz_FileNotExistException (
+ $this->filename,
+ Minz_Exception::WARNING
+ );
+ }
+
+ $this->file = @fopen ($this->filename, $mode);
+
+ if (!$this->file) {
+ throw new Minz_PermissionDeniedException (
+ $this->filename,
+ Minz_Exception::WARNING
+ );
+ }
+ }
+
+ /**
+ * Lit une ligne de $file
+ * @return une ligne du fichier
+ */
+ public function readLine () {
+ return fgets ($this->file);
+ }
+
+ /**
+ * Écrit une ligne dans $file
+ * @param $line la ligne à écrire
+ */
+ public function writeLine ($line, $newLine = true) {
+ $char = '';
+ if ($newLine) {
+ $char = "\n";
+ }
+
+ fwrite ($this->file, $line . $char);
+ }
+
+ /**
+ * Efface le fichier $file
+ * @return true en cas de succès, false sinon
+ */
+ public function erase () {
+ return ftruncate ($this->file, 0);
+ }
+
+ /**
+ * Ferme $file
+ */
+ public function __destruct () {
+ if (isset ($this->file)) {
+ fclose ($this->file);
+ }
+ }
+}