You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
2.1 KiB
116 lines
2.1 KiB
<?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 (Request::getURI ()); |
|
|
|
$this->file = CACHE_PATH . '/'.$file; |
|
} |
|
|
|
public function _expire () { |
|
if ($this->exist ()) { |
|
$this->expire = filemtime ($this->file) |
|
+ Configuration::delayCache (); |
|
} |
|
} |
|
|
|
/** |
|
* Permet de savoir si le cache est activé |
|
* @return true si activé, false sinon |
|
*/ |
|
public static function isEnabled () { |
|
return 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); |
|
} |
|
}
|
|
|