filename = APPLICATION_PATH.'/../cache/pages/'.$name.$this->extension; } /** * Détermine si le fichier de cache existe et qu'il n'est pas périmé */ public function exist() { //Fichier inexistant if ( !file_exists($this->filename) ) { return false; } //Ficher timeover if ( $this->timeover($this->filename) ) { return false; } return true; } /** * Encode les données pour les placer dans le cache * @param unknown_type $array */ public function setBlock($array) { //Ajout des blocs sérialisés if(!empty($this->filename)){ $data = base64_encode(serialize($array)); if( !$this->_writefile($data, $this->filename) ) { return true; } } return false; } /** * Récupére les données du cache et les décode */ public function getBlock() { $cache = $this->_readfile($this->filename); if(isset($cache)){ //Traitement $block = unserialize(base64_decode($cache)); return $block; } else { return false; } } /** * Détermine suivant la date de fichier si celui-ci est périmé */ protected function timeover() { $dateFile = filemtime($this->filename); $now = mktime(date('G'), date('i'), date('s'), date("m") , date("d"), date("Y")); $maxTime = mktime( date('G',$dateFile)+$this->maxTime, date('i',$dateFile), date('s',$dateFile), date("m",$dateFile), date("d",$dateFile), date("Y",$dateFile)); if( $now>$maxTime ) { return true; } return false; } /** * Supprime le fichier de cache */ public function deletefile() { if(file_exists($this->filename)) return unlink($this->filename); else return false; } /** * Lit une ligne dans le fichier */ protected function _readfile() { if ( ($this->filename != $this->file_loaded) ) { $this->file_loaded = $this->filename; if (is_file($this->filename)) { $cache = file_get_contents($this->filename); $this->cache = $cache; } $this->cache_loaded = true; } else { $cache = $this->cache; } return $cache; } /** * Ecrit une ligne dans le fichier * @param string $line */ protected function _writefile($line) { $fp = fopen($this->filename,'a'); $result = fwrite($fp,$line."\n"); fclose($fp); return $result; } }