// // This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. // // To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/1.0/ // // or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. // // Francais (brouillon): http://creativecommons.org/projects/international/fr/translated-license // ////////////////////////////////////////////////////////////////////////////////////////////////////// // Système de cache // v0.1.3 class cache { var $err = array( "stop" => "oui", "log" => "oui", "debug" => "oui"); var $chemin = "../datas/"; // Gestion des erreurs function _err($err,$debug="") { // Si le debug est activé if($this->err[debug] == "oui" && !empty($debug)) $err.= "\n// DEBUG //\n".$debug; // Si on log les erreurs if($this->err[log] == "oui") $this->erreurs[] = $err; // Si on s'arrête sur les erreurs if($this->err[stop] == "oui") { echo "
".htmlentities(stripslashes($err))."
"; exit; } $this->erreur = $err; return FALSE; } function creer($journal,$url,$contenu) { $url = $this->chemin."cache/{$journal}/".$url; $fp = @fopen($url,"w"); if(!$fp) return $this->_err("Problème technique.","Ne peux ouvrir {$url}"); fputs($fp,$contenu); fclose($fp); return $url; } function supprimer($journal,$url) { if(!file_exists($this->chemin."cache/".$journal."/".$url)) return TRUE; if(!unlink($this->chemin."cache/".$journal."/".$url)) return $this->_err("Problème technique.","Impossible de supprimer ".$this->chemin."cache/".$journal."/".$url); return TRUE; } function suppr_ecrit($journal,$id) { $requete = "SELECT date,name FROM ecrits WHERE journal='{$journal}' AND id='{$id}'"; $res = mysql_query($requete); if(!$res) return FALSE; $rec = mysql_fetch_assoc($res); $this->supprimer($journal,date("Y_m_d_",$rec[date]).$id); if(!empty($rec[name])) $this->supprimer($journal,date("Y_m_d_",$rec[date]).$rec[name]); $this->supprimer($journal,date("Y_m",$rec[date])); return TRUE; } function vider_forum($journal) { $h = opendir($this->chemin."cache/".$journal); $base = $this->chemin."cache/".$journal."/"; while($d = readdir($h)) { if(substr($d,0,5) == "forum") $this->supprimer($journal,$d); } closedir($h); return TRUE; } function vider_forum_mois($journal,$mois) { $h = opendir($this->chemin."cache/".$journal); $base = $this->chemin."cache/".$journal."/"; $mois = substr($mois,0,4)."_".substr($mois,4); while($d = readdir($h)) { if(substr($d,0,13) == "forum_".$mois) { if(!$this->supprimer($journal,$d)) return FALSE; } } closedir($h); return TRUE; } function vider($journal) { $h = opendir($this->chemin."cache/".$journal); $base = $this->chemin."cache/".$journal."/"; while($d = readdir($h)) { if(substr($d,0,1) != ".") $this->supprimer($journal,$d); } closedir($h); return TRUE; } } ?>