Files
FreshRSS/lib/Minz/Cache.php
Alexandre Alapetite 878e96202e 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.
2013-12-15 03:30:24 +01:00

117 lines
2.1 KiB
PHP

<?php
/**
* MINZ - Copyright 2011 Marien Fressinaud
* Sous licence AGPL3 <http://www.gnu.org/licenses/>
*/
/**
* La classe Cache permet de gérer facilement les pages en cache
*/
class Minz_Cache {
/**
* $expire timestamp auquel expire le cache de $url
*/
private $expire = 0;
/**
* $file est le nom du fichier de cache
*/
private $file = '';
/**
* $enabled permet de déterminer si le cache est activé
*/
private static $enabled = true;
/**
* Constructeur
*/
public function __construct () {
$this->_fileName ();
$this->_expire ();
}
/**
* Setteurs
*/
public function _fileName () {
$file = md5 (Minz_Request::getURI ());
$this->file = CACHE_PATH . '/'.$file;
}
public function _expire () {
if ($this->exist ()) {
$this->expire = filemtime ($this->file)
+ Minz_Configuration::delayCache ();
}
}
/**
* Permet de savoir si le cache est activé
* @return true si activé, false sinon
*/
public static function isEnabled () {
return Minz_Configuration::cacheEnabled () && self::$enabled;
}
/**
* Active / désactive le cache
*/
public static function switchOn () {
self::$enabled = true;
}
public static function switchOff () {
self::$enabled = false;
}
/**
* Détermine si le cache de $url a expiré ou non
* @return true si il a expiré, false sinon
*/
public function expired () {
return time () > $this->expire;
}
/**
* Affiche le contenu du cache
* @print le code html du cache
*/
public function render () {
if ($this->exist ()) {
include ($this->file);
}
}
/**
* Enregistre $html en cache
* @param $html le html à mettre en cache
*/
public function cache ($html) {
file_put_contents ($this->file, $html);
}
/**
* Permet de savoir si le cache existe
* @return true si il existe, false sinon
*/
public function exist () {
return file_exists ($this->file);
}
/**
* Nettoie le cache en supprimant tous les fichiers
*/
public static function clean () {
$files = opendir (CACHE_PATH);
while ($fic = readdir ($files)) {
if ($fic != '.' && $fic != '..') {
unlink (CACHE_PATH.'/'.$fic);
}
}
closedir ($files);
}
}