Save config filles automatically after adding new defaults

This commit is contained in:
Shoghi Cervantes Pueyo 2013-04-22 00:05:56 +02:00
parent 2f1e37ce6c
commit 70056b8d1f

View File

@ -106,7 +106,9 @@ class Config{
if(!is_array($this->config)){ if(!is_array($this->config)){
$this->config = $default; $this->config = $default;
} }
$this->fillDefaults($default, $this->config); if($this->fillDefaults($default, $this->config) > 0){
$this->save();
}
}else{ }else{
return false; return false;
} }
@ -169,16 +171,19 @@ class Config{
} }
private function fillDefaults($default, &$data){ private function fillDefaults($default, &$data){
$changed = 0;
foreach($default as $k => $v){ foreach($default as $k => $v){
if(is_array($v)){ if(is_array($v)){
if(!isset($data[$k]) or !is_array($data[$k])){ if(!isset($data[$k]) or !is_array($data[$k])){
$data[$k] = array(); $data[$k] = array();
} }
$this->fillDefaults($v, $data[$k]); $changed += $this->fillDefaults($v, $data[$k]);
}elseif(!isset($data[$k])){ }elseif(!isset($data[$k])){
$data[$k] = $v; $data[$k] = $v;
++$changed;
} }
} }
return $changed;
} }
private function parseList($content){ private function parseList($content){
@ -205,7 +210,7 @@ class Config{
} }
private function parseProperties($content){ private function parseProperties($content){
if(preg_match_all('/([a-zA-Z0-9\-_]*)=([^\r\n]*)/u', $content, $matches) > 0){ //false or 0 matches if(preg_match_all('/([a-zA-Z0-9\-_\.]*)=([^\r\n]*)/u', $content, $matches) > 0){ //false or 0 matches
foreach($matches[1] as $i => $k){ foreach($matches[1] as $i => $k){
$v = trim($matches[2][$i]); $v = trim($matches[2][$i]);
switch(strtolower($v)){ switch(strtolower($v)){