> ------------------------------------------------------------------------------ This is the class for read&write the conf files --------------------------------------------------------------------------- */ class Conf { protected $fileName=""; protected $values=Array(); public function __construct($fileName="") { $this->setFileName($fileName); } public function __destruct() { unset($this->values); } public function read($reset=true) { if(file_exists($this->fileName) and (filesize($this->fileName)>0)) { $fHandle=fopen($this->fileName, "r"); if($fHandle) { $fileContent=fread($fHandle, filesize($this->fileName)); fclose($fHandle); //replace all the '#' char by a ';' char $fileContent=preg_replace('/^(\s*#)/im', ';', $fileContent); $tmpFile=tempnam(dirname(__FILE__), "INI"); $fHandle=fopen($tmpFile, "w"); fwrite($fHandle, $fileContent); fclose($fHandle); if($reset) { unset($this->values); $this->values=Array(); } $values=parse_ini_file($tmpFile); foreach($values as $key => $val) { $this->values[$key] = html_entity_decode($val); } unlink($tmpFile); return(true); } } return(false); } public function write() { if(!file_exists(dirname($this->fileName))) { mkdir(dirname($this->fileName),0777,true); } $fHandle=fopen($this->fileName, "w"); if($fHandle) { foreach($this->values as $key => $val) { if(is_string($val)) { fwrite($fHandle, $key.'="'.htmlentities(str_replace(Array("\r\n", "\n", "\r"),"",$val))."\"\n"); } elseif(is_bool($val)) { fwrite($fHandle, $key.'='.($val?'true':'false')."\n"); } else { fwrite($fHandle, $key.'='.$val."\n"); } } fclose($fHandle); return(true); } return(false); } public function setFileName($fileName) { if($fileName!="") { $this->fileName=$fileName; } return($this->fileName); } public function getFileName($fileName) { return($this->fileName); } public function getConf() { return($this->values); } public function confExists($key) { return(array_key_exists($key, $this->values)); } public function getConfValue($key) { if(array_key_exists($key, $this->values)) { return($this->values[$key]); } return(""); } public function setConf($values, $reset=true) { if(is_array($values)) { if($reset) { unset($this->values); $this->values=Array(); } foreach($values as $key => $val) { $this->values[$key]=$val; } } return($this->values); } /** * function used to initialize config file * */ static public function init($theme) { $forcedToDefault=array( "imageCenterMode" => '', "imageCenterOffset" => '', "imageCenterTopMin" => '', "imageCenterTopBorder" => '', "interfaceAnimated" => '', "commentAnimated" => '', "animateDelay" => '', "marginContainer" => '', "paddingContainer" => '', "tabsAnimated" => '', "tabsHidden" => '', "tabsVisible" => '', "tabsPosition" => '', "commentRows" => '', "menuAnimated" => '', "menuWidth" => '', "menuMaxWidth" => '', "menuMSIEMaxWidth" => '', "imageSimulateHighRes" => '', "imageScrollMinDeadArea" => '' //"expandMenu" => '', ); $gallyDefault = new Conf(); $gallyDefault->setFileName(PHPWG_ROOT_PATH."themes/gally-default/conf/default.conf"); $gallyDefault->read(); $configDefault = new Conf(); $configDefault->setFileName(PHPWG_ROOT_PATH."themes/$theme/conf/default.conf"); $configDefault->read(); $configLocal = new Conf(); $configLocal->setFileName(PHPWG_ROOT_PATH."local/themes/$theme/conf/local.conf"); $configLocal->read(); foreach($forcedToDefault as $key => $param) { if($gallyDefault->confExists($key)) $forcedToDefault[$key]=$gallyDefault->getConfValue($key); if($configDefault->confExists($key)) $forcedToDefault[$key]=$configDefault->getConfValue($key); } $configLocal->setConf($forcedToDefault, false); $configLocal->write(); } } ?>