File indexing completed on 2024-12-22 05:33:23
0001 <?php 0002 0003 /* 0004 * GFX 4 0005 * 0006 * support: happy.snizzo@gmail.com 0007 * website: http://www.gfx3.org 0008 * credits: Claudio Desideri 0009 * 0010 * This software is released under the MIT License. 0011 * http://opensource.org/licenses/mit-license.php 0012 */ 0013 0014 /* 0015 * This class aims to manage all the gfx config in general contained in gfx3/config. 0016 */ 0017 0018 class EConfig{ 0019 0020 private static $safe_path; 0021 private static $config_path; 0022 public static $data; 0023 0024 public static function load(){ 0025 EConfig::$safe_path = getcwd(); 0026 EConfig::load_all(); 0027 //after loading all the confs restore previous working directory 0028 chdir(EConfig::$safe_path); 0029 } 0030 0031 public static function print_debug_info(){ 0032 var_dump(EConfig::$data); 0033 } 0034 0035 /* 0036 * Takes an array and returns the same array of strings without 0037 * every string of php code. 0038 */ 0039 public static function erase_php_code($lines){ 0040 $result = array(); 0041 $inside = false; 0042 foreach($lines as $line){ 0043 //if opening php string found, count as we're inside php code 0044 if(stristr($line, '<?php')){ 0045 $inside = true; 0046 } 0047 //if this is not php code, copy line 0048 if(!$inside){ 0049 $result[] = $line; 0050 } 0051 //if closing php string is found, we're not. 0052 if(stristr($line, '?>')){ 0053 $inside = false; 0054 } 0055 } 0056 return $result; 0057 } 0058 0059 /* 0060 * returns a parsed file array mapped as 0061 * $array[$key] = $value 0062 */ 0063 public static function parse_file($filename){ 0064 //initializing empty array 0065 $result = array(); 0066 0067 //mapping file line per line 0068 //$cache = new ECacheFile($filename); 0069 //$file = $cache->get(); 0070 //$file = explode("\n",$file); 0071 $file = file($filename); 0072 $file = EConfig::erase_php_code($file); 0073 foreach($file as $line){ 0074 if(!empty($line)){ 0075 $chunks = explode("|",$line); 0076 //gives correct key and correct value, erasing line break. 0077 //control if is set more than once 0078 if(isset($result[$chunks[0]])){ 0079 //ELog::warning("<b>".$chunks[0]."</b> property is set more than once in ".$filename." config file!"); 0080 } else 0081 //control if is set to empty value 0082 if(count($chunks)<2){ 0083 ELog::warning("<b>".$chunks[0]."</b> property has empty value in ".$filename." config file!"); 0084 } else 0085 //load 1:1 data and gives a simple value 0086 if(count($chunks)==2){ 0087 $result[$chunks[0]] = rtrim($chunks[1], "\n"); 0088 } else 0089 //load 1:n data and gives an array 0090 if(count($chunks)>2){ 0091 $data = array(); 0092 for($i=1;$i<count($chunks);$i++){ 0093 $data[] = rtrim($chunks[$i], "\n"); 0094 } 0095 0096 $result[$chunks[0]] = $data; 0097 } else { 0098 ELog::error("unknown error in EConfig loading"); 0099 } 0100 } 0101 } 0102 return $result; 0103 } 0104 0105 /* 0106 * return an array with every config file merged 0107 */ 0108 public static function load_all(){ 0109 EConfig::$data = array(); 0110 //enters in conf directory 0111 chdir(ELoader::$config_path); 0112 //parse every single conf file and place it in an associative array 0113 foreach(glob("*") as $filename){ 0114 $name = EFileSystem::get_file_name($filename); 0115 EConfig::$data[$name] = EConfig::parse_file($filename); 0116 } 0117 } 0118 0119 } 0120 0121 ?>