Subversion Repositories eFlore/Applications.cel

Rev

Rev 578 | Rev 581 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 578 Rev 579
Line 18... Line 18...
18
    private static $config;
18
    private static $config;
Line 19... Line 19...
19
 
19
 
20
	/** Le nom du widget demandé. */
20
	/** Le nom du widget demandé. */
Line -... Line 21...
-
 
21
	private $widget = null;
-
 
22
	
-
 
23
	/** Les chemins où l'autoload doit chercher des classes. */
21
	private $widget = null;
24
	private static $autoload_chemins = array();
22
	
25
	
Line 23... Line 26...
23
	/** Les paramètres de l'url $_GET nettoyés. */
26
	/** Les paramètres de l'url $_GET nettoyés. */
24
	private $parametres = null;
27
	private $parametres = null;
Line 43... Line 46...
43
		date_default_timezone_set(self::$config['parametres']['fuseauHoraire']);
46
		date_default_timezone_set(self::$config['parametres']['fuseauHoraire']);
Line 44... Line 47...
44
		
47
		
45
		// Gestion des erreurs
48
		// Gestion des erreurs
Line 46... Line -...
46
		error_reporting(self::$config['parametres']['erreurNiveau']);
-
 
47
		
-
 
48
		// Enregistrement de la méthode gérant l'autoload des classes
-
 
49
		spl_autoload_register(array('Widget', 'chargerClasse'));
49
		error_reporting(self::$config['parametres']['erreurNiveau']);
50
		
50
		
51
		if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['QUERY_STRING'])) {
51
		if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['QUERY_STRING'])) {
52
			$url_morceaux = $this->parserUrl();
52
			$url_morceaux = $this->parserUrl();
53
			if (isset($url_morceaux[0])) {
53
			if (isset($url_morceaux[0])) {
-
 
54
				$this->widget = $url_morceaux[0];
54
				$this->widget = $url_morceaux[0];
55
				self::$config['chemins']['widgetCourantDossier'] = self::$config['chemins']['widgetsDossier'].strtolower($this->widget).DIRECTORY_SEPARATOR;
-
 
56
				$this->chargerWidgetConfig();
-
 
57
			}
-
 
58
			// Chargement des chemins pour l'autoload
-
 
59
			$this->chargerCheminAutoload();
-
 
60
			
Line 55... Line 61...
55
				self::$config['chemins']['widgetCourantDossier'] = self::$config['chemins']['widgetsDossier'].strtolower($this->widget).DIRECTORY_SEPARATOR;
61
			// Enregistrement de la méthode gérant l'autoload des classes
56
			}
62
			spl_autoload_register(array('Widget', 'chargerClasse'));
57
			
63
			
58
			// Nettoyage du $_GET (sécurité)
64
			// Nettoyage du $_GET (sécurité)
Line 86... Line 92...
86
			$verifier = array('NULL', "\n", "\r", "\\", "'", '"', "\x00", "\x1a", ';');
92
			$verifier = array('NULL', "\n", "\r", "\\", "'", '"', "\x00", "\x1a", ';');
87
			$_GET[$cle] = strip_tags(str_replace($verifier, '', $valeur));
93
			$_GET[$cle] = strip_tags(str_replace($verifier, '', $valeur));
88
		}
94
		}
89
	}
95
	}
Line -... Line 96...
-
 
96
	
-
 
97
	private function chargerCheminAutoload() {
-
 
98
		$chemins_communs = explode(';', self::$config['chemins']['autoload']);
-
 
99
		$chemins_communs = array_map('trim', $chemins_communs);
-
 
100
		array_unshift($chemins_communs, '');
-
 
101
		
-
 
102
		$chemins_widget = explode(';', self::$config[$this->widget]['autoload']);
-
 
103
		foreach ($chemins_widget as $cle => $chemin) {
-
 
104
			$chemins_widget[$cle] = self::$config['chemins']['widgetCourantDossier'].trim($chemin);
-
 
105
		}
-
 
106
		
-
 
107
		self::$autoload_chemins = array_merge($chemins_communs, $chemins_widget);
-
 
108
	}
90
	
109
	
91
	/**
110
	/**
92
	* La méthode chargerClasse() charge dynamiquement les classes trouvées dans le code.
111
	* La méthode chargerClasse() charge dynamiquement les classes trouvées dans le code.
93
	* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.
112
	* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.
94
	*
113
	*
Line 97... Line 116...
97
	*/
116
	*/
98
	public static function chargerClasse($classe) {
117
	public static function chargerClasse($classe) {
99
		if (class_exists($classe)) {
118
		if (class_exists($classe)) {
100
			return null;
119
			return null;
101
		}
120
		}
102
		$chemins = explode(';', self::$config['chemins']['autoload']);
-
 
103
		$chemins = array_map('trim', $chemins);
-
 
104
		array_unshift($chemins, self::$config['chemins']['widgetCourantDossier'].'bibliotheque'.DIRECTORY_SEPARATOR);
-
 
105
		array_unshift($chemins, '');
-
 
106
 
-
 
107
		foreach ($chemins as $chemin) {
121
		foreach (self::$autoload_chemins as $chemin) {
108
			$chemin = $chemin.$classe.'.php';
122
			$chemin = $chemin.$classe.'.php';
109
			if (file_exists($chemin)) {
123
			if (file_exists($chemin)) {
110
				require_once $chemin;
124
				require_once $chemin;
111
			}
125
			}
112
		}
126
		}
Line 119... Line 133...
119
	function executer() {
133
	function executer() {
120
		if (!is_null($this->widget)) {
134
		if (!is_null($this->widget)) {
121
			$classe_widget = ucfirst($this->widget);
135
			$classe_widget = ucfirst($this->widget);
122
			$fichier_widget = self::$config['chemins']['widgetCourantDossier'].$classe_widget.'.php';
136
			$fichier_widget = self::$config['chemins']['widgetCourantDossier'].$classe_widget.'.php';
123
			if (file_exists($fichier_widget))  {
137
			if (file_exists($fichier_widget))  {
124
				$this->chargerWidgetConfig();
-
 
125
				
-
 
126
				include_once $fichier_widget;
138
				include_once $fichier_widget;
127
				if (class_exists($classe_widget)) {
139
				if (class_exists($classe_widget)) {
128
					$widget = new $classe_widget(self::$config, $this->parametres);
140
					$widget = new $classe_widget(self::$config, $this->parametres);
129
					$widget->executer();
141
					$widget->executer();
130
				}
142
				}