Subversion Repositories Applications.framework

Rev

Rev 89 | Rev 98 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 89 Rev 91
1
<?php
1
<?php
2
/**
2
/**
3
 * Config permet de charger automatiquement les fichiers ini du Framework et de l'application.
3
 * Config permet de charger automatiquement les fichiers ini du Framework et de l'application.
4
 * Elle offre l'accès en lecture seule aux paramêtres de config.
4
 * Elle offre l'accès en lecture seule aux paramêtres de config.
5
 * C'est une Singleton.
5
 * C'est une Singleton.
6
 * 
6
 * 
7
 * PHP Version 5 
7
 * PHP Version 5 
8
 * 
8
 * 
9
 * @category  PHP
9
 * @category  PHP
10
 * @package   Framework
10
 * @package   Framework
11
 * @author    Jean-Pascal MILCENT <jpm@tela-botanica.org>
11
 * @author    Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @copyright 2009 Tela-Botanica
12
 * @copyright 2009 Tela-Botanica
13
 * @license   GPL-v3 et CECILL-v2  
13
 * @license   GPL-v3 et CECILL-v2  
14
 * @version   SVN: <svn_id> 
14
 * @version   SVN: <svn_id> 
15
 * @link      /doc/framework/ 
15
 * @link      /doc/framework/ 
16
 */
16
 */
17
 
17
 
18
class Config {
18
class Config {
19
   
19
   
20
	private static $instance = null;
20
	private static $instance = null;
21
	private static $parametres = array();
21
	private static $parametres = array();
22
	
22
	
23
	private function __construct() {
23
	private function __construct() {
24
		self::$parametres = array(
24
		self::$parametres = array(
25
			'fw_fichier_config' => 'config%s.ini',
25
			'fw_fichier_config' => 'config%s.ini',
26
			'fw_chemin' => dirname(__FILE__).DS,
26
			'fw_chemin' => dirname(__FILE__).DS
27
			'chemin_appli' => dirname($_SERVER['SCRIPT_FILENAME'].DS),
-
 
28
			);
27
			);
29
		self::parserFichierIni(self::$parametres['fw_chemin'].sprintf(self::$parametres['fw_fichier_config'], ''));
28
		self::parserFichierIni(self::$parametres['fw_chemin'].sprintf(self::$parametres['fw_fichier_config'], ''));
30
		
29
		
31
		$chemin_config_appli_contextuel = self::$parametres['dossier_configurations'];
30
		$chemin_config_appli_contextuel = self::$parametres['dossier_configurations'];
32
		if (defined('PAP_VERSION')) {
31
		if (defined('PAP_VERSION')) {
33
			$chemin_config_appli_contextuel .= sprintf(self::$parametres['fw_fichier_config'], '_papyrus');
32
			$chemin_config_appli_contextuel .= sprintf(self::$parametres['fw_fichier_config'], '_papyrus');
34
		} else {
33
		} else {
35
			$chemin_config_appli_contextuel .= sprintf(self::$parametres['fw_fichier_config'], '');
34
			$chemin_config_appli_contextuel .= sprintf(self::$parametres['fw_fichier_config'], '');
36
		}
35
		}
37
		self::parserFichierIni($chemin_config_appli_contextuel);
36
		self::parserFichierIni($chemin_config_appli_contextuel);
38
		
37
		
39
	}
38
	}
40
 
39
 
41
	private static function parserFichierIni($fichier_ini) {
40
	private static function parserFichierIni($fichier_ini) {
42
    	$retour = false;
41
    	$retour = false;
43
		if (file_exists($fichier_ini)) {
42
		if (file_exists($fichier_ini)) {
44
			$aso_ini = parse_ini_file($fichier_ini, true);
43
			$ini = parse_ini_file($fichier_ini, true);
45
			$aso_ini = self::evaluerPhp($aso_ini);
44
			$ini = self::evaluerPhp($ini);
46
			self::$parametres = array_merge(self::$parametres, $aso_ini);
45
			self::fusionner($ini);
47
	    	$retour = true;
46
	    	$retour = true;
48
    	}
47
    	}
49
    	return $retour;
48
    	return $retour;
50
	}
49
	}
-
 
50
	
-
 
51
	private static function fusionner(array $ini) {
-
 
52
		self::$parametres = array_merge(self::$parametres, $ini);
-
 
53
	}
51
	
54
	
52
	public static function charger($fichier_ini) {
55
	public static function charger($fichier_ini) {
53
		self::verifierCreationInstance();
56
		self::verifierCreationInstance();
54
		return self::parserFichierIni($fichier_ini);
57
		return self::parserFichierIni($fichier_ini);
55
	}
58
	}
56
	
59
	
57
	public static function get($param) {
60
	public static function get($param) {
58
		$retour = '';
61
		$retour = '';
59
		self::verifierCreationInstance();
62
		self::verifierCreationInstance();
60
		if (isset(self::$parametres[$param])) {
63
		if (isset(self::$parametres[$param])) {
61
			$retour = self::$parametres[$param];
64
			$retour = self::$parametres[$param];
62
		}
65
		}
63
		return $retour;
66
		return $retour;
64
	}
67
	}
65
	
68
	
66
	public static function getSection($section, $param = null) {
69
	public static function getSection($section, $param = null) {
67
		$retour = '';
70
		$retour = '';
68
		self::verifierCreationInstance();
71
		self::verifierCreationInstance();
69
		if (isset(self::$parametres[$section])) {
72
		if (isset(self::$parametres[$section])) {
70
			if (!is_null($param)) {
73
			if (!is_null($param)) {
71
				if (isset(self::$parametres[$section][$param])) {
74
				if (isset(self::$parametres[$section][$param])) {
72
					$retour = self::$parametres[$section][$param];
75
					$retour = self::$parametres[$section][$param];
73
				}	
76
				}	
74
			} else {
77
			} else {
75
				$retour = self::$parametres[$section];
78
				$retour = self::$parametres[$section];
76
			}
79
			}
77
		}
80
		}
78
		return $retour;
81
		return $retour;
79
	}
82
	}
80
	
83
	
81
	public static function existe($param) {
84
	public static function existe($param) {
82
		$retour = false;
85
		$retour = false;
83
		self::verifierCreationInstance();
86
		self::verifierCreationInstance();
84
		if (isset(self::$parametres[$param])) {
87
		if (isset(self::$parametres[$param])) {
85
			$retour = true;
88
			$retour = true;
86
		}
89
		}
87
		return $retour;
90
		return $retour;
88
	}
91
	}
89
	
92
	
90
	public static function existeSection($section, $param = null) {
93
	public static function existeSection($section, $param = null) {
91
		$retour = false;
94
		$retour = false;
92
		self::verifierCreationInstance();
95
		self::verifierCreationInstance();
93
		if (isset(self::$parametres[$section])) {
96
		if (isset(self::$parametres[$section])) {
94
			if (!is_null($param)) {
97
			if (!is_null($param)) {
95
				if (isset(self::$parametres[$section][$param])) {
98
				if (isset(self::$parametres[$section][$param])) {
96
					$retour = true;
99
					$retour = true;
97
				}	
100
				}	
98
			} else {
101
			} else {
99
				$retour = true;
102
				$retour = true;
100
			}
103
			}
101
		}
104
		}
102
		return $retour;
105
		return $retour;
103
	}
106
	}
104
	
107
	
105
	private static function verifierCreationInstance() {
108
	private static function verifierCreationInstance() {
106
		if (empty(self::$instance)) {
109
		if (empty(self::$instance)) {
107
			self::$instance = new Config();  
110
			self::$instance = new Config();  
108
		}
111
		}
109
	}
112
	}
110
	
113
	
111
	private static function evaluerPhp($tableau_a_analyser) {
114
	private static function evaluerPhp($tableau_a_analyser) {
112
		if (is_array($tableau_a_analyser)) {
115
		if (is_array($tableau_a_analyser)) {
113
			foreach ($tableau_a_analyser as $cle => $valeur) {
116
			foreach ($tableau_a_analyser as $cle => $valeur) {
114
	    		if (is_array($valeur)) {
117
	    		if (is_array($valeur)) {
115
	    			$tableau_a_analyser[$cle] = self::evaluerPhp($valeur);
118
	    			$tableau_a_analyser[$cle] = self::evaluerPhp($valeur);
116
	    		} else {
119
	    		} else {
117
					if (preg_match('/^php:(.+)$/', $valeur, $correspondances)) {
120
					if (preg_match('/^php:(.+)$/', $valeur, $correspondances)) {
118
		    			eval('$tableau_a_analyser["'.$cle.'"] = '.$correspondances[1].';');
121
		    			eval('$tableau_a_analyser["'.$cle.'"] = '.$correspondances[1].';');
119
		    		} else {
122
		    		} else {
120
		    			$tableau_a_analyser[$cle] = $valeur;
123
		    			$tableau_a_analyser[$cle] = $valeur;
121
		    		}
124
		    		}
122
	    		}
125
	    		}
123
	    	}
126
	    	}
124
		}
127
		}
125
		return $tableau_a_analyser;
128
		return $tableau_a_analyser;
126
	}
129
	}
127
}
130
}
128
?>
131
?>