Subversion Repositories Applications.framework

Rev

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

Rev 80 Rev 89
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.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),
27
			'chemin_appli' => dirname($_SERVER['SCRIPT_FILENAME'].DS),
28
			);
28
			);
29
		self::parserFichierIni(self::$parametres['fw_chemin'].self::$parametres['fw_fichier_config']);
29
		self::parserFichierIni(self::$parametres['fw_chemin'].sprintf(self::$parametres['fw_fichier_config'], ''));
-
 
30
		
-
 
31
		$chemin_config_appli_contextuel = self::$parametres['dossier_configurations'];
-
 
32
		if (defined('PAP_VERSION')) {
-
 
33
			$chemin_config_appli_contextuel .= sprintf(self::$parametres['fw_fichier_config'], '_papyrus');
-
 
34
		} else {
30
		self::parserFichierIni(self::$parametres['chemin_appli'].self::$parametres['fw_fichier_config']);
35
			$chemin_config_appli_contextuel .= sprintf(self::$parametres['fw_fichier_config'], '');
-
 
36
		}
-
 
37
		self::parserFichierIni($chemin_config_appli_contextuel);
31
		
38
		
32
	}
39
	}
33
 
40
 
34
	private static function parserFichierIni($fichier_ini) {
41
	private static function parserFichierIni($fichier_ini) {
35
    	$retour = false;
42
    	$retour = false;
36
		if (file_exists($fichier_ini)) {
43
		if (file_exists($fichier_ini)) {
37
			$aso_ini = parse_ini_file($fichier_ini, true);
44
			$aso_ini = parse_ini_file($fichier_ini, true);
38
			$aso_ini = self::evaluerPhp($aso_ini);
45
			$aso_ini = self::evaluerPhp($aso_ini);
39
			self::$parametres = array_merge(self::$parametres, $aso_ini);
46
			self::$parametres = array_merge(self::$parametres, $aso_ini);
40
	    	$retour = true;
47
	    	$retour = true;
41
    	}
48
    	}
42
    	return $retour;
49
    	return $retour;
43
	}
50
	}
44
	
51
	
45
	public static function charger($fichier_ini) {
52
	public static function charger($fichier_ini) {
46
		self::verifierCreationInstance();
53
		self::verifierCreationInstance();
47
		return self::parserFichierIni($fichier_ini);
54
		return self::parserFichierIni($fichier_ini);
48
	}
55
	}
49
	
56
	
50
	public static function get($param) {
57
	public static function get($param) {
51
		$retour = '';
58
		$retour = '';
52
		self::verifierCreationInstance();
59
		self::verifierCreationInstance();
53
		if (isset(self::$parametres[$param])) {
60
		if (isset(self::$parametres[$param])) {
54
			$retour = self::$parametres[$param];
61
			$retour = self::$parametres[$param];
55
		}
62
		}
56
		return $retour;
63
		return $retour;
57
	}
64
	}
58
	
65
	
59
	public static function getSection($section, $param = null) {
66
	public static function getSection($section, $param = null) {
60
		$retour = '';
67
		$retour = '';
61
		self::verifierCreationInstance();
68
		self::verifierCreationInstance();
62
		if (isset(self::$parametres[$section])) {
69
		if (isset(self::$parametres[$section])) {
63
			if (!is_null($param)) {
70
			if (!is_null($param)) {
64
				if (isset(self::$parametres[$section][$param])) {
71
				if (isset(self::$parametres[$section][$param])) {
65
					$retour = self::$parametres[$section][$param];
72
					$retour = self::$parametres[$section][$param];
66
				}	
73
				}	
67
			} else {
74
			} else {
68
				$retour = self::$parametres[$section];
75
				$retour = self::$parametres[$section];
69
			}
76
			}
70
		}
77
		}
71
		return $retour;
78
		return $retour;
72
	}
79
	}
73
	
80
	
74
	public static function existe($param) {
81
	public static function existe($param) {
75
		$retour = false;
82
		$retour = false;
76
		self::verifierCreationInstance();
83
		self::verifierCreationInstance();
77
		if (isset(self::$parametres[$param])) {
84
		if (isset(self::$parametres[$param])) {
78
			$retour = true;
85
			$retour = true;
79
		}
86
		}
80
		return $retour;
87
		return $retour;
81
	}
88
	}
82
	
89
	
83
	public static function existeSection($section, $param = null) {
90
	public static function existeSection($section, $param = null) {
84
		$retour = false;
91
		$retour = false;
85
		self::verifierCreationInstance();
92
		self::verifierCreationInstance();
86
		if (isset(self::$parametres[$section])) {
93
		if (isset(self::$parametres[$section])) {
87
			if (!is_null($param)) {
94
			if (!is_null($param)) {
88
				if (isset(self::$parametres[$section][$param])) {
95
				if (isset(self::$parametres[$section][$param])) {
89
					$retour = true;
96
					$retour = true;
90
				}	
97
				}	
91
			} else {
98
			} else {
92
				$retour = true;
99
				$retour = true;
93
			}
100
			}
94
		}
101
		}
95
		return $retour;
102
		return $retour;
96
	}
103
	}
97
	
104
	
98
	private static function verifierCreationInstance() {
105
	private static function verifierCreationInstance() {
99
		if (empty(self::$instance)) {
106
		if (empty(self::$instance)) {
100
			self::$instance = new Config();  
107
			self::$instance = new Config();  
101
		}
108
		}
102
	}
109
	}
103
	
110
	
104
	private static function evaluerPhp($tableau_a_analyser) {
111
	private static function evaluerPhp($tableau_a_analyser) {
105
		if (is_array($tableau_a_analyser)) {
112
		if (is_array($tableau_a_analyser)) {
106
			foreach ($tableau_a_analyser as $cle => $valeur) {
113
			foreach ($tableau_a_analyser as $cle => $valeur) {
107
	    		if (is_array($valeur)) {
114
	    		if (is_array($valeur)) {
108
	    			$tableau_a_analyser[$cle] = self::evaluerPhp($valeur);
115
	    			$tableau_a_analyser[$cle] = self::evaluerPhp($valeur);
109
	    		} else {
116
	    		} else {
110
					if (preg_match('/^php:(.+)$/', $valeur, $correspondances)) {
117
					if (preg_match('/^php:(.+)$/', $valeur, $correspondances)) {
111
		    			eval('$tableau_a_analyser["'.$cle.'"] = '.$correspondances[1].';');
118
		    			eval('$tableau_a_analyser["'.$cle.'"] = '.$correspondances[1].';');
112
		    		} else {
119
		    		} else {
113
		    			$tableau_a_analyser[$cle] = $valeur;
120
		    			$tableau_a_analyser[$cle] = $valeur;
114
		    		}
121
		    		}
115
	    		}
122
	    		}
116
	    	}
123
	    	}
117
		}
124
		}
118
		return $tableau_a_analyser;
125
		return $tableau_a_analyser;
119
	}
126
	}
120
}
127
}
121
?>
128
?>