valeur ... Suppression des valeurs inutiles */ define('CACHE_MAXTIME', 2); //HEURES MAXIMUM EN CACHE define('CACHE_REFRESH_HOUR', 14); //Heure de rafraichissement des pages define('CACHE_EXT','.tpl'); /** * Retourne le chemin du fichier avec son extension * Si en argument une chaine de caractère est envoyé alors on définit que c'est le nom du fichier * Sinon le nom du fichier est enregistré en mémoire pour chaque appel * @return string */ function cache_filename(){ static $filename; $numargs = func_num_args(); if($numargs != 0){ $args = func_get_args(); $filename = PATH_SITE.'/cache/'.$args[0].CACHE_EXT; } return $filename; } /** * Enregistre les données d'un bloc dans le cache * @param string $block * Le nom du bloc * @param array $array * Le tableau de données (clé => valeur) à stocker sous forme sérialisé * @return boolean */ function cache_add($block, $array){ global $firephp; //Traitement $array = cache_htmlencode($array); //Ajout des blocs sérialisés $file = cache_filename(); $firephp->log($file, 'CACHE ADD : Fichier'); if($file != ''){ $data = $block.' = '.serialize($array); if( cache_writefile($file,$data) !== FALSE ) return TRUE; else return FALSE; }else return FALSE; } /** * Récupére les variables en cache depuis le fichier. * @return array ou FALSE */ function cache_get($block){ global $firephp; $file = cache_filename(); $firephp->log($file, 'CACHE GET : Fichier '); $cache = cache_readfile($file); $firephp->log($cache, 'CACHE GET : Content'); if(isset($cache[$block])){ //Traitement $block = unserialize($cache[$block]); $block = cache_htmldecode($block); return $block; }else return FALSE; } /** * Suppression du cache pour la page en cours. * @return boolean */ function cache_delete(){ $file = cache_filename(); if(file_exists($file)) return unlink($file); else return FALSE; } /** * Vérifie que le fichier est disponible dans le cache * @param $file * Chemin vers le fichier que l'on veut vérifier * @return boolean * Retourne TRUE ou FALSE */ function cache_exist(){ $file = cache_filename(); if( file_exists($file) && !cache_timeover($file) ) return TRUE; else return FALSE; } /** * Vérifie si la date de création du fichier de cache est toujours valide * @param $file * Chemin vers le fichier que l'on veut vérifier * @return boolean * Retourne TRUE or FALSE */ function cache_timeover($file){ global $firephp; $dateFile = filemtime($file); $now= mktime(date('G'), date('i'), date('s'), date("m") , date("d"), date("Y")); $maxTime = mktime(date('G',$dateFile)+CACHE_MAXTIME, date('i',$dateFile), date('s',$dateFile), date("m",$dateFile), date("d",$dateFile), date("Y",$dateFile)); $refreshHour = mktime(CACHE_REFRESH_HOUR, 0, 0, date("m"), date("d"), date("Y")); //Debug //$firephp->log(date('G:i:s - d/m/Y',$dateFile), 'CACHE : dateFile '); //$firephp->log(date('G:i:s - d/m/Y',$now), 'CACHE : now '); //$firephp->log(date('G:i:s - d/m/Y',$maxTime), 'CACHE : MaxTime'); //$firephp->log(date('G:i:s - d/m/Y',$refreshHour), 'CACHE : RefreshHour '); //Fin Debug if( ($now>$maxTime) || ($dateFile<$refreshHour && $now>$refreshHour) ) return TRUE; else return FALSE; } /** * Ecrit une ligne dans un fichier * @param $file * Le chemin du ficher à écrire * @param $line * Une chaîne de caractère * @return boolean ou le nombre d'octet écrit */ function cache_writefile($file, $line){ $fp = fopen($file,'a'); $result = fwrite($fp,$line.EOL); fclose($fp); return $result; } /** * Lit le fichier de cache ligne par ligne * @param $file * Chemin du fichier à lire * @return array * Retourne un tableau de valeur ou FALSE si le fichier n'a pu être trouvé */ function cache_readfile($file){ global $firephp; static $cache_loaded = FALSE; static $cache = array(); if (!$cache_loaded) { if (is_file($file)) { $lines = file($file); $firephp->info('Lecture du ficher'); foreach ($lines as $line_num => $line) { list($key, $value) = explode(' = ', $line, 2); $cache[$key] = $value; } } $cache_loaded = TRUE; } return $cache; } function cache_htmldecode($value){ $value = is_array($value) ? array_map('cache_htmldecode', $value) : base64_decode($value); return $value; } function cache_htmlencode($value){ $value = is_array($value) ? array_map('cache_htmlencode', $value) : base64_encode($value); return $value; } ?>