Passed
Push — 1.0.0-dev ( 066288...93958a )
by nguereza
09:45
created
core/common.php 3 patches
Indentation   +533 added lines, -533 removed lines patch added patch discarded remove patch
@@ -1,578 +1,578 @@
 block discarded – undo
1 1
 <?php
2
-	defined('ROOT_PATH') || exit('Access denied');
3
-	/**
4
-	 * TNH Framework
5
-	 *
6
-	 * A simple PHP framework using HMVC architecture
7
-	 *
8
-	 * This content is released under the GNU GPL License (GPL)
9
-	 *
10
-	 * Copyright (C) 2017 Tony NGUEREZA
11
-	 *
12
-	 * This program is free software; you can redistribute it and/or
13
-	 * modify it under the terms of the GNU General Public License
14
-	 * as published by the Free Software Foundation; either version 3
15
-	 * of the License, or (at your option) any later version.
16
-	 *
17
-	 * This program is distributed in the hope that it will be useful,
18
-	 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
-	 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
-	 * GNU General Public License for more details.
21
-	 *
22
-	 * You should have received a copy of the GNU General Public License
23
-	 * along with this program; if not, write to the Free Software
24
-	 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
-	*/
2
+    defined('ROOT_PATH') || exit('Access denied');
3
+    /**
4
+     * TNH Framework
5
+     *
6
+     * A simple PHP framework using HMVC architecture
7
+     *
8
+     * This content is released under the GNU GPL License (GPL)
9
+     *
10
+     * Copyright (C) 2017 Tony NGUEREZA
11
+     *
12
+     * This program is free software; you can redistribute it and/or
13
+     * modify it under the terms of the GNU General Public License
14
+     * as published by the Free Software Foundation; either version 3
15
+     * of the License, or (at your option) any later version.
16
+     *
17
+     * This program is distributed in the hope that it will be useful,
18
+     * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
+     * GNU General Public License for more details.
21
+     *
22
+     * You should have received a copy of the GNU General Public License
23
+     * along with this program; if not, write to the Free Software
24
+     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
+     */
26 26
 
27
-	/**
28
-	 *  @file common.php
29
-	 *  
30
-	 *  Contains most of the commons functions used by the system
31
-	 *  
32
-	 *  @package	core
33
-	 *  @author	Tony NGUEREZA
34
-	 *  @copyright	Copyright (c) 2017
35
-	 *  @license	https://opensource.org/licenses/gpl-3.0.html GNU GPL License (GPL)
36
-	 *  @link	http://www.iacademy.cf
37
-	 *  @version 1.0.0
38
-	 *  @filesource
39
-	 */
27
+    /**
28
+     *  @file common.php
29
+     *  
30
+     *  Contains most of the commons functions used by the system
31
+     *  
32
+     *  @package	core
33
+     *  @author	Tony NGUEREZA
34
+     *  @copyright	Copyright (c) 2017
35
+     *  @license	https://opensource.org/licenses/gpl-3.0.html GNU GPL License (GPL)
36
+     *  @link	http://www.iacademy.cf
37
+     *  @version 1.0.0
38
+     *  @filesource
39
+     */
40 40
 	
41 41
 
42
-	/**
43
-	 * This function is the class loader helper is used if the library "Loader" not yet loaded
44
-	 * he load the class once
45
-	 * @param  string $class  the class name to be loaded
46
-	 * @param  string $dir    the directory where to find the class
47
-	 * @param  mixed $params the parameter to pass as argument to the constructor of the class
48
-	 * @codeCoverageIgnore
49
-	 * 
50
-	 * @return object         the instance of the loaded class
51
-	 */
52
-	function & class_loader($class, $dir = 'libraries', $params = null){
53
-		//put the first letter of class to upper case 
54
-		$class = ucfirst($class);
55
-		static $classes = array();
56
-		if (isset($classes[$class]) /*hack for duplicate log Logger name*/ && $class != 'Log'){
57
-			return $classes[$class];
58
-		}
59
-		$found = false;
60
-		foreach (array(ROOT_PATH, CORE_PATH) as $path) {
61
-			$file = $path . $dir . '/' . $class . '.php';
62
-			if (file_exists($file)){
63
-				if (class_exists($class, false) === false){
64
-					require_once $file;
65
-				}
66
-				//already found
67
-				$found = true;
68
-				break;
69
-			}
70
-		}
71
-		if (! $found){
72
-			//can't use show_error() at this time because some dependencies not yet loaded
73
-			set_http_status_header(503);
74
-			echo 'Cannot find the class [' . $class . ']';
75
-			die();
76
-		}
42
+    /**
43
+     * This function is the class loader helper is used if the library "Loader" not yet loaded
44
+     * he load the class once
45
+     * @param  string $class  the class name to be loaded
46
+     * @param  string $dir    the directory where to find the class
47
+     * @param  mixed $params the parameter to pass as argument to the constructor of the class
48
+     * @codeCoverageIgnore
49
+     * 
50
+     * @return object         the instance of the loaded class
51
+     */
52
+    function & class_loader($class, $dir = 'libraries', $params = null){
53
+        //put the first letter of class to upper case 
54
+        $class = ucfirst($class);
55
+        static $classes = array();
56
+        if (isset($classes[$class]) /*hack for duplicate log Logger name*/ && $class != 'Log'){
57
+            return $classes[$class];
58
+        }
59
+        $found = false;
60
+        foreach (array(ROOT_PATH, CORE_PATH) as $path) {
61
+            $file = $path . $dir . '/' . $class . '.php';
62
+            if (file_exists($file)){
63
+                if (class_exists($class, false) === false){
64
+                    require_once $file;
65
+                }
66
+                //already found
67
+                $found = true;
68
+                break;
69
+            }
70
+        }
71
+        if (! $found){
72
+            //can't use show_error() at this time because some dependencies not yet loaded
73
+            set_http_status_header(503);
74
+            echo 'Cannot find the class [' . $class . ']';
75
+            die();
76
+        }
77 77
 		
78
-		/*
78
+        /*
79 79
 		   TODO use the best method to get the Log instance
80 80
 		 */
81
-		if ($class == 'Log'){
82
-			//can't use the instruction like "return new Log()" 
83
-			//because we need return the reference instance of the loaded class.
84
-			$log = new Log();
85
-			return $log;
86
-		}
87
-		//track of loaded classes
88
-		class_loaded($class);
81
+        if ($class == 'Log'){
82
+            //can't use the instruction like "return new Log()" 
83
+            //because we need return the reference instance of the loaded class.
84
+            $log = new Log();
85
+            return $log;
86
+        }
87
+        //track of loaded classes
88
+        class_loaded($class);
89 89
 		
90
-		//record the class instance
91
-		$classes[$class] = isset($params) ? new $class($params) : new $class();
90
+        //record the class instance
91
+        $classes[$class] = isset($params) ? new $class($params) : new $class();
92 92
 		
93
-		return $classes[$class];
94
-	}
93
+        return $classes[$class];
94
+    }
95 95
 
96
-	/**
97
-	 * This function is the helper to record the loaded classes
98
-	 * @param  string $class the loaded class name
99
-	 * @codeCoverageIgnore
100
-	 * 
101
-	 * @return array        the list of the loaded classes
102
-	 */
103
-	function & class_loaded($class = null){
104
-		static $list = array();
105
-		if ($class !== null){
106
-			$list[strtolower($class)] = $class;
107
-		}
108
-		return $list;
109
-	}
96
+    /**
97
+     * This function is the helper to record the loaded classes
98
+     * @param  string $class the loaded class name
99
+     * @codeCoverageIgnore
100
+     * 
101
+     * @return array        the list of the loaded classes
102
+     */
103
+    function & class_loaded($class = null){
104
+        static $list = array();
105
+        if ($class !== null){
106
+            $list[strtolower($class)] = $class;
107
+        }
108
+        return $list;
109
+    }
110 110
 
111
-	/**
112
-	 * This function is used to load the configurations in the case the "Config" library not yet loaded
113
-	 * @param  array  $overwrite_values if need overwrite the existing configuration
114
-	 * @codeCoverageIgnore
115
-	 * 
116
-	 * @return array                   the configurations values
117
-	 */
118
-	function & load_configurations(array $overwrite_values = array()){
119
-		static $config;
120
-		if (empty($config)){
121
-			$file = CONFIG_PATH . 'config.php';
122
-			$found = false;
123
-			if (file_exists($file)){
124
-				require_once $file;
125
-				$found = true;
126
-			}
127
-			if (! $found){
128
-				set_http_status_header(503);
129
-				echo 'Unable to find the configuration file [' . $file . ']';
130
-				die();
131
-			}
132
-		}
133
-		foreach ($overwrite_values as $key => $value) {
134
-			$config[$key] = $value;
135
-		}
136
-		return $config;
137
-	}
111
+    /**
112
+     * This function is used to load the configurations in the case the "Config" library not yet loaded
113
+     * @param  array  $overwrite_values if need overwrite the existing configuration
114
+     * @codeCoverageIgnore
115
+     * 
116
+     * @return array                   the configurations values
117
+     */
118
+    function & load_configurations(array $overwrite_values = array()){
119
+        static $config;
120
+        if (empty($config)){
121
+            $file = CONFIG_PATH . 'config.php';
122
+            $found = false;
123
+            if (file_exists($file)){
124
+                require_once $file;
125
+                $found = true;
126
+            }
127
+            if (! $found){
128
+                set_http_status_header(503);
129
+                echo 'Unable to find the configuration file [' . $file . ']';
130
+                die();
131
+            }
132
+        }
133
+        foreach ($overwrite_values as $key => $value) {
134
+            $config[$key] = $value;
135
+        }
136
+        return $config;
137
+    }
138 138
 
139
-	/**
140
-	 * This function is the helper to get the config value in case the "Config" library not yet loaded
141
-	 * @param  string $key     the config item to get the vale
142
-	 * @param  mixed $default the default value to return if can't find the config item in the configuration
143
-	 * @test
144
-	 * 
145
-	 * @return mixed          the config value
146
-	 */
147
-	function get_config($key, $default = null){
148
-		static $cfg;
149
-		if (empty($cfg)){
150
-			$cfg[0] = & load_configurations();
151
-		}
152
-		return array_key_exists($key, $cfg[0]) ? $cfg[0][$key] : $default;
153
-	}
139
+    /**
140
+     * This function is the helper to get the config value in case the "Config" library not yet loaded
141
+     * @param  string $key     the config item to get the vale
142
+     * @param  mixed $default the default value to return if can't find the config item in the configuration
143
+     * @test
144
+     * 
145
+     * @return mixed          the config value
146
+     */
147
+    function get_config($key, $default = null){
148
+        static $cfg;
149
+        if (empty($cfg)){
150
+            $cfg[0] = & load_configurations();
151
+        }
152
+        return array_key_exists($key, $cfg[0]) ? $cfg[0][$key] : $default;
153
+    }
154 154
 
155
-	/**
156
-	 * This function is a helper to logging message
157
-	 * @param  string $level   the log level "ERROR", "DEBUG", "INFO", etc.
158
-	 * @param  string $message the log message to be saved
159
-	 * @param  string $logger  the logger to use if is set
160
-	 * 
161
-	 * @codeCoverageIgnore
162
-	 */
163
-	function save_to_log($level, $message, $logger = null){
164
-		$log =& class_loader('Log', 'classes');
165
-		if ($logger){
166
-			$log->setLogger($logger);
167
-		}
168
-		$log->writeLog($message, $level);
169
-	}
155
+    /**
156
+     * This function is a helper to logging message
157
+     * @param  string $level   the log level "ERROR", "DEBUG", "INFO", etc.
158
+     * @param  string $message the log message to be saved
159
+     * @param  string $logger  the logger to use if is set
160
+     * 
161
+     * @codeCoverageIgnore
162
+     */
163
+    function save_to_log($level, $message, $logger = null){
164
+        $log =& class_loader('Log', 'classes');
165
+        if ($logger){
166
+            $log->setLogger($logger);
167
+        }
168
+        $log->writeLog($message, $level);
169
+    }
170 170
 
171
-	/**
172
-	 * Set the HTTP status header
173
-	 * @param integer $code the HTTP status code
174
-	 * @param string  $text the HTTP status text
175
-	 * 
176
-	 * @codeCoverageIgnore
177
-	 */
178
-	function set_http_status_header($code = 200, $text = null){
179
-		if (empty($text)){
180
-			$http_status = array(
181
-								100 => 'Continue',
182
-								101 => 'Switching Protocols',
183
-								200 => 'OK',
184
-								201 => 'Created',
185
-								202 => 'Accepted',
186
-								203 => 'Non-Authoritative Information',
187
-								204 => 'No Content',
188
-								205 => 'Reset Content',
189
-								206 => 'Partial Content',
190
-								300 => 'Multiple Choices',
191
-								301 => 'Moved Permanently',
192
-								302 => 'Found',
193
-								303 => 'See Other',
194
-								304 => 'Not Modified',
195
-								305 => 'Use Proxy',
196
-								307 => 'Temporary Redirect',
197
-								400 => 'Bad Request',
198
-								401 => 'Unauthorized',
199
-								402 => 'Payment Required',
200
-								403 => 'Forbidden',
201
-								404 => 'Not Found',
202
-								405 => 'Method Not Allowed',
203
-								406 => 'Not Acceptable',
204
-								407 => 'Proxy Authentication Required',
205
-								408 => 'Request Timeout',
206
-								409 => 'Conflict',
207
-								410 => 'Gone',
208
-								411 => 'Length Required',
209
-								412 => 'Precondition Failed',
210
-								413 => 'Request Entity Too Large',
211
-								414 => 'Request-URI Too Long',
212
-								415 => 'Unsupported Media Type',
213
-								416 => 'Requested Range Not Satisfiable',
214
-								417 => 'Expectation Failed',
215
-								418 => 'I\'m a teapot',
216
-								500 => 'Internal Server Error',
217
-								501 => 'Not Implemented',
218
-								502 => 'Bad Gateway',
219
-								503 => 'Service Unavailable',
220
-								504 => 'Gateway Timeout',
221
-								505 => 'HTTP Version Not Supported',
222
-							);
223
-			if (isset($http_status[$code])){
224
-				$text = $http_status[$code];
225
-			}
226
-			else{
227
-				show_error('No HTTP status text found for your code please check it.');
228
-			}
229
-		}
171
+    /**
172
+     * Set the HTTP status header
173
+     * @param integer $code the HTTP status code
174
+     * @param string  $text the HTTP status text
175
+     * 
176
+     * @codeCoverageIgnore
177
+     */
178
+    function set_http_status_header($code = 200, $text = null){
179
+        if (empty($text)){
180
+            $http_status = array(
181
+                                100 => 'Continue',
182
+                                101 => 'Switching Protocols',
183
+                                200 => 'OK',
184
+                                201 => 'Created',
185
+                                202 => 'Accepted',
186
+                                203 => 'Non-Authoritative Information',
187
+                                204 => 'No Content',
188
+                                205 => 'Reset Content',
189
+                                206 => 'Partial Content',
190
+                                300 => 'Multiple Choices',
191
+                                301 => 'Moved Permanently',
192
+                                302 => 'Found',
193
+                                303 => 'See Other',
194
+                                304 => 'Not Modified',
195
+                                305 => 'Use Proxy',
196
+                                307 => 'Temporary Redirect',
197
+                                400 => 'Bad Request',
198
+                                401 => 'Unauthorized',
199
+                                402 => 'Payment Required',
200
+                                403 => 'Forbidden',
201
+                                404 => 'Not Found',
202
+                                405 => 'Method Not Allowed',
203
+                                406 => 'Not Acceptable',
204
+                                407 => 'Proxy Authentication Required',
205
+                                408 => 'Request Timeout',
206
+                                409 => 'Conflict',
207
+                                410 => 'Gone',
208
+                                411 => 'Length Required',
209
+                                412 => 'Precondition Failed',
210
+                                413 => 'Request Entity Too Large',
211
+                                414 => 'Request-URI Too Long',
212
+                                415 => 'Unsupported Media Type',
213
+                                416 => 'Requested Range Not Satisfiable',
214
+                                417 => 'Expectation Failed',
215
+                                418 => 'I\'m a teapot',
216
+                                500 => 'Internal Server Error',
217
+                                501 => 'Not Implemented',
218
+                                502 => 'Bad Gateway',
219
+                                503 => 'Service Unavailable',
220
+                                504 => 'Gateway Timeout',
221
+                                505 => 'HTTP Version Not Supported',
222
+                            );
223
+            if (isset($http_status[$code])){
224
+                $text = $http_status[$code];
225
+            }
226
+            else{
227
+                show_error('No HTTP status text found for your code please check it.');
228
+            }
229
+        }
230 230
 		
231
-		if (strpos(php_sapi_name(), 'cgi') === 0){
232
-			header('Status: ' . $code . ' ' . $text, TRUE);
233
-		}
234
-		else{
235
-			$proto = 'HTTP/1.1';
236
-			if(isset($_SERVER['SERVER_PROTOCOL'])){
237
-				$proto = $_SERVER['SERVER_PROTOCOL'];
238
-			}
239
-			header($proto . ' ' . $code . ' ' . $text, TRUE, $code);
240
-		}
241
-	}
231
+        if (strpos(php_sapi_name(), 'cgi') === 0){
232
+            header('Status: ' . $code . ' ' . $text, TRUE);
233
+        }
234
+        else{
235
+            $proto = 'HTTP/1.1';
236
+            if(isset($_SERVER['SERVER_PROTOCOL'])){
237
+                $proto = $_SERVER['SERVER_PROTOCOL'];
238
+            }
239
+            header($proto . ' ' . $code . ' ' . $text, TRUE, $code);
240
+        }
241
+    }
242 242
 
243
-	/**
244
-	 *  This function displays an error message to the user and ends the execution of the script.
245
-	 *  
246
-	 *  @param string $msg the message to display
247
-	 *  @param string $title the message title: "error", "info", "warning", etc.
248
-	 *  @param boolean $logging either to save error in log
249
-	 *  
250
-	 *  @codeCoverageIgnore
251
-	 */
252
-	function show_error($msg, $title = 'error', $logging = true){
253
-		$title = strtoupper($title);
254
-		$data = array();
255
-		$data['error'] = $msg;
256
-		$data['title'] = $title;
257
-		if ($logging){
258
-			save_to_log('error', '['.$title.'] '.strip_tags($msg), 'GLOBAL::ERROR');
259
-		}
260
-		$response = & class_loader('Response', 'classes');
261
-		$response->sendError($data);
262
-		die();
263
-	}
243
+    /**
244
+     *  This function displays an error message to the user and ends the execution of the script.
245
+     *  
246
+     *  @param string $msg the message to display
247
+     *  @param string $title the message title: "error", "info", "warning", etc.
248
+     *  @param boolean $logging either to save error in log
249
+     *  
250
+     *  @codeCoverageIgnore
251
+     */
252
+    function show_error($msg, $title = 'error', $logging = true){
253
+        $title = strtoupper($title);
254
+        $data = array();
255
+        $data['error'] = $msg;
256
+        $data['title'] = $title;
257
+        if ($logging){
258
+            save_to_log('error', '['.$title.'] '.strip_tags($msg), 'GLOBAL::ERROR');
259
+        }
260
+        $response = & class_loader('Response', 'classes');
261
+        $response->sendError($data);
262
+        die();
263
+    }
264 264
 
265
-	/**
266
-	 *  Check whether the protocol used is "https" or not
267
-	 *  That is, the web server is configured to use a secure connection.
268
-	 *  @codeCoverageIgnore
269
-	 *  
270
-	 *  @return boolean true if the web server uses the https protocol, false if not.
271
-	 */
272
-	function is_https(){
273
-		/*
265
+    /**
266
+     *  Check whether the protocol used is "https" or not
267
+     *  That is, the web server is configured to use a secure connection.
268
+     *  @codeCoverageIgnore
269
+     *  
270
+     *  @return boolean true if the web server uses the https protocol, false if not.
271
+     */
272
+    function is_https(){
273
+        /*
274 274
 		* some servers pass the "HTTPS" parameter in the server variable,
275 275
 		* if is the case, check if the value is "on", "true", "1".
276 276
 		*/
277
-		if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off'){
278
-			return true;
279
-		}
280
-		if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https'){
281
-			return true;
282
-		}
283
-		if (isset($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off'){
284
-			return true;
285
-		}
286
-		return false;
287
-	}
277
+        if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off'){
278
+            return true;
279
+        }
280
+        if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https'){
281
+            return true;
282
+        }
283
+        if (isset($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off'){
284
+            return true;
285
+        }
286
+        return false;
287
+    }
288 288
 	
289
-	/**
290
-	 *  This function is used to check the URL format of the given string argument. 
291
-	 *  The address is valid if the protocol is http, https, ftp, etc.
292
-	 *
293
-	 *  @param string $url the URL address to check
294
-	 *  @test
295
-	 *  
296
-	 *  @return boolean true if is a valid URL address or false.
297
-	 */
298
-	function is_url($url){
299
-		return preg_match('/^(http|https|ftp):\/\/(.*)/', $url) == 1;
300
-	}
289
+    /**
290
+     *  This function is used to check the URL format of the given string argument. 
291
+     *  The address is valid if the protocol is http, https, ftp, etc.
292
+     *
293
+     *  @param string $url the URL address to check
294
+     *  @test
295
+     *  
296
+     *  @return boolean true if is a valid URL address or false.
297
+     */
298
+    function is_url($url){
299
+        return preg_match('/^(http|https|ftp):\/\/(.*)/', $url) == 1;
300
+    }
301 301
 	
302
-	/**
303
-	 *  Function defined to load controller
304
-	 *  
305
-	 *  @param string $controllerClass the controller class name to be loaded
306
-	 *  @codeCoverageIgnore
307
-	 */
308
-	function autoload_controller($controllerClass){
309
-		if (file_exists($path = APPS_CONTROLLER_PATH . $controllerClass . '.php')){
310
-			require_once $path;
311
-		}
312
-	}
302
+    /**
303
+     *  Function defined to load controller
304
+     *  
305
+     *  @param string $controllerClass the controller class name to be loaded
306
+     *  @codeCoverageIgnore
307
+     */
308
+    function autoload_controller($controllerClass){
309
+        if (file_exists($path = APPS_CONTROLLER_PATH . $controllerClass . '.php')){
310
+            require_once $path;
311
+        }
312
+    }
313 313
 	
314
-	/**
315
-	 *  Function defined for handling PHP exception error message, 
316
-	 *  it displays an error message using the function "show_error"
317
-	 *  
318
-	 *  @param object $ex instance of the "Exception" class or a derived class
319
-	 *  @codeCoverageIgnore
320
-	 *  
321
-	 *  @return boolean
322
-	 */
323
-	function php_exception_handler($ex){
324
-		if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))){
325
-			show_error('An exception is occured in file '. $ex->getFile() .' at line ' . $ex->getLine() . ' raison : ' . $ex->getMessage(), 'PHP Exception #' . $ex->getCode());
326
-		}
327
-		else{
328
-			save_to_log('error', 'An exception is occured in file ' . $ex->getFile() . ' at line ' . $ex->getLine() . ' raison : ' . $ex->getMessage(), 'PHP Exception');
329
-		}
330
-		return true;
331
-	}
314
+    /**
315
+     *  Function defined for handling PHP exception error message, 
316
+     *  it displays an error message using the function "show_error"
317
+     *  
318
+     *  @param object $ex instance of the "Exception" class or a derived class
319
+     *  @codeCoverageIgnore
320
+     *  
321
+     *  @return boolean
322
+     */
323
+    function php_exception_handler($ex){
324
+        if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))){
325
+            show_error('An exception is occured in file '. $ex->getFile() .' at line ' . $ex->getLine() . ' raison : ' . $ex->getMessage(), 'PHP Exception #' . $ex->getCode());
326
+        }
327
+        else{
328
+            save_to_log('error', 'An exception is occured in file ' . $ex->getFile() . ' at line ' . $ex->getLine() . ' raison : ' . $ex->getMessage(), 'PHP Exception');
329
+        }
330
+        return true;
331
+    }
332 332
 	
333
-	/**
334
-	 *  Function defined for PHP error message handling
335
-	 *  			
336
-	 *  @param int $errno the type of error for example: E_USER_ERROR, E_USER_WARNING, etc.
337
-	 *  @param string $errstr the error message
338
-	 *  @param string $errfile the file where the error occurred
339
-	 *  @param int $errline the line number where the error occurred
340
-	 *  @codeCoverageIgnore
341
-	 *  
342
-	 *  @return boolean	
343
-	 */
344
-	function php_error_handler($errno , $errstr, $errfile , $errline){
345
-		$isError = (((E_ERROR | E_COMPILE_ERROR | E_CORE_ERROR | E_USER_ERROR) & $errno) === $errno);
346
-		if ($isError){
347
-			set_http_status_header(500);
348
-		}
349
-		if (! (error_reporting() & $errno)) {
350
-			save_to_log('error', 'An error is occurred in the file ' . $errfile . ' at line ' . $errline . ' raison : ' . $errstr, 'PHP ERROR');
351
-			return;
352
-		}
353
-		if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))){
354
-			$errorType = 'error';
355
-			switch ($errno) {
356
-				case E_USER_WARNING:
357
-					$errorType = 'warning';
358
-					break;
359
-				case E_USER_NOTICE:
360
-					$errorType = 'notice';
361
-					break;
362
-			}
363
-			show_error('An error is occurred in the file <b>' . $errfile . '</b> at line <b>' . $errline .'</b> raison : ' . $errstr, 'PHP ' . $errorType);
364
-		}
365
-		if ($isError){
366
-			die();
367
-		}
368
-		return true;
369
-	}
333
+    /**
334
+     *  Function defined for PHP error message handling
335
+     *  			
336
+     *  @param int $errno the type of error for example: E_USER_ERROR, E_USER_WARNING, etc.
337
+     *  @param string $errstr the error message
338
+     *  @param string $errfile the file where the error occurred
339
+     *  @param int $errline the line number where the error occurred
340
+     *  @codeCoverageIgnore
341
+     *  
342
+     *  @return boolean	
343
+     */
344
+    function php_error_handler($errno , $errstr, $errfile , $errline){
345
+        $isError = (((E_ERROR | E_COMPILE_ERROR | E_CORE_ERROR | E_USER_ERROR) & $errno) === $errno);
346
+        if ($isError){
347
+            set_http_status_header(500);
348
+        }
349
+        if (! (error_reporting() & $errno)) {
350
+            save_to_log('error', 'An error is occurred in the file ' . $errfile . ' at line ' . $errline . ' raison : ' . $errstr, 'PHP ERROR');
351
+            return;
352
+        }
353
+        if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))){
354
+            $errorType = 'error';
355
+            switch ($errno) {
356
+                case E_USER_WARNING:
357
+                    $errorType = 'warning';
358
+                    break;
359
+                case E_USER_NOTICE:
360
+                    $errorType = 'notice';
361
+                    break;
362
+            }
363
+            show_error('An error is occurred in the file <b>' . $errfile . '</b> at line <b>' . $errline .'</b> raison : ' . $errstr, 'PHP ' . $errorType);
364
+        }
365
+        if ($isError){
366
+            die();
367
+        }
368
+        return true;
369
+    }
370 370
 
371
-	/**
372
-	 * This function is used to run in shutdown situation of the script
373
-	 * @codeCoverageIgnore
374
-	 */
375
-	function php_shudown_handler(){
376
-		$lastError = error_get_last();
377
-		if (isset($lastError) &&
378
-			($lastError['type'] & (E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING))){
379
-			php_error_handler($lastError['type'], $lastError['message'], $lastError['file'], $lastError['line']);
380
-		}
381
-	}
371
+    /**
372
+     * This function is used to run in shutdown situation of the script
373
+     * @codeCoverageIgnore
374
+     */
375
+    function php_shudown_handler(){
376
+        $lastError = error_get_last();
377
+        if (isset($lastError) &&
378
+            ($lastError['type'] & (E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING))){
379
+            php_error_handler($lastError['type'], $lastError['message'], $lastError['file'], $lastError['line']);
380
+        }
381
+    }
382 382
 
383 383
 
384
-	/**
385
-	 *  Convert array attributes to string
386
-	 *
387
-	 *  This function converts an associative array into HTML attributes.
388
-	 *  For example :
389
-	 *  $a = array('name' => 'Foo', 'type' => 'text'); => produces the following string:
390
-	 *  name = "Foo" type = "text"
391
-	 *
392
-	 *  @param array $attributes associative array to convert to a string attribute.
393
-	 *   
394
-	 *  @return string string of the HTML attribute.
395
-	 */
396
-	function attributes_to_string(array $attributes){
397
-		$str = ' ';
398
-		//we check that the array passed as an argument is not empty.
399
-		if (! empty($attributes)){
400
-			foreach($attributes as $key => $value){
401
-				$key = trim(htmlspecialchars($key));
402
-				$value = trim(htmlspecialchars($value));
403
-				/*
384
+    /**
385
+     *  Convert array attributes to string
386
+     *
387
+     *  This function converts an associative array into HTML attributes.
388
+     *  For example :
389
+     *  $a = array('name' => 'Foo', 'type' => 'text'); => produces the following string:
390
+     *  name = "Foo" type = "text"
391
+     *
392
+     *  @param array $attributes associative array to convert to a string attribute.
393
+     *   
394
+     *  @return string string of the HTML attribute.
395
+     */
396
+    function attributes_to_string(array $attributes){
397
+        $str = ' ';
398
+        //we check that the array passed as an argument is not empty.
399
+        if (! empty($attributes)){
400
+            foreach($attributes as $key => $value){
401
+                $key = trim(htmlspecialchars($key));
402
+                $value = trim(htmlspecialchars($value));
403
+                /*
404 404
 				* To predict the case where the string to convert contains the character "
405 405
 				* we check if this is the case we add a slash to solve this problem.
406 406
 				* For example:
407 407
 				* 	$attr = array('placeholder' => 'I am a "puple"')
408 408
 				* 	$str = attributes_to_string($attr); => placeholder = "I am a \"puple\""
409 409
 				 */
410
-				if ($value && strpos('"', $value) !== false){
411
-					$value = addslashes($value);
412
-				}
413
-				$str .= $key.' = "'.$value.'" ';
414
-			}
415
-		}
416
-		//remove the space after using rtrim()
417
-		return rtrim($str);
418
-	}
410
+                if ($value && strpos('"', $value) !== false){
411
+                    $value = addslashes($value);
412
+                }
413
+                $str .= $key.' = "'.$value.'" ';
414
+            }
415
+        }
416
+        //remove the space after using rtrim()
417
+        return rtrim($str);
418
+    }
419 419
 
420 420
 
421
-	/**
422
-	* Function to stringfy PHP variable, useful in debug situation
423
-	*
424
-	* @param mixed $var the variable to stringfy
425
-	* @codeCoverageIgnore
426
-	*
427
-	* @return string the stringfy value
428
-	*/
429
-	function stringfy_vars($var){
430
-		return print_r($var, true);
431
-	}
421
+    /**
422
+     * Function to stringfy PHP variable, useful in debug situation
423
+     *
424
+     * @param mixed $var the variable to stringfy
425
+     * @codeCoverageIgnore
426
+     *
427
+     * @return string the stringfy value
428
+     */
429
+    function stringfy_vars($var){
430
+        return print_r($var, true);
431
+    }
432 432
 
433
-	/**
434
-	 * Clean the user input
435
-	 * @param  mixed $str the value to clean
436
-	 * @test
437
-	 * 
438
-	 * @return mixed   the sanitize value
439
-	 */
440
-	function clean_input($str){
441
-		if (is_array($str)){
442
-			$str = array_map('clean_input', $str);
443
-		}
444
-		else if (is_object($str)){
445
-			$obj = $str;
446
-			foreach ($str as $var => $value) {
447
-				$obj->$var = clean_input($value);
448
-			}
449
-			$str = $obj;
450
-		}
451
-		else{
452
-			$str = htmlspecialchars(strip_tags($str), ENT_QUOTES, 'UTF-8');
453
-		}
454
-		return $str;
455
-	}
433
+    /**
434
+     * Clean the user input
435
+     * @param  mixed $str the value to clean
436
+     * @test
437
+     * 
438
+     * @return mixed   the sanitize value
439
+     */
440
+    function clean_input($str){
441
+        if (is_array($str)){
442
+            $str = array_map('clean_input', $str);
443
+        }
444
+        else if (is_object($str)){
445
+            $obj = $str;
446
+            foreach ($str as $var => $value) {
447
+                $obj->$var = clean_input($value);
448
+            }
449
+            $str = $obj;
450
+        }
451
+        else{
452
+            $str = htmlspecialchars(strip_tags($str), ENT_QUOTES, 'UTF-8');
453
+        }
454
+        return $str;
455
+    }
456 456
 	
457
-	/**
458
-	 * This function is used to hidden some part of the given string. Helpful if you need hide some confidential 
459
-	 * Information like credit card number, password, etc.
460
-	 *
461
-	 * @param  string $str the string you want to hide some part
462
-	 * @param  int $startCount the length of non hidden for the beginning char
463
-	 * @param  int $endCount the length of non hidden for the ending char
464
-	 * @param  string $hiddenChar the char used to hide the given string
465
-	 * @test
466
-	 * 
467
-	 * @return string the string with the hidden part.
468
-	 */
469
-	function string_hidden($str, $startCount = 0, $endCount = 0, $hiddenChar = '*'){
470
-		//get the string length
471
-		$len = strlen($str);
472
-		//if str is empty
473
-		if ($len <= 0){
474
-			return str_repeat($hiddenChar, 6);
475
-		}
476
-		//if the length is less than startCount and endCount
477
-		//or the startCount and endCount length is 0
478
-		//or startCount is negative or endCount is negative
479
-		//return the full string hidden
457
+    /**
458
+     * This function is used to hidden some part of the given string. Helpful if you need hide some confidential 
459
+     * Information like credit card number, password, etc.
460
+     *
461
+     * @param  string $str the string you want to hide some part
462
+     * @param  int $startCount the length of non hidden for the beginning char
463
+     * @param  int $endCount the length of non hidden for the ending char
464
+     * @param  string $hiddenChar the char used to hide the given string
465
+     * @test
466
+     * 
467
+     * @return string the string with the hidden part.
468
+     */
469
+    function string_hidden($str, $startCount = 0, $endCount = 0, $hiddenChar = '*'){
470
+        //get the string length
471
+        $len = strlen($str);
472
+        //if str is empty
473
+        if ($len <= 0){
474
+            return str_repeat($hiddenChar, 6);
475
+        }
476
+        //if the length is less than startCount and endCount
477
+        //or the startCount and endCount length is 0
478
+        //or startCount is negative or endCount is negative
479
+        //return the full string hidden
480 480
 		
481
-		if ((($startCount + $endCount) > $len) || ($startCount == 0 && $endCount == 0) || ($startCount < 0 || $endCount < 0)){
482
-			return str_repeat($hiddenChar, $len);
483
-		}
484
-		//the start non hidden string
485
-		$startNonHiddenStr = substr($str, 0, $startCount);
486
-		//the end non hidden string
487
-		$endNonHiddenStr = null;
488
-		if ($endCount > 0){
489
-			$endNonHiddenStr = substr($str, - $endCount);
490
-		}
491
-		//the hidden string
492
-		$hiddenStr = str_repeat($hiddenChar, $len - ($startCount + $endCount));
481
+        if ((($startCount + $endCount) > $len) || ($startCount == 0 && $endCount == 0) || ($startCount < 0 || $endCount < 0)){
482
+            return str_repeat($hiddenChar, $len);
483
+        }
484
+        //the start non hidden string
485
+        $startNonHiddenStr = substr($str, 0, $startCount);
486
+        //the end non hidden string
487
+        $endNonHiddenStr = null;
488
+        if ($endCount > 0){
489
+            $endNonHiddenStr = substr($str, - $endCount);
490
+        }
491
+        //the hidden string
492
+        $hiddenStr = str_repeat($hiddenChar, $len - ($startCount + $endCount));
493 493
 		
494
-		return $startNonHiddenStr . $hiddenStr . $endNonHiddenStr;
495
-	}
494
+        return $startNonHiddenStr . $hiddenStr . $endNonHiddenStr;
495
+    }
496 496
 	
497
-	/**
498
-	 * This function is used to set the initial session config regarding the configuration
499
-	 * @codeCoverageIgnore
500
-	 */
501
-	function set_session_config(){
502
-		//$_SESSION is not available on cli mode 
503
-		if (! IS_CLI){
504
-			$logger =& class_loader('Log', 'classes');
505
-			$logger->setLogger('PHPSession');
506
-			//set session params
507
-			$sessionHandler = get_config('session_handler', 'files'); //the default is to store in the files
508
-			$sessionName = get_config('session_name');
509
-			if ($sessionName){
510
-				session_name($sessionName);
511
-			}
512
-			$logger->info('Session handler: ' . $sessionHandler);
513
-			$logger->info('Session name: ' . $sessionName);
497
+    /**
498
+     * This function is used to set the initial session config regarding the configuration
499
+     * @codeCoverageIgnore
500
+     */
501
+    function set_session_config(){
502
+        //$_SESSION is not available on cli mode 
503
+        if (! IS_CLI){
504
+            $logger =& class_loader('Log', 'classes');
505
+            $logger->setLogger('PHPSession');
506
+            //set session params
507
+            $sessionHandler = get_config('session_handler', 'files'); //the default is to store in the files
508
+            $sessionName = get_config('session_name');
509
+            if ($sessionName){
510
+                session_name($sessionName);
511
+            }
512
+            $logger->info('Session handler: ' . $sessionHandler);
513
+            $logger->info('Session name: ' . $sessionName);
514 514
 
515
-			if ($sessionHandler == 'files'){
516
-				$sessionSavePath = get_config('session_save_path');
517
-				if ($sessionSavePath){
518
-					if (! is_dir($sessionSavePath)){
519
-						mkdir($sessionSavePath, 1773);
520
-					}
521
-					session_save_path($sessionSavePath);
522
-					$logger->info('Session save path: ' . $sessionSavePath);
523
-				}
524
-			}
525
-			else if ($sessionHandler == 'database'){
526
-				//load database session handle library
527
-				//Database Session handler Model
528
-				require_once CORE_CLASSES_MODEL_PATH . 'DBSessionHandlerModel.php';
515
+            if ($sessionHandler == 'files'){
516
+                $sessionSavePath = get_config('session_save_path');
517
+                if ($sessionSavePath){
518
+                    if (! is_dir($sessionSavePath)){
519
+                        mkdir($sessionSavePath, 1773);
520
+                    }
521
+                    session_save_path($sessionSavePath);
522
+                    $logger->info('Session save path: ' . $sessionSavePath);
523
+                }
524
+            }
525
+            else if ($sessionHandler == 'database'){
526
+                //load database session handle library
527
+                //Database Session handler Model
528
+                require_once CORE_CLASSES_MODEL_PATH . 'DBSessionHandlerModel.php';
529 529
 
530
-				$DBS =& class_loader('DBSessionHandler', 'classes');
531
-				session_set_save_handler($DBS, true);
532
-				$logger->info('session save path: ' . get_config('session_save_path'));
533
-			}
534
-			else{
535
-				show_error('Invalid session handler configuration');
536
-			}
537
-			$lifetime = get_config('session_cookie_lifetime', 0);
538
-			$path = get_config('session_cookie_path', '/');
539
-			$domain = get_config('session_cookie_domain', '');
540
-			$secure = get_config('session_cookie_secure', false);
541
-			session_set_cookie_params(
542
-				$lifetime,
543
-				$path,
544
-				$domain,
545
-				$secure,
546
-				$httponly = true /*for security for access to cookie via javascript or XSS attack*/
547
-			);
548
-			//to prevent attack of Session Fixation 
549
-			//thank to https://www.phparch.com/2018/01/php-sessions-in-depth/
550
-			ini_set('session.use_strict_mode ', 1);
551
-			ini_set('session.use_only_cookies', 1);
552
-			ini_set('session.use_trans_sid ', 0);
530
+                $DBS =& class_loader('DBSessionHandler', 'classes');
531
+                session_set_save_handler($DBS, true);
532
+                $logger->info('session save path: ' . get_config('session_save_path'));
533
+            }
534
+            else{
535
+                show_error('Invalid session handler configuration');
536
+            }
537
+            $lifetime = get_config('session_cookie_lifetime', 0);
538
+            $path = get_config('session_cookie_path', '/');
539
+            $domain = get_config('session_cookie_domain', '');
540
+            $secure = get_config('session_cookie_secure', false);
541
+            session_set_cookie_params(
542
+                $lifetime,
543
+                $path,
544
+                $domain,
545
+                $secure,
546
+                $httponly = true /*for security for access to cookie via javascript or XSS attack*/
547
+            );
548
+            //to prevent attack of Session Fixation 
549
+            //thank to https://www.phparch.com/2018/01/php-sessions-in-depth/
550
+            ini_set('session.use_strict_mode ', 1);
551
+            ini_set('session.use_only_cookies', 1);
552
+            ini_set('session.use_trans_sid ', 0);
553 553
 			
554
-			$logger->info('Session lifetime: ' . $lifetime);
555
-			$logger->info('Session cookie path: ' . $path);
556
-			$logger->info('Session domain: ' . $domain);
557
-			$logger->info('Session is secure: ' . ($secure ? 'TRUE':'FALSE'));
554
+            $logger->info('Session lifetime: ' . $lifetime);
555
+            $logger->info('Session cookie path: ' . $path);
556
+            $logger->info('Session domain: ' . $domain);
557
+            $logger->info('Session is secure: ' . ($secure ? 'TRUE':'FALSE'));
558 558
 			
559
-			if ((function_exists('session_status') && session_status() !== PHP_SESSION_ACTIVE) || !session_id()){
560
-				$logger->info('Session not yet start, start it now');
561
-				session_start();
562
-			}
563
-		}
564
-	}
559
+            if ((function_exists('session_status') && session_status() !== PHP_SESSION_ACTIVE) || !session_id()){
560
+                $logger->info('Session not yet start, start it now');
561
+                session_start();
562
+            }
563
+        }
564
+    }
565 565
 	
566
-	/**
567
-	* This function is very useful, it allows to recover the instance of the global controller.
568
-	* Note this function always returns the address of the super instance.
569
-	* For example :
570
-	* $obj = & get_instance();
571
-	* 
572
-	* @codeCoverageIgnore
573
-	*  
574
-	* @return object the instance of the "Controller" class
575
-	*/
576
-	function & get_instance(){
577
-		return Controller::get_instance();
578
-	}
566
+    /**
567
+     * This function is very useful, it allows to recover the instance of the global controller.
568
+     * Note this function always returns the address of the super instance.
569
+     * For example :
570
+     * $obj = & get_instance();
571
+     * 
572
+     * @codeCoverageIgnore
573
+     *  
574
+     * @return object the instance of the "Controller" class
575
+     */
576
+    function & get_instance(){
577
+        return Controller::get_instance();
578
+    }
Please login to merge, or discard this patch.
Spacing   +69 added lines, -69 removed lines patch added patch discarded remove patch
@@ -53,14 +53,14 @@  discard block
 block discarded – undo
53 53
 		//put the first letter of class to upper case 
54 54
 		$class = ucfirst($class);
55 55
 		static $classes = array();
56
-		if (isset($classes[$class]) /*hack for duplicate log Logger name*/ && $class != 'Log'){
56
+		if (isset($classes[$class]) /*hack for duplicate log Logger name*/ && $class != 'Log') {
57 57
 			return $classes[$class];
58 58
 		}
59 59
 		$found = false;
60 60
 		foreach (array(ROOT_PATH, CORE_PATH) as $path) {
61 61
 			$file = $path . $dir . '/' . $class . '.php';
62
-			if (file_exists($file)){
63
-				if (class_exists($class, false) === false){
62
+			if (file_exists($file)) {
63
+				if (class_exists($class, false) === false) {
64 64
 					require_once $file;
65 65
 				}
66 66
 				//already found
@@ -68,7 +68,7 @@  discard block
 block discarded – undo
68 68
 				break;
69 69
 			}
70 70
 		}
71
-		if (! $found){
71
+		if (!$found) {
72 72
 			//can't use show_error() at this time because some dependencies not yet loaded
73 73
 			set_http_status_header(503);
74 74
 			echo 'Cannot find the class [' . $class . ']';
@@ -78,7 +78,7 @@  discard block
 block discarded – undo
78 78
 		/*
79 79
 		   TODO use the best method to get the Log instance
80 80
 		 */
81
-		if ($class == 'Log'){
81
+		if ($class == 'Log') {
82 82
 			//can't use the instruction like "return new Log()" 
83 83
 			//because we need return the reference instance of the loaded class.
84 84
 			$log = new Log();
@@ -102,7 +102,7 @@  discard block
 block discarded – undo
102 102
 	 */
103 103
 	function & class_loaded($class = null){
104 104
 		static $list = array();
105
-		if ($class !== null){
105
+		if ($class !== null) {
106 106
 			$list[strtolower($class)] = $class;
107 107
 		}
108 108
 		return $list;
@@ -117,14 +117,14 @@  discard block
 block discarded – undo
117 117
 	 */
118 118
 	function & load_configurations(array $overwrite_values = array()){
119 119
 		static $config;
120
-		if (empty($config)){
120
+		if (empty($config)) {
121 121
 			$file = CONFIG_PATH . 'config.php';
122 122
 			$found = false;
123
-			if (file_exists($file)){
123
+			if (file_exists($file)) {
124 124
 				require_once $file;
125 125
 				$found = true;
126 126
 			}
127
-			if (! $found){
127
+			if (!$found) {
128 128
 				set_http_status_header(503);
129 129
 				echo 'Unable to find the configuration file [' . $file . ']';
130 130
 				die();
@@ -144,9 +144,9 @@  discard block
 block discarded – undo
144 144
 	 * 
145 145
 	 * @return mixed          the config value
146 146
 	 */
147
-	function get_config($key, $default = null){
147
+	function get_config($key, $default = null) {
148 148
 		static $cfg;
149
-		if (empty($cfg)){
149
+		if (empty($cfg)) {
150 150
 			$cfg[0] = & load_configurations();
151 151
 		}
152 152
 		return array_key_exists($key, $cfg[0]) ? $cfg[0][$key] : $default;
@@ -160,9 +160,9 @@  discard block
 block discarded – undo
160 160
 	 * 
161 161
 	 * @codeCoverageIgnore
162 162
 	 */
163
-	function save_to_log($level, $message, $logger = null){
164
-		$log =& class_loader('Log', 'classes');
165
-		if ($logger){
163
+	function save_to_log($level, $message, $logger = null) {
164
+		$log = & class_loader('Log', 'classes');
165
+		if ($logger) {
166 166
 			$log->setLogger($logger);
167 167
 		}
168 168
 		$log->writeLog($message, $level);
@@ -175,8 +175,8 @@  discard block
 block discarded – undo
175 175
 	 * 
176 176
 	 * @codeCoverageIgnore
177 177
 	 */
178
-	function set_http_status_header($code = 200, $text = null){
179
-		if (empty($text)){
178
+	function set_http_status_header($code = 200, $text = null) {
179
+		if (empty($text)) {
180 180
 			$http_status = array(
181 181
 								100 => 'Continue',
182 182
 								101 => 'Switching Protocols',
@@ -220,20 +220,20 @@  discard block
 block discarded – undo
220 220
 								504 => 'Gateway Timeout',
221 221
 								505 => 'HTTP Version Not Supported',
222 222
 							);
223
-			if (isset($http_status[$code])){
223
+			if (isset($http_status[$code])) {
224 224
 				$text = $http_status[$code];
225 225
 			}
226
-			else{
226
+			else {
227 227
 				show_error('No HTTP status text found for your code please check it.');
228 228
 			}
229 229
 		}
230 230
 		
231
-		if (strpos(php_sapi_name(), 'cgi') === 0){
231
+		if (strpos(php_sapi_name(), 'cgi') === 0) {
232 232
 			header('Status: ' . $code . ' ' . $text, TRUE);
233 233
 		}
234
-		else{
234
+		else {
235 235
 			$proto = 'HTTP/1.1';
236
-			if(isset($_SERVER['SERVER_PROTOCOL'])){
236
+			if (isset($_SERVER['SERVER_PROTOCOL'])) {
237 237
 				$proto = $_SERVER['SERVER_PROTOCOL'];
238 238
 			}
239 239
 			header($proto . ' ' . $code . ' ' . $text, TRUE, $code);
@@ -249,13 +249,13 @@  discard block
 block discarded – undo
249 249
 	 *  
250 250
 	 *  @codeCoverageIgnore
251 251
 	 */
252
-	function show_error($msg, $title = 'error', $logging = true){
252
+	function show_error($msg, $title = 'error', $logging = true) {
253 253
 		$title = strtoupper($title);
254 254
 		$data = array();
255 255
 		$data['error'] = $msg;
256 256
 		$data['title'] = $title;
257
-		if ($logging){
258
-			save_to_log('error', '['.$title.'] '.strip_tags($msg), 'GLOBAL::ERROR');
257
+		if ($logging) {
258
+			save_to_log('error', '[' . $title . '] ' . strip_tags($msg), 'GLOBAL::ERROR');
259 259
 		}
260 260
 		$response = & class_loader('Response', 'classes');
261 261
 		$response->sendError($data);
@@ -269,18 +269,18 @@  discard block
 block discarded – undo
269 269
 	 *  
270 270
 	 *  @return boolean true if the web server uses the https protocol, false if not.
271 271
 	 */
272
-	function is_https(){
272
+	function is_https() {
273 273
 		/*
274 274
 		* some servers pass the "HTTPS" parameter in the server variable,
275 275
 		* if is the case, check if the value is "on", "true", "1".
276 276
 		*/
277
-		if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off'){
277
+		if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') {
278 278
 			return true;
279 279
 		}
280
-		if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https'){
280
+		if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
281 281
 			return true;
282 282
 		}
283
-		if (isset($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off'){
283
+		if (isset($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') {
284 284
 			return true;
285 285
 		}
286 286
 		return false;
@@ -295,7 +295,7 @@  discard block
 block discarded – undo
295 295
 	 *  
296 296
 	 *  @return boolean true if is a valid URL address or false.
297 297
 	 */
298
-	function is_url($url){
298
+	function is_url($url) {
299 299
 		return preg_match('/^(http|https|ftp):\/\/(.*)/', $url) == 1;
300 300
 	}
301 301
 	
@@ -305,8 +305,8 @@  discard block
 block discarded – undo
305 305
 	 *  @param string $controllerClass the controller class name to be loaded
306 306
 	 *  @codeCoverageIgnore
307 307
 	 */
308
-	function autoload_controller($controllerClass){
309
-		if (file_exists($path = APPS_CONTROLLER_PATH . $controllerClass . '.php')){
308
+	function autoload_controller($controllerClass) {
309
+		if (file_exists($path = APPS_CONTROLLER_PATH . $controllerClass . '.php')) {
310 310
 			require_once $path;
311 311
 		}
312 312
 	}
@@ -320,11 +320,11 @@  discard block
 block discarded – undo
320 320
 	 *  
321 321
 	 *  @return boolean
322 322
 	 */
323
-	function php_exception_handler($ex){
324
-		if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))){
325
-			show_error('An exception is occured in file '. $ex->getFile() .' at line ' . $ex->getLine() . ' raison : ' . $ex->getMessage(), 'PHP Exception #' . $ex->getCode());
323
+	function php_exception_handler($ex) {
324
+		if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))) {
325
+			show_error('An exception is occured in file ' . $ex->getFile() . ' at line ' . $ex->getLine() . ' raison : ' . $ex->getMessage(), 'PHP Exception #' . $ex->getCode());
326 326
 		}
327
-		else{
327
+		else {
328 328
 			save_to_log('error', 'An exception is occured in file ' . $ex->getFile() . ' at line ' . $ex->getLine() . ' raison : ' . $ex->getMessage(), 'PHP Exception');
329 329
 		}
330 330
 		return true;
@@ -341,16 +341,16 @@  discard block
 block discarded – undo
341 341
 	 *  
342 342
 	 *  @return boolean	
343 343
 	 */
344
-	function php_error_handler($errno , $errstr, $errfile , $errline){
344
+	function php_error_handler($errno, $errstr, $errfile, $errline) {
345 345
 		$isError = (((E_ERROR | E_COMPILE_ERROR | E_CORE_ERROR | E_USER_ERROR) & $errno) === $errno);
346
-		if ($isError){
346
+		if ($isError) {
347 347
 			set_http_status_header(500);
348 348
 		}
349
-		if (! (error_reporting() & $errno)) {
349
+		if (!(error_reporting() & $errno)) {
350 350
 			save_to_log('error', 'An error is occurred in the file ' . $errfile . ' at line ' . $errline . ' raison : ' . $errstr, 'PHP ERROR');
351 351
 			return;
352 352
 		}
353
-		if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))){
353
+		if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))) {
354 354
 			$errorType = 'error';
355 355
 			switch ($errno) {
356 356
 				case E_USER_WARNING:
@@ -360,9 +360,9 @@  discard block
 block discarded – undo
360 360
 					$errorType = 'notice';
361 361
 					break;
362 362
 			}
363
-			show_error('An error is occurred in the file <b>' . $errfile . '</b> at line <b>' . $errline .'</b> raison : ' . $errstr, 'PHP ' . $errorType);
363
+			show_error('An error is occurred in the file <b>' . $errfile . '</b> at line <b>' . $errline . '</b> raison : ' . $errstr, 'PHP ' . $errorType);
364 364
 		}
365
-		if ($isError){
365
+		if ($isError) {
366 366
 			die();
367 367
 		}
368 368
 		return true;
@@ -372,10 +372,10 @@  discard block
 block discarded – undo
372 372
 	 * This function is used to run in shutdown situation of the script
373 373
 	 * @codeCoverageIgnore
374 374
 	 */
375
-	function php_shudown_handler(){
375
+	function php_shudown_handler() {
376 376
 		$lastError = error_get_last();
377 377
 		if (isset($lastError) &&
378
-			($lastError['type'] & (E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING))){
378
+			($lastError['type'] & (E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING))) {
379 379
 			php_error_handler($lastError['type'], $lastError['message'], $lastError['file'], $lastError['line']);
380 380
 		}
381 381
 	}
@@ -393,11 +393,11 @@  discard block
 block discarded – undo
393 393
 	 *   
394 394
 	 *  @return string string of the HTML attribute.
395 395
 	 */
396
-	function attributes_to_string(array $attributes){
396
+	function attributes_to_string(array $attributes) {
397 397
 		$str = ' ';
398 398
 		//we check that the array passed as an argument is not empty.
399
-		if (! empty($attributes)){
400
-			foreach($attributes as $key => $value){
399
+		if (!empty($attributes)) {
400
+			foreach ($attributes as $key => $value) {
401 401
 				$key = trim(htmlspecialchars($key));
402 402
 				$value = trim(htmlspecialchars($value));
403 403
 				/*
@@ -407,10 +407,10 @@  discard block
 block discarded – undo
407 407
 				* 	$attr = array('placeholder' => 'I am a "puple"')
408 408
 				* 	$str = attributes_to_string($attr); => placeholder = "I am a \"puple\""
409 409
 				 */
410
-				if ($value && strpos('"', $value) !== false){
410
+				if ($value && strpos('"', $value) !== false) {
411 411
 					$value = addslashes($value);
412 412
 				}
413
-				$str .= $key.' = "'.$value.'" ';
413
+				$str .= $key . ' = "' . $value . '" ';
414 414
 			}
415 415
 		}
416 416
 		//remove the space after using rtrim()
@@ -426,7 +426,7 @@  discard block
 block discarded – undo
426 426
 	*
427 427
 	* @return string the stringfy value
428 428
 	*/
429
-	function stringfy_vars($var){
429
+	function stringfy_vars($var) {
430 430
 		return print_r($var, true);
431 431
 	}
432 432
 
@@ -437,18 +437,18 @@  discard block
 block discarded – undo
437 437
 	 * 
438 438
 	 * @return mixed   the sanitize value
439 439
 	 */
440
-	function clean_input($str){
441
-		if (is_array($str)){
440
+	function clean_input($str) {
441
+		if (is_array($str)) {
442 442
 			$str = array_map('clean_input', $str);
443 443
 		}
444
-		else if (is_object($str)){
444
+		else if (is_object($str)) {
445 445
 			$obj = $str;
446 446
 			foreach ($str as $var => $value) {
447 447
 				$obj->$var = clean_input($value);
448 448
 			}
449 449
 			$str = $obj;
450 450
 		}
451
-		else{
451
+		else {
452 452
 			$str = htmlspecialchars(strip_tags($str), ENT_QUOTES, 'UTF-8');
453 453
 		}
454 454
 		return $str;
@@ -466,11 +466,11 @@  discard block
 block discarded – undo
466 466
 	 * 
467 467
 	 * @return string the string with the hidden part.
468 468
 	 */
469
-	function string_hidden($str, $startCount = 0, $endCount = 0, $hiddenChar = '*'){
469
+	function string_hidden($str, $startCount = 0, $endCount = 0, $hiddenChar = '*') {
470 470
 		//get the string length
471 471
 		$len = strlen($str);
472 472
 		//if str is empty
473
-		if ($len <= 0){
473
+		if ($len <= 0) {
474 474
 			return str_repeat($hiddenChar, 6);
475 475
 		}
476 476
 		//if the length is less than startCount and endCount
@@ -478,14 +478,14 @@  discard block
 block discarded – undo
478 478
 		//or startCount is negative or endCount is negative
479 479
 		//return the full string hidden
480 480
 		
481
-		if ((($startCount + $endCount) > $len) || ($startCount == 0 && $endCount == 0) || ($startCount < 0 || $endCount < 0)){
481
+		if ((($startCount + $endCount) > $len) || ($startCount == 0 && $endCount == 0) || ($startCount < 0 || $endCount < 0)) {
482 482
 			return str_repeat($hiddenChar, $len);
483 483
 		}
484 484
 		//the start non hidden string
485 485
 		$startNonHiddenStr = substr($str, 0, $startCount);
486 486
 		//the end non hidden string
487 487
 		$endNonHiddenStr = null;
488
-		if ($endCount > 0){
488
+		if ($endCount > 0) {
489 489
 			$endNonHiddenStr = substr($str, - $endCount);
490 490
 		}
491 491
 		//the hidden string
@@ -498,40 +498,40 @@  discard block
 block discarded – undo
498 498
 	 * This function is used to set the initial session config regarding the configuration
499 499
 	 * @codeCoverageIgnore
500 500
 	 */
501
-	function set_session_config(){
501
+	function set_session_config() {
502 502
 		//$_SESSION is not available on cli mode 
503
-		if (! IS_CLI){
504
-			$logger =& class_loader('Log', 'classes');
503
+		if (!IS_CLI) {
504
+			$logger = & class_loader('Log', 'classes');
505 505
 			$logger->setLogger('PHPSession');
506 506
 			//set session params
507 507
 			$sessionHandler = get_config('session_handler', 'files'); //the default is to store in the files
508 508
 			$sessionName = get_config('session_name');
509
-			if ($sessionName){
509
+			if ($sessionName) {
510 510
 				session_name($sessionName);
511 511
 			}
512 512
 			$logger->info('Session handler: ' . $sessionHandler);
513 513
 			$logger->info('Session name: ' . $sessionName);
514 514
 
515
-			if ($sessionHandler == 'files'){
515
+			if ($sessionHandler == 'files') {
516 516
 				$sessionSavePath = get_config('session_save_path');
517
-				if ($sessionSavePath){
518
-					if (! is_dir($sessionSavePath)){
517
+				if ($sessionSavePath) {
518
+					if (!is_dir($sessionSavePath)) {
519 519
 						mkdir($sessionSavePath, 1773);
520 520
 					}
521 521
 					session_save_path($sessionSavePath);
522 522
 					$logger->info('Session save path: ' . $sessionSavePath);
523 523
 				}
524 524
 			}
525
-			else if ($sessionHandler == 'database'){
525
+			else if ($sessionHandler == 'database') {
526 526
 				//load database session handle library
527 527
 				//Database Session handler Model
528 528
 				require_once CORE_CLASSES_MODEL_PATH . 'DBSessionHandlerModel.php';
529 529
 
530
-				$DBS =& class_loader('DBSessionHandler', 'classes');
530
+				$DBS = & class_loader('DBSessionHandler', 'classes');
531 531
 				session_set_save_handler($DBS, true);
532 532
 				$logger->info('session save path: ' . get_config('session_save_path'));
533 533
 			}
534
-			else{
534
+			else {
535 535
 				show_error('Invalid session handler configuration');
536 536
 			}
537 537
 			$lifetime = get_config('session_cookie_lifetime', 0);
@@ -554,9 +554,9 @@  discard block
 block discarded – undo
554 554
 			$logger->info('Session lifetime: ' . $lifetime);
555 555
 			$logger->info('Session cookie path: ' . $path);
556 556
 			$logger->info('Session domain: ' . $domain);
557
-			$logger->info('Session is secure: ' . ($secure ? 'TRUE':'FALSE'));
557
+			$logger->info('Session is secure: ' . ($secure ? 'TRUE' : 'FALSE'));
558 558
 			
559
-			if ((function_exists('session_status') && session_status() !== PHP_SESSION_ACTIVE) || !session_id()){
559
+			if ((function_exists('session_status') && session_status() !== PHP_SESSION_ACTIVE) || !session_id()) {
560 560
 				$logger->info('Session not yet start, start it now');
561 561
 				session_start();
562 562
 			}
Please login to merge, or discard this patch.
Braces   +7 added lines, -14 removed lines patch added patch discarded remove patch
@@ -222,16 +222,14 @@  discard block
 block discarded – undo
222 222
 							);
223 223
 			if (isset($http_status[$code])){
224 224
 				$text = $http_status[$code];
225
-			}
226
-			else{
225
+			} else{
227 226
 				show_error('No HTTP status text found for your code please check it.');
228 227
 			}
229 228
 		}
230 229
 		
231 230
 		if (strpos(php_sapi_name(), 'cgi') === 0){
232 231
 			header('Status: ' . $code . ' ' . $text, TRUE);
233
-		}
234
-		else{
232
+		} else{
235 233
 			$proto = 'HTTP/1.1';
236 234
 			if(isset($_SERVER['SERVER_PROTOCOL'])){
237 235
 				$proto = $_SERVER['SERVER_PROTOCOL'];
@@ -323,8 +321,7 @@  discard block
 block discarded – undo
323 321
 	function php_exception_handler($ex){
324 322
 		if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))){
325 323
 			show_error('An exception is occured in file '. $ex->getFile() .' at line ' . $ex->getLine() . ' raison : ' . $ex->getMessage(), 'PHP Exception #' . $ex->getCode());
326
-		}
327
-		else{
324
+		} else{
328 325
 			save_to_log('error', 'An exception is occured in file ' . $ex->getFile() . ' at line ' . $ex->getLine() . ' raison : ' . $ex->getMessage(), 'PHP Exception');
329 326
 		}
330 327
 		return true;
@@ -440,15 +437,13 @@  discard block
 block discarded – undo
440 437
 	function clean_input($str){
441 438
 		if (is_array($str)){
442 439
 			$str = array_map('clean_input', $str);
443
-		}
444
-		else if (is_object($str)){
440
+		} else if (is_object($str)){
445 441
 			$obj = $str;
446 442
 			foreach ($str as $var => $value) {
447 443
 				$obj->$var = clean_input($value);
448 444
 			}
449 445
 			$str = $obj;
450
-		}
451
-		else{
446
+		} else{
452 447
 			$str = htmlspecialchars(strip_tags($str), ENT_QUOTES, 'UTF-8');
453 448
 		}
454 449
 		return $str;
@@ -521,8 +516,7 @@  discard block
 block discarded – undo
521 516
 					session_save_path($sessionSavePath);
522 517
 					$logger->info('Session save path: ' . $sessionSavePath);
523 518
 				}
524
-			}
525
-			else if ($sessionHandler == 'database'){
519
+			} else if ($sessionHandler == 'database'){
526 520
 				//load database session handle library
527 521
 				//Database Session handler Model
528 522
 				require_once CORE_CLASSES_MODEL_PATH . 'DBSessionHandlerModel.php';
@@ -530,8 +524,7 @@  discard block
 block discarded – undo
530 524
 				$DBS =& class_loader('DBSessionHandler', 'classes');
531 525
 				session_set_save_handler($DBS, true);
532 526
 				$logger->info('session save path: ' . get_config('session_save_path'));
533
-			}
534
-			else{
527
+			} else{
535 528
 				show_error('Invalid session handler configuration');
536 529
 			}
537 530
 			$lifetime = get_config('session_cookie_lifetime', 0);
Please login to merge, or discard this patch.
core/classes/Module.php 3 patches
Indentation   +255 added lines, -255 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2
-	defined('ROOT_PATH') || exit('Access denied');
3
-	/**
2
+    defined('ROOT_PATH') || exit('Access denied');
3
+    /**
4 4
      * TNH Framework
5 5
      *
6 6
      * A simple PHP framework using HMVC architecture
@@ -22,283 +22,283 @@  discard block
 block discarded – undo
22 22
      * You should have received a copy of the GNU General Public License
23 23
      * along with this program; if not, write to the Free Software
24 24
      * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
-    */
25
+     */
26 26
    
27
-	class Module{
27
+    class Module{
28 28
 		
29
-		/**
30
-		 * list of loaded module
31
-		 * @var array
32
-		 */
33
-		private static $list = array();
29
+        /**
30
+         * list of loaded module
31
+         * @var array
32
+         */
33
+        private static $list = array();
34 34
 
35
-		/**
36
-		 * logger instance
37
-		 * @var object
38
-		 */
39
-		private static $logger;
35
+        /**
36
+         * logger instance
37
+         * @var object
38
+         */
39
+        private static $logger;
40 40
 
41
-		/**
42
-		 * Initialise the module list by scanning the directory MODULE_PATH
43
-		 */
44
-		public function init(){
45
-			$logger = self::getLogger();
46
-			$logger->debug('Check if the application contains the modules ...');
47
-			$moduleDir = opendir(MODULE_PATH);
48
-			if (is_resource($moduleDir)){
49
-				while(($module = readdir($moduleDir)) !== false){
50
-					if (preg_match('/^([a-z0-9-_]+)$/i', $module) && is_dir(MODULE_PATH . $module)){
51
-						self::$list[] = $module;
52
-					}
53
-					else{
54
-						$logger->info('Skipping [' .$module. '], may be this is not a directory or does not exists or is invalid name');
55
-					}
56
-				}
57
-				closedir($moduleDir);
58
-			}
59
-			ksort(self::$list);
41
+        /**
42
+         * Initialise the module list by scanning the directory MODULE_PATH
43
+         */
44
+        public function init(){
45
+            $logger = self::getLogger();
46
+            $logger->debug('Check if the application contains the modules ...');
47
+            $moduleDir = opendir(MODULE_PATH);
48
+            if (is_resource($moduleDir)){
49
+                while(($module = readdir($moduleDir)) !== false){
50
+                    if (preg_match('/^([a-z0-9-_]+)$/i', $module) && is_dir(MODULE_PATH . $module)){
51
+                        self::$list[] = $module;
52
+                    }
53
+                    else{
54
+                        $logger->info('Skipping [' .$module. '], may be this is not a directory or does not exists or is invalid name');
55
+                    }
56
+                }
57
+                closedir($moduleDir);
58
+            }
59
+            ksort(self::$list);
60 60
 			
61
-			if (! empty(self::$list)){
62
-				$logger->info('The application contains the module below [' . implode(', ', self::getModuleList()) . ']');
63
-			}
64
-		}
61
+            if (! empty(self::$list)){
62
+                $logger->info('The application contains the module below [' . implode(', ', self::getModuleList()) . ']');
63
+            }
64
+        }
65 65
 
66
-		/**
67
-		 * The signleton of the logger
68
-		 * @return Object the Log instance
69
-		 */
70
-		public static function getLogger(){
71
-			if (self::$logger == null){
72
-				$logger = array();
73
-				$logger[0] =& class_loader('Log', 'classes');
74
-				$logger[0]->setLogger('Library::Module');
75
-				self::$logger = $logger[0];
76
-			}
77
-			return self::$logger;			
78
-		}
66
+        /**
67
+         * The signleton of the logger
68
+         * @return Object the Log instance
69
+         */
70
+        public static function getLogger(){
71
+            if (self::$logger == null){
72
+                $logger = array();
73
+                $logger[0] =& class_loader('Log', 'classes');
74
+                $logger[0]->setLogger('Library::Module');
75
+                self::$logger = $logger[0];
76
+            }
77
+            return self::$logger;			
78
+        }
79 79
 
80
-		/**
81
-		 * Set the log instance for future use
82
-		 * @param object $logger the log object
83
-		 * @return object the log instance
84
-		 */
85
-		public static function setLogger($logger){
86
-			self::$logger = $logger;
87
-			return self::$logger;
88
-		}
80
+        /**
81
+         * Set the log instance for future use
82
+         * @param object $logger the log object
83
+         * @return object the log instance
84
+         */
85
+        public static function setLogger($logger){
86
+            self::$logger = $logger;
87
+            return self::$logger;
88
+        }
89 89
 
90 90
 		
91 91
 
92
-		/**
93
-		 * Add new module in the list
94
-		 * @param string $name the name of the module
95
-		 *
96
-		 * @return object the current instance
97
-		 */
98
-		public function add($name){
99
-			self::$list[] = $name;
100
-			return $this;
101
-		}
92
+        /**
93
+         * Add new module in the list
94
+         * @param string $name the name of the module
95
+         *
96
+         * @return object the current instance
97
+         */
98
+        public function add($name){
99
+            self::$list[] = $name;
100
+            return $this;
101
+        }
102 102
 		
103
-		/**
104
-		 * Get the list of the custom autoload configuration from module if exists
105
-		 * @return array|boolean the autoload configurations list or false if no module contains the autoload configuration values
106
-		 */
107
-		public static function getModulesAutoloadConfig(){
108
-			$logger = self::getLogger();
109
-			if (empty(self::$list)){
110
-				$logger->info('No module was loaded skipping.');
111
-				return false;
112
-			}
113
-			$autoloads = array();
114
-			$autoloads['libraries'] = array();
115
-			$autoloads['config']    = array();
116
-			$autoloads['models']    = array();
117
-			$autoloads['functions'] = array();
118
-			$autoloads['languages'] = array();
103
+        /**
104
+         * Get the list of the custom autoload configuration from module if exists
105
+         * @return array|boolean the autoload configurations list or false if no module contains the autoload configuration values
106
+         */
107
+        public static function getModulesAutoloadConfig(){
108
+            $logger = self::getLogger();
109
+            if (empty(self::$list)){
110
+                $logger->info('No module was loaded skipping.');
111
+                return false;
112
+            }
113
+            $autoloads = array();
114
+            $autoloads['libraries'] = array();
115
+            $autoloads['config']    = array();
116
+            $autoloads['models']    = array();
117
+            $autoloads['functions'] = array();
118
+            $autoloads['languages'] = array();
119 119
 			
120
-			foreach (self::$list as $module) {
121
-				$file = MODULE_PATH . $module . DS . 'config' . DS . 'autoload.php';
122
-				if (file_exists($file)){
123
-					$autoload = array();
124
-					require_once $file;
125
-					if (! empty($autoload) && is_array($autoload)){
126
-						$autoloads = array_merge_recursive($autoloads, $autoload);
127
-						unset($autoload);
128
-					}
129
-				}
130
-			}
131
-			return $autoloads;
132
-		}
120
+            foreach (self::$list as $module) {
121
+                $file = MODULE_PATH . $module . DS . 'config' . DS . 'autoload.php';
122
+                if (file_exists($file)){
123
+                    $autoload = array();
124
+                    require_once $file;
125
+                    if (! empty($autoload) && is_array($autoload)){
126
+                        $autoloads = array_merge_recursive($autoloads, $autoload);
127
+                        unset($autoload);
128
+                    }
129
+                }
130
+            }
131
+            return $autoloads;
132
+        }
133 133
 
134
-		/**
135
-		 * Get the list of the custom routes configuration from module if exists
136
-		 * @return array|boolean the routes list or false if no module contains the routes configuration
137
-		 */
138
-		public static function getModulesRoutesConfig(){
139
-			$logger = self::getLogger();
140
-			if (empty(self::$list)){
141
-				$logger->info('No module was loaded skipping.');
142
-				return false;
143
-			}
144
-			$routes = array();
145
-			foreach (self::$list as $module) {
146
-				$file = MODULE_PATH . $module . DS . 'config' . DS . 'routes.php';
147
-				if (file_exists($file)){
148
-					$route = array();
149
-					require_once $file;
150
-					if (! empty($route) && is_array($route)){
151
-						$routes = array_merge($routes, $route);
152
-						unset($route);
153
-					}
154
-				}
155
-			}
156
-			return $routes;
157
-		}
134
+        /**
135
+         * Get the list of the custom routes configuration from module if exists
136
+         * @return array|boolean the routes list or false if no module contains the routes configuration
137
+         */
138
+        public static function getModulesRoutesConfig(){
139
+            $logger = self::getLogger();
140
+            if (empty(self::$list)){
141
+                $logger->info('No module was loaded skipping.');
142
+                return false;
143
+            }
144
+            $routes = array();
145
+            foreach (self::$list as $module) {
146
+                $file = MODULE_PATH . $module . DS . 'config' . DS . 'routes.php';
147
+                if (file_exists($file)){
148
+                    $route = array();
149
+                    require_once $file;
150
+                    if (! empty($route) && is_array($route)){
151
+                        $routes = array_merge($routes, $route);
152
+                        unset($route);
153
+                    }
154
+                }
155
+            }
156
+            return $routes;
157
+        }
158 158
 
159 159
 
160
-		/**
161
-		 * Check if in module list can have this controller
162
-		 * @see Module::findClassInModuleFullFilePath
163
-		 * @return boolean|string  false or null if no module have this controller, path the full path of the controller
164
-		 */
165
-		public static function findControllerFullPath($class, $module = null){
166
-			return self::findClassInModuleFullFilePath($class, $module, 'controllers');
167
-		}
160
+        /**
161
+         * Check if in module list can have this controller
162
+         * @see Module::findClassInModuleFullFilePath
163
+         * @return boolean|string  false or null if no module have this controller, path the full path of the controller
164
+         */
165
+        public static function findControllerFullPath($class, $module = null){
166
+            return self::findClassInModuleFullFilePath($class, $module, 'controllers');
167
+        }
168 168
 
169
-		/**
170
-		 * Check if in module list can have this model
171
-		 * @see Module::findClassInModuleFullFilePath
172
-		 * @return boolean|string  false or null if no module have this model, return the full path of this model
173
-		 */
174
-		public static function findModelFullPath($class, $module = null){
175
-			return self::findClassInModuleFullFilePath($class, $module, 'models');
176
-		}
169
+        /**
170
+         * Check if in module list can have this model
171
+         * @see Module::findClassInModuleFullFilePath
172
+         * @return boolean|string  false or null if no module have this model, return the full path of this model
173
+         */
174
+        public static function findModelFullPath($class, $module = null){
175
+            return self::findClassInModuleFullFilePath($class, $module, 'models');
176
+        }
177 177
 
178
-		/**
179
-		 * Check if in module list can have this library
180
-		 * @see Module::findClassInModuleFullFilePath
181
-		 * @return boolean|string  false or null if no module have this library,  return the full path of this library
182
-		 */
183
-		public static function findLibraryFullPath($class, $module = null){
184
-			return self::findClassInModuleFullFilePath($class, $module, 'libraries');
185
-		}
178
+        /**
179
+         * Check if in module list can have this library
180
+         * @see Module::findClassInModuleFullFilePath
181
+         * @return boolean|string  false or null if no module have this library,  return the full path of this library
182
+         */
183
+        public static function findLibraryFullPath($class, $module = null){
184
+            return self::findClassInModuleFullFilePath($class, $module, 'libraries');
185
+        }
186 186
 
187 187
 		
188
-		/**
189
-		 * Check if in module list can have this config
190
-		 * @see  Module::findNonClassInModuleFullFilePath
191
-		 * @return boolean|string  false or null if no module have this configuration,  return the full path of this configuration
192
-		 */
193
-		public static function findConfigFullPath($configuration, $module = null){
194
-			return self::findNonClassInModuleFullFilePath($configuration, $module, 'config');
195
-		}
188
+        /**
189
+         * Check if in module list can have this config
190
+         * @see  Module::findNonClassInModuleFullFilePath
191
+         * @return boolean|string  false or null if no module have this configuration,  return the full path of this configuration
192
+         */
193
+        public static function findConfigFullPath($configuration, $module = null){
194
+            return self::findNonClassInModuleFullFilePath($configuration, $module, 'config');
195
+        }
196 196
 
197
-		/**
198
-		 * Check if in module list can have this helper
199
-		 * @see  Module::findNonClassInModuleFullFilePath
200
-		 * @return boolean|string  false or null if no module have this helper,  return the full path of this helper
201
-		 */
202
-		public static function findFunctionFullPath($helper, $module = null){
203
-			return self::findNonClassInModuleFullFilePath($helper, $module, 'functions');
204
-		}
197
+        /**
198
+         * Check if in module list can have this helper
199
+         * @see  Module::findNonClassInModuleFullFilePath
200
+         * @return boolean|string  false or null if no module have this helper,  return the full path of this helper
201
+         */
202
+        public static function findFunctionFullPath($helper, $module = null){
203
+            return self::findNonClassInModuleFullFilePath($helper, $module, 'functions');
204
+        }
205 205
 
206
-		/**
207
-		 * Check if in module list can have this view
208
-		 * @see  Module::findNonClassInModuleFullFilePath
209
-		 * @return boolean|string  false or null if no module have this view, path the full path of the view
210
-		 */
211
-		public static function findViewFullPath($view, $module = null){
212
-			return self::findNonClassInModuleFullFilePath($view, $module, 'views');
213
-		}
206
+        /**
207
+         * Check if in module list can have this view
208
+         * @see  Module::findNonClassInModuleFullFilePath
209
+         * @return boolean|string  false or null if no module have this view, path the full path of the view
210
+         */
211
+        public static function findViewFullPath($view, $module = null){
212
+            return self::findNonClassInModuleFullFilePath($view, $module, 'views');
213
+        }
214 214
 
215
-		/**
216
-		 * Check if in module list can have this language
217
-		 * @see  Module::findNonClassInModuleFullFilePath
218
-		 * @return boolean|string  false or null if no module have this language,  return the full path of this language
219
-		 */
220
-		public static function findLanguageFullPath($language, $appLang, $module = null){
221
-			return self::findNonClassInModuleFullFilePath($language, $module, 'lang', $appLang);
222
-		}
215
+        /**
216
+         * Check if in module list can have this language
217
+         * @see  Module::findNonClassInModuleFullFilePath
218
+         * @return boolean|string  false or null if no module have this language,  return the full path of this language
219
+         */
220
+        public static function findLanguageFullPath($language, $appLang, $module = null){
221
+            return self::findNonClassInModuleFullFilePath($language, $module, 'lang', $appLang);
222
+        }
223 223
 
224
-		/**
225
-		 * Get the list of module loaded
226
-		 * @return array the module list
227
-		 */
228
-		public static function getModuleList(){
229
-			return self::$list;
230
-		}
224
+        /**
225
+         * Get the list of module loaded
226
+         * @return array the module list
227
+         */
228
+        public static function getModuleList(){
229
+            return self::$list;
230
+        }
231 231
 
232
-		/**
233
-		 * Check if the application has an module
234
-		 * @return boolean
235
-		 */
236
-		public static function hasModule(){
237
-			return !empty(self::$list);
238
-		}
232
+        /**
233
+         * Check if the application has an module
234
+         * @return boolean
235
+         */
236
+        public static function hasModule(){
237
+            return !empty(self::$list);
238
+        }
239 239
 
240
-		/**
241
-		 * Check if in module list can have the model, controller, library
242
-		 * @param  string $class the class name of library, model, controller
243
-		 * @param string $module the module name
244
-		 * @param string $type the name of the type "controllers", "libraries", "models"
245
-		 * @return boolean|string  false or null if no module 
246
-		 * have this class, return the full path of the class
247
-		 */
248
-		protected static function findClassInModuleFullFilePath($class, $module, $type){
249
-			$logger = self::getLogger();
250
-		    $class = str_ireplace('.php', '', $class);
251
-		    $class = ucfirst($class);
252
-		    $classFile = $class.'.php';
253
-		    $logger->debug('Checking the class [' . $class . '] in module [' . $module . '] for [' . $type . '] ...');
254
-		    $filePath = MODULE_PATH . $module . DS . $type . DS . $classFile;
255
-		    if (file_exists($filePath)){
256
-		        $logger->info('Found class [' . $class . '] in module [' . $module . '] for [' . $type . '] the file path is [' .$filePath. ']');
257
-		        return $filePath;
258
-		    }
259
-		    $logger->info('Class [' . $class . '] does not exist in the module [' .$module. '] for [' . $type . ']');
260
-		    return false;
261
-		}
240
+        /**
241
+         * Check if in module list can have the model, controller, library
242
+         * @param  string $class the class name of library, model, controller
243
+         * @param string $module the module name
244
+         * @param string $type the name of the type "controllers", "libraries", "models"
245
+         * @return boolean|string  false or null if no module 
246
+         * have this class, return the full path of the class
247
+         */
248
+        protected static function findClassInModuleFullFilePath($class, $module, $type){
249
+            $logger = self::getLogger();
250
+            $class = str_ireplace('.php', '', $class);
251
+            $class = ucfirst($class);
252
+            $classFile = $class.'.php';
253
+            $logger->debug('Checking the class [' . $class . '] in module [' . $module . '] for [' . $type . '] ...');
254
+            $filePath = MODULE_PATH . $module . DS . $type . DS . $classFile;
255
+            if (file_exists($filePath)){
256
+                $logger->info('Found class [' . $class . '] in module [' . $module . '] for [' . $type . '] the file path is [' .$filePath. ']');
257
+                return $filePath;
258
+            }
259
+            $logger->info('Class [' . $class . '] does not exist in the module [' .$module. '] for [' . $type . ']');
260
+            return false;
261
+        }
262 262
 
263
-		/**
264
-		 * Check if in module list can have the config, view, helper, language
265
-		 * @param string $name the name of config, view, helper, language
266
-		 * @param string $module the module name
267
-		 * @param string $type the name of the type "config", "functions", "views", "lang"
268
-		 * @param string|null $appLang the application language. This is use only when $type = "lang"
269
-		 * @return boolean|string  false or null if no module 
270
-		 * have this resource, return the full path of the resource
271
-		 */
272
-		protected static function findNonClassInModuleFullFilePath($name, $module, $type, $appLang = null){
273
-		    $logger = self::getLogger();
274
-		    $name = str_ireplace('.php', '', $name);
275
-		    $file = $name.'.php';
276
-		    $filePath = MODULE_PATH . $module . DS . $type . DS . $file;
277
-		    switch($type){
278
-		        case 'functions':
279
-		            $name = str_ireplace('function_', '', $name);
280
-		            $file = 'function_'.$name.'.php';
281
-		            $filePath = MODULE_PATH . $module . DS . $type . DS . $file;
282
-		        break;
283
-		        case 'views':
284
-		            $name = trim($name, '/\\');
285
-		            $name = str_ireplace('/', DS, $name);
286
-		            $file = $name . '.php';
287
-		            $filePath = MODULE_PATH . $module . DS . $type . DS . $file;
288
-		        break;
289
-		        case 'lang':
290
-		            $name = str_ireplace('lang_', '', $name);
291
-		            $file = 'lang_'.$name.'.php';
292
-		            $filePath = MODULE_PATH . $module . DS . $type . DS . $appLang . DS . $file;
293
-		        break;
294
-		    }
295
-		    $logger->debug('Checking resource [' . $name . '] in module [' .$module. '] for [' . $type . '] ...');
296
-		    if (file_exists($filePath)){
297
-		        $logger->info('Found resource [' . $name . '] in module [' .$module. '] for [' . $type . '] the file path is [' .$filePath. ']');
298
-		        return $filePath;
299
-		    }
300
-		    $logger->info('Resource [' . $name . '] does not exist in the module [' .$module. '] for [' . $type . ']');
301
-		    return false;
302
-		}
263
+        /**
264
+         * Check if in module list can have the config, view, helper, language
265
+         * @param string $name the name of config, view, helper, language
266
+         * @param string $module the module name
267
+         * @param string $type the name of the type "config", "functions", "views", "lang"
268
+         * @param string|null $appLang the application language. This is use only when $type = "lang"
269
+         * @return boolean|string  false or null if no module 
270
+         * have this resource, return the full path of the resource
271
+         */
272
+        protected static function findNonClassInModuleFullFilePath($name, $module, $type, $appLang = null){
273
+            $logger = self::getLogger();
274
+            $name = str_ireplace('.php', '', $name);
275
+            $file = $name.'.php';
276
+            $filePath = MODULE_PATH . $module . DS . $type . DS . $file;
277
+            switch($type){
278
+                case 'functions':
279
+                    $name = str_ireplace('function_', '', $name);
280
+                    $file = 'function_'.$name.'.php';
281
+                    $filePath = MODULE_PATH . $module . DS . $type . DS . $file;
282
+                break;
283
+                case 'views':
284
+                    $name = trim($name, '/\\');
285
+                    $name = str_ireplace('/', DS, $name);
286
+                    $file = $name . '.php';
287
+                    $filePath = MODULE_PATH . $module . DS . $type . DS . $file;
288
+                break;
289
+                case 'lang':
290
+                    $name = str_ireplace('lang_', '', $name);
291
+                    $file = 'lang_'.$name.'.php';
292
+                    $filePath = MODULE_PATH . $module . DS . $type . DS . $appLang . DS . $file;
293
+                break;
294
+            }
295
+            $logger->debug('Checking resource [' . $name . '] in module [' .$module. '] for [' . $type . '] ...');
296
+            if (file_exists($filePath)){
297
+                $logger->info('Found resource [' . $name . '] in module [' .$module. '] for [' . $type . '] the file path is [' .$filePath. ']');
298
+                return $filePath;
299
+            }
300
+            $logger->info('Resource [' . $name . '] does not exist in the module [' .$module. '] for [' . $type . ']');
301
+            return false;
302
+        }
303 303
 
304
-	}
304
+    }
Please login to merge, or discard this patch.
Spacing   +44 added lines, -44 removed lines patch added patch discarded remove patch
@@ -24,7 +24,7 @@  discard block
 block discarded – undo
24 24
      * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25 25
     */
26 26
    
27
-	class Module{
27
+	class Module {
28 28
 		
29 29
 		/**
30 30
 		 * list of loaded module
@@ -41,24 +41,24 @@  discard block
 block discarded – undo
41 41
 		/**
42 42
 		 * Initialise the module list by scanning the directory MODULE_PATH
43 43
 		 */
44
-		public function init(){
44
+		public function init() {
45 45
 			$logger = self::getLogger();
46 46
 			$logger->debug('Check if the application contains the modules ...');
47 47
 			$moduleDir = opendir(MODULE_PATH);
48
-			if (is_resource($moduleDir)){
49
-				while(($module = readdir($moduleDir)) !== false){
50
-					if (preg_match('/^([a-z0-9-_]+)$/i', $module) && is_dir(MODULE_PATH . $module)){
48
+			if (is_resource($moduleDir)) {
49
+				while (($module = readdir($moduleDir)) !== false) {
50
+					if (preg_match('/^([a-z0-9-_]+)$/i', $module) && is_dir(MODULE_PATH . $module)) {
51 51
 						self::$list[] = $module;
52 52
 					}
53
-					else{
54
-						$logger->info('Skipping [' .$module. '], may be this is not a directory or does not exists or is invalid name');
53
+					else {
54
+						$logger->info('Skipping [' . $module . '], may be this is not a directory or does not exists or is invalid name');
55 55
 					}
56 56
 				}
57 57
 				closedir($moduleDir);
58 58
 			}
59 59
 			ksort(self::$list);
60 60
 			
61
-			if (! empty(self::$list)){
61
+			if (!empty(self::$list)) {
62 62
 				$logger->info('The application contains the module below [' . implode(', ', self::getModuleList()) . ']');
63 63
 			}
64 64
 		}
@@ -67,10 +67,10 @@  discard block
 block discarded – undo
67 67
 		 * The signleton of the logger
68 68
 		 * @return Object the Log instance
69 69
 		 */
70
-		public static function getLogger(){
71
-			if (self::$logger == null){
70
+		public static function getLogger() {
71
+			if (self::$logger == null) {
72 72
 				$logger = array();
73
-				$logger[0] =& class_loader('Log', 'classes');
73
+				$logger[0] = & class_loader('Log', 'classes');
74 74
 				$logger[0]->setLogger('Library::Module');
75 75
 				self::$logger = $logger[0];
76 76
 			}
@@ -82,7 +82,7 @@  discard block
 block discarded – undo
82 82
 		 * @param object $logger the log object
83 83
 		 * @return object the log instance
84 84
 		 */
85
-		public static function setLogger($logger){
85
+		public static function setLogger($logger) {
86 86
 			self::$logger = $logger;
87 87
 			return self::$logger;
88 88
 		}
@@ -95,7 +95,7 @@  discard block
 block discarded – undo
95 95
 		 *
96 96
 		 * @return object the current instance
97 97
 		 */
98
-		public function add($name){
98
+		public function add($name) {
99 99
 			self::$list[] = $name;
100 100
 			return $this;
101 101
 		}
@@ -104,9 +104,9 @@  discard block
 block discarded – undo
104 104
 		 * Get the list of the custom autoload configuration from module if exists
105 105
 		 * @return array|boolean the autoload configurations list or false if no module contains the autoload configuration values
106 106
 		 */
107
-		public static function getModulesAutoloadConfig(){
107
+		public static function getModulesAutoloadConfig() {
108 108
 			$logger = self::getLogger();
109
-			if (empty(self::$list)){
109
+			if (empty(self::$list)) {
110 110
 				$logger->info('No module was loaded skipping.');
111 111
 				return false;
112 112
 			}
@@ -119,10 +119,10 @@  discard block
 block discarded – undo
119 119
 			
120 120
 			foreach (self::$list as $module) {
121 121
 				$file = MODULE_PATH . $module . DS . 'config' . DS . 'autoload.php';
122
-				if (file_exists($file)){
122
+				if (file_exists($file)) {
123 123
 					$autoload = array();
124 124
 					require_once $file;
125
-					if (! empty($autoload) && is_array($autoload)){
125
+					if (!empty($autoload) && is_array($autoload)) {
126 126
 						$autoloads = array_merge_recursive($autoloads, $autoload);
127 127
 						unset($autoload);
128 128
 					}
@@ -135,19 +135,19 @@  discard block
 block discarded – undo
135 135
 		 * Get the list of the custom routes configuration from module if exists
136 136
 		 * @return array|boolean the routes list or false if no module contains the routes configuration
137 137
 		 */
138
-		public static function getModulesRoutesConfig(){
138
+		public static function getModulesRoutesConfig() {
139 139
 			$logger = self::getLogger();
140
-			if (empty(self::$list)){
140
+			if (empty(self::$list)) {
141 141
 				$logger->info('No module was loaded skipping.');
142 142
 				return false;
143 143
 			}
144 144
 			$routes = array();
145 145
 			foreach (self::$list as $module) {
146 146
 				$file = MODULE_PATH . $module . DS . 'config' . DS . 'routes.php';
147
-				if (file_exists($file)){
147
+				if (file_exists($file)) {
148 148
 					$route = array();
149 149
 					require_once $file;
150
-					if (! empty($route) && is_array($route)){
150
+					if (!empty($route) && is_array($route)) {
151 151
 						$routes = array_merge($routes, $route);
152 152
 						unset($route);
153 153
 					}
@@ -162,7 +162,7 @@  discard block
 block discarded – undo
162 162
 		 * @see Module::findClassInModuleFullFilePath
163 163
 		 * @return boolean|string  false or null if no module have this controller, path the full path of the controller
164 164
 		 */
165
-		public static function findControllerFullPath($class, $module = null){
165
+		public static function findControllerFullPath($class, $module = null) {
166 166
 			return self::findClassInModuleFullFilePath($class, $module, 'controllers');
167 167
 		}
168 168
 
@@ -171,7 +171,7 @@  discard block
 block discarded – undo
171 171
 		 * @see Module::findClassInModuleFullFilePath
172 172
 		 * @return boolean|string  false or null if no module have this model, return the full path of this model
173 173
 		 */
174
-		public static function findModelFullPath($class, $module = null){
174
+		public static function findModelFullPath($class, $module = null) {
175 175
 			return self::findClassInModuleFullFilePath($class, $module, 'models');
176 176
 		}
177 177
 
@@ -180,7 +180,7 @@  discard block
 block discarded – undo
180 180
 		 * @see Module::findClassInModuleFullFilePath
181 181
 		 * @return boolean|string  false or null if no module have this library,  return the full path of this library
182 182
 		 */
183
-		public static function findLibraryFullPath($class, $module = null){
183
+		public static function findLibraryFullPath($class, $module = null) {
184 184
 			return self::findClassInModuleFullFilePath($class, $module, 'libraries');
185 185
 		}
186 186
 
@@ -190,7 +190,7 @@  discard block
 block discarded – undo
190 190
 		 * @see  Module::findNonClassInModuleFullFilePath
191 191
 		 * @return boolean|string  false or null if no module have this configuration,  return the full path of this configuration
192 192
 		 */
193
-		public static function findConfigFullPath($configuration, $module = null){
193
+		public static function findConfigFullPath($configuration, $module = null) {
194 194
 			return self::findNonClassInModuleFullFilePath($configuration, $module, 'config');
195 195
 		}
196 196
 
@@ -199,7 +199,7 @@  discard block
 block discarded – undo
199 199
 		 * @see  Module::findNonClassInModuleFullFilePath
200 200
 		 * @return boolean|string  false or null if no module have this helper,  return the full path of this helper
201 201
 		 */
202
-		public static function findFunctionFullPath($helper, $module = null){
202
+		public static function findFunctionFullPath($helper, $module = null) {
203 203
 			return self::findNonClassInModuleFullFilePath($helper, $module, 'functions');
204 204
 		}
205 205
 
@@ -208,7 +208,7 @@  discard block
 block discarded – undo
208 208
 		 * @see  Module::findNonClassInModuleFullFilePath
209 209
 		 * @return boolean|string  false or null if no module have this view, path the full path of the view
210 210
 		 */
211
-		public static function findViewFullPath($view, $module = null){
211
+		public static function findViewFullPath($view, $module = null) {
212 212
 			return self::findNonClassInModuleFullFilePath($view, $module, 'views');
213 213
 		}
214 214
 
@@ -217,7 +217,7 @@  discard block
 block discarded – undo
217 217
 		 * @see  Module::findNonClassInModuleFullFilePath
218 218
 		 * @return boolean|string  false or null if no module have this language,  return the full path of this language
219 219
 		 */
220
-		public static function findLanguageFullPath($language, $appLang, $module = null){
220
+		public static function findLanguageFullPath($language, $appLang, $module = null) {
221 221
 			return self::findNonClassInModuleFullFilePath($language, $module, 'lang', $appLang);
222 222
 		}
223 223
 
@@ -225,7 +225,7 @@  discard block
 block discarded – undo
225 225
 		 * Get the list of module loaded
226 226
 		 * @return array the module list
227 227
 		 */
228
-		public static function getModuleList(){
228
+		public static function getModuleList() {
229 229
 			return self::$list;
230 230
 		}
231 231
 
@@ -233,7 +233,7 @@  discard block
 block discarded – undo
233 233
 		 * Check if the application has an module
234 234
 		 * @return boolean
235 235
 		 */
236
-		public static function hasModule(){
236
+		public static function hasModule() {
237 237
 			return !empty(self::$list);
238 238
 		}
239 239
 
@@ -245,18 +245,18 @@  discard block
 block discarded – undo
245 245
 		 * @return boolean|string  false or null if no module 
246 246
 		 * have this class, return the full path of the class
247 247
 		 */
248
-		protected static function findClassInModuleFullFilePath($class, $module, $type){
248
+		protected static function findClassInModuleFullFilePath($class, $module, $type) {
249 249
 			$logger = self::getLogger();
250 250
 		    $class = str_ireplace('.php', '', $class);
251 251
 		    $class = ucfirst($class);
252
-		    $classFile = $class.'.php';
252
+		    $classFile = $class . '.php';
253 253
 		    $logger->debug('Checking the class [' . $class . '] in module [' . $module . '] for [' . $type . '] ...');
254 254
 		    $filePath = MODULE_PATH . $module . DS . $type . DS . $classFile;
255
-		    if (file_exists($filePath)){
256
-		        $logger->info('Found class [' . $class . '] in module [' . $module . '] for [' . $type . '] the file path is [' .$filePath. ']');
255
+		    if (file_exists($filePath)) {
256
+		        $logger->info('Found class [' . $class . '] in module [' . $module . '] for [' . $type . '] the file path is [' . $filePath . ']');
257 257
 		        return $filePath;
258 258
 		    }
259
-		    $logger->info('Class [' . $class . '] does not exist in the module [' .$module. '] for [' . $type . ']');
259
+		    $logger->info('Class [' . $class . '] does not exist in the module [' . $module . '] for [' . $type . ']');
260 260
 		    return false;
261 261
 		}
262 262
 
@@ -269,15 +269,15 @@  discard block
 block discarded – undo
269 269
 		 * @return boolean|string  false or null if no module 
270 270
 		 * have this resource, return the full path of the resource
271 271
 		 */
272
-		protected static function findNonClassInModuleFullFilePath($name, $module, $type, $appLang = null){
272
+		protected static function findNonClassInModuleFullFilePath($name, $module, $type, $appLang = null) {
273 273
 		    $logger = self::getLogger();
274 274
 		    $name = str_ireplace('.php', '', $name);
275
-		    $file = $name.'.php';
275
+		    $file = $name . '.php';
276 276
 		    $filePath = MODULE_PATH . $module . DS . $type . DS . $file;
277
-		    switch($type){
277
+		    switch ($type) {
278 278
 		        case 'functions':
279 279
 		            $name = str_ireplace('function_', '', $name);
280
-		            $file = 'function_'.$name.'.php';
280
+		            $file = 'function_' . $name . '.php';
281 281
 		            $filePath = MODULE_PATH . $module . DS . $type . DS . $file;
282 282
 		        break;
283 283
 		        case 'views':
@@ -288,16 +288,16 @@  discard block
 block discarded – undo
288 288
 		        break;
289 289
 		        case 'lang':
290 290
 		            $name = str_ireplace('lang_', '', $name);
291
-		            $file = 'lang_'.$name.'.php';
291
+		            $file = 'lang_' . $name . '.php';
292 292
 		            $filePath = MODULE_PATH . $module . DS . $type . DS . $appLang . DS . $file;
293 293
 		        break;
294 294
 		    }
295
-		    $logger->debug('Checking resource [' . $name . '] in module [' .$module. '] for [' . $type . '] ...');
296
-		    if (file_exists($filePath)){
297
-		        $logger->info('Found resource [' . $name . '] in module [' .$module. '] for [' . $type . '] the file path is [' .$filePath. ']');
295
+		    $logger->debug('Checking resource [' . $name . '] in module [' . $module . '] for [' . $type . '] ...');
296
+		    if (file_exists($filePath)) {
297
+		        $logger->info('Found resource [' . $name . '] in module [' . $module . '] for [' . $type . '] the file path is [' . $filePath . ']');
298 298
 		        return $filePath;
299 299
 		    }
300
-		    $logger->info('Resource [' . $name . '] does not exist in the module [' .$module. '] for [' . $type . ']');
300
+		    $logger->info('Resource [' . $name . '] does not exist in the module [' . $module . '] for [' . $type . ']');
301 301
 		    return false;
302 302
 		}
303 303
 
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -49,8 +49,7 @@
 block discarded – undo
49 49
 				while(($module = readdir($moduleDir)) !== false){
50 50
 					if (preg_match('/^([a-z0-9-_]+)$/i', $module) && is_dir(MODULE_PATH . $module)){
51 51
 						self::$list[] = $module;
52
-					}
53
-					else{
52
+					} else{
54 53
 						$logger->info('Skipping [' .$module. '], may be this is not a directory or does not exists or is invalid name');
55 54
 					}
56 55
 				}
Please login to merge, or discard this patch.
core/classes/Response.php 2 patches
Indentation   +490 added lines, -490 removed lines patch added patch discarded remove patch
@@ -1,542 +1,542 @@
 block discarded – undo
1 1
 <?php
2
-	defined('ROOT_PATH') or exit('Access denied');
3
-	/**
4
-	 * TNH Framework
5
-	 *
6
-	 * A simple PHP framework using HMVC architecture
7
-	 *
8
-	 * This content is released under the GNU GPL License (GPL)
9
-	 *
10
-	 * Copyright (C) 2017 Tony NGUEREZA
11
-	 *
12
-	 * This program is free software; you can redistribute it and/or
13
-	 * modify it under the terms of the GNU General Public License
14
-	 * as published by the Free Software Foundation; either version 3
15
-	 * of the License, or (at your option) any later version.
16
-	 *
17
-	 * This program is distributed in the hope that it will be useful,
18
-	 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
-	 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
-	 * GNU General Public License for more details.
21
-	 *
22
-	 * You should have received a copy of the GNU General Public License
23
-	 * along with this program; if not, write to the Free Software
24
-	 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
-	*/
2
+    defined('ROOT_PATH') or exit('Access denied');
3
+    /**
4
+     * TNH Framework
5
+     *
6
+     * A simple PHP framework using HMVC architecture
7
+     *
8
+     * This content is released under the GNU GPL License (GPL)
9
+     *
10
+     * Copyright (C) 2017 Tony NGUEREZA
11
+     *
12
+     * This program is free software; you can redistribute it and/or
13
+     * modify it under the terms of the GNU General Public License
14
+     * as published by the Free Software Foundation; either version 3
15
+     * of the License, or (at your option) any later version.
16
+     *
17
+     * This program is distributed in the hope that it will be useful,
18
+     * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
+     * GNU General Public License for more details.
21
+     *
22
+     * You should have received a copy of the GNU General Public License
23
+     * along with this program; if not, write to the Free Software
24
+     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
+     */
26 26
 
27
-	class Response{
27
+    class Response{
28 28
 
29
-		/**
30
-		 * The list of request header to send with response
31
-		 * @var array
32
-		 */
33
-		private static $headers = array();
29
+        /**
30
+         * The list of request header to send with response
31
+         * @var array
32
+         */
33
+        private static $headers = array();
34 34
 
35
-		/**
36
-		 * The logger instance
37
-		 * @var object
38
-		 */
39
-		private static $logger;
35
+        /**
36
+         * The logger instance
37
+         * @var object
38
+         */
39
+        private static $logger;
40 40
 		
41
-		/**
42
-		 * The final page content to display to user
43
-		 * @var string
44
-		 */
45
-		private $_pageRender = null;
41
+        /**
42
+         * The final page content to display to user
43
+         * @var string
44
+         */
45
+        private $_pageRender = null;
46 46
 		
47
-		/**
48
-		 * The current request URL
49
-		 * @var string
50
-		 */
51
-		private $_currentUrl = null;
47
+        /**
48
+         * The current request URL
49
+         * @var string
50
+         */
51
+        private $_currentUrl = null;
52 52
 		
53
-		/**
54
-		 * The current request URL cache key
55
-		 * @var string
56
-		 */
57
-		private $_currentUrlCacheKey = null;
53
+        /**
54
+         * The current request URL cache key
55
+         * @var string
56
+         */
57
+        private $_currentUrlCacheKey = null;
58 58
 		
59
-		/**
60
-		* Whether we can compress the output using Gzip
61
-		* @var boolean
62
-		*/
63
-		private static $_canCompressOutput = false;
59
+        /**
60
+         * Whether we can compress the output using Gzip
61
+         * @var boolean
62
+         */
63
+        private static $_canCompressOutput = false;
64 64
 		
65
-		/**
66
-		 * Construct new response instance
67
-		 */
68
-		public function __construct(){
69
-			$currentUrl = '';
70
-			if (! empty($_SERVER['REQUEST_URI'])){
71
-				$currentUrl = $_SERVER['REQUEST_URI'];
72
-			}
73
-			if (! empty($_SERVER['QUERY_STRING'])){
74
-				$currentUrl .= '?' . $_SERVER['QUERY_STRING'];
75
-			}
76
-			$this->_currentUrl =  $currentUrl;
65
+        /**
66
+         * Construct new response instance
67
+         */
68
+        public function __construct(){
69
+            $currentUrl = '';
70
+            if (! empty($_SERVER['REQUEST_URI'])){
71
+                $currentUrl = $_SERVER['REQUEST_URI'];
72
+            }
73
+            if (! empty($_SERVER['QUERY_STRING'])){
74
+                $currentUrl .= '?' . $_SERVER['QUERY_STRING'];
75
+            }
76
+            $this->_currentUrl =  $currentUrl;
77 77
 					
78
-			$this->_currentUrlCacheKey = md5($this->_currentUrl);
78
+            $this->_currentUrlCacheKey = md5($this->_currentUrl);
79 79
 			
80
-			self::$_canCompressOutput = get_config('compress_output')
81
-										  && isset($_SERVER['HTTP_ACCEPT_ENCODING']) 
82
-										  && stripos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false 
83
-										  && extension_loaded('zlib')
84
-										  && (bool) ini_get('zlib.output_compression') === false;
85
-		}
80
+            self::$_canCompressOutput = get_config('compress_output')
81
+                                          && isset($_SERVER['HTTP_ACCEPT_ENCODING']) 
82
+                                          && stripos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false 
83
+                                          && extension_loaded('zlib')
84
+                                          && (bool) ini_get('zlib.output_compression') === false;
85
+        }
86 86
 
87 87
 		
88
-		/**
89
-		 * The signleton of the logger
90
-		 * @return Object the Log instance
91
-		 */
92
-		public static function getLogger(){
93
-			if(self::$logger == null){
94
-				$logger = array();
95
-				$logger[0] =& class_loader('Log', 'classes');
96
-				$logger[0]->setLogger('Library::Response');
97
-				self::$logger = $logger[0];
98
-			}
99
-			return self::$logger;			
100
-		}
88
+        /**
89
+         * The signleton of the logger
90
+         * @return Object the Log instance
91
+         */
92
+        public static function getLogger(){
93
+            if(self::$logger == null){
94
+                $logger = array();
95
+                $logger[0] =& class_loader('Log', 'classes');
96
+                $logger[0]->setLogger('Library::Response');
97
+                self::$logger = $logger[0];
98
+            }
99
+            return self::$logger;			
100
+        }
101 101
 
102
-		/**
103
-		 * Set the log instance for future use
104
-		 * @param object $logger the log object
105
-		 * @return object the log instance
106
-		 */
107
-		public static function setLogger($logger){
108
-			self::$logger = $logger;
109
-			return self::$logger;
110
-		}
102
+        /**
103
+         * Set the log instance for future use
104
+         * @param object $logger the log object
105
+         * @return object the log instance
106
+         */
107
+        public static function setLogger($logger){
108
+            self::$logger = $logger;
109
+            return self::$logger;
110
+        }
111 111
 
112 112
 
113
-		/**
114
-		 * Send the HTTP Response headers
115
-		 * @param  integer $httpCode the HTTP status code
116
-		 * @param  array   $headers   the additional headers to add to the existing headers list
117
-		 */
118
-		public static function sendHeaders($httpCode = 200, array $headers = array()){
119
-			set_http_status_header($httpCode);
120
-			self::setHeaders($headers);
121
-			if(! headers_sent()){
122
-				foreach(self::getHeaders() as $key => $value){
123
-					header($key .': '.$value);
124
-				}
125
-			}
126
-		}
113
+        /**
114
+         * Send the HTTP Response headers
115
+         * @param  integer $httpCode the HTTP status code
116
+         * @param  array   $headers   the additional headers to add to the existing headers list
117
+         */
118
+        public static function sendHeaders($httpCode = 200, array $headers = array()){
119
+            set_http_status_header($httpCode);
120
+            self::setHeaders($headers);
121
+            if(! headers_sent()){
122
+                foreach(self::getHeaders() as $key => $value){
123
+                    header($key .': '.$value);
124
+                }
125
+            }
126
+        }
127 127
 
128
-		/**
129
-		 * Get the list of the headers
130
-		 * @return array the headers list
131
-		 */
132
-		public static function getHeaders(){
133
-			return self::$headers;
134
-		}
128
+        /**
129
+         * Get the list of the headers
130
+         * @return array the headers list
131
+         */
132
+        public static function getHeaders(){
133
+            return self::$headers;
134
+        }
135 135
 
136
-		/**
137
-		 * Get the header value for the given name
138
-		 * @param  string $name the header name
139
-		 * @return string|null       the header value
140
-		 */
141
-		public static function getHeader($name){
142
-			if(array_key_exists($name, self::$headers)){
143
-				return self::$headers[$name];
144
-			}
145
-			return null;
146
-		}
136
+        /**
137
+         * Get the header value for the given name
138
+         * @param  string $name the header name
139
+         * @return string|null       the header value
140
+         */
141
+        public static function getHeader($name){
142
+            if(array_key_exists($name, self::$headers)){
143
+                return self::$headers[$name];
144
+            }
145
+            return null;
146
+        }
147 147
 
148 148
 
149
-		/**
150
-		 * Set the header value for the specified name
151
-		 * @param string $name  the header name
152
-		 * @param string $value the header value to be set
153
-		 */
154
-		public static function setHeader($name, $value){
155
-			self::$headers[$name] = $value;
156
-		}
149
+        /**
150
+         * Set the header value for the specified name
151
+         * @param string $name  the header name
152
+         * @param string $value the header value to be set
153
+         */
154
+        public static function setHeader($name, $value){
155
+            self::$headers[$name] = $value;
156
+        }
157 157
 
158
-		/**
159
-		 * Set the headers using array
160
-		 * @param array $headers the list of the headers to set. 
161
-		 * Note: this will merge with the existing headers
162
-		 */
163
-		public static function setHeaders(array $headers){
164
-			self::$headers = array_merge(self::getHeaders(), $headers);
165
-		}
158
+        /**
159
+         * Set the headers using array
160
+         * @param array $headers the list of the headers to set. 
161
+         * Note: this will merge with the existing headers
162
+         */
163
+        public static function setHeaders(array $headers){
164
+            self::$headers = array_merge(self::getHeaders(), $headers);
165
+        }
166 166
 		
167
-		/**
168
-		 * Redirect user to the specified page
169
-		 * @param  string $path the URL or URI to be redirect to
170
-		 */
171
-		public static function redirect($path = ''){
172
-			$logger = self::getLogger();
173
-			$url = Url::site_url($path);
174
-			$logger->info('Redirect to URL [' .$url. ']');
175
-			if(! headers_sent()){
176
-				header('Location: '.$url);
177
-				exit;
178
-			}
179
-			echo '<script>
167
+        /**
168
+         * Redirect user to the specified page
169
+         * @param  string $path the URL or URI to be redirect to
170
+         */
171
+        public static function redirect($path = ''){
172
+            $logger = self::getLogger();
173
+            $url = Url::site_url($path);
174
+            $logger->info('Redirect to URL [' .$url. ']');
175
+            if(! headers_sent()){
176
+                header('Location: '.$url);
177
+                exit;
178
+            }
179
+            echo '<script>
180 180
 					location.href = "'.$url.'";
181 181
 				</script>';
182
-		}
182
+        }
183 183
 
184
-		/**
185
-		 * Render the view to display later or return the content
186
-		 * @param  string  $view   the view name or path
187
-		 * @param  array|object   $data   the variable data to use in the view
188
-		 * @param  boolean $return whether to return the view generated content or display it directly
189
-		 * @return void|string          if $return is true will return the view content otherwise
190
-		 * will display the view content.
191
-		 */
192
-		public function render($view, $data = null, $return = false){
193
-			$logger = self::getLogger();
194
-			//convert data to an array
195
-			$data = (array) $data;
196
-			$view = str_ireplace('.php', '', $view);
197
-			$view = trim($view, '/\\');
198
-			$viewFile = $view . '.php';
199
-			$path = APPS_VIEWS_PATH . $viewFile;
184
+        /**
185
+         * Render the view to display later or return the content
186
+         * @param  string  $view   the view name or path
187
+         * @param  array|object   $data   the variable data to use in the view
188
+         * @param  boolean $return whether to return the view generated content or display it directly
189
+         * @return void|string          if $return is true will return the view content otherwise
190
+         * will display the view content.
191
+         */
192
+        public function render($view, $data = null, $return = false){
193
+            $logger = self::getLogger();
194
+            //convert data to an array
195
+            $data = (array) $data;
196
+            $view = str_ireplace('.php', '', $view);
197
+            $view = trim($view, '/\\');
198
+            $viewFile = $view . '.php';
199
+            $path = APPS_VIEWS_PATH . $viewFile;
200 200
 			
201
-			//check in module first
202
-			$logger->debug('Checking the view [' . $view . '] from module list ...');
203
-			$moduleInfo = $this->getModuleInfoForView($view);
204
-			$module    = $moduleInfo['module'];
205
-			$view  = $moduleInfo['view'];
201
+            //check in module first
202
+            $logger->debug('Checking the view [' . $view . '] from module list ...');
203
+            $moduleInfo = $this->getModuleInfoForView($view);
204
+            $module    = $moduleInfo['module'];
205
+            $view  = $moduleInfo['view'];
206 206
 			
207
-			$moduleViewPath = Module::findViewFullPath($view, $module);
208
-			if($moduleViewPath){
209
-				$path = $moduleViewPath;
210
-				$logger->info('Found view [' . $view . '] in module [' .$module. '], the file path is [' .$moduleViewPath. '] we will used it');
211
-			}
212
-			else{
213
-				$logger->info('Cannot find view [' . $view . '] in module [' .$module. '] using the default location');
214
-			}
207
+            $moduleViewPath = Module::findViewFullPath($view, $module);
208
+            if($moduleViewPath){
209
+                $path = $moduleViewPath;
210
+                $logger->info('Found view [' . $view . '] in module [' .$module. '], the file path is [' .$moduleViewPath. '] we will used it');
211
+            }
212
+            else{
213
+                $logger->info('Cannot find view [' . $view . '] in module [' .$module. '] using the default location');
214
+            }
215 215
 			
216
-			$logger->info('The view file path to be loaded is [' . $path . ']');
216
+            $logger->info('The view file path to be loaded is [' . $path . ']');
217 217
 			
218
-			/////////
219
-			if($return){
220
-				return $this->loadView($path, $data, true);
221
-			}
222
-			$this->loadView($path, $data, false);
223
-		}
218
+            /////////
219
+            if($return){
220
+                return $this->loadView($path, $data, true);
221
+            }
222
+            $this->loadView($path, $data, false);
223
+        }
224 224
 
225 225
 		
226
-		/**
227
-		* Send the final page output to user
228
-		*/
229
-		public function renderFinalPage(){
230
-			$logger = self::getLogger();
231
-			$obj = & get_instance();
232
-			$cachePageStatus = get_config('cache_enable', false) && !empty($obj->view_cache_enable);
233
-			$dispatcher = $obj->eventdispatcher;
234
-			$content = $this->_pageRender;
235
-			if(! $content){
236
-				$logger->warning('The final view content is empty.');
237
-				return;
238
-			}
239
-			//dispatch
240
-			$event = $dispatcher->dispatch(new EventInfo('FINAL_VIEW_READY', $content, true));
241
-			$content = null;
242
-			if(! empty($event->payload)){
243
-				$content = $event->payload;
244
-			}
245
-			if(empty($content)){
246
-				$logger->warning('The view content is empty after dispatch to event listeners.');
247
-			}
248
-			//remove unsed space in the content
249
-			$content = preg_replace('~>\s*\n\s*<~', '><', $content);
250
-			//check whether need save the page into cache.
251
-			if($cachePageStatus){
252
-				$this->savePageContentIntoCache($content);
253
-			}
254
-			$content = $this->replaceElapseTimeAndMemoryUsage($content);
226
+        /**
227
+         * Send the final page output to user
228
+         */
229
+        public function renderFinalPage(){
230
+            $logger = self::getLogger();
231
+            $obj = & get_instance();
232
+            $cachePageStatus = get_config('cache_enable', false) && !empty($obj->view_cache_enable);
233
+            $dispatcher = $obj->eventdispatcher;
234
+            $content = $this->_pageRender;
235
+            if(! $content){
236
+                $logger->warning('The final view content is empty.');
237
+                return;
238
+            }
239
+            //dispatch
240
+            $event = $dispatcher->dispatch(new EventInfo('FINAL_VIEW_READY', $content, true));
241
+            $content = null;
242
+            if(! empty($event->payload)){
243
+                $content = $event->payload;
244
+            }
245
+            if(empty($content)){
246
+                $logger->warning('The view content is empty after dispatch to event listeners.');
247
+            }
248
+            //remove unsed space in the content
249
+            $content = preg_replace('~>\s*\n\s*<~', '><', $content);
250
+            //check whether need save the page into cache.
251
+            if($cachePageStatus){
252
+                $this->savePageContentIntoCache($content);
253
+            }
254
+            $content = $this->replaceElapseTimeAndMemoryUsage($content);
255 255
 
256
-			//compress the output if is available
257
-			$type = null;
258
-			if (self::$_canCompressOutput){
259
-				$type = 'ob_gzhandler';
260
-			}
261
-			ob_start($type);
262
-			self::sendHeaders(200);
263
-			echo $content;
264
-			ob_end_flush();
265
-		}
256
+            //compress the output if is available
257
+            $type = null;
258
+            if (self::$_canCompressOutput){
259
+                $type = 'ob_gzhandler';
260
+            }
261
+            ob_start($type);
262
+            self::sendHeaders(200);
263
+            echo $content;
264
+            ob_end_flush();
265
+        }
266 266
 
267 267
 		
268
-		/**
269
-		* Send the final page output to user if is cached
270
-		* @param object $cache the cache instance
271
-		*
272
-		* @return boolean whether the page content if available or not
273
-		*/
274
-		public function renderFinalPageFromCache(&$cache){
275
-			$logger = self::getLogger();
276
-			//the current page cache key for identification
277
-			$pageCacheKey = $this->_currentUrlCacheKey;
268
+        /**
269
+         * Send the final page output to user if is cached
270
+         * @param object $cache the cache instance
271
+         *
272
+         * @return boolean whether the page content if available or not
273
+         */
274
+        public function renderFinalPageFromCache(&$cache){
275
+            $logger = self::getLogger();
276
+            //the current page cache key for identification
277
+            $pageCacheKey = $this->_currentUrlCacheKey;
278 278
 			
279
-			$logger->debug('Checking if the page content for the URL [' . $this->_currentUrl . '] is cached ...');
280
-			//get the cache information to prepare header to send to browser
281
-			$cacheInfo = $cache->getInfo($pageCacheKey);
282
-			if($cacheInfo){
283
-				$status = $this->sendCacheNotYetExpireInfoToBrowser($cacheInfo);
284
-				if($status === false){
285
-					return $this->sendCachePageContentToBrowser($cache);
286
-				}
287
-				return true;
288
-			}
289
-			return false;
290
-		}
279
+            $logger->debug('Checking if the page content for the URL [' . $this->_currentUrl . '] is cached ...');
280
+            //get the cache information to prepare header to send to browser
281
+            $cacheInfo = $cache->getInfo($pageCacheKey);
282
+            if($cacheInfo){
283
+                $status = $this->sendCacheNotYetExpireInfoToBrowser($cacheInfo);
284
+                if($status === false){
285
+                    return $this->sendCachePageContentToBrowser($cache);
286
+                }
287
+                return true;
288
+            }
289
+            return false;
290
+        }
291 291
 	
292 292
 		
293
-		/**
294
-		* Get the final page to be rendered
295
-		* @return string
296
-		*/
297
-		public function getFinalPageRendered(){
298
-			return $this->_pageRender;
299
-		}
293
+        /**
294
+         * Get the final page to be rendered
295
+         * @return string
296
+         */
297
+        public function getFinalPageRendered(){
298
+            return $this->_pageRender;
299
+        }
300 300
 
301
-		/**
302
-		 * Send the HTTP 404 error if can not found the 
303
-		 * routing information for the current request
304
-		 */
305
-		public static function send404(){
306
-			/********* for logs **************/
307
-			//can't use $obj = & get_instance()  here because the global super object will be available until
308
-			//the main controller is loaded even for Loader::library('xxxx');
309
-			$logger = self::getLogger();
310
-			$request =& class_loader('Request', 'classes');
311
-			$userAgent =& class_loader('Browser');
312
-			$browser = $userAgent->getPlatform().', '.$userAgent->getBrowser().' '.$userAgent->getVersion();
301
+        /**
302
+         * Send the HTTP 404 error if can not found the 
303
+         * routing information for the current request
304
+         */
305
+        public static function send404(){
306
+            /********* for logs **************/
307
+            //can't use $obj = & get_instance()  here because the global super object will be available until
308
+            //the main controller is loaded even for Loader::library('xxxx');
309
+            $logger = self::getLogger();
310
+            $request =& class_loader('Request', 'classes');
311
+            $userAgent =& class_loader('Browser');
312
+            $browser = $userAgent->getPlatform().', '.$userAgent->getBrowser().' '.$userAgent->getVersion();
313 313
 			
314
-			//here can't use Loader::functions just include the helper manually
315
-			require_once CORE_FUNCTIONS_PATH . 'function_user_agent.php';
314
+            //here can't use Loader::functions just include the helper manually
315
+            require_once CORE_FUNCTIONS_PATH . 'function_user_agent.php';
316 316
 
317
-			$str = '[404 page not found] : ';
318
-			$str .= ' Unable to find the request page [' . $request->requestUri() . ']. The visitor IP address [' . get_ip() . '], browser [' . $browser . ']';
319
-			$logger->error($str);
320
-			/***********************************/
321
-			$path = CORE_VIEWS_PATH . '404.php';
322
-			if(file_exists($path)){
323
-				//compress the output if is available
324
-				$type = null;
325
-				if (self::$_canCompressOutput){
326
-					$type = 'ob_gzhandler';
327
-				}
328
-				ob_start($type);
329
-				require_once $path;
330
-				$output = ob_get_clean();
331
-				self::sendHeaders(404);
332
-				echo $output;
333
-			}
334
-			else{
335
-				show_error('The 404 view [' .$path. '] does not exist');
336
-			}
337
-		}
317
+            $str = '[404 page not found] : ';
318
+            $str .= ' Unable to find the request page [' . $request->requestUri() . ']. The visitor IP address [' . get_ip() . '], browser [' . $browser . ']';
319
+            $logger->error($str);
320
+            /***********************************/
321
+            $path = CORE_VIEWS_PATH . '404.php';
322
+            if(file_exists($path)){
323
+                //compress the output if is available
324
+                $type = null;
325
+                if (self::$_canCompressOutput){
326
+                    $type = 'ob_gzhandler';
327
+                }
328
+                ob_start($type);
329
+                require_once $path;
330
+                $output = ob_get_clean();
331
+                self::sendHeaders(404);
332
+                echo $output;
333
+            }
334
+            else{
335
+                show_error('The 404 view [' .$path. '] does not exist');
336
+            }
337
+        }
338 338
 
339
-		/**
340
-		 * Display the error to user
341
-		 * @param  array  $data the error information
342
-		 */
343
-		public static function sendError(array $data = array()){
344
-			$path = CORE_VIEWS_PATH . 'errors.php';
345
-			if(file_exists($path)){
346
-				//compress the output if is available
347
-				$type = null;
348
-				if (self::$_canCompressOutput){
349
-					$type = 'ob_gzhandler';
350
-				}
351
-				ob_start($type);
352
-				extract($data);
353
-				require_once $path;
354
-				$output = ob_get_clean();
355
-				self::sendHeaders(503);
356
-				echo $output;
357
-			}
358
-			else{
359
-				//can't use show_error() at this time because some dependencies not yet loaded and to prevent loop
360
-				set_http_status_header(503);
361
-				echo 'The error view [' . $path . '] does not exist';
362
-			}
363
-		}
339
+        /**
340
+         * Display the error to user
341
+         * @param  array  $data the error information
342
+         */
343
+        public static function sendError(array $data = array()){
344
+            $path = CORE_VIEWS_PATH . 'errors.php';
345
+            if(file_exists($path)){
346
+                //compress the output if is available
347
+                $type = null;
348
+                if (self::$_canCompressOutput){
349
+                    $type = 'ob_gzhandler';
350
+                }
351
+                ob_start($type);
352
+                extract($data);
353
+                require_once $path;
354
+                $output = ob_get_clean();
355
+                self::sendHeaders(503);
356
+                echo $output;
357
+            }
358
+            else{
359
+                //can't use show_error() at this time because some dependencies not yet loaded and to prevent loop
360
+                set_http_status_header(503);
361
+                echo 'The error view [' . $path . '] does not exist';
362
+            }
363
+        }
364 364
 
365
-		/**
366
-		 * Send the cache not yet expire to browser
367
-		 * @param  array $cacheInfo the cache information
368
-		 * @return boolean            true if the information is sent otherwise false
369
-		 */
370
-		protected function sendCacheNotYetExpireInfoToBrowser($cacheInfo){
371
-			if(! empty($cacheInfo)){
372
-				$logger = self::getLogger();
373
-				$lastModified = $cacheInfo['mtime'];
374
-				$expire = $cacheInfo['expire'];
375
-				$maxAge = $expire - $_SERVER['REQUEST_TIME'];
376
-				self::setHeader('Pragma', 'public');
377
-				self::setHeader('Cache-Control', 'max-age=' . $maxAge . ', public');
378
-				self::setHeader('Expires', gmdate('D, d M Y H:i:s', $expire).' GMT');
379
-				self::setHeader('Last-modified', gmdate('D, d M Y H:i:s', $lastModified).' GMT');
380
-				if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $lastModified <= strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])){
381
-					$logger->info('The cache page content is not yet expire for the URL [' . $this->_currentUrl . '] send 304 header to browser');
382
-					self::sendHeaders(304);
383
-					return true;
384
-				}
385
-			}
386
-			return false;
387
-		}
365
+        /**
366
+         * Send the cache not yet expire to browser
367
+         * @param  array $cacheInfo the cache information
368
+         * @return boolean            true if the information is sent otherwise false
369
+         */
370
+        protected function sendCacheNotYetExpireInfoToBrowser($cacheInfo){
371
+            if(! empty($cacheInfo)){
372
+                $logger = self::getLogger();
373
+                $lastModified = $cacheInfo['mtime'];
374
+                $expire = $cacheInfo['expire'];
375
+                $maxAge = $expire - $_SERVER['REQUEST_TIME'];
376
+                self::setHeader('Pragma', 'public');
377
+                self::setHeader('Cache-Control', 'max-age=' . $maxAge . ', public');
378
+                self::setHeader('Expires', gmdate('D, d M Y H:i:s', $expire).' GMT');
379
+                self::setHeader('Last-modified', gmdate('D, d M Y H:i:s', $lastModified).' GMT');
380
+                if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $lastModified <= strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])){
381
+                    $logger->info('The cache page content is not yet expire for the URL [' . $this->_currentUrl . '] send 304 header to browser');
382
+                    self::sendHeaders(304);
383
+                    return true;
384
+                }
385
+            }
386
+            return false;
387
+        }
388 388
 
389
-		/**
390
-		 * Set the value of '{elapsed_time}' and '{memory_usage}'
391
-		 * @param  string $content the page content
392
-		 * @return string          the page content after replace 
393
-		 * '{elapsed_time}', '{memory_usage}'
394
-		 */
395
-		protected function replaceElapseTimeAndMemoryUsage($content){
396
-			//load benchmark class
397
-			$benchmark = & class_loader('Benchmark');
389
+        /**
390
+         * Set the value of '{elapsed_time}' and '{memory_usage}'
391
+         * @param  string $content the page content
392
+         * @return string          the page content after replace 
393
+         * '{elapsed_time}', '{memory_usage}'
394
+         */
395
+        protected function replaceElapseTimeAndMemoryUsage($content){
396
+            //load benchmark class
397
+            $benchmark = & class_loader('Benchmark');
398 398
 			
399
-			// Parse out the elapsed time and memory usage,
400
-			// then swap the pseudo-variables with the data
401
-			$elapsedTime = $benchmark->elapsedTime('APP_EXECUTION_START', 'APP_EXECUTION_END');
402
-			$memoryUsage	= round($benchmark->memoryUsage('APP_EXECUTION_START', 'APP_EXECUTION_END') / 1024 / 1024, 6) . 'MB';
403
-			return str_replace(array('{elapsed_time}', '{memory_usage}'), array($elapsedTime, $memoryUsage), $content);	
404
-		}
399
+            // Parse out the elapsed time and memory usage,
400
+            // then swap the pseudo-variables with the data
401
+            $elapsedTime = $benchmark->elapsedTime('APP_EXECUTION_START', 'APP_EXECUTION_END');
402
+            $memoryUsage	= round($benchmark->memoryUsage('APP_EXECUTION_START', 'APP_EXECUTION_END') / 1024 / 1024, 6) . 'MB';
403
+            return str_replace(array('{elapsed_time}', '{memory_usage}'), array($elapsedTime, $memoryUsage), $content);	
404
+        }
405 405
 
406
-		/**
407
-		 * Send the page content from cache to browser
408
-		 * @param object $cache the cache instance
409
-		 * @return boolean     the status of the operation
410
-		 */
411
-		protected function sendCachePageContentToBrowser(&$cache){
412
-			$logger = self::getLogger();
413
-			$logger->info('The cache page content is expired or the browser does not send the HTTP_IF_MODIFIED_SINCE header for the URL [' . $this->_currentUrl . '] send cache headers to tell the browser');
414
-			self::sendHeaders(200);
415
-			//current page cache key
416
-			$pageCacheKey = $this->_currentUrlCacheKey;
417
-			//get the cache content
418
-			$content = $cache->get($pageCacheKey);
419
-			if($content){
420
-				$logger->info('The page content for the URL [' . $this->_currentUrl . '] already cached just display it');
421
-				$content = $this->replaceElapseTimeAndMemoryUsage($content);
422
-				///display the final output
423
-				//compress the output if is available
424
-				$type = null;
425
-				if (self::$_canCompressOutput){
426
-					$type = 'ob_gzhandler';
427
-				}
428
-				ob_start($type);
429
-				echo $content;
430
-				ob_end_flush();
431
-				return true;
432
-			}
433
-			$logger->info('The page cache content for the URL [' . $this->_currentUrl . '] is not valid may be already expired');
434
-			$cache->delete($pageCacheKey);
435
-			return false;
436
-		}
406
+        /**
407
+         * Send the page content from cache to browser
408
+         * @param object $cache the cache instance
409
+         * @return boolean     the status of the operation
410
+         */
411
+        protected function sendCachePageContentToBrowser(&$cache){
412
+            $logger = self::getLogger();
413
+            $logger->info('The cache page content is expired or the browser does not send the HTTP_IF_MODIFIED_SINCE header for the URL [' . $this->_currentUrl . '] send cache headers to tell the browser');
414
+            self::sendHeaders(200);
415
+            //current page cache key
416
+            $pageCacheKey = $this->_currentUrlCacheKey;
417
+            //get the cache content
418
+            $content = $cache->get($pageCacheKey);
419
+            if($content){
420
+                $logger->info('The page content for the URL [' . $this->_currentUrl . '] already cached just display it');
421
+                $content = $this->replaceElapseTimeAndMemoryUsage($content);
422
+                ///display the final output
423
+                //compress the output if is available
424
+                $type = null;
425
+                if (self::$_canCompressOutput){
426
+                    $type = 'ob_gzhandler';
427
+                }
428
+                ob_start($type);
429
+                echo $content;
430
+                ob_end_flush();
431
+                return true;
432
+            }
433
+            $logger->info('The page cache content for the URL [' . $this->_currentUrl . '] is not valid may be already expired');
434
+            $cache->delete($pageCacheKey);
435
+            return false;
436
+        }
437 437
 
438
-		/**
439
-		 * Save the content of page into cache
440
-		 * @param  string $content the page content to be saved
441
-		 * @return void
442
-		 */
443
-		protected function savePageContentIntoCache($content){
444
-			$obj = & get_instance();
445
-			$logger = self::getLogger();
438
+        /**
439
+         * Save the content of page into cache
440
+         * @param  string $content the page content to be saved
441
+         * @return void
442
+         */
443
+        protected function savePageContentIntoCache($content){
444
+            $obj = & get_instance();
445
+            $logger = self::getLogger();
446 446
 
447
-			//current page URL
448
-			$url = $this->_currentUrl;
449
-			//Cache view Time to live in second
450
-			$viewCacheTtl = get_config('cache_ttl');
451
-			if (!empty($obj->view_cache_ttl)){
452
-				$viewCacheTtl = $obj->view_cache_ttl;
453
-			}
454
-			//the cache handler instance
455
-			$cacheInstance = $obj->cache;
456
-			//the current page cache key for identification
457
-			$cacheKey = $this->_currentUrlCacheKey;
458
-			$logger->debug('Save the page content for URL [' . $url . '] into the cache ...');
459
-			$cacheInstance->set($cacheKey, $content, $viewCacheTtl);
447
+            //current page URL
448
+            $url = $this->_currentUrl;
449
+            //Cache view Time to live in second
450
+            $viewCacheTtl = get_config('cache_ttl');
451
+            if (!empty($obj->view_cache_ttl)){
452
+                $viewCacheTtl = $obj->view_cache_ttl;
453
+            }
454
+            //the cache handler instance
455
+            $cacheInstance = $obj->cache;
456
+            //the current page cache key for identification
457
+            $cacheKey = $this->_currentUrlCacheKey;
458
+            $logger->debug('Save the page content for URL [' . $url . '] into the cache ...');
459
+            $cacheInstance->set($cacheKey, $content, $viewCacheTtl);
460 460
 			
461
-			//get the cache information to prepare header to send to browser
462
-			$cacheInfo = $cacheInstance->getInfo($cacheKey);
463
-			if($cacheInfo){
464
-				$lastModified = $cacheInfo['mtime'];
465
-				$expire = $cacheInfo['expire'];
466
-				$maxAge = $expire - time();
467
-				self::setHeader('Pragma', 'public');
468
-				self::setHeader('Cache-Control', 'max-age=' . $maxAge . ', public');
469
-				self::setHeader('Expires', gmdate('D, d M Y H:i:s', $expire).' GMT');
470
-				self::setHeader('Last-modified', gmdate('D, d M Y H:i:s', $lastModified).' GMT');	
471
-			}
472
-		}
461
+            //get the cache information to prepare header to send to browser
462
+            $cacheInfo = $cacheInstance->getInfo($cacheKey);
463
+            if($cacheInfo){
464
+                $lastModified = $cacheInfo['mtime'];
465
+                $expire = $cacheInfo['expire'];
466
+                $maxAge = $expire - time();
467
+                self::setHeader('Pragma', 'public');
468
+                self::setHeader('Cache-Control', 'max-age=' . $maxAge . ', public');
469
+                self::setHeader('Expires', gmdate('D, d M Y H:i:s', $expire).' GMT');
470
+                self::setHeader('Last-modified', gmdate('D, d M Y H:i:s', $lastModified).' GMT');	
471
+            }
472
+        }
473 473
 		
474 474
 
475
-		/**
476
-		 * Get the module information for the view to load
477
-		 * @param  string $view the view name like moduleName/viewName, viewName
478
-		 * 
479
-		 * @return array        the module information
480
-		 * array(
481
-		 * 	'module'=> 'module_name'
482
-		 * 	'view' => 'view_name'
483
-		 * 	'viewFile' => 'view_file'
484
-		 * )
485
-		 */
486
-		protected  function getModuleInfoForView($view){
487
-			$module = null;
488
-			$viewFile = null;
489
-			$obj = & get_instance();
490
-			//check if the request class contains module name
491
-			if(strpos($view, '/') !== false){
492
-				$viewPath = explode('/', $view);
493
-				if(isset($viewPath[0]) && in_array($viewPath[0], Module::getModuleList())){
494
-					$module = $viewPath[0];
495
-					array_shift($viewPath);
496
-					$view = implode('/', $viewPath);
497
-					$viewFile = $view . '.php';
498
-				}
499
-			}
500
-			if(! $module && !empty($obj->moduleName)){
501
-				$module = $obj->moduleName;
502
-			}
503
-			return array(
504
-						'view' => $view,
505
-						'module' => $module,
506
-						'viewFile' => $viewFile
507
-					);
508
-		}
475
+        /**
476
+         * Get the module information for the view to load
477
+         * @param  string $view the view name like moduleName/viewName, viewName
478
+         * 
479
+         * @return array        the module information
480
+         * array(
481
+         * 	'module'=> 'module_name'
482
+         * 	'view' => 'view_name'
483
+         * 	'viewFile' => 'view_file'
484
+         * )
485
+         */
486
+        protected  function getModuleInfoForView($view){
487
+            $module = null;
488
+            $viewFile = null;
489
+            $obj = & get_instance();
490
+            //check if the request class contains module name
491
+            if(strpos($view, '/') !== false){
492
+                $viewPath = explode('/', $view);
493
+                if(isset($viewPath[0]) && in_array($viewPath[0], Module::getModuleList())){
494
+                    $module = $viewPath[0];
495
+                    array_shift($viewPath);
496
+                    $view = implode('/', $viewPath);
497
+                    $viewFile = $view . '.php';
498
+                }
499
+            }
500
+            if(! $module && !empty($obj->moduleName)){
501
+                $module = $obj->moduleName;
502
+            }
503
+            return array(
504
+                        'view' => $view,
505
+                        'module' => $module,
506
+                        'viewFile' => $viewFile
507
+                    );
508
+        }
509 509
 
510
-		/**
511
-		 * Render the view page
512
-		 * @see  Response::render
513
-		 * @return void|string
514
-		 */
515
-		protected  function loadView($path, array $data = array(), $return = false){
516
-			$found = false;
517
-			if(file_exists($path)){
518
-				//super instance
519
-				$obj = & get_instance();
520
-				foreach(get_object_vars($obj) as $key => $value){
521
-					if(! isset($this->{$key})){
522
-						$this->{$key} = & $obj->{$key};
523
-					}
524
-				}
525
-				ob_start();
526
-				extract($data);
527
-				//need use require() instead of require_once because can load this view many time
528
-				require $path;
529
-				$content = ob_get_clean();
530
-				if($return){
531
-					//remove unused html space 
532
-					return preg_replace('~>\s*\n\s*<~', '><', $content);
533
-				}
534
-				$this->_pageRender .= $content;
535
-				$found = true;
536
-			}
537
-			if(! $found){
538
-				show_error('Unable to find view [' .$path . ']');
539
-			}
540
-		}
510
+        /**
511
+         * Render the view page
512
+         * @see  Response::render
513
+         * @return void|string
514
+         */
515
+        protected  function loadView($path, array $data = array(), $return = false){
516
+            $found = false;
517
+            if(file_exists($path)){
518
+                //super instance
519
+                $obj = & get_instance();
520
+                foreach(get_object_vars($obj) as $key => $value){
521
+                    if(! isset($this->{$key})){
522
+                        $this->{$key} = & $obj->{$key};
523
+                    }
524
+                }
525
+                ob_start();
526
+                extract($data);
527
+                //need use require() instead of require_once because can load this view many time
528
+                require $path;
529
+                $content = ob_get_clean();
530
+                if($return){
531
+                    //remove unused html space 
532
+                    return preg_replace('~>\s*\n\s*<~', '><', $content);
533
+                }
534
+                $this->_pageRender .= $content;
535
+                $found = true;
536
+            }
537
+            if(! $found){
538
+                show_error('Unable to find view [' .$path . ']');
539
+            }
540
+        }
541 541
 
542
-	}
542
+    }
Please login to merge, or discard this patch.
Spacing   +78 added lines, -78 removed lines patch added patch discarded remove patch
@@ -24,7 +24,7 @@  discard block
 block discarded – undo
24 24
 	 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25 25
 	*/
26 26
 
27
-	class Response{
27
+	class Response {
28 28
 
29 29
 		/**
30 30
 		 * The list of request header to send with response
@@ -65,15 +65,15 @@  discard block
 block discarded – undo
65 65
 		/**
66 66
 		 * Construct new response instance
67 67
 		 */
68
-		public function __construct(){
68
+		public function __construct() {
69 69
 			$currentUrl = '';
70
-			if (! empty($_SERVER['REQUEST_URI'])){
70
+			if (!empty($_SERVER['REQUEST_URI'])) {
71 71
 				$currentUrl = $_SERVER['REQUEST_URI'];
72 72
 			}
73
-			if (! empty($_SERVER['QUERY_STRING'])){
73
+			if (!empty($_SERVER['QUERY_STRING'])) {
74 74
 				$currentUrl .= '?' . $_SERVER['QUERY_STRING'];
75 75
 			}
76
-			$this->_currentUrl =  $currentUrl;
76
+			$this->_currentUrl = $currentUrl;
77 77
 					
78 78
 			$this->_currentUrlCacheKey = md5($this->_currentUrl);
79 79
 			
@@ -89,10 +89,10 @@  discard block
 block discarded – undo
89 89
 		 * The signleton of the logger
90 90
 		 * @return Object the Log instance
91 91
 		 */
92
-		public static function getLogger(){
93
-			if(self::$logger == null){
92
+		public static function getLogger() {
93
+			if (self::$logger == null) {
94 94
 				$logger = array();
95
-				$logger[0] =& class_loader('Log', 'classes');
95
+				$logger[0] = & class_loader('Log', 'classes');
96 96
 				$logger[0]->setLogger('Library::Response');
97 97
 				self::$logger = $logger[0];
98 98
 			}
@@ -104,7 +104,7 @@  discard block
 block discarded – undo
104 104
 		 * @param object $logger the log object
105 105
 		 * @return object the log instance
106 106
 		 */
107
-		public static function setLogger($logger){
107
+		public static function setLogger($logger) {
108 108
 			self::$logger = $logger;
109 109
 			return self::$logger;
110 110
 		}
@@ -115,12 +115,12 @@  discard block
 block discarded – undo
115 115
 		 * @param  integer $httpCode the HTTP status code
116 116
 		 * @param  array   $headers   the additional headers to add to the existing headers list
117 117
 		 */
118
-		public static function sendHeaders($httpCode = 200, array $headers = array()){
118
+		public static function sendHeaders($httpCode = 200, array $headers = array()) {
119 119
 			set_http_status_header($httpCode);
120 120
 			self::setHeaders($headers);
121
-			if(! headers_sent()){
122
-				foreach(self::getHeaders() as $key => $value){
123
-					header($key .': '.$value);
121
+			if (!headers_sent()) {
122
+				foreach (self::getHeaders() as $key => $value) {
123
+					header($key . ': ' . $value);
124 124
 				}
125 125
 			}
126 126
 		}
@@ -129,7 +129,7 @@  discard block
 block discarded – undo
129 129
 		 * Get the list of the headers
130 130
 		 * @return array the headers list
131 131
 		 */
132
-		public static function getHeaders(){
132
+		public static function getHeaders() {
133 133
 			return self::$headers;
134 134
 		}
135 135
 
@@ -138,8 +138,8 @@  discard block
 block discarded – undo
138 138
 		 * @param  string $name the header name
139 139
 		 * @return string|null       the header value
140 140
 		 */
141
-		public static function getHeader($name){
142
-			if(array_key_exists($name, self::$headers)){
141
+		public static function getHeader($name) {
142
+			if (array_key_exists($name, self::$headers)) {
143 143
 				return self::$headers[$name];
144 144
 			}
145 145
 			return null;
@@ -151,7 +151,7 @@  discard block
 block discarded – undo
151 151
 		 * @param string $name  the header name
152 152
 		 * @param string $value the header value to be set
153 153
 		 */
154
-		public static function setHeader($name, $value){
154
+		public static function setHeader($name, $value) {
155 155
 			self::$headers[$name] = $value;
156 156
 		}
157 157
 
@@ -160,7 +160,7 @@  discard block
 block discarded – undo
160 160
 		 * @param array $headers the list of the headers to set. 
161 161
 		 * Note: this will merge with the existing headers
162 162
 		 */
163
-		public static function setHeaders(array $headers){
163
+		public static function setHeaders(array $headers) {
164 164
 			self::$headers = array_merge(self::getHeaders(), $headers);
165 165
 		}
166 166
 		
@@ -168,16 +168,16 @@  discard block
 block discarded – undo
168 168
 		 * Redirect user to the specified page
169 169
 		 * @param  string $path the URL or URI to be redirect to
170 170
 		 */
171
-		public static function redirect($path = ''){
171
+		public static function redirect($path = '') {
172 172
 			$logger = self::getLogger();
173 173
 			$url = Url::site_url($path);
174
-			$logger->info('Redirect to URL [' .$url. ']');
175
-			if(! headers_sent()){
176
-				header('Location: '.$url);
174
+			$logger->info('Redirect to URL [' . $url . ']');
175
+			if (!headers_sent()) {
176
+				header('Location: ' . $url);
177 177
 				exit;
178 178
 			}
179 179
 			echo '<script>
180
-					location.href = "'.$url.'";
180
+					location.href = "'.$url . '";
181 181
 				</script>';
182 182
 		}
183 183
 
@@ -189,7 +189,7 @@  discard block
 block discarded – undo
189 189
 		 * @return void|string          if $return is true will return the view content otherwise
190 190
 		 * will display the view content.
191 191
 		 */
192
-		public function render($view, $data = null, $return = false){
192
+		public function render($view, $data = null, $return = false) {
193 193
 			$logger = self::getLogger();
194 194
 			//convert data to an array
195 195
 			$data = (array) $data;
@@ -201,22 +201,22 @@  discard block
 block discarded – undo
201 201
 			//check in module first
202 202
 			$logger->debug('Checking the view [' . $view . '] from module list ...');
203 203
 			$moduleInfo = $this->getModuleInfoForView($view);
204
-			$module    = $moduleInfo['module'];
205
-			$view  = $moduleInfo['view'];
204
+			$module = $moduleInfo['module'];
205
+			$view = $moduleInfo['view'];
206 206
 			
207 207
 			$moduleViewPath = Module::findViewFullPath($view, $module);
208
-			if($moduleViewPath){
208
+			if ($moduleViewPath) {
209 209
 				$path = $moduleViewPath;
210
-				$logger->info('Found view [' . $view . '] in module [' .$module. '], the file path is [' .$moduleViewPath. '] we will used it');
210
+				$logger->info('Found view [' . $view . '] in module [' . $module . '], the file path is [' . $moduleViewPath . '] we will used it');
211 211
 			}
212
-			else{
213
-				$logger->info('Cannot find view [' . $view . '] in module [' .$module. '] using the default location');
212
+			else {
213
+				$logger->info('Cannot find view [' . $view . '] in module [' . $module . '] using the default location');
214 214
 			}
215 215
 			
216 216
 			$logger->info('The view file path to be loaded is [' . $path . ']');
217 217
 			
218 218
 			/////////
219
-			if($return){
219
+			if ($return) {
220 220
 				return $this->loadView($path, $data, true);
221 221
 			}
222 222
 			$this->loadView($path, $data, false);
@@ -226,36 +226,36 @@  discard block
 block discarded – undo
226 226
 		/**
227 227
 		* Send the final page output to user
228 228
 		*/
229
-		public function renderFinalPage(){
229
+		public function renderFinalPage() {
230 230
 			$logger = self::getLogger();
231 231
 			$obj = & get_instance();
232 232
 			$cachePageStatus = get_config('cache_enable', false) && !empty($obj->view_cache_enable);
233 233
 			$dispatcher = $obj->eventdispatcher;
234 234
 			$content = $this->_pageRender;
235
-			if(! $content){
235
+			if (!$content) {
236 236
 				$logger->warning('The final view content is empty.');
237 237
 				return;
238 238
 			}
239 239
 			//dispatch
240 240
 			$event = $dispatcher->dispatch(new EventInfo('FINAL_VIEW_READY', $content, true));
241 241
 			$content = null;
242
-			if(! empty($event->payload)){
242
+			if (!empty($event->payload)) {
243 243
 				$content = $event->payload;
244 244
 			}
245
-			if(empty($content)){
245
+			if (empty($content)) {
246 246
 				$logger->warning('The view content is empty after dispatch to event listeners.');
247 247
 			}
248 248
 			//remove unsed space in the content
249 249
 			$content = preg_replace('~>\s*\n\s*<~', '><', $content);
250 250
 			//check whether need save the page into cache.
251
-			if($cachePageStatus){
251
+			if ($cachePageStatus) {
252 252
 				$this->savePageContentIntoCache($content);
253 253
 			}
254 254
 			$content = $this->replaceElapseTimeAndMemoryUsage($content);
255 255
 
256 256
 			//compress the output if is available
257 257
 			$type = null;
258
-			if (self::$_canCompressOutput){
258
+			if (self::$_canCompressOutput) {
259 259
 				$type = 'ob_gzhandler';
260 260
 			}
261 261
 			ob_start($type);
@@ -271,7 +271,7 @@  discard block
 block discarded – undo
271 271
 		*
272 272
 		* @return boolean whether the page content if available or not
273 273
 		*/
274
-		public function renderFinalPageFromCache(&$cache){
274
+		public function renderFinalPageFromCache(&$cache) {
275 275
 			$logger = self::getLogger();
276 276
 			//the current page cache key for identification
277 277
 			$pageCacheKey = $this->_currentUrlCacheKey;
@@ -279,9 +279,9 @@  discard block
 block discarded – undo
279 279
 			$logger->debug('Checking if the page content for the URL [' . $this->_currentUrl . '] is cached ...');
280 280
 			//get the cache information to prepare header to send to browser
281 281
 			$cacheInfo = $cache->getInfo($pageCacheKey);
282
-			if($cacheInfo){
282
+			if ($cacheInfo) {
283 283
 				$status = $this->sendCacheNotYetExpireInfoToBrowser($cacheInfo);
284
-				if($status === false){
284
+				if ($status === false) {
285 285
 					return $this->sendCachePageContentToBrowser($cache);
286 286
 				}
287 287
 				return true;
@@ -294,7 +294,7 @@  discard block
 block discarded – undo
294 294
 		* Get the final page to be rendered
295 295
 		* @return string
296 296
 		*/
297
-		public function getFinalPageRendered(){
297
+		public function getFinalPageRendered() {
298 298
 			return $this->_pageRender;
299 299
 		}
300 300
 
@@ -302,14 +302,14 @@  discard block
 block discarded – undo
302 302
 		 * Send the HTTP 404 error if can not found the 
303 303
 		 * routing information for the current request
304 304
 		 */
305
-		public static function send404(){
305
+		public static function send404() {
306 306
 			/********* for logs **************/
307 307
 			//can't use $obj = & get_instance()  here because the global super object will be available until
308 308
 			//the main controller is loaded even for Loader::library('xxxx');
309 309
 			$logger = self::getLogger();
310
-			$request =& class_loader('Request', 'classes');
311
-			$userAgent =& class_loader('Browser');
312
-			$browser = $userAgent->getPlatform().', '.$userAgent->getBrowser().' '.$userAgent->getVersion();
310
+			$request = & class_loader('Request', 'classes');
311
+			$userAgent = & class_loader('Browser');
312
+			$browser = $userAgent->getPlatform() . ', ' . $userAgent->getBrowser() . ' ' . $userAgent->getVersion();
313 313
 			
314 314
 			//here can't use Loader::functions just include the helper manually
315 315
 			require_once CORE_FUNCTIONS_PATH . 'function_user_agent.php';
@@ -319,10 +319,10 @@  discard block
 block discarded – undo
319 319
 			$logger->error($str);
320 320
 			/***********************************/
321 321
 			$path = CORE_VIEWS_PATH . '404.php';
322
-			if(file_exists($path)){
322
+			if (file_exists($path)) {
323 323
 				//compress the output if is available
324 324
 				$type = null;
325
-				if (self::$_canCompressOutput){
325
+				if (self::$_canCompressOutput) {
326 326
 					$type = 'ob_gzhandler';
327 327
 				}
328 328
 				ob_start($type);
@@ -331,8 +331,8 @@  discard block
 block discarded – undo
331 331
 				self::sendHeaders(404);
332 332
 				echo $output;
333 333
 			}
334
-			else{
335
-				show_error('The 404 view [' .$path. '] does not exist');
334
+			else {
335
+				show_error('The 404 view [' . $path . '] does not exist');
336 336
 			}
337 337
 		}
338 338
 
@@ -340,12 +340,12 @@  discard block
 block discarded – undo
340 340
 		 * Display the error to user
341 341
 		 * @param  array  $data the error information
342 342
 		 */
343
-		public static function sendError(array $data = array()){
343
+		public static function sendError(array $data = array()) {
344 344
 			$path = CORE_VIEWS_PATH . 'errors.php';
345
-			if(file_exists($path)){
345
+			if (file_exists($path)) {
346 346
 				//compress the output if is available
347 347
 				$type = null;
348
-				if (self::$_canCompressOutput){
348
+				if (self::$_canCompressOutput) {
349 349
 					$type = 'ob_gzhandler';
350 350
 				}
351 351
 				ob_start($type);
@@ -355,7 +355,7 @@  discard block
 block discarded – undo
355 355
 				self::sendHeaders(503);
356 356
 				echo $output;
357 357
 			}
358
-			else{
358
+			else {
359 359
 				//can't use show_error() at this time because some dependencies not yet loaded and to prevent loop
360 360
 				set_http_status_header(503);
361 361
 				echo 'The error view [' . $path . '] does not exist';
@@ -367,17 +367,17 @@  discard block
 block discarded – undo
367 367
 		 * @param  array $cacheInfo the cache information
368 368
 		 * @return boolean            true if the information is sent otherwise false
369 369
 		 */
370
-		protected function sendCacheNotYetExpireInfoToBrowser($cacheInfo){
371
-			if(! empty($cacheInfo)){
370
+		protected function sendCacheNotYetExpireInfoToBrowser($cacheInfo) {
371
+			if (!empty($cacheInfo)) {
372 372
 				$logger = self::getLogger();
373 373
 				$lastModified = $cacheInfo['mtime'];
374 374
 				$expire = $cacheInfo['expire'];
375 375
 				$maxAge = $expire - $_SERVER['REQUEST_TIME'];
376 376
 				self::setHeader('Pragma', 'public');
377 377
 				self::setHeader('Cache-Control', 'max-age=' . $maxAge . ', public');
378
-				self::setHeader('Expires', gmdate('D, d M Y H:i:s', $expire).' GMT');
379
-				self::setHeader('Last-modified', gmdate('D, d M Y H:i:s', $lastModified).' GMT');
380
-				if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $lastModified <= strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])){
378
+				self::setHeader('Expires', gmdate('D, d M Y H:i:s', $expire) . ' GMT');
379
+				self::setHeader('Last-modified', gmdate('D, d M Y H:i:s', $lastModified) . ' GMT');
380
+				if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $lastModified <= strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
381 381
 					$logger->info('The cache page content is not yet expire for the URL [' . $this->_currentUrl . '] send 304 header to browser');
382 382
 					self::sendHeaders(304);
383 383
 					return true;
@@ -392,7 +392,7 @@  discard block
 block discarded – undo
392 392
 		 * @return string          the page content after replace 
393 393
 		 * '{elapsed_time}', '{memory_usage}'
394 394
 		 */
395
-		protected function replaceElapseTimeAndMemoryUsage($content){
395
+		protected function replaceElapseTimeAndMemoryUsage($content) {
396 396
 			//load benchmark class
397 397
 			$benchmark = & class_loader('Benchmark');
398 398
 			
@@ -408,7 +408,7 @@  discard block
 block discarded – undo
408 408
 		 * @param object $cache the cache instance
409 409
 		 * @return boolean     the status of the operation
410 410
 		 */
411
-		protected function sendCachePageContentToBrowser(&$cache){
411
+		protected function sendCachePageContentToBrowser(&$cache) {
412 412
 			$logger = self::getLogger();
413 413
 			$logger->info('The cache page content is expired or the browser does not send the HTTP_IF_MODIFIED_SINCE header for the URL [' . $this->_currentUrl . '] send cache headers to tell the browser');
414 414
 			self::sendHeaders(200);
@@ -416,13 +416,13 @@  discard block
 block discarded – undo
416 416
 			$pageCacheKey = $this->_currentUrlCacheKey;
417 417
 			//get the cache content
418 418
 			$content = $cache->get($pageCacheKey);
419
-			if($content){
419
+			if ($content) {
420 420
 				$logger->info('The page content for the URL [' . $this->_currentUrl . '] already cached just display it');
421 421
 				$content = $this->replaceElapseTimeAndMemoryUsage($content);
422 422
 				///display the final output
423 423
 				//compress the output if is available
424 424
 				$type = null;
425
-				if (self::$_canCompressOutput){
425
+				if (self::$_canCompressOutput) {
426 426
 					$type = 'ob_gzhandler';
427 427
 				}
428 428
 				ob_start($type);
@@ -440,7 +440,7 @@  discard block
 block discarded – undo
440 440
 		 * @param  string $content the page content to be saved
441 441
 		 * @return void
442 442
 		 */
443
-		protected function savePageContentIntoCache($content){
443
+		protected function savePageContentIntoCache($content) {
444 444
 			$obj = & get_instance();
445 445
 			$logger = self::getLogger();
446 446
 
@@ -448,7 +448,7 @@  discard block
 block discarded – undo
448 448
 			$url = $this->_currentUrl;
449 449
 			//Cache view Time to live in second
450 450
 			$viewCacheTtl = get_config('cache_ttl');
451
-			if (!empty($obj->view_cache_ttl)){
451
+			if (!empty($obj->view_cache_ttl)) {
452 452
 				$viewCacheTtl = $obj->view_cache_ttl;
453 453
 			}
454 454
 			//the cache handler instance
@@ -460,14 +460,14 @@  discard block
 block discarded – undo
460 460
 			
461 461
 			//get the cache information to prepare header to send to browser
462 462
 			$cacheInfo = $cacheInstance->getInfo($cacheKey);
463
-			if($cacheInfo){
463
+			if ($cacheInfo) {
464 464
 				$lastModified = $cacheInfo['mtime'];
465 465
 				$expire = $cacheInfo['expire'];
466 466
 				$maxAge = $expire - time();
467 467
 				self::setHeader('Pragma', 'public');
468 468
 				self::setHeader('Cache-Control', 'max-age=' . $maxAge . ', public');
469
-				self::setHeader('Expires', gmdate('D, d M Y H:i:s', $expire).' GMT');
470
-				self::setHeader('Last-modified', gmdate('D, d M Y H:i:s', $lastModified).' GMT');	
469
+				self::setHeader('Expires', gmdate('D, d M Y H:i:s', $expire) . ' GMT');
470
+				self::setHeader('Last-modified', gmdate('D, d M Y H:i:s', $lastModified) . ' GMT');	
471 471
 			}
472 472
 		}
473 473
 		
@@ -483,21 +483,21 @@  discard block
 block discarded – undo
483 483
 		 * 	'viewFile' => 'view_file'
484 484
 		 * )
485 485
 		 */
486
-		protected  function getModuleInfoForView($view){
486
+		protected  function getModuleInfoForView($view) {
487 487
 			$module = null;
488 488
 			$viewFile = null;
489 489
 			$obj = & get_instance();
490 490
 			//check if the request class contains module name
491
-			if(strpos($view, '/') !== false){
491
+			if (strpos($view, '/') !== false) {
492 492
 				$viewPath = explode('/', $view);
493
-				if(isset($viewPath[0]) && in_array($viewPath[0], Module::getModuleList())){
493
+				if (isset($viewPath[0]) && in_array($viewPath[0], Module::getModuleList())) {
494 494
 					$module = $viewPath[0];
495 495
 					array_shift($viewPath);
496 496
 					$view = implode('/', $viewPath);
497 497
 					$viewFile = $view . '.php';
498 498
 				}
499 499
 			}
500
-			if(! $module && !empty($obj->moduleName)){
500
+			if (!$module && !empty($obj->moduleName)) {
501 501
 				$module = $obj->moduleName;
502 502
 			}
503 503
 			return array(
@@ -512,13 +512,13 @@  discard block
 block discarded – undo
512 512
 		 * @see  Response::render
513 513
 		 * @return void|string
514 514
 		 */
515
-		protected  function loadView($path, array $data = array(), $return = false){
515
+		protected  function loadView($path, array $data = array(), $return = false) {
516 516
 			$found = false;
517
-			if(file_exists($path)){
517
+			if (file_exists($path)) {
518 518
 				//super instance
519 519
 				$obj = & get_instance();
520
-				foreach(get_object_vars($obj) as $key => $value){
521
-					if(! isset($this->{$key})){
520
+				foreach (get_object_vars($obj) as $key => $value) {
521
+					if (!isset($this->{$key})) {
522 522
 						$this->{$key} = & $obj->{$key};
523 523
 					}
524 524
 				}
@@ -527,15 +527,15 @@  discard block
 block discarded – undo
527 527
 				//need use require() instead of require_once because can load this view many time
528 528
 				require $path;
529 529
 				$content = ob_get_clean();
530
-				if($return){
530
+				if ($return) {
531 531
 					//remove unused html space 
532 532
 					return preg_replace('~>\s*\n\s*<~', '><', $content);
533 533
 				}
534 534
 				$this->_pageRender .= $content;
535 535
 				$found = true;
536 536
 			}
537
-			if(! $found){
538
-				show_error('Unable to find view [' .$path . ']');
537
+			if (!$found) {
538
+				show_error('Unable to find view [' . $path . ']');
539 539
 			}
540 540
 		}
541 541
 
Please login to merge, or discard this patch.
core/classes/Router.php 2 patches
Indentation   +610 added lines, -610 removed lines patch added patch discarded remove patch
@@ -1,624 +1,624 @@
 block discarded – undo
1 1
 <?php
2
-	defined('ROOT_PATH') or exit('Access denied');
3
-	/**
4
-	 * TNH Framework
5
-	 *
6
-	 * A simple PHP framework using HMVC architecture
7
-	 *
8
-	 * This content is released under the GNU GPL License (GPL)
9
-	 *
10
-	 * Copyright (C) 2017 Tony NGUEREZA
11
-	 *
12
-	 * This program is free software; you can redistribute it and/or
13
-	 * modify it under the terms of the GNU General Public License
14
-	 * as published by the Free Software Foundation; either version 3
15
-	 * of the License, or (at your option) any later version.
16
-	 *
17
-	 * This program is distributed in the hope that it will be useful,
18
-	 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
-	 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
-	 * GNU General Public License for more details.
21
-	 *
22
-	 * You should have received a copy of the GNU General Public License
23
-	 * along with this program; if not, write to the Free Software
24
-	 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
-	*/
26
-
27
-	class Router {
28
-		/**
29
-		* @var array $pattern: The list of URIs to validate against
30
-		*/
31
-		private $pattern = array();
32
-
33
-		/**
34
-		* @var array $callback: The list of callback to call
35
-		*/
36
-		private $callback = array();
37
-
38
-		/**
39
-		* @var string $uriTrim: The char to remove from the URIs
40
-		*/
41
-		protected $uriTrim = '/\^$';
42
-
43
-		/**
44
-		* @var string $uri: The route URI to use
45
-		*/
46
-		protected $uri = '';
47
-
48
-		/**
49
-		 * The module name of the current request
50
-		 * @var string
51
-		 */
52
-		protected $module = null;
2
+    defined('ROOT_PATH') or exit('Access denied');
3
+    /**
4
+     * TNH Framework
5
+     *
6
+     * A simple PHP framework using HMVC architecture
7
+     *
8
+     * This content is released under the GNU GPL License (GPL)
9
+     *
10
+     * Copyright (C) 2017 Tony NGUEREZA
11
+     *
12
+     * This program is free software; you can redistribute it and/or
13
+     * modify it under the terms of the GNU General Public License
14
+     * as published by the Free Software Foundation; either version 3
15
+     * of the License, or (at your option) any later version.
16
+     *
17
+     * This program is distributed in the hope that it will be useful,
18
+     * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
+     * GNU General Public License for more details.
21
+     *
22
+     * You should have received a copy of the GNU General Public License
23
+     * along with this program; if not, write to the Free Software
24
+     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
+     */
26
+
27
+    class Router {
28
+        /**
29
+         * @var array $pattern: The list of URIs to validate against
30
+         */
31
+        private $pattern = array();
32
+
33
+        /**
34
+         * @var array $callback: The list of callback to call
35
+         */
36
+        private $callback = array();
37
+
38
+        /**
39
+         * @var string $uriTrim: The char to remove from the URIs
40
+         */
41
+        protected $uriTrim = '/\^$';
42
+
43
+        /**
44
+         * @var string $uri: The route URI to use
45
+         */
46
+        protected $uri = '';
47
+
48
+        /**
49
+         * The module name of the current request
50
+         * @var string
51
+         */
52
+        protected $module = null;
53 53
 		
54
-		/**
55
-		 * The controller name of the current request
56
-		 * @var string
57
-		 */
58
-		protected $controller = null;
59
-
60
-		/**
61
-		 * The controller path
62
-		 * @var string
63
-		 */
64
-		protected $controllerPath = null;
65
-
66
-		/**
67
-		 * The method name. The default value is "index"
68
-		 * @var string
69
-		 */
70
-		protected $method = 'index';
71
-
72
-		/**
73
-		 * List of argument to pass to the method
74
-		 * @var array
75
-		 */
76
-		protected $args = array();
77
-
78
-		/**
79
-		 * List of routes configurations
80
-		 * @var array
81
-		 */
82
-		protected $routes = array();
83
-
84
-		/**
85
-		 * The segments array for the current request
86
-		 * @var array
87
-		 */
88
-		protected $segments = array();
89
-
90
-		/**
91
-		 * The logger instance
92
-		 * @var Log
93
-		 */
94
-		private $logger;
95
-
96
-		/**
97
-		 * Construct the new Router instance
98
-		 */
99
-		public function __construct(){
100
-			$this->setLoggerFromParamOrCreateNewInstance(null);
54
+        /**
55
+         * The controller name of the current request
56
+         * @var string
57
+         */
58
+        protected $controller = null;
59
+
60
+        /**
61
+         * The controller path
62
+         * @var string
63
+         */
64
+        protected $controllerPath = null;
65
+
66
+        /**
67
+         * The method name. The default value is "index"
68
+         * @var string
69
+         */
70
+        protected $method = 'index';
71
+
72
+        /**
73
+         * List of argument to pass to the method
74
+         * @var array
75
+         */
76
+        protected $args = array();
77
+
78
+        /**
79
+         * List of routes configurations
80
+         * @var array
81
+         */
82
+        protected $routes = array();
83
+
84
+        /**
85
+         * The segments array for the current request
86
+         * @var array
87
+         */
88
+        protected $segments = array();
89
+
90
+        /**
91
+         * The logger instance
92
+         * @var Log
93
+         */
94
+        private $logger;
95
+
96
+        /**
97
+         * Construct the new Router instance
98
+         */
99
+        public function __construct(){
100
+            $this->setLoggerFromParamOrCreateNewInstance(null);
101 101
 			
102
-			//loading routes for module
103
-			$moduleRouteList = array();
104
-			$modulesRoutes = Module::getModulesRoutesConfig();
105
-			if($modulesRoutes && is_array($modulesRoutes)){
106
-				$moduleRouteList = $modulesRoutes;
107
-				unset($modulesRoutes);
108
-			}
109
-			$this->setRouteConfiguration($moduleRouteList);
110
-			$this->logger->info('The routes configuration are listed below: ' . stringfy_vars($this->routes));
111
-
112
-			//Set route informations
113
-			$this->setRouteConfigurationInfos();
114
-		}
115
-
116
-		/**
117
-		 * Get the route patterns
118
-		 * @return array
119
-		 */
120
-		public function getPattern(){
121
-			return $this->pattern;
122
-		}
123
-
124
-		/**
125
-		 * Get the route callbacks
126
-		 * @return array
127
-		 */
128
-		public function getCallback(){
129
-			return $this->callback;
130
-		}
131
-
132
-	    /**
133
-		 * Get the module name
134
-		 * @return string
135
-		 */
136
-		public function getModule(){
137
-			return $this->module;
138
-		}
102
+            //loading routes for module
103
+            $moduleRouteList = array();
104
+            $modulesRoutes = Module::getModulesRoutesConfig();
105
+            if($modulesRoutes && is_array($modulesRoutes)){
106
+                $moduleRouteList = $modulesRoutes;
107
+                unset($modulesRoutes);
108
+            }
109
+            $this->setRouteConfiguration($moduleRouteList);
110
+            $this->logger->info('The routes configuration are listed below: ' . stringfy_vars($this->routes));
111
+
112
+            //Set route informations
113
+            $this->setRouteConfigurationInfos();
114
+        }
115
+
116
+        /**
117
+         * Get the route patterns
118
+         * @return array
119
+         */
120
+        public function getPattern(){
121
+            return $this->pattern;
122
+        }
123
+
124
+        /**
125
+         * Get the route callbacks
126
+         * @return array
127
+         */
128
+        public function getCallback(){
129
+            return $this->callback;
130
+        }
131
+
132
+        /**
133
+         * Get the module name
134
+         * @return string
135
+         */
136
+        public function getModule(){
137
+            return $this->module;
138
+        }
139 139
 		
140
-		/**
141
-		 * Get the controller name
142
-		 * @return string
143
-		 */
144
-		public function getController(){
145
-			return $this->controller;
146
-		}
147
-
148
-		/**
149
-		 * Get the controller file path
150
-		 * @return string
151
-		 */
152
-		public function getControllerPath(){
153
-			return $this->controllerPath;
154
-		}
155
-
156
-		/**
157
-		 * Get the controller method
158
-		 * @return string
159
-		 */
160
-		public function getMethod(){
161
-			return $this->method;
162
-		}
163
-
164
-		/**
165
-		 * Get the request arguments
166
-		 * @return array
167
-		 */
168
-		public function getArgs(){
169
-			return $this->args;
170
-		}
171
-
172
-		/**
173
-		 * Get the URL segments array
174
-		 * @return array
175
-		 */
176
-		public function getSegments(){
177
-			return $this->segments;
178
-		}
179
-
180
-		/**
181
-	     * Return the Log instance
182
-	     * @return Log
183
-	     */
184
-	    public function getLogger(){
185
-	      return $this->logger;
186
-	    }
187
-
188
-	    /**
189
-	     * Set the log instance
190
-	     * @param Log $logger the log object
191
-		 * @return object
192
-	     */
193
-	    public function setLogger($logger){
194
-	      $this->logger = $logger;
195
-	      return $this;
196
-	    }
197
-
198
-	    /**
199
-		 * Get the route URI
200
-		 * @return string
201
-		 */
202
-		public function getRouteUri(){
203
-			return $this->uri;
204
-		}
205
-
206
-		/**
207
-		* Add the URI and callback to the list of URIs to validate
208
-		*
209
-		* @param string $uri the request URI
210
-		* @param string $callback the callback function
211
-		*
212
-		* @return object the current instance
213
-		*/
214
-		public function add($uri, $callback) {
215
-			$uri = trim($uri, $this->uriTrim);
216
-			if(in_array($uri, $this->pattern)){
217
-				$this->logger->warning('The route [' . $uri . '] already added, may be adding again can have route conflict');
218
-			}
219
-			$this->pattern[] = $uri;
220
-			$this->callback[] = $callback;
221
-			return $this;
222
-		}
223
-
224
-		/**
225
-		* Remove the route configuration
226
-		*
227
-		* @param string $uri the URI
228
-		*
229
-		* @return object the current instance
230
-		*/
231
-		public function removeRoute($uri) {
232
-			$index  = array_search($uri, $this->pattern, true);
233
-			if($index !== false){
234
-				$this->logger->info('Remove route for uri [' . $uri . '] from the configuration');
235
-				unset($this->pattern[$index]);
236
-				unset($this->callback[$index]);
237
-			}
238
-			return $this;
239
-		}
240
-
241
-
242
-		/**
243
-		* Remove all the routes from the configuration
244
-		*
245
-		* @return object the current instance
246
-		*/
247
-		public function removeAllRoute() {
248
-			$this->logger->info('Remove all routes from the configuration');
249
-			$this->pattern  = array();
250
-			$this->callback = array();
251
-			$this->routes = array();
252
-			return $this;
253
-		}
254
-
255
-
256
-		/**
257
-	     * Set the route URI to use later
258
-	     * @param string $uri the route URI, if is empty will determine automatically
259
-	     * @return object
260
-	     */
261
-	    public function setRouteUri($uri = ''){
262
-	    	$routeUri = '';
263
-	    	if(! empty($uri)){
264
-	    		$routeUri = $uri;
265
-	    	}
266
-	    	//if the application is running in CLI mode use the first argument
267
-			else if(IS_CLI && isset($_SERVER['argv'][1])){
268
-				$routeUri = $_SERVER['argv'][1];
269
-			}
270
-			else if(isset($_SERVER['REQUEST_URI'])){
271
-				$routeUri = $_SERVER['REQUEST_URI'];
272
-			}
273
-			$this->logger->debug('Check if URL suffix is enabled in the configuration');
274
-			//remove url suffix from the request URI
275
-			$suffix = get_config('url_suffix');
276
-			if ($suffix) {
277
-				$this->logger->info('URL suffix is enabled in the configuration, the value is [' . $suffix . ']' );
278
-				$routeUri = str_ireplace($suffix, '', $routeUri);
279
-			} 
280
-			if (strpos($routeUri, '?') !== false){
281
-				$routeUri = substr($routeUri, 0, strpos($routeUri, '?'));
282
-			}
283
-			$this->uri = trim($routeUri, $this->uriTrim);
284
-			return $this;
285
-	    }
286
-
287
-	     /**
288
-		 * Set the route segments informations
289
-		 * @param array $segements the route segments information
290
-		 * 
291
-		 * @return object
292
-		 */
293
-		public function setRouteSegments(array $segments = array()){
294
-			if(! empty($segments)){
295
-				$this->segments = $segments;
296
-			} else if (!empty($this->uri)) {
297
-				$this->segments = explode('/', $this->uri);
298
-			}
299
-			$segment = $this->segments;
300
-			$baseUrl = get_config('base_url');
301
-			//check if the app is not in DOCUMENT_ROOT
302
-			if(isset($segment[0]) && stripos($baseUrl, $segment[0]) !== false){
303
-				array_shift($segment);
304
-				$this->segments = $segment;
305
-			}
306
-			$this->logger->debug('Check if the request URI contains the front controller');
307
-			if(isset($segment[0]) && $segment[0] == SELF){
308
-				$this->logger->info('The request URI contains the front controller');
309
-				array_shift($segment);
310
-				$this->segments = $segment;
311
-			}
312
-			return $this;
313
-		}
314
-
315
-		/**
316
-		 * Setting the route parameters like module, controller, method, argument
317
-		 * @return object the current instance
318
-		 */
319
-		public function determineRouteParamsInformation() {
320
-			$this->logger->debug('Routing process start ...');
140
+        /**
141
+         * Get the controller name
142
+         * @return string
143
+         */
144
+        public function getController(){
145
+            return $this->controller;
146
+        }
147
+
148
+        /**
149
+         * Get the controller file path
150
+         * @return string
151
+         */
152
+        public function getControllerPath(){
153
+            return $this->controllerPath;
154
+        }
155
+
156
+        /**
157
+         * Get the controller method
158
+         * @return string
159
+         */
160
+        public function getMethod(){
161
+            return $this->method;
162
+        }
163
+
164
+        /**
165
+         * Get the request arguments
166
+         * @return array
167
+         */
168
+        public function getArgs(){
169
+            return $this->args;
170
+        }
171
+
172
+        /**
173
+         * Get the URL segments array
174
+         * @return array
175
+         */
176
+        public function getSegments(){
177
+            return $this->segments;
178
+        }
179
+
180
+        /**
181
+         * Return the Log instance
182
+         * @return Log
183
+         */
184
+        public function getLogger(){
185
+            return $this->logger;
186
+        }
187
+
188
+        /**
189
+         * Set the log instance
190
+         * @param Log $logger the log object
191
+         * @return object
192
+         */
193
+        public function setLogger($logger){
194
+            $this->logger = $logger;
195
+            return $this;
196
+        }
197
+
198
+        /**
199
+         * Get the route URI
200
+         * @return string
201
+         */
202
+        public function getRouteUri(){
203
+            return $this->uri;
204
+        }
205
+
206
+        /**
207
+         * Add the URI and callback to the list of URIs to validate
208
+         *
209
+         * @param string $uri the request URI
210
+         * @param string $callback the callback function
211
+         *
212
+         * @return object the current instance
213
+         */
214
+        public function add($uri, $callback) {
215
+            $uri = trim($uri, $this->uriTrim);
216
+            if(in_array($uri, $this->pattern)){
217
+                $this->logger->warning('The route [' . $uri . '] already added, may be adding again can have route conflict');
218
+            }
219
+            $this->pattern[] = $uri;
220
+            $this->callback[] = $callback;
221
+            return $this;
222
+        }
223
+
224
+        /**
225
+         * Remove the route configuration
226
+         *
227
+         * @param string $uri the URI
228
+         *
229
+         * @return object the current instance
230
+         */
231
+        public function removeRoute($uri) {
232
+            $index  = array_search($uri, $this->pattern, true);
233
+            if($index !== false){
234
+                $this->logger->info('Remove route for uri [' . $uri . '] from the configuration');
235
+                unset($this->pattern[$index]);
236
+                unset($this->callback[$index]);
237
+            }
238
+            return $this;
239
+        }
240
+
241
+
242
+        /**
243
+         * Remove all the routes from the configuration
244
+         *
245
+         * @return object the current instance
246
+         */
247
+        public function removeAllRoute() {
248
+            $this->logger->info('Remove all routes from the configuration');
249
+            $this->pattern  = array();
250
+            $this->callback = array();
251
+            $this->routes = array();
252
+            return $this;
253
+        }
254
+
255
+
256
+        /**
257
+         * Set the route URI to use later
258
+         * @param string $uri the route URI, if is empty will determine automatically
259
+         * @return object
260
+         */
261
+        public function setRouteUri($uri = ''){
262
+            $routeUri = '';
263
+            if(! empty($uri)){
264
+                $routeUri = $uri;
265
+            }
266
+            //if the application is running in CLI mode use the first argument
267
+            else if(IS_CLI && isset($_SERVER['argv'][1])){
268
+                $routeUri = $_SERVER['argv'][1];
269
+            }
270
+            else if(isset($_SERVER['REQUEST_URI'])){
271
+                $routeUri = $_SERVER['REQUEST_URI'];
272
+            }
273
+            $this->logger->debug('Check if URL suffix is enabled in the configuration');
274
+            //remove url suffix from the request URI
275
+            $suffix = get_config('url_suffix');
276
+            if ($suffix) {
277
+                $this->logger->info('URL suffix is enabled in the configuration, the value is [' . $suffix . ']' );
278
+                $routeUri = str_ireplace($suffix, '', $routeUri);
279
+            } 
280
+            if (strpos($routeUri, '?') !== false){
281
+                $routeUri = substr($routeUri, 0, strpos($routeUri, '?'));
282
+            }
283
+            $this->uri = trim($routeUri, $this->uriTrim);
284
+            return $this;
285
+        }
286
+
287
+            /**
288
+             * Set the route segments informations
289
+             * @param array $segements the route segments information
290
+             * 
291
+             * @return object
292
+             */
293
+        public function setRouteSegments(array $segments = array()){
294
+            if(! empty($segments)){
295
+                $this->segments = $segments;
296
+            } else if (!empty($this->uri)) {
297
+                $this->segments = explode('/', $this->uri);
298
+            }
299
+            $segment = $this->segments;
300
+            $baseUrl = get_config('base_url');
301
+            //check if the app is not in DOCUMENT_ROOT
302
+            if(isset($segment[0]) && stripos($baseUrl, $segment[0]) !== false){
303
+                array_shift($segment);
304
+                $this->segments = $segment;
305
+            }
306
+            $this->logger->debug('Check if the request URI contains the front controller');
307
+            if(isset($segment[0]) && $segment[0] == SELF){
308
+                $this->logger->info('The request URI contains the front controller');
309
+                array_shift($segment);
310
+                $this->segments = $segment;
311
+            }
312
+            return $this;
313
+        }
314
+
315
+        /**
316
+         * Setting the route parameters like module, controller, method, argument
317
+         * @return object the current instance
318
+         */
319
+        public function determineRouteParamsInformation() {
320
+            $this->logger->debug('Routing process start ...');
321 321
 			
322
-			//determine route parameters using the config
323
-			$this->determineRouteParamsFromConfig();
322
+            //determine route parameters using the config
323
+            $this->determineRouteParamsFromConfig();
324 324
 			
325
-			//if can not determine the module/controller/method via the defined routes configuration we will use
326
-			//the URL like http://domain.com/module/controller/method/arg1/arg2
327
-			if(! $this->controller){
328
-				$this->logger->info('Cannot determine the routing information using the predefined routes configuration, will use the request URI parameters');
329
-				//determine route parameters using the REQUEST_URI param
330
-				$this->determineRouteParamsFromRequestUri();
331
-			}
332
-			//Set the controller file path if not yet set
333
-			$this->setControllerFilePath();
334
-			$this->logger->debug('Routing process end.');
335
-
336
-			return $this;
337
-		}
325
+            //if can not determine the module/controller/method via the defined routes configuration we will use
326
+            //the URL like http://domain.com/module/controller/method/arg1/arg2
327
+            if(! $this->controller){
328
+                $this->logger->info('Cannot determine the routing information using the predefined routes configuration, will use the request URI parameters');
329
+                //determine route parameters using the REQUEST_URI param
330
+                $this->determineRouteParamsFromRequestUri();
331
+            }
332
+            //Set the controller file path if not yet set
333
+            $this->setControllerFilePath();
334
+            $this->logger->debug('Routing process end.');
335
+
336
+            return $this;
337
+        }
338 338
 	
339
-		 /**
340
-		 * Routing the request to the correspondant module/controller/method if exists
341
-		 * otherwise send 404 error.
342
-		 */
343
-	    public function processRequest(){
344
-	    	//Setting the route URI
345
-			$this->setRouteUri();
346
-
347
-			//setting route segments
348
-			$this->setRouteSegments();
349
-
350
-			$this->logger->info('The final Request URI is [' . implode('/', $this->segments) . ']' );
351
-
352
-	    	//determine the route parameters information
353
-	    	$this->determineRouteParamsInformation();
354
-
355
-	    	$e404 = false;
356
-	    	$classFilePath = $this->controllerPath;
357
-	    	$controller = ucfirst($this->controller);
358
-	    	$this->logger->info('The routing information are: module [' . $this->module . '], controller [' . $controller . '], method [' . $this->method . '], args [' . stringfy_vars($this->args) . ']');
359
-	    	$this->logger->debug('Loading controller [' . $controller . '], the file path is [' . $classFilePath . ']...');
339
+            /**
340
+             * Routing the request to the correspondant module/controller/method if exists
341
+             * otherwise send 404 error.
342
+             */
343
+        public function processRequest(){
344
+            //Setting the route URI
345
+            $this->setRouteUri();
346
+
347
+            //setting route segments
348
+            $this->setRouteSegments();
349
+
350
+            $this->logger->info('The final Request URI is [' . implode('/', $this->segments) . ']' );
351
+
352
+            //determine the route parameters information
353
+            $this->determineRouteParamsInformation();
354
+
355
+            $e404 = false;
356
+            $classFilePath = $this->controllerPath;
357
+            $controller = ucfirst($this->controller);
358
+            $this->logger->info('The routing information are: module [' . $this->module . '], controller [' . $controller . '], method [' . $this->method . '], args [' . stringfy_vars($this->args) . ']');
359
+            $this->logger->debug('Loading controller [' . $controller . '], the file path is [' . $classFilePath . ']...');
360 360
 	    	
361
-			if(file_exists($classFilePath)){
362
-				require_once $classFilePath;
363
-				if(! class_exists($controller, false)){
364
-					$e404 = true;
365
-					$this->logger->warning('The controller file [' .$classFilePath. '] exists but does not contain the class [' . $controller . ']');
366
-				}
367
-				else{
368
-					$controllerInstance = new $controller();
369
-					$controllerMethod = $this->getMethod();
370
-					if(! method_exists($controllerInstance, $controllerMethod)){
371
-						$e404 = true;
372
-						$this->logger->warning('The controller [' . $controller . '] exist but does not contain the method [' . $controllerMethod . ']');
373
-					}
374
-					else{
375
-						$this->logger->info('Routing data is set correctly now GO!');
376
-						call_user_func_array(array($controllerInstance, $controllerMethod), $this->args);
377
-						//render the final page to user
378
-						$this->logger->info('Render the final output to the browser');
379
-						get_instance()->response->renderFinalPage();
380
-					}
381
-				}
382
-			}
383
-			else{
384
-				$this->logger->info('The controller file path [' . $classFilePath . '] does not exist');
385
-				$e404 = true;
386
-			}
387
-			if($e404){
388
-				if(IS_CLI){
389
-					set_http_status_header(404);
390
-					echo 'Error 404: page not found.';
391
-				} else {
392
-					$response =& class_loader('Response', 'classes');
393
-					$response->send404();
394
-				}
395
-			}
396
-	    }
397
-
398
-
399
-	    /**
400
-	    * Setting the route configuration using the configuration file and additional configuration from param
401
-	    * @param array $overwriteConfig the additional configuration to overwrite with the existing one
402
-	    * @param boolean $useConfigFile whether to use route configuration file
403
-		* @return object
404
-	    */
405
-	    public function setRouteConfiguration(array $overwriteConfig = array(), $useConfigFile = true){
406
-	        $route = array();
407
-	        if ($useConfigFile && file_exists(CONFIG_PATH . 'routes.php')){
408
-	            require_once CONFIG_PATH . 'routes.php';
409
-	        }
410
-	        $route = array_merge($route, $overwriteConfig);
411
-	        $this->routes = $route;
412
-	        //if route is empty remove all configuration
413
-	        if(empty($route)){
414
-	        	$this->removeAllRoute();
415
-	        }
416
-			return $this;
417
-	    }
418
-
419
-	     /**
420
-		 * Get the route configuration
421
-		 * @return array
422
-		 */
423
-		public function getRouteConfiguration(){
424
-			return $this->routes;
425
-		}
361
+            if(file_exists($classFilePath)){
362
+                require_once $classFilePath;
363
+                if(! class_exists($controller, false)){
364
+                    $e404 = true;
365
+                    $this->logger->warning('The controller file [' .$classFilePath. '] exists but does not contain the class [' . $controller . ']');
366
+                }
367
+                else{
368
+                    $controllerInstance = new $controller();
369
+                    $controllerMethod = $this->getMethod();
370
+                    if(! method_exists($controllerInstance, $controllerMethod)){
371
+                        $e404 = true;
372
+                        $this->logger->warning('The controller [' . $controller . '] exist but does not contain the method [' . $controllerMethod . ']');
373
+                    }
374
+                    else{
375
+                        $this->logger->info('Routing data is set correctly now GO!');
376
+                        call_user_func_array(array($controllerInstance, $controllerMethod), $this->args);
377
+                        //render the final page to user
378
+                        $this->logger->info('Render the final output to the browser');
379
+                        get_instance()->response->renderFinalPage();
380
+                    }
381
+                }
382
+            }
383
+            else{
384
+                $this->logger->info('The controller file path [' . $classFilePath . '] does not exist');
385
+                $e404 = true;
386
+            }
387
+            if($e404){
388
+                if(IS_CLI){
389
+                    set_http_status_header(404);
390
+                    echo 'Error 404: page not found.';
391
+                } else {
392
+                    $response =& class_loader('Response', 'classes');
393
+                    $response->send404();
394
+                }
395
+            }
396
+        }
397
+
398
+
399
+        /**
400
+         * Setting the route configuration using the configuration file and additional configuration from param
401
+         * @param array $overwriteConfig the additional configuration to overwrite with the existing one
402
+         * @param boolean $useConfigFile whether to use route configuration file
403
+         * @return object
404
+         */
405
+        public function setRouteConfiguration(array $overwriteConfig = array(), $useConfigFile = true){
406
+            $route = array();
407
+            if ($useConfigFile && file_exists(CONFIG_PATH . 'routes.php')){
408
+                require_once CONFIG_PATH . 'routes.php';
409
+            }
410
+            $route = array_merge($route, $overwriteConfig);
411
+            $this->routes = $route;
412
+            //if route is empty remove all configuration
413
+            if(empty($route)){
414
+                $this->removeAllRoute();
415
+            }
416
+            return $this;
417
+        }
418
+
419
+            /**
420
+             * Get the route configuration
421
+             * @return array
422
+             */
423
+        public function getRouteConfiguration(){
424
+            return $this->routes;
425
+        }
426 426
 
427 427
 	    
428
-	    /**
429
-	     * Set the controller file path if is not set
430
-	     * @param string $path the file path if is null will using the route 
431
-	     * information
432
-	     *
433
-	     * @return object the current instance
434
-	     */
435
-	    public function setControllerFilePath($path = null){
436
-	    	if($path !== null){
437
-	    		$this->controllerPath = $path;
438
-	    		return $this;
439
-	    	}
440
-	    	//did we set the controller, so set the controller path
441
-			if($this->controller && ! $this->controllerPath){
442
-				$this->logger->debug('Setting the file path for the controller [' . $this->controller . ']');
443
-				$controllerPath = APPS_CONTROLLER_PATH . ucfirst($this->controller) . '.php';
444
-				//if the controller is in module
445
-				if($this->module){
446
-					$path = Module::findControllerFullPath(ucfirst($this->controller), $this->module);
447
-					if($path !== false){
448
-						$controllerPath = $path;
449
-					}
450
-				}
451
-				$this->controllerPath = $controllerPath;
452
-			}
453
-			return $this;
454
-	    }
455
-
456
-	    /**
457
-	     * Determine the route parameters from route configuration
458
-	     * @return void
459
-	     */
460
-	    protected function determineRouteParamsFromConfig(){
461
-	    	$uri = implode('/', $this->segments);
462
-	    	/*
428
+        /**
429
+         * Set the controller file path if is not set
430
+         * @param string $path the file path if is null will using the route 
431
+         * information
432
+         *
433
+         * @return object the current instance
434
+         */
435
+        public function setControllerFilePath($path = null){
436
+            if($path !== null){
437
+                $this->controllerPath = $path;
438
+                return $this;
439
+            }
440
+            //did we set the controller, so set the controller path
441
+            if($this->controller && ! $this->controllerPath){
442
+                $this->logger->debug('Setting the file path for the controller [' . $this->controller . ']');
443
+                $controllerPath = APPS_CONTROLLER_PATH . ucfirst($this->controller) . '.php';
444
+                //if the controller is in module
445
+                if($this->module){
446
+                    $path = Module::findControllerFullPath(ucfirst($this->controller), $this->module);
447
+                    if($path !== false){
448
+                        $controllerPath = $path;
449
+                    }
450
+                }
451
+                $this->controllerPath = $controllerPath;
452
+            }
453
+            return $this;
454
+        }
455
+
456
+        /**
457
+         * Determine the route parameters from route configuration
458
+         * @return void
459
+         */
460
+        protected function determineRouteParamsFromConfig(){
461
+            $uri = implode('/', $this->segments);
462
+            /*
463 463
 	   		* Generics routes patterns
464 464
 	    	*/
465
-			$pattern = array(':num', ':alpha', ':alnum', ':any');
466
-			$replace = array('[0-9]+', '[a-zA-Z]+', '[a-zA-Z0-9]+', '.*');
467
-
468
-			$this->logger->debug(
469
-									'Begin to loop in the predefined routes configuration ' 
470
-									. 'to check if the current request match'
471
-									);
472
-
473
-			// Cycle through the URIs stored in the array
474
-			foreach ($this->pattern as $index => $uriList) {
475
-				$uriList = str_ireplace($pattern, $replace, $uriList);
476
-				// Check for an existant matching URI
477
-				if (preg_match("#^$uriList$#", $uri, $args)) {
478
-					$this->logger->info(
479
-										'Route found for request URI [' . $uri . '] using the predefined configuration '
480
-										. ' [' . $this->pattern[$index] . '] --> [' . $this->callback[$index] . ']'
481
-									);
482
-					array_shift($args);
483
-					//check if this contains an module
484
-					$moduleControllerMethod = explode('#', $this->callback[$index]);
485
-					if(is_array($moduleControllerMethod) && count($moduleControllerMethod) >= 2){
486
-						$this->logger->info('The current request use the module [' . $moduleControllerMethod[0] . ']');
487
-						$this->module = $moduleControllerMethod[0];
488
-						$moduleControllerMethod = explode('@', $moduleControllerMethod[1]);
489
-					}
490
-					else{
491
-						$this->logger->info('The current request does not use the module');
492
-						$moduleControllerMethod = explode('@', $this->callback[$index]);
493
-					}
494
-					if(is_array($moduleControllerMethod)){
495
-						if(isset($moduleControllerMethod[0])){
496
-							$this->controller = $moduleControllerMethod[0];	
497
-						}
498
-						if(isset($moduleControllerMethod[1])){
499
-							$this->method = $moduleControllerMethod[1];
500
-						}
501
-						$this->args = $args;
502
-					}
503
-					// stop here
504
-					break;
505
-				}
506
-			}
507
-
508
-			//first if the controller is not set and the module is set use the module name as the controller
509
-			if(! $this->controller && $this->module){
510
-				$this->logger->info(
511
-									'After loop in predefined routes configuration, 
465
+            $pattern = array(':num', ':alpha', ':alnum', ':any');
466
+            $replace = array('[0-9]+', '[a-zA-Z]+', '[a-zA-Z0-9]+', '.*');
467
+
468
+            $this->logger->debug(
469
+                                    'Begin to loop in the predefined routes configuration ' 
470
+                                    . 'to check if the current request match'
471
+                                    );
472
+
473
+            // Cycle through the URIs stored in the array
474
+            foreach ($this->pattern as $index => $uriList) {
475
+                $uriList = str_ireplace($pattern, $replace, $uriList);
476
+                // Check for an existant matching URI
477
+                if (preg_match("#^$uriList$#", $uri, $args)) {
478
+                    $this->logger->info(
479
+                                        'Route found for request URI [' . $uri . '] using the predefined configuration '
480
+                                        . ' [' . $this->pattern[$index] . '] --> [' . $this->callback[$index] . ']'
481
+                                    );
482
+                    array_shift($args);
483
+                    //check if this contains an module
484
+                    $moduleControllerMethod = explode('#', $this->callback[$index]);
485
+                    if(is_array($moduleControllerMethod) && count($moduleControllerMethod) >= 2){
486
+                        $this->logger->info('The current request use the module [' . $moduleControllerMethod[0] . ']');
487
+                        $this->module = $moduleControllerMethod[0];
488
+                        $moduleControllerMethod = explode('@', $moduleControllerMethod[1]);
489
+                    }
490
+                    else{
491
+                        $this->logger->info('The current request does not use the module');
492
+                        $moduleControllerMethod = explode('@', $this->callback[$index]);
493
+                    }
494
+                    if(is_array($moduleControllerMethod)){
495
+                        if(isset($moduleControllerMethod[0])){
496
+                            $this->controller = $moduleControllerMethod[0];	
497
+                        }
498
+                        if(isset($moduleControllerMethod[1])){
499
+                            $this->method = $moduleControllerMethod[1];
500
+                        }
501
+                        $this->args = $args;
502
+                    }
503
+                    // stop here
504
+                    break;
505
+                }
506
+            }
507
+
508
+            //first if the controller is not set and the module is set use the module name as the controller
509
+            if(! $this->controller && $this->module){
510
+                $this->logger->info(
511
+                                    'After loop in predefined routes configuration, 
512 512
 									the module name is set but the controller is not set, 
513 513
 									so we will use module as the controller'
514
-								);
515
-				$this->controller = $this->module;
516
-			}
517
-	    }
518
-
519
-	    /**
520
-	     * Determine the route parameters using the server variable "REQUEST_URI"
521
-	     * @return void
522
-	     */
523
-	    protected function determineRouteParamsFromRequestUri(){
524
-	    	$segment = $this->segments;
525
-	    	$nbSegment = count($segment);
526
-			//if segment is null so means no need to perform
527
-			if($nbSegment > 0){
528
-				//get the module list
529
-				$modules = Module::getModuleList();
530
-				//first check if no module
531
-				if(empty($modules)){
532
-					$this->logger->info('No module was loaded will skip the module checking');
533
-					//the application don't use module
534
-					//controller
535
-					if(isset($segment[0])){
536
-						$this->controller = $segment[0];
537
-						array_shift($segment);
538
-					}
539
-					//method
540
-					if(isset($segment[0])){
541
-						$this->method = $segment[0];
542
-						array_shift($segment);
543
-					}
544
-					//args
545
-					$this->args = $segment;
546
-				}
547
-				else{
548
-					$this->logger->info('The application contains a loaded module will check if the current request is found in the module list');
549
-					if(in_array($segment[0], $modules)){
550
-						$this->logger->info('Found, the current request use the module [' . $segment[0] . ']');
551
-						$this->module = $segment[0];
552
-						array_shift($segment);
553
-						//check if the second arg is the controller from module
554
-						if(isset($segment[0])){
555
-							$this->controller = $segment[0];
556
-							//check if the request use the same module name and controller
557
-							$path = Module::findControllerFullPath(ucfirst($this->controller), $this->module);
558
-							if(! $path){
559
-								$this->logger->info('The controller [' . $this->controller . '] not found in the module, may be will use the module [' . $this->module . '] as controller');
560
-								$this->controller = $this->module;
561
-							}
562
-							else{
563
-								$this->controllerPath = $path;
564
-								array_shift($segment);
565
-							}
566
-						}
567
-						//check for method
568
-						if(isset($segment[0])){
569
-							$this->method = $segment[0];
570
-							array_shift($segment);
571
-						}
572
-						//the remaining is for args
573
-						$this->args = $segment;
574
-					}
575
-					else{
576
-						$this->logger->info('The current request information is not found in the module list');
577
-						//controller
578
-						if(isset($segment[0])){
579
-							$this->controller = $segment[0];
580
-							array_shift($segment);
581
-						}
582
-						//method
583
-						if(isset($segment[0])){
584
-							$this->method = $segment[0];
585
-							array_shift($segment);
586
-						}
587
-						//args
588
-						$this->args = $segment;
589
-					}
590
-				}
591
-				if(! $this->controller && $this->module){
592
-					$this->logger->info('After using the request URI the module name is set but the controller is not set so we will use module as the controller');
593
-					$this->controller = $this->module;
594
-				}
595
-			}
596
-	    }
597
-
598
-	    /**
599
-	     * Set the route informations using the configuration
600
-	     *
601
-	     * @return object the current instance
602
-	     */
603
-	    protected function setRouteConfigurationInfos(){
604
-	    	//adding route
605
-			foreach($this->routes as $pattern => $callback){
606
-				$this->add($pattern, $callback);
607
-			}
608
-			return $this;
609
-		}
610
-
611
-		/**
612
-	     * Set the Log instance using argument or create new instance
613
-	     * @param object $logger the Log instance if not null
614
-	     */
615
-	    protected function setLoggerFromParamOrCreateNewInstance(Log $logger = null){
616
-	      if ($logger !== null){
617
-	        $this->logger = $logger;
618
-	      }
619
-	      else{
620
-	          $this->logger =& class_loader('Log', 'classes');
621
-	          $this->logger->setLogger('Library::Router');
622
-	      }
623
-	    }
624
-	}
514
+                                );
515
+                $this->controller = $this->module;
516
+            }
517
+        }
518
+
519
+        /**
520
+         * Determine the route parameters using the server variable "REQUEST_URI"
521
+         * @return void
522
+         */
523
+        protected function determineRouteParamsFromRequestUri(){
524
+            $segment = $this->segments;
525
+            $nbSegment = count($segment);
526
+            //if segment is null so means no need to perform
527
+            if($nbSegment > 0){
528
+                //get the module list
529
+                $modules = Module::getModuleList();
530
+                //first check if no module
531
+                if(empty($modules)){
532
+                    $this->logger->info('No module was loaded will skip the module checking');
533
+                    //the application don't use module
534
+                    //controller
535
+                    if(isset($segment[0])){
536
+                        $this->controller = $segment[0];
537
+                        array_shift($segment);
538
+                    }
539
+                    //method
540
+                    if(isset($segment[0])){
541
+                        $this->method = $segment[0];
542
+                        array_shift($segment);
543
+                    }
544
+                    //args
545
+                    $this->args = $segment;
546
+                }
547
+                else{
548
+                    $this->logger->info('The application contains a loaded module will check if the current request is found in the module list');
549
+                    if(in_array($segment[0], $modules)){
550
+                        $this->logger->info('Found, the current request use the module [' . $segment[0] . ']');
551
+                        $this->module = $segment[0];
552
+                        array_shift($segment);
553
+                        //check if the second arg is the controller from module
554
+                        if(isset($segment[0])){
555
+                            $this->controller = $segment[0];
556
+                            //check if the request use the same module name and controller
557
+                            $path = Module::findControllerFullPath(ucfirst($this->controller), $this->module);
558
+                            if(! $path){
559
+                                $this->logger->info('The controller [' . $this->controller . '] not found in the module, may be will use the module [' . $this->module . '] as controller');
560
+                                $this->controller = $this->module;
561
+                            }
562
+                            else{
563
+                                $this->controllerPath = $path;
564
+                                array_shift($segment);
565
+                            }
566
+                        }
567
+                        //check for method
568
+                        if(isset($segment[0])){
569
+                            $this->method = $segment[0];
570
+                            array_shift($segment);
571
+                        }
572
+                        //the remaining is for args
573
+                        $this->args = $segment;
574
+                    }
575
+                    else{
576
+                        $this->logger->info('The current request information is not found in the module list');
577
+                        //controller
578
+                        if(isset($segment[0])){
579
+                            $this->controller = $segment[0];
580
+                            array_shift($segment);
581
+                        }
582
+                        //method
583
+                        if(isset($segment[0])){
584
+                            $this->method = $segment[0];
585
+                            array_shift($segment);
586
+                        }
587
+                        //args
588
+                        $this->args = $segment;
589
+                    }
590
+                }
591
+                if(! $this->controller && $this->module){
592
+                    $this->logger->info('After using the request URI the module name is set but the controller is not set so we will use module as the controller');
593
+                    $this->controller = $this->module;
594
+                }
595
+            }
596
+        }
597
+
598
+        /**
599
+         * Set the route informations using the configuration
600
+         *
601
+         * @return object the current instance
602
+         */
603
+        protected function setRouteConfigurationInfos(){
604
+            //adding route
605
+            foreach($this->routes as $pattern => $callback){
606
+                $this->add($pattern, $callback);
607
+            }
608
+            return $this;
609
+        }
610
+
611
+        /**
612
+         * Set the Log instance using argument or create new instance
613
+         * @param object $logger the Log instance if not null
614
+         */
615
+        protected function setLoggerFromParamOrCreateNewInstance(Log $logger = null){
616
+            if ($logger !== null){
617
+            $this->logger = $logger;
618
+            }
619
+            else{
620
+                $this->logger =& class_loader('Log', 'classes');
621
+                $this->logger->setLogger('Library::Router');
622
+            }
623
+        }
624
+    }
Please login to merge, or discard this patch.
Spacing   +76 added lines, -76 removed lines patch added patch discarded remove patch
@@ -96,13 +96,13 @@  discard block
 block discarded – undo
96 96
 		/**
97 97
 		 * Construct the new Router instance
98 98
 		 */
99
-		public function __construct(){
99
+		public function __construct() {
100 100
 			$this->setLoggerFromParamOrCreateNewInstance(null);
101 101
 			
102 102
 			//loading routes for module
103 103
 			$moduleRouteList = array();
104 104
 			$modulesRoutes = Module::getModulesRoutesConfig();
105
-			if($modulesRoutes && is_array($modulesRoutes)){
105
+			if ($modulesRoutes && is_array($modulesRoutes)) {
106 106
 				$moduleRouteList = $modulesRoutes;
107 107
 				unset($modulesRoutes);
108 108
 			}
@@ -117,7 +117,7 @@  discard block
 block discarded – undo
117 117
 		 * Get the route patterns
118 118
 		 * @return array
119 119
 		 */
120
-		public function getPattern(){
120
+		public function getPattern() {
121 121
 			return $this->pattern;
122 122
 		}
123 123
 
@@ -125,7 +125,7 @@  discard block
 block discarded – undo
125 125
 		 * Get the route callbacks
126 126
 		 * @return array
127 127
 		 */
128
-		public function getCallback(){
128
+		public function getCallback() {
129 129
 			return $this->callback;
130 130
 		}
131 131
 
@@ -133,7 +133,7 @@  discard block
 block discarded – undo
133 133
 		 * Get the module name
134 134
 		 * @return string
135 135
 		 */
136
-		public function getModule(){
136
+		public function getModule() {
137 137
 			return $this->module;
138 138
 		}
139 139
 		
@@ -141,7 +141,7 @@  discard block
 block discarded – undo
141 141
 		 * Get the controller name
142 142
 		 * @return string
143 143
 		 */
144
-		public function getController(){
144
+		public function getController() {
145 145
 			return $this->controller;
146 146
 		}
147 147
 
@@ -149,7 +149,7 @@  discard block
 block discarded – undo
149 149
 		 * Get the controller file path
150 150
 		 * @return string
151 151
 		 */
152
-		public function getControllerPath(){
152
+		public function getControllerPath() {
153 153
 			return $this->controllerPath;
154 154
 		}
155 155
 
@@ -157,7 +157,7 @@  discard block
 block discarded – undo
157 157
 		 * Get the controller method
158 158
 		 * @return string
159 159
 		 */
160
-		public function getMethod(){
160
+		public function getMethod() {
161 161
 			return $this->method;
162 162
 		}
163 163
 
@@ -165,7 +165,7 @@  discard block
 block discarded – undo
165 165
 		 * Get the request arguments
166 166
 		 * @return array
167 167
 		 */
168
-		public function getArgs(){
168
+		public function getArgs() {
169 169
 			return $this->args;
170 170
 		}
171 171
 
@@ -173,7 +173,7 @@  discard block
 block discarded – undo
173 173
 		 * Get the URL segments array
174 174
 		 * @return array
175 175
 		 */
176
-		public function getSegments(){
176
+		public function getSegments() {
177 177
 			return $this->segments;
178 178
 		}
179 179
 
@@ -181,7 +181,7 @@  discard block
 block discarded – undo
181 181
 	     * Return the Log instance
182 182
 	     * @return Log
183 183
 	     */
184
-	    public function getLogger(){
184
+	    public function getLogger() {
185 185
 	      return $this->logger;
186 186
 	    }
187 187
 
@@ -190,7 +190,7 @@  discard block
 block discarded – undo
190 190
 	     * @param Log $logger the log object
191 191
 		 * @return object
192 192
 	     */
193
-	    public function setLogger($logger){
193
+	    public function setLogger($logger) {
194 194
 	      $this->logger = $logger;
195 195
 	      return $this;
196 196
 	    }
@@ -199,7 +199,7 @@  discard block
 block discarded – undo
199 199
 		 * Get the route URI
200 200
 		 * @return string
201 201
 		 */
202
-		public function getRouteUri(){
202
+		public function getRouteUri() {
203 203
 			return $this->uri;
204 204
 		}
205 205
 
@@ -213,7 +213,7 @@  discard block
 block discarded – undo
213 213
 		*/
214 214
 		public function add($uri, $callback) {
215 215
 			$uri = trim($uri, $this->uriTrim);
216
-			if(in_array($uri, $this->pattern)){
216
+			if (in_array($uri, $this->pattern)) {
217 217
 				$this->logger->warning('The route [' . $uri . '] already added, may be adding again can have route conflict');
218 218
 			}
219 219
 			$this->pattern[] = $uri;
@@ -229,8 +229,8 @@  discard block
 block discarded – undo
229 229
 		* @return object the current instance
230 230
 		*/
231 231
 		public function removeRoute($uri) {
232
-			$index  = array_search($uri, $this->pattern, true);
233
-			if($index !== false){
232
+			$index = array_search($uri, $this->pattern, true);
233
+			if ($index !== false) {
234 234
 				$this->logger->info('Remove route for uri [' . $uri . '] from the configuration');
235 235
 				unset($this->pattern[$index]);
236 236
 				unset($this->callback[$index]);
@@ -258,26 +258,26 @@  discard block
 block discarded – undo
258 258
 	     * @param string $uri the route URI, if is empty will determine automatically
259 259
 	     * @return object
260 260
 	     */
261
-	    public function setRouteUri($uri = ''){
261
+	    public function setRouteUri($uri = '') {
262 262
 	    	$routeUri = '';
263
-	    	if(! empty($uri)){
263
+	    	if (!empty($uri)) {
264 264
 	    		$routeUri = $uri;
265 265
 	    	}
266 266
 	    	//if the application is running in CLI mode use the first argument
267
-			else if(IS_CLI && isset($_SERVER['argv'][1])){
267
+			else if (IS_CLI && isset($_SERVER['argv'][1])) {
268 268
 				$routeUri = $_SERVER['argv'][1];
269 269
 			}
270
-			else if(isset($_SERVER['REQUEST_URI'])){
270
+			else if (isset($_SERVER['REQUEST_URI'])) {
271 271
 				$routeUri = $_SERVER['REQUEST_URI'];
272 272
 			}
273 273
 			$this->logger->debug('Check if URL suffix is enabled in the configuration');
274 274
 			//remove url suffix from the request URI
275 275
 			$suffix = get_config('url_suffix');
276 276
 			if ($suffix) {
277
-				$this->logger->info('URL suffix is enabled in the configuration, the value is [' . $suffix . ']' );
277
+				$this->logger->info('URL suffix is enabled in the configuration, the value is [' . $suffix . ']');
278 278
 				$routeUri = str_ireplace($suffix, '', $routeUri);
279 279
 			} 
280
-			if (strpos($routeUri, '?') !== false){
280
+			if (strpos($routeUri, '?') !== false) {
281 281
 				$routeUri = substr($routeUri, 0, strpos($routeUri, '?'));
282 282
 			}
283 283
 			$this->uri = trim($routeUri, $this->uriTrim);
@@ -290,8 +290,8 @@  discard block
 block discarded – undo
290 290
 		 * 
291 291
 		 * @return object
292 292
 		 */
293
-		public function setRouteSegments(array $segments = array()){
294
-			if(! empty($segments)){
293
+		public function setRouteSegments(array $segments = array()) {
294
+			if (!empty($segments)) {
295 295
 				$this->segments = $segments;
296 296
 			} else if (!empty($this->uri)) {
297 297
 				$this->segments = explode('/', $this->uri);
@@ -299,12 +299,12 @@  discard block
 block discarded – undo
299 299
 			$segment = $this->segments;
300 300
 			$baseUrl = get_config('base_url');
301 301
 			//check if the app is not in DOCUMENT_ROOT
302
-			if(isset($segment[0]) && stripos($baseUrl, $segment[0]) !== false){
302
+			if (isset($segment[0]) && stripos($baseUrl, $segment[0]) !== false) {
303 303
 				array_shift($segment);
304 304
 				$this->segments = $segment;
305 305
 			}
306 306
 			$this->logger->debug('Check if the request URI contains the front controller');
307
-			if(isset($segment[0]) && $segment[0] == SELF){
307
+			if (isset($segment[0]) && $segment[0] == SELF) {
308 308
 				$this->logger->info('The request URI contains the front controller');
309 309
 				array_shift($segment);
310 310
 				$this->segments = $segment;
@@ -324,7 +324,7 @@  discard block
 block discarded – undo
324 324
 			
325 325
 			//if can not determine the module/controller/method via the defined routes configuration we will use
326 326
 			//the URL like http://domain.com/module/controller/method/arg1/arg2
327
-			if(! $this->controller){
327
+			if (!$this->controller) {
328 328
 				$this->logger->info('Cannot determine the routing information using the predefined routes configuration, will use the request URI parameters');
329 329
 				//determine route parameters using the REQUEST_URI param
330 330
 				$this->determineRouteParamsFromRequestUri();
@@ -340,14 +340,14 @@  discard block
 block discarded – undo
340 340
 		 * Routing the request to the correspondant module/controller/method if exists
341 341
 		 * otherwise send 404 error.
342 342
 		 */
343
-	    public function processRequest(){
343
+	    public function processRequest() {
344 344
 	    	//Setting the route URI
345 345
 			$this->setRouteUri();
346 346
 
347 347
 			//setting route segments
348 348
 			$this->setRouteSegments();
349 349
 
350
-			$this->logger->info('The final Request URI is [' . implode('/', $this->segments) . ']' );
350
+			$this->logger->info('The final Request URI is [' . implode('/', $this->segments) . ']');
351 351
 
352 352
 	    	//determine the route parameters information
353 353
 	    	$this->determineRouteParamsInformation();
@@ -358,20 +358,20 @@  discard block
 block discarded – undo
358 358
 	    	$this->logger->info('The routing information are: module [' . $this->module . '], controller [' . $controller . '], method [' . $this->method . '], args [' . stringfy_vars($this->args) . ']');
359 359
 	    	$this->logger->debug('Loading controller [' . $controller . '], the file path is [' . $classFilePath . ']...');
360 360
 	    	
361
-			if(file_exists($classFilePath)){
361
+			if (file_exists($classFilePath)) {
362 362
 				require_once $classFilePath;
363
-				if(! class_exists($controller, false)){
363
+				if (!class_exists($controller, false)) {
364 364
 					$e404 = true;
365
-					$this->logger->warning('The controller file [' .$classFilePath. '] exists but does not contain the class [' . $controller . ']');
365
+					$this->logger->warning('The controller file [' . $classFilePath . '] exists but does not contain the class [' . $controller . ']');
366 366
 				}
367
-				else{
367
+				else {
368 368
 					$controllerInstance = new $controller();
369 369
 					$controllerMethod = $this->getMethod();
370
-					if(! method_exists($controllerInstance, $controllerMethod)){
370
+					if (!method_exists($controllerInstance, $controllerMethod)) {
371 371
 						$e404 = true;
372 372
 						$this->logger->warning('The controller [' . $controller . '] exist but does not contain the method [' . $controllerMethod . ']');
373 373
 					}
374
-					else{
374
+					else {
375 375
 						$this->logger->info('Routing data is set correctly now GO!');
376 376
 						call_user_func_array(array($controllerInstance, $controllerMethod), $this->args);
377 377
 						//render the final page to user
@@ -380,16 +380,16 @@  discard block
 block discarded – undo
380 380
 					}
381 381
 				}
382 382
 			}
383
-			else{
383
+			else {
384 384
 				$this->logger->info('The controller file path [' . $classFilePath . '] does not exist');
385 385
 				$e404 = true;
386 386
 			}
387
-			if($e404){
388
-				if(IS_CLI){
387
+			if ($e404) {
388
+				if (IS_CLI) {
389 389
 					set_http_status_header(404);
390 390
 					echo 'Error 404: page not found.';
391 391
 				} else {
392
-					$response =& class_loader('Response', 'classes');
392
+					$response = & class_loader('Response', 'classes');
393 393
 					$response->send404();
394 394
 				}
395 395
 			}
@@ -402,15 +402,15 @@  discard block
 block discarded – undo
402 402
 	    * @param boolean $useConfigFile whether to use route configuration file
403 403
 		* @return object
404 404
 	    */
405
-	    public function setRouteConfiguration(array $overwriteConfig = array(), $useConfigFile = true){
405
+	    public function setRouteConfiguration(array $overwriteConfig = array(), $useConfigFile = true) {
406 406
 	        $route = array();
407
-	        if ($useConfigFile && file_exists(CONFIG_PATH . 'routes.php')){
407
+	        if ($useConfigFile && file_exists(CONFIG_PATH . 'routes.php')) {
408 408
 	            require_once CONFIG_PATH . 'routes.php';
409 409
 	        }
410 410
 	        $route = array_merge($route, $overwriteConfig);
411 411
 	        $this->routes = $route;
412 412
 	        //if route is empty remove all configuration
413
-	        if(empty($route)){
413
+	        if (empty($route)) {
414 414
 	        	$this->removeAllRoute();
415 415
 	        }
416 416
 			return $this;
@@ -420,7 +420,7 @@  discard block
 block discarded – undo
420 420
 		 * Get the route configuration
421 421
 		 * @return array
422 422
 		 */
423
-		public function getRouteConfiguration(){
423
+		public function getRouteConfiguration() {
424 424
 			return $this->routes;
425 425
 		}
426 426
 
@@ -432,19 +432,19 @@  discard block
 block discarded – undo
432 432
 	     *
433 433
 	     * @return object the current instance
434 434
 	     */
435
-	    public function setControllerFilePath($path = null){
436
-	    	if($path !== null){
435
+	    public function setControllerFilePath($path = null) {
436
+	    	if ($path !== null) {
437 437
 	    		$this->controllerPath = $path;
438 438
 	    		return $this;
439 439
 	    	}
440 440
 	    	//did we set the controller, so set the controller path
441
-			if($this->controller && ! $this->controllerPath){
441
+			if ($this->controller && !$this->controllerPath) {
442 442
 				$this->logger->debug('Setting the file path for the controller [' . $this->controller . ']');
443 443
 				$controllerPath = APPS_CONTROLLER_PATH . ucfirst($this->controller) . '.php';
444 444
 				//if the controller is in module
445
-				if($this->module){
445
+				if ($this->module) {
446 446
 					$path = Module::findControllerFullPath(ucfirst($this->controller), $this->module);
447
-					if($path !== false){
447
+					if ($path !== false) {
448 448
 						$controllerPath = $path;
449 449
 					}
450 450
 				}
@@ -457,7 +457,7 @@  discard block
 block discarded – undo
457 457
 	     * Determine the route parameters from route configuration
458 458
 	     * @return void
459 459
 	     */
460
-	    protected function determineRouteParamsFromConfig(){
460
+	    protected function determineRouteParamsFromConfig() {
461 461
 	    	$uri = implode('/', $this->segments);
462 462
 	    	/*
463 463
 	   		* Generics routes patterns
@@ -482,20 +482,20 @@  discard block
 block discarded – undo
482 482
 					array_shift($args);
483 483
 					//check if this contains an module
484 484
 					$moduleControllerMethod = explode('#', $this->callback[$index]);
485
-					if(is_array($moduleControllerMethod) && count($moduleControllerMethod) >= 2){
485
+					if (is_array($moduleControllerMethod) && count($moduleControllerMethod) >= 2) {
486 486
 						$this->logger->info('The current request use the module [' . $moduleControllerMethod[0] . ']');
487 487
 						$this->module = $moduleControllerMethod[0];
488 488
 						$moduleControllerMethod = explode('@', $moduleControllerMethod[1]);
489 489
 					}
490
-					else{
490
+					else {
491 491
 						$this->logger->info('The current request does not use the module');
492 492
 						$moduleControllerMethod = explode('@', $this->callback[$index]);
493 493
 					}
494
-					if(is_array($moduleControllerMethod)){
495
-						if(isset($moduleControllerMethod[0])){
494
+					if (is_array($moduleControllerMethod)) {
495
+						if (isset($moduleControllerMethod[0])) {
496 496
 							$this->controller = $moduleControllerMethod[0];	
497 497
 						}
498
-						if(isset($moduleControllerMethod[1])){
498
+						if (isset($moduleControllerMethod[1])) {
499 499
 							$this->method = $moduleControllerMethod[1];
500 500
 						}
501 501
 						$this->args = $args;
@@ -506,7 +506,7 @@  discard block
 block discarded – undo
506 506
 			}
507 507
 
508 508
 			//first if the controller is not set and the module is set use the module name as the controller
509
-			if(! $this->controller && $this->module){
509
+			if (!$this->controller && $this->module) {
510 510
 				$this->logger->info(
511 511
 									'After loop in predefined routes configuration, 
512 512
 									the module name is set but the controller is not set, 
@@ -520,67 +520,67 @@  discard block
 block discarded – undo
520 520
 	     * Determine the route parameters using the server variable "REQUEST_URI"
521 521
 	     * @return void
522 522
 	     */
523
-	    protected function determineRouteParamsFromRequestUri(){
523
+	    protected function determineRouteParamsFromRequestUri() {
524 524
 	    	$segment = $this->segments;
525 525
 	    	$nbSegment = count($segment);
526 526
 			//if segment is null so means no need to perform
527
-			if($nbSegment > 0){
527
+			if ($nbSegment > 0) {
528 528
 				//get the module list
529 529
 				$modules = Module::getModuleList();
530 530
 				//first check if no module
531
-				if(empty($modules)){
531
+				if (empty($modules)) {
532 532
 					$this->logger->info('No module was loaded will skip the module checking');
533 533
 					//the application don't use module
534 534
 					//controller
535
-					if(isset($segment[0])){
535
+					if (isset($segment[0])) {
536 536
 						$this->controller = $segment[0];
537 537
 						array_shift($segment);
538 538
 					}
539 539
 					//method
540
-					if(isset($segment[0])){
540
+					if (isset($segment[0])) {
541 541
 						$this->method = $segment[0];
542 542
 						array_shift($segment);
543 543
 					}
544 544
 					//args
545 545
 					$this->args = $segment;
546 546
 				}
547
-				else{
547
+				else {
548 548
 					$this->logger->info('The application contains a loaded module will check if the current request is found in the module list');
549
-					if(in_array($segment[0], $modules)){
549
+					if (in_array($segment[0], $modules)) {
550 550
 						$this->logger->info('Found, the current request use the module [' . $segment[0] . ']');
551 551
 						$this->module = $segment[0];
552 552
 						array_shift($segment);
553 553
 						//check if the second arg is the controller from module
554
-						if(isset($segment[0])){
554
+						if (isset($segment[0])) {
555 555
 							$this->controller = $segment[0];
556 556
 							//check if the request use the same module name and controller
557 557
 							$path = Module::findControllerFullPath(ucfirst($this->controller), $this->module);
558
-							if(! $path){
558
+							if (!$path) {
559 559
 								$this->logger->info('The controller [' . $this->controller . '] not found in the module, may be will use the module [' . $this->module . '] as controller');
560 560
 								$this->controller = $this->module;
561 561
 							}
562
-							else{
562
+							else {
563 563
 								$this->controllerPath = $path;
564 564
 								array_shift($segment);
565 565
 							}
566 566
 						}
567 567
 						//check for method
568
-						if(isset($segment[0])){
568
+						if (isset($segment[0])) {
569 569
 							$this->method = $segment[0];
570 570
 							array_shift($segment);
571 571
 						}
572 572
 						//the remaining is for args
573 573
 						$this->args = $segment;
574 574
 					}
575
-					else{
575
+					else {
576 576
 						$this->logger->info('The current request information is not found in the module list');
577 577
 						//controller
578
-						if(isset($segment[0])){
578
+						if (isset($segment[0])) {
579 579
 							$this->controller = $segment[0];
580 580
 							array_shift($segment);
581 581
 						}
582 582
 						//method
583
-						if(isset($segment[0])){
583
+						if (isset($segment[0])) {
584 584
 							$this->method = $segment[0];
585 585
 							array_shift($segment);
586 586
 						}
@@ -588,7 +588,7 @@  discard block
 block discarded – undo
588 588
 						$this->args = $segment;
589 589
 					}
590 590
 				}
591
-				if(! $this->controller && $this->module){
591
+				if (!$this->controller && $this->module) {
592 592
 					$this->logger->info('After using the request URI the module name is set but the controller is not set so we will use module as the controller');
593 593
 					$this->controller = $this->module;
594 594
 				}
@@ -600,9 +600,9 @@  discard block
 block discarded – undo
600 600
 	     *
601 601
 	     * @return object the current instance
602 602
 	     */
603
-	    protected function setRouteConfigurationInfos(){
603
+	    protected function setRouteConfigurationInfos() {
604 604
 	    	//adding route
605
-			foreach($this->routes as $pattern => $callback){
605
+			foreach ($this->routes as $pattern => $callback) {
606 606
 				$this->add($pattern, $callback);
607 607
 			}
608 608
 			return $this;
@@ -612,12 +612,12 @@  discard block
 block discarded – undo
612 612
 	     * Set the Log instance using argument or create new instance
613 613
 	     * @param object $logger the Log instance if not null
614 614
 	     */
615
-	    protected function setLoggerFromParamOrCreateNewInstance(Log $logger = null){
616
-	      if ($logger !== null){
615
+	    protected function setLoggerFromParamOrCreateNewInstance(Log $logger = null) {
616
+	      if ($logger !== null) {
617 617
 	        $this->logger = $logger;
618 618
 	      }
619
-	      else{
620
-	          $this->logger =& class_loader('Log', 'classes');
619
+	      else {
620
+	          $this->logger = & class_loader('Log', 'classes');
621 621
 	          $this->logger->setLogger('Library::Router');
622 622
 	      }
623 623
 	    }
Please login to merge, or discard this patch.
core/classes/DBSessionHandler.php 2 patches
Indentation   +352 added lines, -352 removed lines patch added patch discarded remove patch
@@ -1,81 +1,81 @@  discard block
 block discarded – undo
1 1
 <?php 
2
-	defined('ROOT_PATH') || exit('Access denied');
3
-	/**
4
-	 * TNH Framework
5
-	 *
6
-	 * A simple PHP framework using HMVC architecture
7
-	 *
8
-	 * This content is released under the GNU GPL License (GPL)
9
-	 *
10
-	 * Copyright (C) 2017 Tony NGUEREZA
11
-	 *
12
-	 * This program is free software; you can redistribute it and/or
13
-	 * modify it under the terms of the GNU General Public License
14
-	 * as published by the Free Software Foundation; either version 3
15
-	 * of the License, or (at your option) any later version.
16
-	 *
17
-	 * This program is distributed in the hope that it will be useful,
18
-	 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
-	 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
-	 * GNU General Public License for more details.
21
-	 *
22
-	 * You should have received a copy of the GNU General Public License
23
-	 * along with this program; if not, write to the Free Software
24
-	 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
-	*/
2
+    defined('ROOT_PATH') || exit('Access denied');
3
+    /**
4
+     * TNH Framework
5
+     *
6
+     * A simple PHP framework using HMVC architecture
7
+     *
8
+     * This content is released under the GNU GPL License (GPL)
9
+     *
10
+     * Copyright (C) 2017 Tony NGUEREZA
11
+     *
12
+     * This program is free software; you can redistribute it and/or
13
+     * modify it under the terms of the GNU General Public License
14
+     * as published by the Free Software Foundation; either version 3
15
+     * of the License, or (at your option) any later version.
16
+     *
17
+     * This program is distributed in the hope that it will be useful,
18
+     * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
+     * GNU General Public License for more details.
21
+     *
22
+     * You should have received a copy of the GNU General Public License
23
+     * along with this program; if not, write to the Free Software
24
+     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
+     */
26 26
 	
27
-	/**
28
-	 * check if the interface "SessionHandlerInterface" exists (normally in PHP 5.4 this already exists)
29
-	 */
30
-	if ( !interface_exists('SessionHandlerInterface')){
31
-		show_error('"SessionHandlerInterface" interface does not exists or is disabled can not use it to handler database session.');
32
-	}
33
-
34
-	class DBSessionHandler implements SessionHandlerInterface{
27
+    /**
28
+     * check if the interface "SessionHandlerInterface" exists (normally in PHP 5.4 this already exists)
29
+     */
30
+    if ( !interface_exists('SessionHandlerInterface')){
31
+        show_error('"SessionHandlerInterface" interface does not exists or is disabled can not use it to handler database session.');
32
+    }
33
+
34
+    class DBSessionHandler implements SessionHandlerInterface{
35 35
 		
36
-		/**
37
-		 * The encryption method to use to encrypt session data in database
38
-		 * @const string
39
-		 */
40
-		const DB_SESSION_HASH_METHOD = 'AES-256-CBC';
36
+        /**
37
+         * The encryption method to use to encrypt session data in database
38
+         * @const string
39
+         */
40
+        const DB_SESSION_HASH_METHOD = 'AES-256-CBC';
41 41
 		
42
-		/**
43
-		 * Super global instance
44
-		 * @var object
45
-		 */
46
-		protected $OBJ = null;
47
-
48
-		/**
49
-		 * Session secret to use 
50
-		 * @var string
51
-		 */
52
-		private $sessionSecret = null;
53
-
54
-		/**
55
-		 * The initialisation vector to use for openssl
56
-		 * @var string
57
-		 */
58
-		private $iv = null;
59
-
60
-		/**
61
-		 * The model instance to use
62
-		 * @var object
63
-		 */
64
-		private $modelInstance = null;
65
-
66
-		/**
67
-		 * The columns of the table to use to store session data
68
-		 * @var array
69
-		 */
70
-		private $sessionTableColumns = array();
71
-
72
-		/**
73
-		 * The instance of the Log 
74
-		 * @var Log
75
-		 */
76
-		private $logger;
77
-
78
-		/**
42
+        /**
43
+         * Super global instance
44
+         * @var object
45
+         */
46
+        protected $OBJ = null;
47
+
48
+        /**
49
+         * Session secret to use 
50
+         * @var string
51
+         */
52
+        private $sessionSecret = null;
53
+
54
+        /**
55
+         * The initialisation vector to use for openssl
56
+         * @var string
57
+         */
58
+        private $iv = null;
59
+
60
+        /**
61
+         * The model instance to use
62
+         * @var object
63
+         */
64
+        private $modelInstance = null;
65
+
66
+        /**
67
+         * The columns of the table to use to store session data
68
+         * @var array
69
+         */
70
+        private $sessionTableColumns = array();
71
+
72
+        /**
73
+         * The instance of the Log 
74
+         * @var Log
75
+         */
76
+        private $logger;
77
+
78
+        /**
79 79
          * Instance of the Loader class
80 80
          * @var Loader
81 81
          */
@@ -85,227 +85,227 @@  discard block
 block discarded – undo
85 85
          * Create new instance of Database session handler
86 86
          * @param object $modelInstance the model instance
87 87
          */
88
-		public function __construct(DBSessionHandlerModel $modelInstance = null){
89
-			//Set Log instance to use
90
-	        $this->setLoggerFromParamOrCreate(null);
88
+        public function __construct(DBSessionHandlerModel $modelInstance = null){
89
+            //Set Log instance to use
90
+            $this->setLoggerFromParamOrCreate(null);
91 91
 			
92
-	    	//Set Loader instance to use
93
-	        $this->setDependencyInstanceFromParamOrCreate('loader', null, 'Loader', 'classes');
92
+            //Set Loader instance to use
93
+            $this->setDependencyInstanceFromParamOrCreate('loader', null, 'Loader', 'classes');
94 94
 	       
95
-		    $this->OBJ = & get_instance();
95
+            $this->OBJ = & get_instance();
96 96
 		    
97
-			if (is_object($modelInstance)){
98
-				$this->setModelInstance($modelInstance);
99
-			}
100
-		}
101
-
102
-		/**
103
-		 * Set the session secret used to encrypt the data in database 
104
-		 * @param string $secret the base64 string secret
105
-		 */
106
-		public function setSessionSecret($secret){
107
-			$this->sessionSecret = $secret;
108
-			return $this;
109
-		}
110
-
111
-		/**
112
-		 * Return the session secret
113
-		 * @return string 
114
-		 */
115
-		public function getSessionSecret(){
116
-			return $this->sessionSecret;
117
-		}
118
-
119
-
120
-		/**
121
-		 * Set the initializer vector for openssl 
122
-		 * @param string $key the session secret used in base64 format
123
-		 */
124
-		public function setInitializerVector($key){
125
-			$ivLength = openssl_cipher_iv_length(self::DB_SESSION_HASH_METHOD);
126
-			$key = base64_decode($key);
127
-			$this->iv = substr(hash('sha256', $key), 0, $ivLength);
128
-			return $this;
129
-		}
130
-
131
-		/**
132
-		 * Return the initializer vector
133
-		 * @return string 
134
-		 */
135
-		public function getInitializerVector(){
136
-			return $this->iv;
137
-		}
138
-
139
-		/**
140
-		 * Open the database session handler, here nothing to do just return true
141
-		 * @param  string $savePath    the session save path
142
-		 * @param  string $sessionName the session name
143
-		 * @return boolean 
144
-		 */
145
-		public function open($savePath, $sessionName){
146
-			$this->logger->debug('Opening database session handler for [' . $sessionName . ']');
147
-			//try to check if session secret is set before
148
-			$secret = $this->getSessionSecret();
149
-			if (empty($secret)){
150
-				$secret = get_config('session_secret', null);
151
-				$this->setSessionSecret($secret);
152
-			}
153
-			$this->logger->info('Session secret: ' . $secret);
154
-
155
-			if (! is_object($this->modelInstance)){
156
-				$this->setModelInstanceFromConfig();
157
-			}
158
-			$this->setInitializerVector($secret);
159
-
160
-			//set session tables columns
161
-			$this->sessionTableColumns = $this->modelInstance->getSessionTableColumns();
162
-
163
-			if (empty($this->sessionTableColumns)){
164
-				show_error('The session handler is "database" but the table columns not set');
165
-			}
166
-			$this->logger->info('Database session, the model columns are listed below: ' . stringfy_vars($this->sessionTableColumns));
97
+            if (is_object($modelInstance)){
98
+                $this->setModelInstance($modelInstance);
99
+            }
100
+        }
101
+
102
+        /**
103
+         * Set the session secret used to encrypt the data in database 
104
+         * @param string $secret the base64 string secret
105
+         */
106
+        public function setSessionSecret($secret){
107
+            $this->sessionSecret = $secret;
108
+            return $this;
109
+        }
110
+
111
+        /**
112
+         * Return the session secret
113
+         * @return string 
114
+         */
115
+        public function getSessionSecret(){
116
+            return $this->sessionSecret;
117
+        }
118
+
119
+
120
+        /**
121
+         * Set the initializer vector for openssl 
122
+         * @param string $key the session secret used in base64 format
123
+         */
124
+        public function setInitializerVector($key){
125
+            $ivLength = openssl_cipher_iv_length(self::DB_SESSION_HASH_METHOD);
126
+            $key = base64_decode($key);
127
+            $this->iv = substr(hash('sha256', $key), 0, $ivLength);
128
+            return $this;
129
+        }
130
+
131
+        /**
132
+         * Return the initializer vector
133
+         * @return string 
134
+         */
135
+        public function getInitializerVector(){
136
+            return $this->iv;
137
+        }
138
+
139
+        /**
140
+         * Open the database session handler, here nothing to do just return true
141
+         * @param  string $savePath    the session save path
142
+         * @param  string $sessionName the session name
143
+         * @return boolean 
144
+         */
145
+        public function open($savePath, $sessionName){
146
+            $this->logger->debug('Opening database session handler for [' . $sessionName . ']');
147
+            //try to check if session secret is set before
148
+            $secret = $this->getSessionSecret();
149
+            if (empty($secret)){
150
+                $secret = get_config('session_secret', null);
151
+                $this->setSessionSecret($secret);
152
+            }
153
+            $this->logger->info('Session secret: ' . $secret);
154
+
155
+            if (! is_object($this->modelInstance)){
156
+                $this->setModelInstanceFromConfig();
157
+            }
158
+            $this->setInitializerVector($secret);
159
+
160
+            //set session tables columns
161
+            $this->sessionTableColumns = $this->modelInstance->getSessionTableColumns();
162
+
163
+            if (empty($this->sessionTableColumns)){
164
+                show_error('The session handler is "database" but the table columns not set');
165
+            }
166
+            $this->logger->info('Database session, the model columns are listed below: ' . stringfy_vars($this->sessionTableColumns));
167 167
 			
168
-			//delete the expired session
169
-			$timeActivity = get_config('session_inactivity_time', 100);
170
-			$this->gc($timeActivity);
168
+            //delete the expired session
169
+            $timeActivity = get_config('session_inactivity_time', 100);
170
+            $this->gc($timeActivity);
171 171
 			
172
-			return true;
173
-		}
174
-
175
-		/**
176
-		 * Close the session
177
-		 * @return boolean
178
-		 */
179
-		public function close(){
180
-			$this->logger->debug('Closing database session handler');
181
-			return true;
182
-		}
183
-
184
-		/**
185
-		 * Get the session value for the given session id
186
-		 * @param  string $sid the session id to use
187
-		 * @return string      the session data in serialiaze format
188
-		 */
189
-		public function read($sid){
190
-			$this->logger->debug('Reading database session data for SID: ' . $sid);
191
-			$instance = $this->getModelInstance();
192
-			$columns = $this->sessionTableColumns;
193
-			$this->loader->functions('user_agent'); 
194
-			$this->loader->library('Browser'); 
172
+            return true;
173
+        }
174
+
175
+        /**
176
+         * Close the session
177
+         * @return boolean
178
+         */
179
+        public function close(){
180
+            $this->logger->debug('Closing database session handler');
181
+            return true;
182
+        }
183
+
184
+        /**
185
+         * Get the session value for the given session id
186
+         * @param  string $sid the session id to use
187
+         * @return string      the session data in serialiaze format
188
+         */
189
+        public function read($sid){
190
+            $this->logger->debug('Reading database session data for SID: ' . $sid);
191
+            $instance = $this->getModelInstance();
192
+            $columns = $this->sessionTableColumns;
193
+            $this->loader->functions('user_agent'); 
194
+            $this->loader->library('Browser'); 
195 195
 			
196
-			$ip = get_ip();
197
-			$host = @gethostbyaddr($ip) or null;
198
-			$browser = $this->OBJ->browser->getPlatform().', '.$this->OBJ->browser->getBrowser().' '.$this->OBJ->browser->getVersion();
196
+            $ip = get_ip();
197
+            $host = @gethostbyaddr($ip) or null;
198
+            $browser = $this->OBJ->browser->getPlatform().', '.$this->OBJ->browser->getBrowser().' '.$this->OBJ->browser->getVersion();
199 199
 			
200
-			$data = $instance->get_by(array($columns['sid'] => $sid, $columns['shost'] => $host, $columns['sbrowser'] => $browser));
201
-			if ($data && isset($data->{$columns['sdata']})){
202
-				//checking inactivity 
203
-				$timeInactivity = time() - get_config('session_inactivity_time', 100);
204
-				if ($data->{$columns['stime']} < $timeInactivity){
205
-					$this->logger->info('Database session data for SID: ' . $sid . ' already expired, destroy it');
206
-					$this->destroy($sid);
207
-					return null;
208
-				}
209
-				return $this->decode($data->{$columns['sdata']});
210
-			}
211
-			$this->logger->info('Database session data for SID: ' . $sid . ' is not valid return false, may be the session ID is wrong');
212
-			return null;
213
-		}
214
-
215
-		/**
216
-		 * Save the session data
217
-		 * @param  string $sid  the session ID
218
-		 * @param  mixed $data the session data to save in serialize format
219
-		 * @return boolean 
220
-		 */
221
-		public function write($sid, $data){
222
-			$this->logger->debug('Saving database session data for SID: ' . $sid . ', data: ' . stringfy_vars($data));
223
-			$instance = $this->getModelInstance();
224
-			$columns = $this->sessionTableColumns;
225
-
226
-			$this->loader->functions('user_agent'); 
227
-			$this->loader->library('Browser'); 
228
-
229
-			$ip = get_ip();
230
-			$keyValue = $instance->getKeyValue();
231
-			$host = @gethostbyaddr($ip) or null;
232
-			$browser = $this->OBJ->browser->getPlatform().', '.$this->OBJ->browser->getBrowser().' '.$this->OBJ->browser->getVersion();
233
-			$data = $this->encode($data);
234
-			$params = array(
235
-							$columns['sid'] => $sid,
236
-							$columns['sdata'] => $data,
237
-							$columns['stime'] => time(),
238
-							$columns['shost'] => $host,
239
-							$columns['sbrowser'] => $browser,
240
-							$columns['sip'] => $ip,
241
-							$columns['skey'] => $keyValue
242
-						);
243
-			$this->logger->info('Database session data to save are listed below :' . stringfy_vars($params));
244
-			$exists = $instance->get($sid);
245
-			if ($exists){
246
-				$this->logger->info('Session data for SID: ' . $sid . ' already exists, just update it');
247
-				//update
248
-				unset($params[$columns['sid']]);
249
-				return $instance->update($sid, $params);
250
-			}
251
-			$this->logger->info('Session data for SID: ' . $sid . ' not yet exists, insert it now');
252
-			return $instance->insert($params);
253
-			return true;
254
-		}
255
-
256
-
257
-		/**
258
-		 * Destroy the session data for the given session id
259
-		 * @param  string $sid the session id value
260
-		 * @return boolean
261
-		 */
262
-		public function destroy($sid){
263
-			$this->logger->debug('Destroy of session data for SID: ' . $sid);
264
-			$instance = $this->modelInstance;
265
-			$instance->delete($sid);
266
-			return true;
267
-		}
268
-
269
-		/**
270
-		 * Clean the expire session data to save espace
271
-		 * @param  integer $maxLifetime the max lifetime
272
-		 * @return boolean
273
-		 */
274
-		public function gc($maxLifetime){
275
-			$instance = $this->modelInstance;
276
-			$time = time() - $maxLifetime;
277
-			$this->logger->debug('Garbage collector of expired session. maxLifetime [' . $maxLifetime . '] sec, expired time [' . $time . ']');
278
-			$instance->deleteByTime($time);
279
-			return true;
280
-		}
281
-
282
-		/**
283
-		 * Encode the session data using the openssl
284
-		 * @param  mixed $data the session data to encode
285
-		 * @return mixed the encoded session data
286
-		 */
287
-		public function encode($data){
288
-			$key = base64_decode($this->sessionSecret);
289
-			$dataEncrypted = openssl_encrypt($data , self::DB_SESSION_HASH_METHOD, $key, OPENSSL_RAW_DATA, $this->getInitializerVector());
290
-			$output = base64_encode($dataEncrypted);
291
-			return $output;
292
-		}
293
-
294
-
295
-		/**
296
-		 * Decode the session data using the openssl
297
-		 * @param  mixed $data the data to decode
298
-		 * @return mixed       the decoded data
299
-		 */
300
-		public function decode($data){
301
-			$key = base64_decode($this->sessionSecret);
302
-			$data = base64_decode($data);
303
-			$data = openssl_decrypt($data, self::DB_SESSION_HASH_METHOD, $key, OPENSSL_RAW_DATA, $this->getInitializerVector());
304
-			return $data;
305
-		}
200
+            $data = $instance->get_by(array($columns['sid'] => $sid, $columns['shost'] => $host, $columns['sbrowser'] => $browser));
201
+            if ($data && isset($data->{$columns['sdata']})){
202
+                //checking inactivity 
203
+                $timeInactivity = time() - get_config('session_inactivity_time', 100);
204
+                if ($data->{$columns['stime']} < $timeInactivity){
205
+                    $this->logger->info('Database session data for SID: ' . $sid . ' already expired, destroy it');
206
+                    $this->destroy($sid);
207
+                    return null;
208
+                }
209
+                return $this->decode($data->{$columns['sdata']});
210
+            }
211
+            $this->logger->info('Database session data for SID: ' . $sid . ' is not valid return false, may be the session ID is wrong');
212
+            return null;
213
+        }
214
+
215
+        /**
216
+         * Save the session data
217
+         * @param  string $sid  the session ID
218
+         * @param  mixed $data the session data to save in serialize format
219
+         * @return boolean 
220
+         */
221
+        public function write($sid, $data){
222
+            $this->logger->debug('Saving database session data for SID: ' . $sid . ', data: ' . stringfy_vars($data));
223
+            $instance = $this->getModelInstance();
224
+            $columns = $this->sessionTableColumns;
225
+
226
+            $this->loader->functions('user_agent'); 
227
+            $this->loader->library('Browser'); 
228
+
229
+            $ip = get_ip();
230
+            $keyValue = $instance->getKeyValue();
231
+            $host = @gethostbyaddr($ip) or null;
232
+            $browser = $this->OBJ->browser->getPlatform().', '.$this->OBJ->browser->getBrowser().' '.$this->OBJ->browser->getVersion();
233
+            $data = $this->encode($data);
234
+            $params = array(
235
+                            $columns['sid'] => $sid,
236
+                            $columns['sdata'] => $data,
237
+                            $columns['stime'] => time(),
238
+                            $columns['shost'] => $host,
239
+                            $columns['sbrowser'] => $browser,
240
+                            $columns['sip'] => $ip,
241
+                            $columns['skey'] => $keyValue
242
+                        );
243
+            $this->logger->info('Database session data to save are listed below :' . stringfy_vars($params));
244
+            $exists = $instance->get($sid);
245
+            if ($exists){
246
+                $this->logger->info('Session data for SID: ' . $sid . ' already exists, just update it');
247
+                //update
248
+                unset($params[$columns['sid']]);
249
+                return $instance->update($sid, $params);
250
+            }
251
+            $this->logger->info('Session data for SID: ' . $sid . ' not yet exists, insert it now');
252
+            return $instance->insert($params);
253
+            return true;
254
+        }
255
+
256
+
257
+        /**
258
+         * Destroy the session data for the given session id
259
+         * @param  string $sid the session id value
260
+         * @return boolean
261
+         */
262
+        public function destroy($sid){
263
+            $this->logger->debug('Destroy of session data for SID: ' . $sid);
264
+            $instance = $this->modelInstance;
265
+            $instance->delete($sid);
266
+            return true;
267
+        }
268
+
269
+        /**
270
+         * Clean the expire session data to save espace
271
+         * @param  integer $maxLifetime the max lifetime
272
+         * @return boolean
273
+         */
274
+        public function gc($maxLifetime){
275
+            $instance = $this->modelInstance;
276
+            $time = time() - $maxLifetime;
277
+            $this->logger->debug('Garbage collector of expired session. maxLifetime [' . $maxLifetime . '] sec, expired time [' . $time . ']');
278
+            $instance->deleteByTime($time);
279
+            return true;
280
+        }
281
+
282
+        /**
283
+         * Encode the session data using the openssl
284
+         * @param  mixed $data the session data to encode
285
+         * @return mixed the encoded session data
286
+         */
287
+        public function encode($data){
288
+            $key = base64_decode($this->sessionSecret);
289
+            $dataEncrypted = openssl_encrypt($data , self::DB_SESSION_HASH_METHOD, $key, OPENSSL_RAW_DATA, $this->getInitializerVector());
290
+            $output = base64_encode($dataEncrypted);
291
+            return $output;
292
+        }
293
+
294
+
295
+        /**
296
+         * Decode the session data using the openssl
297
+         * @param  mixed $data the data to decode
298
+         * @return mixed       the decoded data
299
+         */
300
+        public function decode($data){
301
+            $key = base64_decode($this->sessionSecret);
302
+            $data = base64_decode($data);
303
+            $data = openssl_decrypt($data, self::DB_SESSION_HASH_METHOD, $key, OPENSSL_RAW_DATA, $this->getInitializerVector());
304
+            return $data;
305
+        }
306 306
 
307 307
 		
308
-		/**
308
+        /**
309 309
          * Return the loader instance
310 310
          * @return object Loader the loader instance
311 311
          */
@@ -317,7 +317,7 @@  discard block
 block discarded – undo
317 317
          * set the loader instance for future use
318 318
          * @param object Loader $loader the loader object
319 319
          */
320
-         public function setLoader($loader){
320
+            public function setLoader($loader){
321 321
             $this->loader = $loader;
322 322
             return $this;
323 323
         }
@@ -334,77 +334,77 @@  discard block
 block discarded – undo
334 334
          * set the model instance for future use
335 335
          * @param DBSessionHandlerModel $modelInstance the model object
336 336
          */
337
-         public function setModelInstance(DBSessionHandlerModel $modelInstance){
337
+            public function setModelInstance(DBSessionHandlerModel $modelInstance){
338 338
             $this->modelInstance = $modelInstance;
339 339
             return $this;
340 340
         }
341 341
 
342 342
         /**
343
-	     * Return the Log instance
344
-	     * @return Log
345
-	     */
346
-	    public function getLogger(){
347
-	      return $this->logger;
348
-	    }
349
-
350
-	    /**
351
-	     * Set the log instance
352
-	     * @param Log $logger the log object
353
-	     */
354
-	    public function setLogger(Log $logger){
355
-	      $this->logger = $logger;
356
-	      return $this;
357
-	    }
358
-
359
-	    /**
360
-	     * Set the dependencies instance using argument or create new instance if is null
361
-	     * @param string $name this class property name.
362
-	     * @param object $instance the instance. If is not null will use it
363
-	     * otherwise will create new instance.
364
-	     * @param string $loadClassName the name of class to load using class_loader function.
365
-	     * @param string $loadClassPath the path of class to load using class_loader function.
366
-	     *
367
-	     * @return object this current instance
368
-	     */
369
-	    protected function setDependencyInstanceFromParamOrCreate($name, $instance = null, $loadClassName = null, $loadClassePath = 'classes'){
370
-	      if ($instance !== null){
371
-	        $this->{$name} = $instance;
372
-	        return $this;
373
-	      }
374
-	      $this->{$name} =& class_loader($loadClassName, $loadClassePath);
375
-	      return $this;
376
-	    }
343
+         * Return the Log instance
344
+         * @return Log
345
+         */
346
+        public function getLogger(){
347
+            return $this->logger;
348
+        }
349
+
350
+        /**
351
+         * Set the log instance
352
+         * @param Log $logger the log object
353
+         */
354
+        public function setLogger(Log $logger){
355
+            $this->logger = $logger;
356
+            return $this;
357
+        }
358
+
359
+        /**
360
+         * Set the dependencies instance using argument or create new instance if is null
361
+         * @param string $name this class property name.
362
+         * @param object $instance the instance. If is not null will use it
363
+         * otherwise will create new instance.
364
+         * @param string $loadClassName the name of class to load using class_loader function.
365
+         * @param string $loadClassPath the path of class to load using class_loader function.
366
+         *
367
+         * @return object this current instance
368
+         */
369
+        protected function setDependencyInstanceFromParamOrCreate($name, $instance = null, $loadClassName = null, $loadClassePath = 'classes'){
370
+            if ($instance !== null){
371
+            $this->{$name} = $instance;
372
+            return $this;
373
+            }
374
+            $this->{$name} =& class_loader($loadClassName, $loadClassePath);
375
+            return $this;
376
+        }
377 377
 	    
378
-		   /**
379
-	     * Set the Log instance using argument or create new instance
380
-	     * @param object $logger the Log instance if not null
381
-	     *
382
-	     * @return object this current instance
383
-	     */
384
-	    protected function setLoggerFromParamOrCreate(Log $logger = null){
385
-	      $this->setDependencyInstanceFromParamOrCreate('logger', $logger, 'Log', 'classes');
386
-	      if ($logger === null){
387
-	        $this->logger->setLogger('Library::DBSessionHandler');
388
-	      }
389
-	      return $this;
390
-	    }
391
-
392
-	    /**
393
-	     * Set the model instance using the configuration for session
394
-	     */
395
-	    protected function setModelInstanceFromConfig(){
396
-	    	$modelName = get_config('session_save_path');
397
-			$this->logger->info('The database session model: ' . $modelName);
398
-			$this->loader->model($modelName, 'dbsessionhandlerinstance'); 
399
-			//@codeCoverageIgnoreStart
378
+            /**
379
+             * Set the Log instance using argument or create new instance
380
+             * @param object $logger the Log instance if not null
381
+             *
382
+             * @return object this current instance
383
+             */
384
+        protected function setLoggerFromParamOrCreate(Log $logger = null){
385
+            $this->setDependencyInstanceFromParamOrCreate('logger', $logger, 'Log', 'classes');
386
+            if ($logger === null){
387
+            $this->logger->setLogger('Library::DBSessionHandler');
388
+            }
389
+            return $this;
390
+        }
391
+
392
+        /**
393
+         * Set the model instance using the configuration for session
394
+         */
395
+        protected function setModelInstanceFromConfig(){
396
+            $modelName = get_config('session_save_path');
397
+            $this->logger->info('The database session model: ' . $modelName);
398
+            $this->loader->model($modelName, 'dbsessionhandlerinstance'); 
399
+            //@codeCoverageIgnoreStart
400 400
             if (isset($this->OBJ->dbsessionhandlerinstance) 
401
-            	&& ! ($this->OBJ->dbsessionhandlerinstance instanceof DBSessionHandlerModel)
401
+                && ! ($this->OBJ->dbsessionhandlerinstance instanceof DBSessionHandlerModel)
402 402
             ) {
403
-				show_error('To use database session handler, your class model "' . get_class($this->OBJ->dbsessionhandlerinstance) . '" need extends "DBSessionHandlerModel"');
404
-			}  
405
-			//@codeCoverageIgnoreEnd
403
+                show_error('To use database session handler, your class model "' . get_class($this->OBJ->dbsessionhandlerinstance) . '" need extends "DBSessionHandlerModel"');
404
+            }  
405
+            //@codeCoverageIgnoreEnd
406 406
 			
407
-			//set model instance
408
-			$this->modelInstance = $this->OBJ->dbsessionhandlerinstance;
409
-	    }
410
-	}
407
+            //set model instance
408
+            $this->modelInstance = $this->OBJ->dbsessionhandlerinstance;
409
+        }
410
+    }
Please login to merge, or discard this patch.
Spacing   +38 added lines, -38 removed lines patch added patch discarded remove patch
@@ -27,11 +27,11 @@  discard block
 block discarded – undo
27 27
 	/**
28 28
 	 * check if the interface "SessionHandlerInterface" exists (normally in PHP 5.4 this already exists)
29 29
 	 */
30
-	if ( !interface_exists('SessionHandlerInterface')){
30
+	if (!interface_exists('SessionHandlerInterface')) {
31 31
 		show_error('"SessionHandlerInterface" interface does not exists or is disabled can not use it to handler database session.');
32 32
 	}
33 33
 
34
-	class DBSessionHandler implements SessionHandlerInterface{
34
+	class DBSessionHandler implements SessionHandlerInterface {
35 35
 		
36 36
 		/**
37 37
 		 * The encryption method to use to encrypt session data in database
@@ -85,7 +85,7 @@  discard block
 block discarded – undo
85 85
          * Create new instance of Database session handler
86 86
          * @param object $modelInstance the model instance
87 87
          */
88
-		public function __construct(DBSessionHandlerModel $modelInstance = null){
88
+		public function __construct(DBSessionHandlerModel $modelInstance = null) {
89 89
 			//Set Log instance to use
90 90
 	        $this->setLoggerFromParamOrCreate(null);
91 91
 			
@@ -94,7 +94,7 @@  discard block
 block discarded – undo
94 94
 	       
95 95
 		    $this->OBJ = & get_instance();
96 96
 		    
97
-			if (is_object($modelInstance)){
97
+			if (is_object($modelInstance)) {
98 98
 				$this->setModelInstance($modelInstance);
99 99
 			}
100 100
 		}
@@ -103,7 +103,7 @@  discard block
 block discarded – undo
103 103
 		 * Set the session secret used to encrypt the data in database 
104 104
 		 * @param string $secret the base64 string secret
105 105
 		 */
106
-		public function setSessionSecret($secret){
106
+		public function setSessionSecret($secret) {
107 107
 			$this->sessionSecret = $secret;
108 108
 			return $this;
109 109
 		}
@@ -112,7 +112,7 @@  discard block
 block discarded – undo
112 112
 		 * Return the session secret
113 113
 		 * @return string 
114 114
 		 */
115
-		public function getSessionSecret(){
115
+		public function getSessionSecret() {
116 116
 			return $this->sessionSecret;
117 117
 		}
118 118
 
@@ -121,7 +121,7 @@  discard block
 block discarded – undo
121 121
 		 * Set the initializer vector for openssl 
122 122
 		 * @param string $key the session secret used in base64 format
123 123
 		 */
124
-		public function setInitializerVector($key){
124
+		public function setInitializerVector($key) {
125 125
 			$ivLength = openssl_cipher_iv_length(self::DB_SESSION_HASH_METHOD);
126 126
 			$key = base64_decode($key);
127 127
 			$this->iv = substr(hash('sha256', $key), 0, $ivLength);
@@ -132,7 +132,7 @@  discard block
 block discarded – undo
132 132
 		 * Return the initializer vector
133 133
 		 * @return string 
134 134
 		 */
135
-		public function getInitializerVector(){
135
+		public function getInitializerVector() {
136 136
 			return $this->iv;
137 137
 		}
138 138
 
@@ -142,17 +142,17 @@  discard block
 block discarded – undo
142 142
 		 * @param  string $sessionName the session name
143 143
 		 * @return boolean 
144 144
 		 */
145
-		public function open($savePath, $sessionName){
145
+		public function open($savePath, $sessionName) {
146 146
 			$this->logger->debug('Opening database session handler for [' . $sessionName . ']');
147 147
 			//try to check if session secret is set before
148 148
 			$secret = $this->getSessionSecret();
149
-			if (empty($secret)){
149
+			if (empty($secret)) {
150 150
 				$secret = get_config('session_secret', null);
151 151
 				$this->setSessionSecret($secret);
152 152
 			}
153 153
 			$this->logger->info('Session secret: ' . $secret);
154 154
 
155
-			if (! is_object($this->modelInstance)){
155
+			if (!is_object($this->modelInstance)) {
156 156
 				$this->setModelInstanceFromConfig();
157 157
 			}
158 158
 			$this->setInitializerVector($secret);
@@ -160,7 +160,7 @@  discard block
 block discarded – undo
160 160
 			//set session tables columns
161 161
 			$this->sessionTableColumns = $this->modelInstance->getSessionTableColumns();
162 162
 
163
-			if (empty($this->sessionTableColumns)){
163
+			if (empty($this->sessionTableColumns)) {
164 164
 				show_error('The session handler is "database" but the table columns not set');
165 165
 			}
166 166
 			$this->logger->info('Database session, the model columns are listed below: ' . stringfy_vars($this->sessionTableColumns));
@@ -176,7 +176,7 @@  discard block
 block discarded – undo
176 176
 		 * Close the session
177 177
 		 * @return boolean
178 178
 		 */
179
-		public function close(){
179
+		public function close() {
180 180
 			$this->logger->debug('Closing database session handler');
181 181
 			return true;
182 182
 		}
@@ -186,7 +186,7 @@  discard block
 block discarded – undo
186 186
 		 * @param  string $sid the session id to use
187 187
 		 * @return string      the session data in serialiaze format
188 188
 		 */
189
-		public function read($sid){
189
+		public function read($sid) {
190 190
 			$this->logger->debug('Reading database session data for SID: ' . $sid);
191 191
 			$instance = $this->getModelInstance();
192 192
 			$columns = $this->sessionTableColumns;
@@ -195,13 +195,13 @@  discard block
 block discarded – undo
195 195
 			
196 196
 			$ip = get_ip();
197 197
 			$host = @gethostbyaddr($ip) or null;
198
-			$browser = $this->OBJ->browser->getPlatform().', '.$this->OBJ->browser->getBrowser().' '.$this->OBJ->browser->getVersion();
198
+			$browser = $this->OBJ->browser->getPlatform() . ', ' . $this->OBJ->browser->getBrowser() . ' ' . $this->OBJ->browser->getVersion();
199 199
 			
200 200
 			$data = $instance->get_by(array($columns['sid'] => $sid, $columns['shost'] => $host, $columns['sbrowser'] => $browser));
201
-			if ($data && isset($data->{$columns['sdata']})){
201
+			if ($data && isset($data->{$columns['sdata']})) {
202 202
 				//checking inactivity 
203 203
 				$timeInactivity = time() - get_config('session_inactivity_time', 100);
204
-				if ($data->{$columns['stime']} < $timeInactivity){
204
+				if ($data->{$columns['stime']} < $timeInactivity) {
205 205
 					$this->logger->info('Database session data for SID: ' . $sid . ' already expired, destroy it');
206 206
 					$this->destroy($sid);
207 207
 					return null;
@@ -218,7 +218,7 @@  discard block
 block discarded – undo
218 218
 		 * @param  mixed $data the session data to save in serialize format
219 219
 		 * @return boolean 
220 220
 		 */
221
-		public function write($sid, $data){
221
+		public function write($sid, $data) {
222 222
 			$this->logger->debug('Saving database session data for SID: ' . $sid . ', data: ' . stringfy_vars($data));
223 223
 			$instance = $this->getModelInstance();
224 224
 			$columns = $this->sessionTableColumns;
@@ -229,7 +229,7 @@  discard block
 block discarded – undo
229 229
 			$ip = get_ip();
230 230
 			$keyValue = $instance->getKeyValue();
231 231
 			$host = @gethostbyaddr($ip) or null;
232
-			$browser = $this->OBJ->browser->getPlatform().', '.$this->OBJ->browser->getBrowser().' '.$this->OBJ->browser->getVersion();
232
+			$browser = $this->OBJ->browser->getPlatform() . ', ' . $this->OBJ->browser->getBrowser() . ' ' . $this->OBJ->browser->getVersion();
233 233
 			$data = $this->encode($data);
234 234
 			$params = array(
235 235
 							$columns['sid'] => $sid,
@@ -242,7 +242,7 @@  discard block
 block discarded – undo
242 242
 						);
243 243
 			$this->logger->info('Database session data to save are listed below :' . stringfy_vars($params));
244 244
 			$exists = $instance->get($sid);
245
-			if ($exists){
245
+			if ($exists) {
246 246
 				$this->logger->info('Session data for SID: ' . $sid . ' already exists, just update it');
247 247
 				//update
248 248
 				unset($params[$columns['sid']]);
@@ -259,7 +259,7 @@  discard block
 block discarded – undo
259 259
 		 * @param  string $sid the session id value
260 260
 		 * @return boolean
261 261
 		 */
262
-		public function destroy($sid){
262
+		public function destroy($sid) {
263 263
 			$this->logger->debug('Destroy of session data for SID: ' . $sid);
264 264
 			$instance = $this->modelInstance;
265 265
 			$instance->delete($sid);
@@ -271,7 +271,7 @@  discard block
 block discarded – undo
271 271
 		 * @param  integer $maxLifetime the max lifetime
272 272
 		 * @return boolean
273 273
 		 */
274
-		public function gc($maxLifetime){
274
+		public function gc($maxLifetime) {
275 275
 			$instance = $this->modelInstance;
276 276
 			$time = time() - $maxLifetime;
277 277
 			$this->logger->debug('Garbage collector of expired session. maxLifetime [' . $maxLifetime . '] sec, expired time [' . $time . ']');
@@ -284,9 +284,9 @@  discard block
 block discarded – undo
284 284
 		 * @param  mixed $data the session data to encode
285 285
 		 * @return mixed the encoded session data
286 286
 		 */
287
-		public function encode($data){
287
+		public function encode($data) {
288 288
 			$key = base64_decode($this->sessionSecret);
289
-			$dataEncrypted = openssl_encrypt($data , self::DB_SESSION_HASH_METHOD, $key, OPENSSL_RAW_DATA, $this->getInitializerVector());
289
+			$dataEncrypted = openssl_encrypt($data, self::DB_SESSION_HASH_METHOD, $key, OPENSSL_RAW_DATA, $this->getInitializerVector());
290 290
 			$output = base64_encode($dataEncrypted);
291 291
 			return $output;
292 292
 		}
@@ -297,7 +297,7 @@  discard block
 block discarded – undo
297 297
 		 * @param  mixed $data the data to decode
298 298
 		 * @return mixed       the decoded data
299 299
 		 */
300
-		public function decode($data){
300
+		public function decode($data) {
301 301
 			$key = base64_decode($this->sessionSecret);
302 302
 			$data = base64_decode($data);
303 303
 			$data = openssl_decrypt($data, self::DB_SESSION_HASH_METHOD, $key, OPENSSL_RAW_DATA, $this->getInitializerVector());
@@ -309,7 +309,7 @@  discard block
 block discarded – undo
309 309
          * Return the loader instance
310 310
          * @return object Loader the loader instance
311 311
          */
312
-        public function getLoader(){
312
+        public function getLoader() {
313 313
             return $this->loader;
314 314
         }
315 315
 
@@ -317,7 +317,7 @@  discard block
 block discarded – undo
317 317
          * set the loader instance for future use
318 318
          * @param object Loader $loader the loader object
319 319
          */
320
-         public function setLoader($loader){
320
+         public function setLoader($loader) {
321 321
             $this->loader = $loader;
322 322
             return $this;
323 323
         }
@@ -326,7 +326,7 @@  discard block
 block discarded – undo
326 326
          * Return the model instance
327 327
          * @return object DBSessionHandlerModel the model instance
328 328
          */
329
-        public function getModelInstance(){
329
+        public function getModelInstance() {
330 330
             return $this->modelInstance;
331 331
         }
332 332
 
@@ -334,7 +334,7 @@  discard block
 block discarded – undo
334 334
          * set the model instance for future use
335 335
          * @param DBSessionHandlerModel $modelInstance the model object
336 336
          */
337
-         public function setModelInstance(DBSessionHandlerModel $modelInstance){
337
+         public function setModelInstance(DBSessionHandlerModel $modelInstance) {
338 338
             $this->modelInstance = $modelInstance;
339 339
             return $this;
340 340
         }
@@ -343,7 +343,7 @@  discard block
 block discarded – undo
343 343
 	     * Return the Log instance
344 344
 	     * @return Log
345 345
 	     */
346
-	    public function getLogger(){
346
+	    public function getLogger() {
347 347
 	      return $this->logger;
348 348
 	    }
349 349
 
@@ -351,7 +351,7 @@  discard block
 block discarded – undo
351 351
 	     * Set the log instance
352 352
 	     * @param Log $logger the log object
353 353
 	     */
354
-	    public function setLogger(Log $logger){
354
+	    public function setLogger(Log $logger) {
355 355
 	      $this->logger = $logger;
356 356
 	      return $this;
357 357
 	    }
@@ -366,12 +366,12 @@  discard block
 block discarded – undo
366 366
 	     *
367 367
 	     * @return object this current instance
368 368
 	     */
369
-	    protected function setDependencyInstanceFromParamOrCreate($name, $instance = null, $loadClassName = null, $loadClassePath = 'classes'){
370
-	      if ($instance !== null){
369
+	    protected function setDependencyInstanceFromParamOrCreate($name, $instance = null, $loadClassName = null, $loadClassePath = 'classes') {
370
+	      if ($instance !== null) {
371 371
 	        $this->{$name} = $instance;
372 372
 	        return $this;
373 373
 	      }
374
-	      $this->{$name} =& class_loader($loadClassName, $loadClassePath);
374
+	      $this->{$name} = & class_loader($loadClassName, $loadClassePath);
375 375
 	      return $this;
376 376
 	    }
377 377
 	    
@@ -381,9 +381,9 @@  discard block
 block discarded – undo
381 381
 	     *
382 382
 	     * @return object this current instance
383 383
 	     */
384
-	    protected function setLoggerFromParamOrCreate(Log $logger = null){
384
+	    protected function setLoggerFromParamOrCreate(Log $logger = null) {
385 385
 	      $this->setDependencyInstanceFromParamOrCreate('logger', $logger, 'Log', 'classes');
386
-	      if ($logger === null){
386
+	      if ($logger === null) {
387 387
 	        $this->logger->setLogger('Library::DBSessionHandler');
388 388
 	      }
389 389
 	      return $this;
@@ -392,13 +392,13 @@  discard block
 block discarded – undo
392 392
 	    /**
393 393
 	     * Set the model instance using the configuration for session
394 394
 	     */
395
-	    protected function setModelInstanceFromConfig(){
395
+	    protected function setModelInstanceFromConfig() {
396 396
 	    	$modelName = get_config('session_save_path');
397 397
 			$this->logger->info('The database session model: ' . $modelName);
398 398
 			$this->loader->model($modelName, 'dbsessionhandlerinstance'); 
399 399
 			//@codeCoverageIgnoreStart
400 400
             if (isset($this->OBJ->dbsessionhandlerinstance) 
401
-            	&& ! ($this->OBJ->dbsessionhandlerinstance instanceof DBSessionHandlerModel)
401
+            	&& !($this->OBJ->dbsessionhandlerinstance instanceof DBSessionHandlerModel)
402 402
             ) {
403 403
 				show_error('To use database session handler, your class model "' . get_class($this->OBJ->dbsessionhandlerinstance) . '" need extends "DBSessionHandlerModel"');
404 404
 			}  
Please login to merge, or discard this patch.
core/classes/Loader.php 2 patches
Indentation   +622 added lines, -622 removed lines patch added patch discarded remove patch
@@ -1,657 +1,657 @@
 block discarded – undo
1 1
 <?php
2
-	defined('ROOT_PATH') || exit('Access denied');
3
-	/**
4
-	 * TNH Framework
5
-	 *
6
-	 * A simple PHP framework using HMVC architecture
7
-	 *
8
-	 * This content is released under the GNU GPL License (GPL)
9
-	 *
10
-	 * Copyright (C) 2017 Tony NGUEREZA
11
-	 *
12
-	 * This program is free software; you can redistribute it and/or
13
-	 * modify it under the terms of the GNU General Public License
14
-	 * as published by the Free Software Foundation; either version 3
15
-	 * of the License, or (at your option) any later version.
16
-	 *
17
-	 * This program is distributed in the hope that it will be useful,
18
-	 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
-	 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
-	 * GNU General Public License for more details.
21
-	 *
22
-	 * You should have received a copy of the GNU General Public License
23
-	 * along with this program; if not, write to the Free Software
24
-	 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
-	*/
26
-	class Loader{
2
+    defined('ROOT_PATH') || exit('Access denied');
3
+    /**
4
+     * TNH Framework
5
+     *
6
+     * A simple PHP framework using HMVC architecture
7
+     *
8
+     * This content is released under the GNU GPL License (GPL)
9
+     *
10
+     * Copyright (C) 2017 Tony NGUEREZA
11
+     *
12
+     * This program is free software; you can redistribute it and/or
13
+     * modify it under the terms of the GNU General Public License
14
+     * as published by the Free Software Foundation; either version 3
15
+     * of the License, or (at your option) any later version.
16
+     *
17
+     * This program is distributed in the hope that it will be useful,
18
+     * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
+     * GNU General Public License for more details.
21
+     *
22
+     * You should have received a copy of the GNU General Public License
23
+     * along with this program; if not, write to the Free Software
24
+     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
+     */
26
+    class Loader{
27 27
 		
28
-		/**
29
-		 * List of loaded resources
30
-		 * @var array
31
-		 */
32
-		public static $loaded = array();
28
+        /**
29
+         * List of loaded resources
30
+         * @var array
31
+         */
32
+        public static $loaded = array();
33 33
 		
34
-		/**
35
-		 * The logger instance
36
-		 * @var object
37
-		 */
38
-		private static $logger;
34
+        /**
35
+         * The logger instance
36
+         * @var object
37
+         */
38
+        private static $logger;
39 39
 
40 40
 
41
-		public function __construct(){
42
-			//add the resources already loaded during application bootstrap
43
-			//in the list to prevent duplicate or loading the resources again.
44
-			static::$loaded = class_loaded();
41
+        public function __construct(){
42
+            //add the resources already loaded during application bootstrap
43
+            //in the list to prevent duplicate or loading the resources again.
44
+            static::$loaded = class_loaded();
45 45
 			
46
-			//Load resources from autoload configuration
47
-			$this->loadResourcesFromAutoloadConfig();
48
-		}
46
+            //Load resources from autoload configuration
47
+            $this->loadResourcesFromAutoloadConfig();
48
+        }
49 49
 
50
-		/**
51
-		 * The signleton of the logger
52
-		 * @return object the Log instance
53
-		 */
54
-		public static function getLogger(){
55
-			if(self::$logger == null){
56
-				$logger = array();
57
-				$logger[0] =& class_loader('Log', 'classes');
58
-				$logger[0]->setLogger('Library::Loader');
59
-				self::$logger = $logger[0];
60
-			}
61
-			return self::$logger;			
62
-		}
50
+        /**
51
+         * The signleton of the logger
52
+         * @return object the Log instance
53
+         */
54
+        public static function getLogger(){
55
+            if(self::$logger == null){
56
+                $logger = array();
57
+                $logger[0] =& class_loader('Log', 'classes');
58
+                $logger[0]->setLogger('Library::Loader');
59
+                self::$logger = $logger[0];
60
+            }
61
+            return self::$logger;			
62
+        }
63 63
 
64
-		/**
65
-		 * Set the log instance for future use
66
-		 * @param object $logger the log object
67
-		 * @return object the log instance
68
-		 */
69
-		public static function setLogger($logger){
70
-			self::$logger = $logger;
71
-			return self::$logger;
72
-		}
64
+        /**
65
+         * Set the log instance for future use
66
+         * @param object $logger the log object
67
+         * @return object the log instance
68
+         */
69
+        public static function setLogger($logger){
70
+            self::$logger = $logger;
71
+            return self::$logger;
72
+        }
73 73
 
74 74
 		
75
-		/**
76
-		 * Load the model class
77
-		 *
78
-		 * @param  string $class    the class name to be loaded
79
-		 * @param  string $instance the name of the instance to use in super object
80
-		 *
81
-		 * @return void
82
-		 */
83
-		public static function model($class, $instance = null){
84
-			$logger = static::getLogger();
85
-			$class = str_ireplace('.php', '', $class);
86
-			$class = trim($class, '/\\');
87
-			$file = ucfirst($class).'.php';
88
-			$logger->debug('Loading model [' . $class . '] ...');
89
-			//************
90
-			if (! $instance){
91
-				$instance = self::getModelLibraryInstanceName($class);
92
-			}
93
-			//****************
94
-			if (isset(static::$loaded[$instance])){
95
-				$logger->info('Model [' . $class . '] already loaded no need to load it again, cost in performance');
96
-				return;
97
-			}
98
-			$classFilePath = APPS_MODEL_PATH . $file;
99
-			//first check if this model is in the module
100
-			$logger->debug('Checking model [' . $class . '] from module list ...');
101
-			//check if the request class contains module name
102
-			$moduleInfo = self::getModuleInfoForModelLibrary($class);
103
-			$module = $moduleInfo['module'];
104
-			$class  = $moduleInfo['class'];
75
+        /**
76
+         * Load the model class
77
+         *
78
+         * @param  string $class    the class name to be loaded
79
+         * @param  string $instance the name of the instance to use in super object
80
+         *
81
+         * @return void
82
+         */
83
+        public static function model($class, $instance = null){
84
+            $logger = static::getLogger();
85
+            $class = str_ireplace('.php', '', $class);
86
+            $class = trim($class, '/\\');
87
+            $file = ucfirst($class).'.php';
88
+            $logger->debug('Loading model [' . $class . '] ...');
89
+            //************
90
+            if (! $instance){
91
+                $instance = self::getModelLibraryInstanceName($class);
92
+            }
93
+            //****************
94
+            if (isset(static::$loaded[$instance])){
95
+                $logger->info('Model [' . $class . '] already loaded no need to load it again, cost in performance');
96
+                return;
97
+            }
98
+            $classFilePath = APPS_MODEL_PATH . $file;
99
+            //first check if this model is in the module
100
+            $logger->debug('Checking model [' . $class . '] from module list ...');
101
+            //check if the request class contains module name
102
+            $moduleInfo = self::getModuleInfoForModelLibrary($class);
103
+            $module = $moduleInfo['module'];
104
+            $class  = $moduleInfo['class'];
105 105
 			
106
-			$moduleModelFilePath = Module::findModelFullPath($class, $module);
107
-			if ($moduleModelFilePath){
108
-				$logger->info('Found model [' . $class . '] from module [' .$module. '], the file path is [' .$moduleModelFilePath. '] we will used it');
109
-				$classFilePath = $moduleModelFilePath;
110
-			}
111
-			else{
112
-				$logger->info('Cannot find model [' . $class . '] from modules using the default location');
113
-			}
114
-			$logger->info('The model file path to be loaded is [' . $classFilePath . ']');
115
-			if (file_exists($classFilePath)){
116
-				require_once $classFilePath;
117
-				if (class_exists($class)){
118
-					$c = new $class();
119
-					$obj = & get_instance();
120
-					$obj->{$instance} = $c;
121
-					static::$loaded[$instance] = $class;
122
-					$logger->info('Model [' . $class . '] --> ' . $classFilePath . ' loaded successfully.');
123
-				}
124
-				else{
125
-					show_error('The file '.$classFilePath.' exists but does not contain the class ['. $class . ']');
126
-				}
127
-			}
128
-			else{
129
-				show_error('Unable to find the model [' . $class . ']');
130
-			}
131
-		}
106
+            $moduleModelFilePath = Module::findModelFullPath($class, $module);
107
+            if ($moduleModelFilePath){
108
+                $logger->info('Found model [' . $class . '] from module [' .$module. '], the file path is [' .$moduleModelFilePath. '] we will used it');
109
+                $classFilePath = $moduleModelFilePath;
110
+            }
111
+            else{
112
+                $logger->info('Cannot find model [' . $class . '] from modules using the default location');
113
+            }
114
+            $logger->info('The model file path to be loaded is [' . $classFilePath . ']');
115
+            if (file_exists($classFilePath)){
116
+                require_once $classFilePath;
117
+                if (class_exists($class)){
118
+                    $c = new $class();
119
+                    $obj = & get_instance();
120
+                    $obj->{$instance} = $c;
121
+                    static::$loaded[$instance] = $class;
122
+                    $logger->info('Model [' . $class . '] --> ' . $classFilePath . ' loaded successfully.');
123
+                }
124
+                else{
125
+                    show_error('The file '.$classFilePath.' exists but does not contain the class ['. $class . ']');
126
+                }
127
+            }
128
+            else{
129
+                show_error('Unable to find the model [' . $class . ']');
130
+            }
131
+        }
132 132
 
133 133
 		
134
-		/**
135
-		 * Load the library class
136
-		 *
137
-		 * @param  string $class    the library class name to be loaded
138
-		 * @param  string $instance the instance name to use in super object
139
-		 * @param mixed $params the arguments to pass to the constructor
140
-		 *
141
-		 * @return void
142
-		 */
143
-		public static function library($class, $instance = null, array $params = array()){
144
-			$logger = static::getLogger();
145
-			$class = str_ireplace('.php', '', $class);
146
-			$class = trim($class, '/\\');
147
-			$file = ucfirst($class) .'.php';
148
-			$logger->debug('Loading library [' . $class . '] ...');
149
-			if (! $instance){
150
-				$instance = self::getModelLibraryInstanceName($class);
151
-			}
152
-			if (isset(static::$loaded[$instance])){
153
-				$logger->info('Library [' . $class . '] already loaded no need to load it again, cost in performance');
154
-				return;
155
-			}
156
-			$obj = & get_instance();
157
-			//Check and load Database library
158
-			if (strtolower($class) == 'database'){
159
-				$logger->info('This is the Database library ...');
160
-				$obj->{$instance} = & class_loader('Database', 'classes/database', $params);
161
-				static::$loaded[$instance] = $class;
162
-				$logger->info('Library Database loaded successfully.');
163
-				return;
164
-			}
165
-			$libraryFilePath = null;
166
-			$logger->debug('Check if this is a system library ...');
167
-			if (file_exists(CORE_LIBRARY_PATH . $file)){
168
-				$libraryFilePath = CORE_LIBRARY_PATH . $file;
169
-				$class = ucfirst($class);
170
-				$logger->info('This library is a system library');
171
-			}
172
-			else{
173
-				$logger->info('This library is not a system library');	
174
-				//first check if this library is in the module
175
-				$libraryFilePath = self::getLibraryPathUsingModuleInfo($class);
176
-				//***************
177
-			}
178
-			if (! $libraryFilePath && file_exists(LIBRARY_PATH . $file)){
179
-				$libraryFilePath = LIBRARY_PATH . $file;
180
-			}
181
-			$logger->info('The library file path to be loaded is [' . $libraryFilePath . ']');
182
-			//*************************
183
-			self::loadLibrary($libraryFilePath, $class, $instance, $params);
184
-		}
134
+        /**
135
+         * Load the library class
136
+         *
137
+         * @param  string $class    the library class name to be loaded
138
+         * @param  string $instance the instance name to use in super object
139
+         * @param mixed $params the arguments to pass to the constructor
140
+         *
141
+         * @return void
142
+         */
143
+        public static function library($class, $instance = null, array $params = array()){
144
+            $logger = static::getLogger();
145
+            $class = str_ireplace('.php', '', $class);
146
+            $class = trim($class, '/\\');
147
+            $file = ucfirst($class) .'.php';
148
+            $logger->debug('Loading library [' . $class . '] ...');
149
+            if (! $instance){
150
+                $instance = self::getModelLibraryInstanceName($class);
151
+            }
152
+            if (isset(static::$loaded[$instance])){
153
+                $logger->info('Library [' . $class . '] already loaded no need to load it again, cost in performance');
154
+                return;
155
+            }
156
+            $obj = & get_instance();
157
+            //Check and load Database library
158
+            if (strtolower($class) == 'database'){
159
+                $logger->info('This is the Database library ...');
160
+                $obj->{$instance} = & class_loader('Database', 'classes/database', $params);
161
+                static::$loaded[$instance] = $class;
162
+                $logger->info('Library Database loaded successfully.');
163
+                return;
164
+            }
165
+            $libraryFilePath = null;
166
+            $logger->debug('Check if this is a system library ...');
167
+            if (file_exists(CORE_LIBRARY_PATH . $file)){
168
+                $libraryFilePath = CORE_LIBRARY_PATH . $file;
169
+                $class = ucfirst($class);
170
+                $logger->info('This library is a system library');
171
+            }
172
+            else{
173
+                $logger->info('This library is not a system library');	
174
+                //first check if this library is in the module
175
+                $libraryFilePath = self::getLibraryPathUsingModuleInfo($class);
176
+                //***************
177
+            }
178
+            if (! $libraryFilePath && file_exists(LIBRARY_PATH . $file)){
179
+                $libraryFilePath = LIBRARY_PATH . $file;
180
+            }
181
+            $logger->info('The library file path to be loaded is [' . $libraryFilePath . ']');
182
+            //*************************
183
+            self::loadLibrary($libraryFilePath, $class, $instance, $params);
184
+        }
185 185
 
186
-		/**
187
-		 * Load the helper
188
-		 *
189
-		 * @param  string $function the helper name to be loaded
190
-		 *
191
-		 * @return void
192
-		 */
193
-		public static function functions($function){
194
-			$logger = static::getLogger();
195
-			$function = str_ireplace('.php', '', $function);
196
-			$function = trim($function, '/\\');
197
-			$function = str_ireplace('function_', '', $function);
198
-			$file = 'function_'.$function.'.php';
199
-			$logger->debug('Loading helper [' . $function . '] ...');
200
-			if (isset(static::$loaded['function_' . $function])){
201
-				$logger->info('Helper [' . $function . '] already loaded no need to load it again, cost in performance');
202
-				return;
203
-			}
204
-			$functionFilePath = null;
205
-			//first check if this helper is in the module
206
-			$logger->debug('Checking helper [' . $function . '] from module list ...');
207
-			$moduleInfo = self::getModuleInfoForFunction($function);
208
-			$module    = $moduleInfo['module'];
209
-			$function  = $moduleInfo['function'];
210
-			if(! empty($moduleInfo['file'])){
211
-				$file = $moduleInfo['file'];
212
-			}
213
-			$moduleFunctionPath = Module::findFunctionFullPath($function, $module);
214
-			if ($moduleFunctionPath){
215
-				$logger->info('Found helper [' . $function . '] from module [' .$module. '], the file path is [' .$moduleFunctionPath. '] we will used it');
216
-				$functionFilePath = $moduleFunctionPath;
217
-			}
218
-			else{
219
-				$logger->info('Cannot find helper [' . $function . '] from modules using the default location');
220
-			}
221
-			if (! $functionFilePath){
222
-				$searchDir = array(FUNCTIONS_PATH, CORE_FUNCTIONS_PATH);
223
-				foreach($searchDir as $dir){
224
-					$filePath = $dir . $file;
225
-					if (file_exists($filePath)){
226
-						$functionFilePath = $filePath;
227
-						//is already found not to continue
228
-						break;
229
-					}
230
-				}
231
-			}
232
-			$logger->info('The helper file path to be loaded is [' . $functionFilePath . ']');
233
-			if ($functionFilePath){
234
-				require_once $functionFilePath;
235
-				static::$loaded['function_' . $function] = $functionFilePath;
236
-				$logger->info('Helper [' . $function . '] --> ' . $functionFilePath . ' loaded successfully.');
237
-			}
238
-			else{
239
-				show_error('Unable to find helper file [' . $file . ']');
240
-			}
241
-		}
186
+        /**
187
+         * Load the helper
188
+         *
189
+         * @param  string $function the helper name to be loaded
190
+         *
191
+         * @return void
192
+         */
193
+        public static function functions($function){
194
+            $logger = static::getLogger();
195
+            $function = str_ireplace('.php', '', $function);
196
+            $function = trim($function, '/\\');
197
+            $function = str_ireplace('function_', '', $function);
198
+            $file = 'function_'.$function.'.php';
199
+            $logger->debug('Loading helper [' . $function . '] ...');
200
+            if (isset(static::$loaded['function_' . $function])){
201
+                $logger->info('Helper [' . $function . '] already loaded no need to load it again, cost in performance');
202
+                return;
203
+            }
204
+            $functionFilePath = null;
205
+            //first check if this helper is in the module
206
+            $logger->debug('Checking helper [' . $function . '] from module list ...');
207
+            $moduleInfo = self::getModuleInfoForFunction($function);
208
+            $module    = $moduleInfo['module'];
209
+            $function  = $moduleInfo['function'];
210
+            if(! empty($moduleInfo['file'])){
211
+                $file = $moduleInfo['file'];
212
+            }
213
+            $moduleFunctionPath = Module::findFunctionFullPath($function, $module);
214
+            if ($moduleFunctionPath){
215
+                $logger->info('Found helper [' . $function . '] from module [' .$module. '], the file path is [' .$moduleFunctionPath. '] we will used it');
216
+                $functionFilePath = $moduleFunctionPath;
217
+            }
218
+            else{
219
+                $logger->info('Cannot find helper [' . $function . '] from modules using the default location');
220
+            }
221
+            if (! $functionFilePath){
222
+                $searchDir = array(FUNCTIONS_PATH, CORE_FUNCTIONS_PATH);
223
+                foreach($searchDir as $dir){
224
+                    $filePath = $dir . $file;
225
+                    if (file_exists($filePath)){
226
+                        $functionFilePath = $filePath;
227
+                        //is already found not to continue
228
+                        break;
229
+                    }
230
+                }
231
+            }
232
+            $logger->info('The helper file path to be loaded is [' . $functionFilePath . ']');
233
+            if ($functionFilePath){
234
+                require_once $functionFilePath;
235
+                static::$loaded['function_' . $function] = $functionFilePath;
236
+                $logger->info('Helper [' . $function . '] --> ' . $functionFilePath . ' loaded successfully.');
237
+            }
238
+            else{
239
+                show_error('Unable to find helper file [' . $file . ']');
240
+            }
241
+        }
242 242
 
243
-		/**
244
-		 * Load the configuration file
245
-		 *
246
-		 * @param  string $filename the configuration filename located at CONFIG_PATH or MODULE_PATH/config
247
-		 *
248
-		 * @return void
249
-		 */
250
-		public static function config($filename){
251
-			$logger = static::getLogger();
252
-			$filename = str_ireplace('.php', '', $filename);
253
-			$filename = trim($filename, '/\\');
254
-			$filename = str_ireplace('config_', '', $filename);
255
-			$file = 'config_'.$filename.'.php';
256
-			$logger->debug('Loading configuration [' . $filename . '] ...');
257
-			if (isset(static::$loaded['config_' . $filename])){
258
-				$logger->info('Configuration [' . $file . '] already loaded no need to load it again, cost in performance');
259
-				return;
260
-			}
261
-			$configFilePath = CONFIG_PATH . $file;
262
-			//first check if this config is in the module
263
-			$logger->debug('Checking config [' . $filename . '] from module list ...');
264
-			$moduleInfo = self::getModuleInfoForConfig($filename);
265
-			$module    = $moduleInfo['module'];
266
-			$filename  = $moduleInfo['filename'];
267
-			$moduleConfigPath = Module::findConfigFullPath($filename, $module);
268
-			if ($moduleConfigPath){
269
-				$logger->info('Found config [' . $filename . '] from module [' .$module. '], the file path is [' .$moduleConfigPath. '] we will used it');
270
-				$configFilePath = $moduleConfigPath;
271
-			}
272
-			else{
273
-				$logger->info('Cannot find config [' . $filename . '] from modules using the default location');
274
-			}
275
-			$logger->info('The config file path to be loaded is [' . $configFilePath . ']');
276
-			$config = array();
277
-			if (file_exists($configFilePath)){
278
-				require_once $configFilePath;
279
-				if (! empty($config) && is_array($config)){
280
-					Config::setAll($config);
281
-					static::$loaded['config_' . $filename] = $configFilePath;
282
-					$logger->info('Configuration [' . $configFilePath . '] loaded successfully.');
283
-					$logger->info('The custom application configuration loaded are listed below: ' . stringfy_vars($config));
284
-					unset($config);
285
-				}
286
-			}
287
-			else{
288
-				show_error('Unable to find config file ['. $configFilePath . ']');
289
-			}
290
-		}
243
+        /**
244
+         * Load the configuration file
245
+         *
246
+         * @param  string $filename the configuration filename located at CONFIG_PATH or MODULE_PATH/config
247
+         *
248
+         * @return void
249
+         */
250
+        public static function config($filename){
251
+            $logger = static::getLogger();
252
+            $filename = str_ireplace('.php', '', $filename);
253
+            $filename = trim($filename, '/\\');
254
+            $filename = str_ireplace('config_', '', $filename);
255
+            $file = 'config_'.$filename.'.php';
256
+            $logger->debug('Loading configuration [' . $filename . '] ...');
257
+            if (isset(static::$loaded['config_' . $filename])){
258
+                $logger->info('Configuration [' . $file . '] already loaded no need to load it again, cost in performance');
259
+                return;
260
+            }
261
+            $configFilePath = CONFIG_PATH . $file;
262
+            //first check if this config is in the module
263
+            $logger->debug('Checking config [' . $filename . '] from module list ...');
264
+            $moduleInfo = self::getModuleInfoForConfig($filename);
265
+            $module    = $moduleInfo['module'];
266
+            $filename  = $moduleInfo['filename'];
267
+            $moduleConfigPath = Module::findConfigFullPath($filename, $module);
268
+            if ($moduleConfigPath){
269
+                $logger->info('Found config [' . $filename . '] from module [' .$module. '], the file path is [' .$moduleConfigPath. '] we will used it');
270
+                $configFilePath = $moduleConfigPath;
271
+            }
272
+            else{
273
+                $logger->info('Cannot find config [' . $filename . '] from modules using the default location');
274
+            }
275
+            $logger->info('The config file path to be loaded is [' . $configFilePath . ']');
276
+            $config = array();
277
+            if (file_exists($configFilePath)){
278
+                require_once $configFilePath;
279
+                if (! empty($config) && is_array($config)){
280
+                    Config::setAll($config);
281
+                    static::$loaded['config_' . $filename] = $configFilePath;
282
+                    $logger->info('Configuration [' . $configFilePath . '] loaded successfully.');
283
+                    $logger->info('The custom application configuration loaded are listed below: ' . stringfy_vars($config));
284
+                    unset($config);
285
+                }
286
+            }
287
+            else{
288
+                show_error('Unable to find config file ['. $configFilePath . ']');
289
+            }
290
+        }
291 291
 
292 292
 
293
-		/**
294
-		 * Load the language
295
-		 *
296
-		 * @param  string $language the language name to be loaded
297
-		 *
298
-		 * @return void
299
-		 */
300
-		public static function lang($language){
301
-			$logger = static::getLogger();
302
-			$language = str_ireplace('.php', '', $language);
303
-			$language = trim($language, '/\\');
304
-			$language = str_ireplace('lang_', '', $language);
305
-			$file = 'lang_'.$language.'.php';
306
-			$logger->debug('Loading language [' . $language . '] ...');
307
-			if (isset(static::$loaded['lang_' . $language])){
308
-				$logger->info('Language [' . $language . '] already loaded no need to load it again, cost in performance');
309
-				return;
310
-			}
311
-			//get the current language
312
-			$appLang = self::getAppLang();
313
-			$languageFilePath = null;
314
-			//first check if this language is in the module
315
-			$logger->debug('Checking language [' . $language . '] from module list ...');
316
-			$moduleInfo = self::getModuleInfoForLanguage($language);
317
-			$module    = $moduleInfo['module'];
318
-			$language  = $moduleInfo['language'];
319
-			if(! empty($moduleInfo['file'])){
320
-				$file = $moduleInfo['file'];
321
-			}
322
-			$moduleLanguagePath = Module::findLanguageFullPath($language, $appLang, $module);
323
-			if ($moduleLanguagePath){
324
-				$logger->info('Found language [' . $language . '] from module [' .$module. '], the file path is [' .$moduleLanguagePath. '] we will used it');
325
-				$languageFilePath = $moduleLanguagePath;
326
-			}
327
-			else{
328
-				$logger->info('Cannot find language [' . $language . '] from modules using the default location');
329
-			}
330
-			if (! $languageFilePath){
331
-				$searchDir = array(APP_LANG_PATH, CORE_LANG_PATH);
332
-				foreach($searchDir as $dir){
333
-					$filePath = $dir . $appLang . DS . $file;
334
-					if (file_exists($filePath)){
335
-						$languageFilePath = $filePath;
336
-						//already found no need continue
337
-						break;
338
-					}
339
-				}
340
-			}
341
-			$logger->info('The language file path to be loaded is [' . $languageFilePath . ']');
342
-			self::loadLanguage($languageFilePath, $language);
343
-		}
293
+        /**
294
+         * Load the language
295
+         *
296
+         * @param  string $language the language name to be loaded
297
+         *
298
+         * @return void
299
+         */
300
+        public static function lang($language){
301
+            $logger = static::getLogger();
302
+            $language = str_ireplace('.php', '', $language);
303
+            $language = trim($language, '/\\');
304
+            $language = str_ireplace('lang_', '', $language);
305
+            $file = 'lang_'.$language.'.php';
306
+            $logger->debug('Loading language [' . $language . '] ...');
307
+            if (isset(static::$loaded['lang_' . $language])){
308
+                $logger->info('Language [' . $language . '] already loaded no need to load it again, cost in performance');
309
+                return;
310
+            }
311
+            //get the current language
312
+            $appLang = self::getAppLang();
313
+            $languageFilePath = null;
314
+            //first check if this language is in the module
315
+            $logger->debug('Checking language [' . $language . '] from module list ...');
316
+            $moduleInfo = self::getModuleInfoForLanguage($language);
317
+            $module    = $moduleInfo['module'];
318
+            $language  = $moduleInfo['language'];
319
+            if(! empty($moduleInfo['file'])){
320
+                $file = $moduleInfo['file'];
321
+            }
322
+            $moduleLanguagePath = Module::findLanguageFullPath($language, $appLang, $module);
323
+            if ($moduleLanguagePath){
324
+                $logger->info('Found language [' . $language . '] from module [' .$module. '], the file path is [' .$moduleLanguagePath. '] we will used it');
325
+                $languageFilePath = $moduleLanguagePath;
326
+            }
327
+            else{
328
+                $logger->info('Cannot find language [' . $language . '] from modules using the default location');
329
+            }
330
+            if (! $languageFilePath){
331
+                $searchDir = array(APP_LANG_PATH, CORE_LANG_PATH);
332
+                foreach($searchDir as $dir){
333
+                    $filePath = $dir . $appLang . DS . $file;
334
+                    if (file_exists($filePath)){
335
+                        $languageFilePath = $filePath;
336
+                        //already found no need continue
337
+                        break;
338
+                    }
339
+                }
340
+            }
341
+            $logger->info('The language file path to be loaded is [' . $languageFilePath . ']');
342
+            self::loadLanguage($languageFilePath, $language);
343
+        }
344 344
 
345
-		/**
346
-		 * Return the current app language by default will use the value from cookie 
347
-		 * if can not found will use the default value from configuration
348
-		 * @return string the app language like "en", "fr"
349
-		 */
350
-		protected static function getAppLang(){
351
-			//determine the current language
352
-			$appLang = get_config('default_language');
353
-			//if the language exists in the cookie use it
354
-			$cfgKey = get_config('language_cookie_name');
355
-			$objCookie = & class_loader('Cookie');
356
-			$cookieLang = $objCookie->get($cfgKey);
357
-			if ($cookieLang){
358
-				$appLang = $cookieLang;
359
-			}
360
-			return $appLang;
361
-		}
362
-		/**
363
-		 * Get the module information for the model and library to load
364
-		 * @param  string $class the full class name like moduleName/className, className,
365
-		 * @return array        the module information
366
-		 * array(
367
-		 * 	'module'=> 'module_name'
368
-		 * 	'class' => 'class_name'
369
-		 * )
370
-		 */
371
-		protected static function getModuleInfoForModelLibrary($class){
372
-			$module = null;
373
-			$obj = & get_instance();
374
-			if (strpos($class, '/') !== false){
375
-				$path = explode('/', $class);
376
-				if (isset($path[0]) && in_array($path[0], Module::getModuleList())){
377
-					$module = $path[0];
378
-					$class = ucfirst($path[1]);
379
-				}
380
-			}
381
-			else{
382
-				$class = ucfirst($class);
383
-			}
384
-			if (! $module && !empty($obj->moduleName)){
385
-				$module = $obj->moduleName;
386
-			}
387
-			return array(
388
-						'class' => $class,
389
-						'module' => $module
390
-					);
391
-		}
345
+        /**
346
+         * Return the current app language by default will use the value from cookie 
347
+         * if can not found will use the default value from configuration
348
+         * @return string the app language like "en", "fr"
349
+         */
350
+        protected static function getAppLang(){
351
+            //determine the current language
352
+            $appLang = get_config('default_language');
353
+            //if the language exists in the cookie use it
354
+            $cfgKey = get_config('language_cookie_name');
355
+            $objCookie = & class_loader('Cookie');
356
+            $cookieLang = $objCookie->get($cfgKey);
357
+            if ($cookieLang){
358
+                $appLang = $cookieLang;
359
+            }
360
+            return $appLang;
361
+        }
362
+        /**
363
+         * Get the module information for the model and library to load
364
+         * @param  string $class the full class name like moduleName/className, className,
365
+         * @return array        the module information
366
+         * array(
367
+         * 	'module'=> 'module_name'
368
+         * 	'class' => 'class_name'
369
+         * )
370
+         */
371
+        protected static function getModuleInfoForModelLibrary($class){
372
+            $module = null;
373
+            $obj = & get_instance();
374
+            if (strpos($class, '/') !== false){
375
+                $path = explode('/', $class);
376
+                if (isset($path[0]) && in_array($path[0], Module::getModuleList())){
377
+                    $module = $path[0];
378
+                    $class = ucfirst($path[1]);
379
+                }
380
+            }
381
+            else{
382
+                $class = ucfirst($class);
383
+            }
384
+            if (! $module && !empty($obj->moduleName)){
385
+                $module = $obj->moduleName;
386
+            }
387
+            return array(
388
+                        'class' => $class,
389
+                        'module' => $module
390
+                    );
391
+        }
392 392
 
393
-		/**
394
-		 * Get the module information for the function to load
395
-		 * @param  string $function the function name like moduleName/functionName, functionName,
396
-		 * @return array        the module information
397
-		 * array(
398
-		 * 	'module'=> 'module_name'
399
-		 * 	'function' => 'function'
400
-		 * 	'file' => 'file'
401
-		 * )
402
-		 */
403
-		protected static function getModuleInfoForFunction($function){
404
-			$module = null;
405
-			$file = null;
406
-			$obj = & get_instance();
407
-			//check if the request class contains module name
408
-			if (strpos($function, '/') !== false){
409
-				$path = explode('/', $function);
410
-				if (isset($path[0]) && in_array($path[0], Module::getModuleList())){
411
-					$module = $path[0];
412
-					$function = 'function_' . $path[1];
413
-					$file = $path[0] . DS . $function.'.php';
414
-				}
415
-			}
416
-			if (! $module && !empty($obj->moduleName)){
417
-				$module = $obj->moduleName;
418
-			}
419
-			return array(
420
-						'function' => $function,
421
-						'module' => $module,
422
-						'file' => $file
423
-					);
424
-		}
393
+        /**
394
+         * Get the module information for the function to load
395
+         * @param  string $function the function name like moduleName/functionName, functionName,
396
+         * @return array        the module information
397
+         * array(
398
+         * 	'module'=> 'module_name'
399
+         * 	'function' => 'function'
400
+         * 	'file' => 'file'
401
+         * )
402
+         */
403
+        protected static function getModuleInfoForFunction($function){
404
+            $module = null;
405
+            $file = null;
406
+            $obj = & get_instance();
407
+            //check if the request class contains module name
408
+            if (strpos($function, '/') !== false){
409
+                $path = explode('/', $function);
410
+                if (isset($path[0]) && in_array($path[0], Module::getModuleList())){
411
+                    $module = $path[0];
412
+                    $function = 'function_' . $path[1];
413
+                    $file = $path[0] . DS . $function.'.php';
414
+                }
415
+            }
416
+            if (! $module && !empty($obj->moduleName)){
417
+                $module = $obj->moduleName;
418
+            }
419
+            return array(
420
+                        'function' => $function,
421
+                        'module' => $module,
422
+                        'file' => $file
423
+                    );
424
+        }
425 425
 
426
-		/**
427
-		 * Get the module information for the language to load
428
-		 * @param  string $language the language name like moduleName/languageName, languageName,
429
-		 * @return array        the module information
430
-		 * array(
431
-		 * 	'module'=> 'module_name'
432
-		 * 	'language' => 'language'
433
-		 * 	'file' => 'file'
434
-		 * )
435
-		 */
436
-		protected static function getModuleInfoForLanguage($language){
437
-			$module = null;
438
-			$file = null;
439
-			$obj = & get_instance();
440
-			//check if the request class contains module name
441
-			if (strpos($language, '/') !== false){
442
-				$path = explode('/', $language);
443
-				if (isset($path[0]) && in_array($path[0], Module::getModuleList())){
444
-					$module = $path[0];
445
-					$language = 'lang_' . $path[1] . '.php';
446
-					$file = $path[0] . DS .$language;
447
-				}
448
-			}
449
-			if (! $module && !empty($obj->moduleName)){
450
-				$module = $obj->moduleName;
451
-			}
452
-			return array(
453
-						'language' => $language,
454
-						'module' => $module,
455
-						'file' => $file
456
-					);
457
-		}
426
+        /**
427
+         * Get the module information for the language to load
428
+         * @param  string $language the language name like moduleName/languageName, languageName,
429
+         * @return array        the module information
430
+         * array(
431
+         * 	'module'=> 'module_name'
432
+         * 	'language' => 'language'
433
+         * 	'file' => 'file'
434
+         * )
435
+         */
436
+        protected static function getModuleInfoForLanguage($language){
437
+            $module = null;
438
+            $file = null;
439
+            $obj = & get_instance();
440
+            //check if the request class contains module name
441
+            if (strpos($language, '/') !== false){
442
+                $path = explode('/', $language);
443
+                if (isset($path[0]) && in_array($path[0], Module::getModuleList())){
444
+                    $module = $path[0];
445
+                    $language = 'lang_' . $path[1] . '.php';
446
+                    $file = $path[0] . DS .$language;
447
+                }
448
+            }
449
+            if (! $module && !empty($obj->moduleName)){
450
+                $module = $obj->moduleName;
451
+            }
452
+            return array(
453
+                        'language' => $language,
454
+                        'module' => $module,
455
+                        'file' => $file
456
+                    );
457
+        }
458 458
 
459 459
 
460
-		/**
461
-		 * Get the module information for the config to load
462
-		 * @param  string $filename the filename of the configuration file,
463
-		 * @return array        the module information
464
-		 * array(
465
-		 * 	'module'=> 'module_name'
466
-		 * 	'filename' => 'filename'
467
-		 * )
468
-		 */
469
-		protected static function getModuleInfoForConfig($filename){
470
-			$module = null;
471
-			$obj = & get_instance();
472
-			//check if the request class contains module name
473
-			if (strpos($filename, '/') !== false){
474
-				$path = explode('/', $filename);
475
-				if (isset($path[0]) && in_array($path[0], Module::getModuleList())){
476
-					$module = $path[0];
477
-					$filename = $path[1] . '.php';
478
-				}
479
-			}
480
-			if (! $module && !empty($obj->moduleName)){
481
-				$module = $obj->moduleName;
482
-			}
483
-			return array(
484
-						'filename' => $filename,
485
-						'module' => $module
486
-					);
487
-		}
460
+        /**
461
+         * Get the module information for the config to load
462
+         * @param  string $filename the filename of the configuration file,
463
+         * @return array        the module information
464
+         * array(
465
+         * 	'module'=> 'module_name'
466
+         * 	'filename' => 'filename'
467
+         * )
468
+         */
469
+        protected static function getModuleInfoForConfig($filename){
470
+            $module = null;
471
+            $obj = & get_instance();
472
+            //check if the request class contains module name
473
+            if (strpos($filename, '/') !== false){
474
+                $path = explode('/', $filename);
475
+                if (isset($path[0]) && in_array($path[0], Module::getModuleList())){
476
+                    $module = $path[0];
477
+                    $filename = $path[1] . '.php';
478
+                }
479
+            }
480
+            if (! $module && !empty($obj->moduleName)){
481
+                $module = $obj->moduleName;
482
+            }
483
+            return array(
484
+                        'filename' => $filename,
485
+                        'module' => $module
486
+                    );
487
+        }
488 488
 
489
-		/**
490
-		 * Get the name of model or library instance if is null
491
-		 * @param  string $class the class name to determine the instance
492
-		 * @return string        the instance name
493
-		 */
494
-		protected static function getModelLibraryInstanceName($class){
495
-			//for module
496
-			$instance = null;
497
-			if (strpos($class, '/') !== false){
498
-				$path = explode('/', $class);
499
-				if (isset($path[1])){
500
-					$instance = strtolower($path[1]);
501
-				}
502
-			}
503
-			else{
504
-				$instance = strtolower($class);
505
-			}
506
-			return $instance;
507
-		}
489
+        /**
490
+         * Get the name of model or library instance if is null
491
+         * @param  string $class the class name to determine the instance
492
+         * @return string        the instance name
493
+         */
494
+        protected static function getModelLibraryInstanceName($class){
495
+            //for module
496
+            $instance = null;
497
+            if (strpos($class, '/') !== false){
498
+                $path = explode('/', $class);
499
+                if (isset($path[1])){
500
+                    $instance = strtolower($path[1]);
501
+                }
502
+            }
503
+            else{
504
+                $instance = strtolower($class);
505
+            }
506
+            return $instance;
507
+        }
508 508
 
509
-		/**
510
-		 * Get the library file path using the module information
511
-		 * @param  string $class the class name
512
-		 * @return string|null        the library file path otherwise null will be returned
513
-		 */
514
-		protected static function getLibraryPathUsingModuleInfo($class){
515
-			$logger = static::getLogger();
516
-			$libraryFilePath = null;
517
-			$logger->debug('Checking library [' . $class . '] from module list ...');
518
-			$moduleInfo = self::getModuleInfoForModelLibrary($class);
519
-			$module = $moduleInfo['module'];
520
-			$class  = $moduleInfo['class'];
521
-			$moduleLibraryPath = Module::findLibraryFullPath($class, $module);
522
-			if ($moduleLibraryPath){
523
-				$logger->info('Found library [' . $class . '] from module [' .$module. '], the file path is [' .$moduleLibraryPath. '] we will used it');
524
-				$libraryFilePath = $moduleLibraryPath;
525
-			}
526
-			else{
527
-				$logger->info('Cannot find library [' . $class . '] from modules using the default location');
528
-			}
529
-			return $libraryFilePath;
530
-		}
509
+        /**
510
+         * Get the library file path using the module information
511
+         * @param  string $class the class name
512
+         * @return string|null        the library file path otherwise null will be returned
513
+         */
514
+        protected static function getLibraryPathUsingModuleInfo($class){
515
+            $logger = static::getLogger();
516
+            $libraryFilePath = null;
517
+            $logger->debug('Checking library [' . $class . '] from module list ...');
518
+            $moduleInfo = self::getModuleInfoForModelLibrary($class);
519
+            $module = $moduleInfo['module'];
520
+            $class  = $moduleInfo['class'];
521
+            $moduleLibraryPath = Module::findLibraryFullPath($class, $module);
522
+            if ($moduleLibraryPath){
523
+                $logger->info('Found library [' . $class . '] from module [' .$module. '], the file path is [' .$moduleLibraryPath. '] we will used it');
524
+                $libraryFilePath = $moduleLibraryPath;
525
+            }
526
+            else{
527
+                $logger->info('Cannot find library [' . $class . '] from modules using the default location');
528
+            }
529
+            return $libraryFilePath;
530
+        }
531 531
 
532
-		/**
533
-		 * Load the library 
534
-		 * @param  string $libraryFilePath the file path of the library to load
535
-		 * @param  string $class           the class name
536
-		 * @param  string $instance        the instance
537
-		 * @param  array  $params          the parameter to use
538
-		 * @return void
539
-		 */
540
-		protected static function loadLibrary($libraryFilePath, $class, $instance, $params = array()){
541
-			if ($libraryFilePath){
542
-				$logger = static::getLogger();
543
-				require_once $libraryFilePath;
544
-				if (class_exists($class)){
545
-					$c = $params ? new $class($params) : new $class();
546
-					$obj = & get_instance();
547
-					$obj->{$instance} = $c;
548
-					static::$loaded[$instance] = $class;
549
-					$logger->info('Library [' . $class . '] --> ' . $libraryFilePath . ' loaded successfully.');
550
-				}
551
-				else{
552
-					show_error('The file '.$libraryFilePath.' exists but does not contain the class '.$class);
553
-				}
554
-			}
555
-			else{
556
-				show_error('Unable to find library class [' . $class . ']');
557
-			}
558
-		}
532
+        /**
533
+         * Load the library 
534
+         * @param  string $libraryFilePath the file path of the library to load
535
+         * @param  string $class           the class name
536
+         * @param  string $instance        the instance
537
+         * @param  array  $params          the parameter to use
538
+         * @return void
539
+         */
540
+        protected static function loadLibrary($libraryFilePath, $class, $instance, $params = array()){
541
+            if ($libraryFilePath){
542
+                $logger = static::getLogger();
543
+                require_once $libraryFilePath;
544
+                if (class_exists($class)){
545
+                    $c = $params ? new $class($params) : new $class();
546
+                    $obj = & get_instance();
547
+                    $obj->{$instance} = $c;
548
+                    static::$loaded[$instance] = $class;
549
+                    $logger->info('Library [' . $class . '] --> ' . $libraryFilePath . ' loaded successfully.');
550
+                }
551
+                else{
552
+                    show_error('The file '.$libraryFilePath.' exists but does not contain the class '.$class);
553
+                }
554
+            }
555
+            else{
556
+                show_error('Unable to find library class [' . $class . ']');
557
+            }
558
+        }
559 559
 
560
-		/**
561
-		 * Load the language 
562
-		 * @param  string $languageFilePath the file path of the language to load
563
-		 * @param  string $language           the language name
564
-		 * @return void
565
-		 */
566
-		protected static function loadLanguage($languageFilePath, $language){
567
-			if ($languageFilePath){
568
-				$logger = static::getLogger();
569
-				$lang = array();
570
-				require_once $languageFilePath;
571
-				if (! empty($lang) && is_array($lang)){
572
-					$logger->info('Language file  [' .$languageFilePath. '] contains the valid languages keys add them to language list');
573
-					//Note: may be here the class 'Lang' not yet loaded
574
-					$langObj =& class_loader('Lang', 'classes');
575
-					$langObj->addLangMessages($lang);
576
-					//free the memory
577
-					unset($lang);
578
-				}
579
-				static::$loaded['lang_' . $language] = $languageFilePath;
580
-				$logger->info('Language [' . $language . '] --> ' . $languageFilePath . ' loaded successfully.');
581
-			}
582
-			else{
583
-				show_error('Unable to find language [' . $language . ']');
584
-			}
585
-		}
560
+        /**
561
+         * Load the language 
562
+         * @param  string $languageFilePath the file path of the language to load
563
+         * @param  string $language           the language name
564
+         * @return void
565
+         */
566
+        protected static function loadLanguage($languageFilePath, $language){
567
+            if ($languageFilePath){
568
+                $logger = static::getLogger();
569
+                $lang = array();
570
+                require_once $languageFilePath;
571
+                if (! empty($lang) && is_array($lang)){
572
+                    $logger->info('Language file  [' .$languageFilePath. '] contains the valid languages keys add them to language list');
573
+                    //Note: may be here the class 'Lang' not yet loaded
574
+                    $langObj =& class_loader('Lang', 'classes');
575
+                    $langObj->addLangMessages($lang);
576
+                    //free the memory
577
+                    unset($lang);
578
+                }
579
+                static::$loaded['lang_' . $language] = $languageFilePath;
580
+                $logger->info('Language [' . $language . '] --> ' . $languageFilePath . ' loaded successfully.');
581
+            }
582
+            else{
583
+                show_error('Unable to find language [' . $language . ']');
584
+            }
585
+        }
586 586
 
587
-		/**
588
-		 * Get all the autoload using the configuration file
589
-		 * @return array
590
-		 */
591
-		private function getResourcesFromAutoloadConfig(){
592
-			$autoloads = array();
593
-			$autoloads['config']    = array();
594
-			$autoloads['languages'] = array();
595
-			$autoloads['libraries'] = array();
596
-			$autoloads['models']    = array();
597
-			$autoloads['functions'] = array();
598
-			//loading of the resources from autoload configuration file
599
-			if (file_exists(CONFIG_PATH . 'autoload.php')){
600
-				$autoload = array();
601
-				require_once CONFIG_PATH . 'autoload.php';
602
-				if (! empty($autoload) && is_array($autoload)){
603
-					$autoloads = array_merge($autoloads, $autoload);
604
-					unset($autoload);
605
-				}
606
-			}
607
-			//loading autoload configuration for modules
608
-			$modulesAutoloads = Module::getModulesAutoloadConfig();
609
-			if (! empty($modulesAutoloads) && is_array($modulesAutoloads)){
610
-				$autoloads = array_merge_recursive($autoloads, $modulesAutoloads);
611
-			}
612
-			return $autoloads;
613
-		}
587
+        /**
588
+         * Get all the autoload using the configuration file
589
+         * @return array
590
+         */
591
+        private function getResourcesFromAutoloadConfig(){
592
+            $autoloads = array();
593
+            $autoloads['config']    = array();
594
+            $autoloads['languages'] = array();
595
+            $autoloads['libraries'] = array();
596
+            $autoloads['models']    = array();
597
+            $autoloads['functions'] = array();
598
+            //loading of the resources from autoload configuration file
599
+            if (file_exists(CONFIG_PATH . 'autoload.php')){
600
+                $autoload = array();
601
+                require_once CONFIG_PATH . 'autoload.php';
602
+                if (! empty($autoload) && is_array($autoload)){
603
+                    $autoloads = array_merge($autoloads, $autoload);
604
+                    unset($autoload);
605
+                }
606
+            }
607
+            //loading autoload configuration for modules
608
+            $modulesAutoloads = Module::getModulesAutoloadConfig();
609
+            if (! empty($modulesAutoloads) && is_array($modulesAutoloads)){
610
+                $autoloads = array_merge_recursive($autoloads, $modulesAutoloads);
611
+            }
612
+            return $autoloads;
613
+        }
614 614
 
615
-		/**
616
-		 * Load the autoload configuration
617
-		 * @return void
618
-		 */
619
-		private function loadResourcesFromAutoloadConfig(){
620
-			$autoloads = array();
621
-			$autoloads['config']    = array();
622
-			$autoloads['languages'] = array();
623
-			$autoloads['libraries'] = array();
624
-			$autoloads['models']    = array();
625
-			$autoloads['functions'] = array();
615
+        /**
616
+         * Load the autoload configuration
617
+         * @return void
618
+         */
619
+        private function loadResourcesFromAutoloadConfig(){
620
+            $autoloads = array();
621
+            $autoloads['config']    = array();
622
+            $autoloads['languages'] = array();
623
+            $autoloads['libraries'] = array();
624
+            $autoloads['models']    = array();
625
+            $autoloads['functions'] = array();
626 626
 
627
-			$list = $this->getResourcesFromAutoloadConfig();
628
-			$autoloads = array_merge($autoloads, $list);
627
+            $list = $this->getResourcesFromAutoloadConfig();
628
+            $autoloads = array_merge($autoloads, $list);
629 629
 			
630
-			//config autoload
631
-			$this->loadAutoloadResourcesArray('config', $autoloads['config']);
630
+            //config autoload
631
+            $this->loadAutoloadResourcesArray('config', $autoloads['config']);
632 632
 			
633
-			//languages autoload
634
-			$this->loadAutoloadResourcesArray('lang', $autoloads['languages']);
633
+            //languages autoload
634
+            $this->loadAutoloadResourcesArray('lang', $autoloads['languages']);
635 635
 			
636
-			//libraries autoload
637
-			$this->loadAutoloadResourcesArray('library', $autoloads['libraries']);
636
+            //libraries autoload
637
+            $this->loadAutoloadResourcesArray('library', $autoloads['libraries']);
638 638
 
639
-			//models autoload
640
-			$this->loadAutoloadResourcesArray('model', $autoloads['models']);
639
+            //models autoload
640
+            $this->loadAutoloadResourcesArray('model', $autoloads['models']);
641 641
 			
642
-			//functions autoload
643
-			$this->loadAutoloadResourcesArray('functions', $autoloads['functions']);
644
-		}
642
+            //functions autoload
643
+            $this->loadAutoloadResourcesArray('functions', $autoloads['functions']);
644
+        }
645 645
 
646
-		/**
647
-		 * Load the resources autoload array
648
-		 * @param  string $method    this object method name to call
649
-		 * @param  array  $resources the resource to load
650
-		 * @return void            
651
-		 */
652
-		private function loadAutoloadResourcesArray($method, array $resources){
653
-			foreach ($resources as $name) {
654
-				$this->{$method}($name);
655
-			}
656
-		}
657
-	}
646
+        /**
647
+         * Load the resources autoload array
648
+         * @param  string $method    this object method name to call
649
+         * @param  array  $resources the resource to load
650
+         * @return void            
651
+         */
652
+        private function loadAutoloadResourcesArray($method, array $resources){
653
+            foreach ($resources as $name) {
654
+                $this->{$method}($name);
655
+            }
656
+        }
657
+    }
Please login to merge, or discard this patch.
Spacing   +105 added lines, -105 removed lines patch added patch discarded remove patch
@@ -23,7 +23,7 @@  discard block
 block discarded – undo
23 23
 	 * along with this program; if not, write to the Free Software
24 24
 	 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25 25
 	*/
26
-	class Loader{
26
+	class Loader {
27 27
 		
28 28
 		/**
29 29
 		 * List of loaded resources
@@ -38,7 +38,7 @@  discard block
 block discarded – undo
38 38
 		private static $logger;
39 39
 
40 40
 
41
-		public function __construct(){
41
+		public function __construct() {
42 42
 			//add the resources already loaded during application bootstrap
43 43
 			//in the list to prevent duplicate or loading the resources again.
44 44
 			static::$loaded = class_loaded();
@@ -51,10 +51,10 @@  discard block
 block discarded – undo
51 51
 		 * The signleton of the logger
52 52
 		 * @return object the Log instance
53 53
 		 */
54
-		public static function getLogger(){
55
-			if(self::$logger == null){
54
+		public static function getLogger() {
55
+			if (self::$logger == null) {
56 56
 				$logger = array();
57
-				$logger[0] =& class_loader('Log', 'classes');
57
+				$logger[0] = & class_loader('Log', 'classes');
58 58
 				$logger[0]->setLogger('Library::Loader');
59 59
 				self::$logger = $logger[0];
60 60
 			}
@@ -66,7 +66,7 @@  discard block
 block discarded – undo
66 66
 		 * @param object $logger the log object
67 67
 		 * @return object the log instance
68 68
 		 */
69
-		public static function setLogger($logger){
69
+		public static function setLogger($logger) {
70 70
 			self::$logger = $logger;
71 71
 			return self::$logger;
72 72
 		}
@@ -80,18 +80,18 @@  discard block
 block discarded – undo
80 80
 		 *
81 81
 		 * @return void
82 82
 		 */
83
-		public static function model($class, $instance = null){
83
+		public static function model($class, $instance = null) {
84 84
 			$logger = static::getLogger();
85 85
 			$class = str_ireplace('.php', '', $class);
86 86
 			$class = trim($class, '/\\');
87
-			$file = ucfirst($class).'.php';
87
+			$file = ucfirst($class) . '.php';
88 88
 			$logger->debug('Loading model [' . $class . '] ...');
89 89
 			//************
90
-			if (! $instance){
90
+			if (!$instance) {
91 91
 				$instance = self::getModelLibraryInstanceName($class);
92 92
 			}
93 93
 			//****************
94
-			if (isset(static::$loaded[$instance])){
94
+			if (isset(static::$loaded[$instance])) {
95 95
 				$logger->info('Model [' . $class . '] already loaded no need to load it again, cost in performance');
96 96
 				return;
97 97
 			}
@@ -104,28 +104,28 @@  discard block
 block discarded – undo
104 104
 			$class  = $moduleInfo['class'];
105 105
 			
106 106
 			$moduleModelFilePath = Module::findModelFullPath($class, $module);
107
-			if ($moduleModelFilePath){
108
-				$logger->info('Found model [' . $class . '] from module [' .$module. '], the file path is [' .$moduleModelFilePath. '] we will used it');
107
+			if ($moduleModelFilePath) {
108
+				$logger->info('Found model [' . $class . '] from module [' . $module . '], the file path is [' . $moduleModelFilePath . '] we will used it');
109 109
 				$classFilePath = $moduleModelFilePath;
110 110
 			}
111
-			else{
111
+			else {
112 112
 				$logger->info('Cannot find model [' . $class . '] from modules using the default location');
113 113
 			}
114 114
 			$logger->info('The model file path to be loaded is [' . $classFilePath . ']');
115
-			if (file_exists($classFilePath)){
115
+			if (file_exists($classFilePath)) {
116 116
 				require_once $classFilePath;
117
-				if (class_exists($class)){
117
+				if (class_exists($class)) {
118 118
 					$c = new $class();
119 119
 					$obj = & get_instance();
120 120
 					$obj->{$instance} = $c;
121 121
 					static::$loaded[$instance] = $class;
122 122
 					$logger->info('Model [' . $class . '] --> ' . $classFilePath . ' loaded successfully.');
123 123
 				}
124
-				else{
125
-					show_error('The file '.$classFilePath.' exists but does not contain the class ['. $class . ']');
124
+				else {
125
+					show_error('The file ' . $classFilePath . ' exists but does not contain the class [' . $class . ']');
126 126
 				}
127 127
 			}
128
-			else{
128
+			else {
129 129
 				show_error('Unable to find the model [' . $class . ']');
130 130
 			}
131 131
 		}
@@ -140,22 +140,22 @@  discard block
 block discarded – undo
140 140
 		 *
141 141
 		 * @return void
142 142
 		 */
143
-		public static function library($class, $instance = null, array $params = array()){
143
+		public static function library($class, $instance = null, array $params = array()) {
144 144
 			$logger = static::getLogger();
145 145
 			$class = str_ireplace('.php', '', $class);
146 146
 			$class = trim($class, '/\\');
147
-			$file = ucfirst($class) .'.php';
147
+			$file = ucfirst($class) . '.php';
148 148
 			$logger->debug('Loading library [' . $class . '] ...');
149
-			if (! $instance){
149
+			if (!$instance) {
150 150
 				$instance = self::getModelLibraryInstanceName($class);
151 151
 			}
152
-			if (isset(static::$loaded[$instance])){
152
+			if (isset(static::$loaded[$instance])) {
153 153
 				$logger->info('Library [' . $class . '] already loaded no need to load it again, cost in performance');
154 154
 				return;
155 155
 			}
156 156
 			$obj = & get_instance();
157 157
 			//Check and load Database library
158
-			if (strtolower($class) == 'database'){
158
+			if (strtolower($class) == 'database') {
159 159
 				$logger->info('This is the Database library ...');
160 160
 				$obj->{$instance} = & class_loader('Database', 'classes/database', $params);
161 161
 				static::$loaded[$instance] = $class;
@@ -164,18 +164,18 @@  discard block
 block discarded – undo
164 164
 			}
165 165
 			$libraryFilePath = null;
166 166
 			$logger->debug('Check if this is a system library ...');
167
-			if (file_exists(CORE_LIBRARY_PATH . $file)){
167
+			if (file_exists(CORE_LIBRARY_PATH . $file)) {
168 168
 				$libraryFilePath = CORE_LIBRARY_PATH . $file;
169 169
 				$class = ucfirst($class);
170 170
 				$logger->info('This library is a system library');
171 171
 			}
172
-			else{
172
+			else {
173 173
 				$logger->info('This library is not a system library');	
174 174
 				//first check if this library is in the module
175 175
 				$libraryFilePath = self::getLibraryPathUsingModuleInfo($class);
176 176
 				//***************
177 177
 			}
178
-			if (! $libraryFilePath && file_exists(LIBRARY_PATH . $file)){
178
+			if (!$libraryFilePath && file_exists(LIBRARY_PATH . $file)) {
179 179
 				$libraryFilePath = LIBRARY_PATH . $file;
180 180
 			}
181 181
 			$logger->info('The library file path to be loaded is [' . $libraryFilePath . ']');
@@ -190,14 +190,14 @@  discard block
 block discarded – undo
190 190
 		 *
191 191
 		 * @return void
192 192
 		 */
193
-		public static function functions($function){
193
+		public static function functions($function) {
194 194
 			$logger = static::getLogger();
195 195
 			$function = str_ireplace('.php', '', $function);
196 196
 			$function = trim($function, '/\\');
197 197
 			$function = str_ireplace('function_', '', $function);
198
-			$file = 'function_'.$function.'.php';
198
+			$file = 'function_' . $function . '.php';
199 199
 			$logger->debug('Loading helper [' . $function . '] ...');
200
-			if (isset(static::$loaded['function_' . $function])){
200
+			if (isset(static::$loaded['function_' . $function])) {
201 201
 				$logger->info('Helper [' . $function . '] already loaded no need to load it again, cost in performance');
202 202
 				return;
203 203
 			}
@@ -207,22 +207,22 @@  discard block
 block discarded – undo
207 207
 			$moduleInfo = self::getModuleInfoForFunction($function);
208 208
 			$module    = $moduleInfo['module'];
209 209
 			$function  = $moduleInfo['function'];
210
-			if(! empty($moduleInfo['file'])){
210
+			if (!empty($moduleInfo['file'])) {
211 211
 				$file = $moduleInfo['file'];
212 212
 			}
213 213
 			$moduleFunctionPath = Module::findFunctionFullPath($function, $module);
214
-			if ($moduleFunctionPath){
215
-				$logger->info('Found helper [' . $function . '] from module [' .$module. '], the file path is [' .$moduleFunctionPath. '] we will used it');
214
+			if ($moduleFunctionPath) {
215
+				$logger->info('Found helper [' . $function . '] from module [' . $module . '], the file path is [' . $moduleFunctionPath . '] we will used it');
216 216
 				$functionFilePath = $moduleFunctionPath;
217 217
 			}
218
-			else{
218
+			else {
219 219
 				$logger->info('Cannot find helper [' . $function . '] from modules using the default location');
220 220
 			}
221
-			if (! $functionFilePath){
221
+			if (!$functionFilePath) {
222 222
 				$searchDir = array(FUNCTIONS_PATH, CORE_FUNCTIONS_PATH);
223
-				foreach($searchDir as $dir){
223
+				foreach ($searchDir as $dir) {
224 224
 					$filePath = $dir . $file;
225
-					if (file_exists($filePath)){
225
+					if (file_exists($filePath)) {
226 226
 						$functionFilePath = $filePath;
227 227
 						//is already found not to continue
228 228
 						break;
@@ -230,12 +230,12 @@  discard block
 block discarded – undo
230 230
 				}
231 231
 			}
232 232
 			$logger->info('The helper file path to be loaded is [' . $functionFilePath . ']');
233
-			if ($functionFilePath){
233
+			if ($functionFilePath) {
234 234
 				require_once $functionFilePath;
235 235
 				static::$loaded['function_' . $function] = $functionFilePath;
236 236
 				$logger->info('Helper [' . $function . '] --> ' . $functionFilePath . ' loaded successfully.');
237 237
 			}
238
-			else{
238
+			else {
239 239
 				show_error('Unable to find helper file [' . $file . ']');
240 240
 			}
241 241
 		}
@@ -247,14 +247,14 @@  discard block
 block discarded – undo
247 247
 		 *
248 248
 		 * @return void
249 249
 		 */
250
-		public static function config($filename){
250
+		public static function config($filename) {
251 251
 			$logger = static::getLogger();
252 252
 			$filename = str_ireplace('.php', '', $filename);
253 253
 			$filename = trim($filename, '/\\');
254 254
 			$filename = str_ireplace('config_', '', $filename);
255
-			$file = 'config_'.$filename.'.php';
255
+			$file = 'config_' . $filename . '.php';
256 256
 			$logger->debug('Loading configuration [' . $filename . '] ...');
257
-			if (isset(static::$loaded['config_' . $filename])){
257
+			if (isset(static::$loaded['config_' . $filename])) {
258 258
 				$logger->info('Configuration [' . $file . '] already loaded no need to load it again, cost in performance');
259 259
 				return;
260 260
 			}
@@ -265,18 +265,18 @@  discard block
 block discarded – undo
265 265
 			$module    = $moduleInfo['module'];
266 266
 			$filename  = $moduleInfo['filename'];
267 267
 			$moduleConfigPath = Module::findConfigFullPath($filename, $module);
268
-			if ($moduleConfigPath){
269
-				$logger->info('Found config [' . $filename . '] from module [' .$module. '], the file path is [' .$moduleConfigPath. '] we will used it');
268
+			if ($moduleConfigPath) {
269
+				$logger->info('Found config [' . $filename . '] from module [' . $module . '], the file path is [' . $moduleConfigPath . '] we will used it');
270 270
 				$configFilePath = $moduleConfigPath;
271 271
 			}
272
-			else{
272
+			else {
273 273
 				$logger->info('Cannot find config [' . $filename . '] from modules using the default location');
274 274
 			}
275 275
 			$logger->info('The config file path to be loaded is [' . $configFilePath . ']');
276 276
 			$config = array();
277
-			if (file_exists($configFilePath)){
277
+			if (file_exists($configFilePath)) {
278 278
 				require_once $configFilePath;
279
-				if (! empty($config) && is_array($config)){
279
+				if (!empty($config) && is_array($config)) {
280 280
 					Config::setAll($config);
281 281
 					static::$loaded['config_' . $filename] = $configFilePath;
282 282
 					$logger->info('Configuration [' . $configFilePath . '] loaded successfully.');
@@ -284,8 +284,8 @@  discard block
 block discarded – undo
284 284
 					unset($config);
285 285
 				}
286 286
 			}
287
-			else{
288
-				show_error('Unable to find config file ['. $configFilePath . ']');
287
+			else {
288
+				show_error('Unable to find config file [' . $configFilePath . ']');
289 289
 			}
290 290
 		}
291 291
 
@@ -297,14 +297,14 @@  discard block
 block discarded – undo
297 297
 		 *
298 298
 		 * @return void
299 299
 		 */
300
-		public static function lang($language){
300
+		public static function lang($language) {
301 301
 			$logger = static::getLogger();
302 302
 			$language = str_ireplace('.php', '', $language);
303 303
 			$language = trim($language, '/\\');
304 304
 			$language = str_ireplace('lang_', '', $language);
305
-			$file = 'lang_'.$language.'.php';
305
+			$file = 'lang_' . $language . '.php';
306 306
 			$logger->debug('Loading language [' . $language . '] ...');
307
-			if (isset(static::$loaded['lang_' . $language])){
307
+			if (isset(static::$loaded['lang_' . $language])) {
308 308
 				$logger->info('Language [' . $language . '] already loaded no need to load it again, cost in performance');
309 309
 				return;
310 310
 			}
@@ -316,22 +316,22 @@  discard block
 block discarded – undo
316 316
 			$moduleInfo = self::getModuleInfoForLanguage($language);
317 317
 			$module    = $moduleInfo['module'];
318 318
 			$language  = $moduleInfo['language'];
319
-			if(! empty($moduleInfo['file'])){
319
+			if (!empty($moduleInfo['file'])) {
320 320
 				$file = $moduleInfo['file'];
321 321
 			}
322 322
 			$moduleLanguagePath = Module::findLanguageFullPath($language, $appLang, $module);
323
-			if ($moduleLanguagePath){
324
-				$logger->info('Found language [' . $language . '] from module [' .$module. '], the file path is [' .$moduleLanguagePath. '] we will used it');
323
+			if ($moduleLanguagePath) {
324
+				$logger->info('Found language [' . $language . '] from module [' . $module . '], the file path is [' . $moduleLanguagePath . '] we will used it');
325 325
 				$languageFilePath = $moduleLanguagePath;
326 326
 			}
327
-			else{
327
+			else {
328 328
 				$logger->info('Cannot find language [' . $language . '] from modules using the default location');
329 329
 			}
330
-			if (! $languageFilePath){
330
+			if (!$languageFilePath) {
331 331
 				$searchDir = array(APP_LANG_PATH, CORE_LANG_PATH);
332
-				foreach($searchDir as $dir){
332
+				foreach ($searchDir as $dir) {
333 333
 					$filePath = $dir . $appLang . DS . $file;
334
-					if (file_exists($filePath)){
334
+					if (file_exists($filePath)) {
335 335
 						$languageFilePath = $filePath;
336 336
 						//already found no need continue
337 337
 						break;
@@ -347,14 +347,14 @@  discard block
 block discarded – undo
347 347
 		 * if can not found will use the default value from configuration
348 348
 		 * @return string the app language like "en", "fr"
349 349
 		 */
350
-		protected static function getAppLang(){
350
+		protected static function getAppLang() {
351 351
 			//determine the current language
352 352
 			$appLang = get_config('default_language');
353 353
 			//if the language exists in the cookie use it
354 354
 			$cfgKey = get_config('language_cookie_name');
355 355
 			$objCookie = & class_loader('Cookie');
356 356
 			$cookieLang = $objCookie->get($cfgKey);
357
-			if ($cookieLang){
357
+			if ($cookieLang) {
358 358
 				$appLang = $cookieLang;
359 359
 			}
360 360
 			return $appLang;
@@ -368,20 +368,20 @@  discard block
 block discarded – undo
368 368
 		 * 	'class' => 'class_name'
369 369
 		 * )
370 370
 		 */
371
-		protected static function getModuleInfoForModelLibrary($class){
371
+		protected static function getModuleInfoForModelLibrary($class) {
372 372
 			$module = null;
373 373
 			$obj = & get_instance();
374
-			if (strpos($class, '/') !== false){
374
+			if (strpos($class, '/') !== false) {
375 375
 				$path = explode('/', $class);
376
-				if (isset($path[0]) && in_array($path[0], Module::getModuleList())){
376
+				if (isset($path[0]) && in_array($path[0], Module::getModuleList())) {
377 377
 					$module = $path[0];
378 378
 					$class = ucfirst($path[1]);
379 379
 				}
380 380
 			}
381
-			else{
381
+			else {
382 382
 				$class = ucfirst($class);
383 383
 			}
384
-			if (! $module && !empty($obj->moduleName)){
384
+			if (!$module && !empty($obj->moduleName)) {
385 385
 				$module = $obj->moduleName;
386 386
 			}
387 387
 			return array(
@@ -400,20 +400,20 @@  discard block
 block discarded – undo
400 400
 		 * 	'file' => 'file'
401 401
 		 * )
402 402
 		 */
403
-		protected static function getModuleInfoForFunction($function){
403
+		protected static function getModuleInfoForFunction($function) {
404 404
 			$module = null;
405 405
 			$file = null;
406 406
 			$obj = & get_instance();
407 407
 			//check if the request class contains module name
408
-			if (strpos($function, '/') !== false){
408
+			if (strpos($function, '/') !== false) {
409 409
 				$path = explode('/', $function);
410
-				if (isset($path[0]) && in_array($path[0], Module::getModuleList())){
410
+				if (isset($path[0]) && in_array($path[0], Module::getModuleList())) {
411 411
 					$module = $path[0];
412 412
 					$function = 'function_' . $path[1];
413
-					$file = $path[0] . DS . $function.'.php';
413
+					$file = $path[0] . DS . $function . '.php';
414 414
 				}
415 415
 			}
416
-			if (! $module && !empty($obj->moduleName)){
416
+			if (!$module && !empty($obj->moduleName)) {
417 417
 				$module = $obj->moduleName;
418 418
 			}
419 419
 			return array(
@@ -433,20 +433,20 @@  discard block
 block discarded – undo
433 433
 		 * 	'file' => 'file'
434 434
 		 * )
435 435
 		 */
436
-		protected static function getModuleInfoForLanguage($language){
436
+		protected static function getModuleInfoForLanguage($language) {
437 437
 			$module = null;
438 438
 			$file = null;
439 439
 			$obj = & get_instance();
440 440
 			//check if the request class contains module name
441
-			if (strpos($language, '/') !== false){
441
+			if (strpos($language, '/') !== false) {
442 442
 				$path = explode('/', $language);
443
-				if (isset($path[0]) && in_array($path[0], Module::getModuleList())){
443
+				if (isset($path[0]) && in_array($path[0], Module::getModuleList())) {
444 444
 					$module = $path[0];
445 445
 					$language = 'lang_' . $path[1] . '.php';
446
-					$file = $path[0] . DS .$language;
446
+					$file = $path[0] . DS . $language;
447 447
 				}
448 448
 			}
449
-			if (! $module && !empty($obj->moduleName)){
449
+			if (!$module && !empty($obj->moduleName)) {
450 450
 				$module = $obj->moduleName;
451 451
 			}
452 452
 			return array(
@@ -466,18 +466,18 @@  discard block
 block discarded – undo
466 466
 		 * 	'filename' => 'filename'
467 467
 		 * )
468 468
 		 */
469
-		protected static function getModuleInfoForConfig($filename){
469
+		protected static function getModuleInfoForConfig($filename) {
470 470
 			$module = null;
471 471
 			$obj = & get_instance();
472 472
 			//check if the request class contains module name
473
-			if (strpos($filename, '/') !== false){
473
+			if (strpos($filename, '/') !== false) {
474 474
 				$path = explode('/', $filename);
475
-				if (isset($path[0]) && in_array($path[0], Module::getModuleList())){
475
+				if (isset($path[0]) && in_array($path[0], Module::getModuleList())) {
476 476
 					$module = $path[0];
477 477
 					$filename = $path[1] . '.php';
478 478
 				}
479 479
 			}
480
-			if (! $module && !empty($obj->moduleName)){
480
+			if (!$module && !empty($obj->moduleName)) {
481 481
 				$module = $obj->moduleName;
482 482
 			}
483 483
 			return array(
@@ -491,16 +491,16 @@  discard block
 block discarded – undo
491 491
 		 * @param  string $class the class name to determine the instance
492 492
 		 * @return string        the instance name
493 493
 		 */
494
-		protected static function getModelLibraryInstanceName($class){
494
+		protected static function getModelLibraryInstanceName($class) {
495 495
 			//for module
496 496
 			$instance = null;
497
-			if (strpos($class, '/') !== false){
497
+			if (strpos($class, '/') !== false) {
498 498
 				$path = explode('/', $class);
499
-				if (isset($path[1])){
499
+				if (isset($path[1])) {
500 500
 					$instance = strtolower($path[1]);
501 501
 				}
502 502
 			}
503
-			else{
503
+			else {
504 504
 				$instance = strtolower($class);
505 505
 			}
506 506
 			return $instance;
@@ -511,7 +511,7 @@  discard block
 block discarded – undo
511 511
 		 * @param  string $class the class name
512 512
 		 * @return string|null        the library file path otherwise null will be returned
513 513
 		 */
514
-		protected static function getLibraryPathUsingModuleInfo($class){
514
+		protected static function getLibraryPathUsingModuleInfo($class) {
515 515
 			$logger = static::getLogger();
516 516
 			$libraryFilePath = null;
517 517
 			$logger->debug('Checking library [' . $class . '] from module list ...');
@@ -519,11 +519,11 @@  discard block
 block discarded – undo
519 519
 			$module = $moduleInfo['module'];
520 520
 			$class  = $moduleInfo['class'];
521 521
 			$moduleLibraryPath = Module::findLibraryFullPath($class, $module);
522
-			if ($moduleLibraryPath){
523
-				$logger->info('Found library [' . $class . '] from module [' .$module. '], the file path is [' .$moduleLibraryPath. '] we will used it');
522
+			if ($moduleLibraryPath) {
523
+				$logger->info('Found library [' . $class . '] from module [' . $module . '], the file path is [' . $moduleLibraryPath . '] we will used it');
524 524
 				$libraryFilePath = $moduleLibraryPath;
525 525
 			}
526
-			else{
526
+			else {
527 527
 				$logger->info('Cannot find library [' . $class . '] from modules using the default location');
528 528
 			}
529 529
 			return $libraryFilePath;
@@ -537,22 +537,22 @@  discard block
 block discarded – undo
537 537
 		 * @param  array  $params          the parameter to use
538 538
 		 * @return void
539 539
 		 */
540
-		protected static function loadLibrary($libraryFilePath, $class, $instance, $params = array()){
541
-			if ($libraryFilePath){
540
+		protected static function loadLibrary($libraryFilePath, $class, $instance, $params = array()) {
541
+			if ($libraryFilePath) {
542 542
 				$logger = static::getLogger();
543 543
 				require_once $libraryFilePath;
544
-				if (class_exists($class)){
544
+				if (class_exists($class)) {
545 545
 					$c = $params ? new $class($params) : new $class();
546 546
 					$obj = & get_instance();
547 547
 					$obj->{$instance} = $c;
548 548
 					static::$loaded[$instance] = $class;
549 549
 					$logger->info('Library [' . $class . '] --> ' . $libraryFilePath . ' loaded successfully.');
550 550
 				}
551
-				else{
552
-					show_error('The file '.$libraryFilePath.' exists but does not contain the class '.$class);
551
+				else {
552
+					show_error('The file ' . $libraryFilePath . ' exists but does not contain the class ' . $class);
553 553
 				}
554 554
 			}
555
-			else{
555
+			else {
556 556
 				show_error('Unable to find library class [' . $class . ']');
557 557
 			}
558 558
 		}
@@ -563,15 +563,15 @@  discard block
 block discarded – undo
563 563
 		 * @param  string $language           the language name
564 564
 		 * @return void
565 565
 		 */
566
-		protected static function loadLanguage($languageFilePath, $language){
567
-			if ($languageFilePath){
566
+		protected static function loadLanguage($languageFilePath, $language) {
567
+			if ($languageFilePath) {
568 568
 				$logger = static::getLogger();
569 569
 				$lang = array();
570 570
 				require_once $languageFilePath;
571
-				if (! empty($lang) && is_array($lang)){
572
-					$logger->info('Language file  [' .$languageFilePath. '] contains the valid languages keys add them to language list');
571
+				if (!empty($lang) && is_array($lang)) {
572
+					$logger->info('Language file  [' . $languageFilePath . '] contains the valid languages keys add them to language list');
573 573
 					//Note: may be here the class 'Lang' not yet loaded
574
-					$langObj =& class_loader('Lang', 'classes');
574
+					$langObj = & class_loader('Lang', 'classes');
575 575
 					$langObj->addLangMessages($lang);
576 576
 					//free the memory
577 577
 					unset($lang);
@@ -579,7 +579,7 @@  discard block
 block discarded – undo
579 579
 				static::$loaded['lang_' . $language] = $languageFilePath;
580 580
 				$logger->info('Language [' . $language . '] --> ' . $languageFilePath . ' loaded successfully.');
581 581
 			}
582
-			else{
582
+			else {
583 583
 				show_error('Unable to find language [' . $language . ']');
584 584
 			}
585 585
 		}
@@ -588,7 +588,7 @@  discard block
 block discarded – undo
588 588
 		 * Get all the autoload using the configuration file
589 589
 		 * @return array
590 590
 		 */
591
-		private function getResourcesFromAutoloadConfig(){
591
+		private function getResourcesFromAutoloadConfig() {
592 592
 			$autoloads = array();
593 593
 			$autoloads['config']    = array();
594 594
 			$autoloads['languages'] = array();
@@ -596,17 +596,17 @@  discard block
 block discarded – undo
596 596
 			$autoloads['models']    = array();
597 597
 			$autoloads['functions'] = array();
598 598
 			//loading of the resources from autoload configuration file
599
-			if (file_exists(CONFIG_PATH . 'autoload.php')){
599
+			if (file_exists(CONFIG_PATH . 'autoload.php')) {
600 600
 				$autoload = array();
601 601
 				require_once CONFIG_PATH . 'autoload.php';
602
-				if (! empty($autoload) && is_array($autoload)){
602
+				if (!empty($autoload) && is_array($autoload)) {
603 603
 					$autoloads = array_merge($autoloads, $autoload);
604 604
 					unset($autoload);
605 605
 				}
606 606
 			}
607 607
 			//loading autoload configuration for modules
608 608
 			$modulesAutoloads = Module::getModulesAutoloadConfig();
609
-			if (! empty($modulesAutoloads) && is_array($modulesAutoloads)){
609
+			if (!empty($modulesAutoloads) && is_array($modulesAutoloads)) {
610 610
 				$autoloads = array_merge_recursive($autoloads, $modulesAutoloads);
611 611
 			}
612 612
 			return $autoloads;
@@ -616,7 +616,7 @@  discard block
 block discarded – undo
616 616
 		 * Load the autoload configuration
617 617
 		 * @return void
618 618
 		 */
619
-		private function loadResourcesFromAutoloadConfig(){
619
+		private function loadResourcesFromAutoloadConfig() {
620 620
 			$autoloads = array();
621 621
 			$autoloads['config']    = array();
622 622
 			$autoloads['languages'] = array();
@@ -649,7 +649,7 @@  discard block
 block discarded – undo
649 649
 		 * @param  array  $resources the resource to load
650 650
 		 * @return void            
651 651
 		 */
652
-		private function loadAutoloadResourcesArray($method, array $resources){
652
+		private function loadAutoloadResourcesArray($method, array $resources) {
653 653
 			foreach ($resources as $name) {
654 654
 				$this->{$method}($name);
655 655
 			}
Please login to merge, or discard this patch.
core/libraries/Form.php 2 patches
Indentation   +294 added lines, -294 removed lines patch added patch discarded remove patch
@@ -1,322 +1,322 @@
 block discarded – undo
1 1
 <?php
2
-	defined('ROOT_PATH') || exit('Access denied');
3
-	/**
4
-	 * TNH Framework
5
-	 *
6
-	 * A simple PHP framework using HMVC architecture
7
-	 *
8
-	 * This content is released under the GNU GPL License (GPL)
9
-	 *
10
-	 * Copyright (C) 2017 Tony NGUEREZA
11
-	 *
12
-	 * This program is free software; you can redistribute it and/or
13
-	 * modify it under the terms of the GNU General Public License
14
-	 * as published by the Free Software Foundation; either version 3
15
-	 * of the License, or (at your option) any later version.
16
-	 *
17
-	 * This program is distributed in the hope that it will be useful,
18
-	 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
-	 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
-	 * GNU General Public License for more details.
21
-	 *
22
-	 * You should have received a copy of the GNU General Public License
23
-	 * along with this program; if not, write to the Free Software
24
-	 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
-	*/
2
+    defined('ROOT_PATH') || exit('Access denied');
3
+    /**
4
+     * TNH Framework
5
+     *
6
+     * A simple PHP framework using HMVC architecture
7
+     *
8
+     * This content is released under the GNU GPL License (GPL)
9
+     *
10
+     * Copyright (C) 2017 Tony NGUEREZA
11
+     *
12
+     * This program is free software; you can redistribute it and/or
13
+     * modify it under the terms of the GNU General Public License
14
+     * as published by the Free Software Foundation; either version 3
15
+     * of the License, or (at your option) any later version.
16
+     *
17
+     * This program is distributed in the hope that it will be useful,
18
+     * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
+     * GNU General Public License for more details.
21
+     *
22
+     * You should have received a copy of the GNU General Public License
23
+     * along with this program; if not, write to the Free Software
24
+     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
+     */
26 26
 
27 27
 
28
-	class Form{
28
+    class Form{
29 29
 
30
-		/**
31
-		 * Generate the form opened tag
32
-		 * @param  string $path       the form action path
33
-		 * @param  array  $attributes the additional form attributes
34
-		 * @param  string $method     the form method like 'GET', 'POST'
35
-		 * @param  string $enctype    the form enctype like "multipart/form-data"
36
-		 * @return string             the generated form html
37
-		 */
38
-		public static function open($path = null, array $attributes = array(), $method = 'POST', $enctype = null){
39
-			if($path){
40
-				$path = Url::site_url($path);
41
-			}
42
-			$method = strtoupper($method);
43
-			$str = null;
44
-			$str .= '<form action = "'.$path.'" method = "'.$method.'"';
45
-			if(! empty($enctype)){
46
-				$str .= ' enctype = "'.$enctype.'" ';
47
-			}
48
-			if(! isset($attributes['accept-charset'])){
49
-				$attributes['accept-charset'] = get_config('charset', 'utf-8');
50
-			}
51
-			$str .= attributes_to_string($attributes);
52
-			$str .= '>';
53
-			//if CSRF is enabled in the configuration
54
-			if(get_config('csrf_enable', false) && $method == 'POST'){
55
-				$csrfValue = Security::generateCSRF();
56
-				$csrfName = get_config('csrf_key', 'csrf_key');
57
-				$str .= static::hidden($csrfName, $csrfValue);
58
-			}
59
-			return $str;
60
-		}
30
+        /**
31
+         * Generate the form opened tag
32
+         * @param  string $path       the form action path
33
+         * @param  array  $attributes the additional form attributes
34
+         * @param  string $method     the form method like 'GET', 'POST'
35
+         * @param  string $enctype    the form enctype like "multipart/form-data"
36
+         * @return string             the generated form html
37
+         */
38
+        public static function open($path = null, array $attributes = array(), $method = 'POST', $enctype = null){
39
+            if($path){
40
+                $path = Url::site_url($path);
41
+            }
42
+            $method = strtoupper($method);
43
+            $str = null;
44
+            $str .= '<form action = "'.$path.'" method = "'.$method.'"';
45
+            if(! empty($enctype)){
46
+                $str .= ' enctype = "'.$enctype.'" ';
47
+            }
48
+            if(! isset($attributes['accept-charset'])){
49
+                $attributes['accept-charset'] = get_config('charset', 'utf-8');
50
+            }
51
+            $str .= attributes_to_string($attributes);
52
+            $str .= '>';
53
+            //if CSRF is enabled in the configuration
54
+            if(get_config('csrf_enable', false) && $method == 'POST'){
55
+                $csrfValue = Security::generateCSRF();
56
+                $csrfName = get_config('csrf_key', 'csrf_key');
57
+                $str .= static::hidden($csrfName, $csrfValue);
58
+            }
59
+            return $str;
60
+        }
61 61
 
62
-		/**
63
-		 * Generate the form opened tag for multipart like to send a file
64
-		 * @see Form::open() for more details
65
-		 * @return string the generated multipart form html
66
-		 */
67
-		public static function openMultipart($path = null, array $attributes = array(), $method = 'POST'){
68
-			return self::open($path, $attributes, $method, 'multipart/form-data');
69
-		}
62
+        /**
63
+         * Generate the form opened tag for multipart like to send a file
64
+         * @see Form::open() for more details
65
+         * @return string the generated multipart form html
66
+         */
67
+        public static function openMultipart($path = null, array $attributes = array(), $method = 'POST'){
68
+            return self::open($path, $attributes, $method, 'multipart/form-data');
69
+        }
70 70
 
71
-		/**
72
-		 * Generate the form close
73
-		 * @return string the form close html
74
-		 */
75
-		public static function close(){
76
-			return '</form>';
77
-		}
71
+        /**
72
+         * Generate the form close
73
+         * @return string the form close html
74
+         */
75
+        public static function close(){
76
+            return '</form>';
77
+        }
78 78
 
79
-		/**
80
-		 * Generate the form fieldset & legend
81
-		 * @param  string $legend the legend tag value
82
-		 * @param  array  $fieldsetAttributes the fieldset additional HTML attributes
83
-		 * @param  array  $legendAttributes the legend additional HTML attributes. Is used only is $legend is not empty
84
-		 * @return string         the generated fieldset value
85
-		 */
86
-		public static function fieldset($legend = '', array $fieldsetAttributes = array(), array $legendAttributes = array()){
87
-			$str = '<fieldset' . attributes_to_string($fieldsetAttributes) . '>';
88
-			if($legend){
89
-				$str .= '<legend' . attributes_to_string($legendAttributes) . '>'.$legend.'</legend>';
90
-			}
91
-			return $str;
92
-		}
79
+        /**
80
+         * Generate the form fieldset & legend
81
+         * @param  string $legend the legend tag value
82
+         * @param  array  $fieldsetAttributes the fieldset additional HTML attributes
83
+         * @param  array  $legendAttributes the legend additional HTML attributes. Is used only is $legend is not empty
84
+         * @return string         the generated fieldset value
85
+         */
86
+        public static function fieldset($legend = '', array $fieldsetAttributes = array(), array $legendAttributes = array()){
87
+            $str = '<fieldset' . attributes_to_string($fieldsetAttributes) . '>';
88
+            if($legend){
89
+                $str .= '<legend' . attributes_to_string($legendAttributes) . '>'.$legend.'</legend>';
90
+            }
91
+            return $str;
92
+        }
93 93
 
94
-		/**
95
-		 * Generate the fieldset close tag
96
-		 * @return string the generated html for fieldset close
97
-		 */
98
-		public static function fieldsetClose(){
99
-			return '</fieldset>';
100
-		}
94
+        /**
95
+         * Generate the fieldset close tag
96
+         * @return string the generated html for fieldset close
97
+         */
98
+        public static function fieldsetClose(){
99
+            return '</fieldset>';
100
+        }
101 101
 
102
-		/**
103
-		 * Get the error message for the given form field name.
104
-		 * This use the form validation information to get the error information.
105
-		 * @param  string $name the form field name
106
-		 * @return string       the error message if exists and null if not
107
-		 */
108
-		public static function error($name){
109
-			$return = null;
110
-			$obj = & get_instance();
111
-			if(isset($obj->formvalidation)){
112
-				$errors = $obj->formvalidation->returnErrors();
113
-				if(isset($errors[$name])){
114
-					list($errorStart, $errorEnd) = $obj->formvalidation->getErrorDelimiter();
115
-					$return = $errorStart . $errors[$name] . $errorEnd;
116
-				}
117
-			}
118
-			return $return;
119
-		}
102
+        /**
103
+         * Get the error message for the given form field name.
104
+         * This use the form validation information to get the error information.
105
+         * @param  string $name the form field name
106
+         * @return string       the error message if exists and null if not
107
+         */
108
+        public static function error($name){
109
+            $return = null;
110
+            $obj = & get_instance();
111
+            if(isset($obj->formvalidation)){
112
+                $errors = $obj->formvalidation->returnErrors();
113
+                if(isset($errors[$name])){
114
+                    list($errorStart, $errorEnd) = $obj->formvalidation->getErrorDelimiter();
115
+                    $return = $errorStart . $errors[$name] . $errorEnd;
116
+                }
117
+            }
118
+            return $return;
119
+        }
120 120
 
121
-		/**
122
-		 * Get the form field value
123
-		 * @param  string $name    the form field name
124
-		 * @param  mixed $default the default value if can not found the given form field name
125
-		 * @return mixed the form field value if is set, otherwise return the default value.
126
-		 */
127
-		public static function value($name, $default = null){
128
-			$value = get_instance()->request->query($name);
129
-			if(strlen($value) > 0){
130
-				return $value;
131
-			}
132
-			return $default;
133
-		}
121
+        /**
122
+         * Get the form field value
123
+         * @param  string $name    the form field name
124
+         * @param  mixed $default the default value if can not found the given form field name
125
+         * @return mixed the form field value if is set, otherwise return the default value.
126
+         */
127
+        public static function value($name, $default = null){
128
+            $value = get_instance()->request->query($name);
129
+            if(strlen($value) > 0){
130
+                return $value;
131
+            }
132
+            return $default;
133
+        }
134 134
 
135
-		/**
136
-		 * Generate the form label html content
137
-		 * @param  string $label      the title of the label
138
-		 * @param  string $for        the value of the label "for" attribute
139
-		 * @param  array  $attributes the additional attributes to be added
140
-		 * @return string the generated label html content
141
-		 */
142
-		public static function label($label, $for = '', array $attributes = array()){
143
-			$str = '<label';
144
-			if($for){
145
-				$str .= ' for = "'.$for.'"';
146
-			}
147
-			$str .= attributes_to_string($attributes);
148
-			$str .= '>';
149
-			$str .= $label.'</label>';
150
-			return $str;
151
-		}
135
+        /**
136
+         * Generate the form label html content
137
+         * @param  string $label      the title of the label
138
+         * @param  string $for        the value of the label "for" attribute
139
+         * @param  array  $attributes the additional attributes to be added
140
+         * @return string the generated label html content
141
+         */
142
+        public static function label($label, $for = '', array $attributes = array()){
143
+            $str = '<label';
144
+            if($for){
145
+                $str .= ' for = "'.$for.'"';
146
+            }
147
+            $str .= attributes_to_string($attributes);
148
+            $str .= '>';
149
+            $str .= $label.'</label>';
150
+            return $str;
151
+        }
152 152
 
153
-		/**
154
-		 * Generate the form field for input like "text", "email", "password", etc.
155
-		 * @param  string $name       the form field name
156
-		 * @param  mixed $value      the form field value to be set
157
-		 * @param  array  $attributes the additional attributes to be added in the form input
158
-		 * @param  string $type       the type of the form field (password, text, submit, button, etc.)
159
-		 * @return string             the generated form field html content for the input
160
-		 */
161
-		public static function input($name, $value = null, array $attributes = array(), $type = 'text'){
162
-			$str = null;
163
-			$str .= '<input name = "'.$name.'" value = "'.$value.'" type = "'.$type.'"';
164
-			$str .= attributes_to_string($attributes);
165
-			$str .= '/>';
166
-			return $str;
167
-		}
153
+        /**
154
+         * Generate the form field for input like "text", "email", "password", etc.
155
+         * @param  string $name       the form field name
156
+         * @param  mixed $value      the form field value to be set
157
+         * @param  array  $attributes the additional attributes to be added in the form input
158
+         * @param  string $type       the type of the form field (password, text, submit, button, etc.)
159
+         * @return string             the generated form field html content for the input
160
+         */
161
+        public static function input($name, $value = null, array $attributes = array(), $type = 'text'){
162
+            $str = null;
163
+            $str .= '<input name = "'.$name.'" value = "'.$value.'" type = "'.$type.'"';
164
+            $str .= attributes_to_string($attributes);
165
+            $str .= '/>';
166
+            return $str;
167
+        }
168 168
 		
169
-		/**
170
-		 * Generate the form field for "text"
171
-		 * @see Form::input() for more details
172
-		 */
173
-		public static function text($name, $value = null, array $attributes = array()){
174
-			return self::input($name, $value, $attributes, 'text');
175
-		}
169
+        /**
170
+         * Generate the form field for "text"
171
+         * @see Form::input() for more details
172
+         */
173
+        public static function text($name, $value = null, array $attributes = array()){
174
+            return self::input($name, $value, $attributes, 'text');
175
+        }
176 176
 
177
-		/**
178
-		 * Generate the form field for "password"
179
-		 * @see Form::input() for more details
180
-		 */
181
-		public static function password($name, $value = null, array $attributes = array()){
182
-			return self::input($name, $value, $attributes, 'password');
183
-		}
177
+        /**
178
+         * Generate the form field for "password"
179
+         * @see Form::input() for more details
180
+         */
181
+        public static function password($name, $value = null, array $attributes = array()){
182
+            return self::input($name, $value, $attributes, 'password');
183
+        }
184 184
 
185
-		/**
186
-		 * Generate the form field for "radio"
187
-		 * @see Form::input() for more details
188
-		 */
189
-		public static function radio($name, $value = null,  $checked = false, array $attributes = array()){
190
-			if($checked){
191
-				$attributes['checked'] = true;
192
-			}
193
-			return self::input($name, $value, $attributes, 'radio');
194
-		}
185
+        /**
186
+         * Generate the form field for "radio"
187
+         * @see Form::input() for more details
188
+         */
189
+        public static function radio($name, $value = null,  $checked = false, array $attributes = array()){
190
+            if($checked){
191
+                $attributes['checked'] = true;
192
+            }
193
+            return self::input($name, $value, $attributes, 'radio');
194
+        }
195 195
 
196
-		/**
197
-		 * Generate the form field for "checkbox"
198
-		 * @see Form::input() for more details
199
-		 */
200
-		public static function checkbox($name, $value = null, $checked = false, array $attributes = array()){
201
-			if($checked){
202
-				$attributes['checked'] = true;
203
-			}
204
-			return self::input($name, $value, $attributes, 'checkbox');
205
-		}
196
+        /**
197
+         * Generate the form field for "checkbox"
198
+         * @see Form::input() for more details
199
+         */
200
+        public static function checkbox($name, $value = null, $checked = false, array $attributes = array()){
201
+            if($checked){
202
+                $attributes['checked'] = true;
203
+            }
204
+            return self::input($name, $value, $attributes, 'checkbox');
205
+        }
206 206
 
207
-		/**
208
-		 * Generate the form field for "number"
209
-		 * @see Form::input() for more details
210
-		 */
211
-		public static function number($name, $value = null, array $attributes = array()){
212
-			return self::input($name, $value, $attributes, 'number');
213
-		}
207
+        /**
208
+         * Generate the form field for "number"
209
+         * @see Form::input() for more details
210
+         */
211
+        public static function number($name, $value = null, array $attributes = array()){
212
+            return self::input($name, $value, $attributes, 'number');
213
+        }
214 214
 
215
-		/**
216
-		 * Generate the form field for "phone"
217
-		 * @see Form::input() for more details
218
-		 */
219
-		public static function phone($name, $value = null, array $attributes = array()){
220
-			return self::input($name, $value, $attributes, 'phone');
221
-		}
215
+        /**
216
+         * Generate the form field for "phone"
217
+         * @see Form::input() for more details
218
+         */
219
+        public static function phone($name, $value = null, array $attributes = array()){
220
+            return self::input($name, $value, $attributes, 'phone');
221
+        }
222 222
 
223
-		/**
224
-		 * Generate the form field for "email"
225
-		 * @see Form::input() for more details
226
-		 */
227
-		public static function email($name, $value = null, array $attributes = array()){
228
-			return self::input($name, $value, $attributes, 'email');
229
-		}
223
+        /**
224
+         * Generate the form field for "email"
225
+         * @see Form::input() for more details
226
+         */
227
+        public static function email($name, $value = null, array $attributes = array()){
228
+            return self::input($name, $value, $attributes, 'email');
229
+        }
230 230
 		
231
-		/**
232
-		 * Generate the form field for "search"
233
-		 * @see Form::input() for more details
234
-		 */
235
-		public static function search($name, $value = null, array $attributes = array()){
236
-			return self::input($name, $value, $attributes, 'search');
237
-		}
231
+        /**
232
+         * Generate the form field for "search"
233
+         * @see Form::input() for more details
234
+         */
235
+        public static function search($name, $value = null, array $attributes = array()){
236
+            return self::input($name, $value, $attributes, 'search');
237
+        }
238 238
 		
239
-		/**
240
-		 * Generate the form field for "hidden"
241
-		 * @see Form::input() for more details
242
-		 */
243
-		public static function hidden($name, $value = null, array $attributes = array()){
244
-			return self::input($name, $value, $attributes, 'hidden');
245
-		}
239
+        /**
240
+         * Generate the form field for "hidden"
241
+         * @see Form::input() for more details
242
+         */
243
+        public static function hidden($name, $value = null, array $attributes = array()){
244
+            return self::input($name, $value, $attributes, 'hidden');
245
+        }
246 246
 		
247
-		/**
248
-		 * Generate the form field for "file"
249
-		 * @see Form::input() for more details
250
-		 */
251
-		public static function file($name, array $attributes = array()){
252
-			return self::input($name, null, $attributes, 'file');
253
-		}
247
+        /**
248
+         * Generate the form field for "file"
249
+         * @see Form::input() for more details
250
+         */
251
+        public static function file($name, array $attributes = array()){
252
+            return self::input($name, null, $attributes, 'file');
253
+        }
254 254
 		
255
-		/**
256
-		 * Generate the form field for "button"
257
-		 * @see Form::input() for more details
258
-		 */
259
-		public static function button($name, $value = null, array $attributes = array()){
260
-			return self::input($name, $value, $attributes, 'button');
261
-		}
255
+        /**
256
+         * Generate the form field for "button"
257
+         * @see Form::input() for more details
258
+         */
259
+        public static function button($name, $value = null, array $attributes = array()){
260
+            return self::input($name, $value, $attributes, 'button');
261
+        }
262 262
 		
263
-		/**
264
-		 * Generate the form field for "reset"
265
-		 * @see Form::input() for more details
266
-		 */
267
-		public static function reset($name, $value = null, array $attributes = array()){
268
-			return self::input($name, $value, $attributes, 'reset');
269
-		}
263
+        /**
264
+         * Generate the form field for "reset"
265
+         * @see Form::input() for more details
266
+         */
267
+        public static function reset($name, $value = null, array $attributes = array()){
268
+            return self::input($name, $value, $attributes, 'reset');
269
+        }
270 270
 		
271
-		/**
272
-		 * Generate the form field for "submit"
273
-		 * @see Form::input() for more details
274
-		 */
275
-		public static function submit($name, $value = null, array $attributes = array()){
276
-			return self::input($name, $value, $attributes, 'submit');
277
-		}
271
+        /**
272
+         * Generate the form field for "submit"
273
+         * @see Form::input() for more details
274
+         */
275
+        public static function submit($name, $value = null, array $attributes = array()){
276
+            return self::input($name, $value, $attributes, 'submit');
277
+        }
278 278
 
279
-		/**
280
-		 * Generate the form field for textarea
281
-		 * @param  string $name       the name of the textarea field
282
-		 * @param  string $value      the textarea field value
283
-		 * @param  array  $attributes the additional attributes to be added
284
-		 * @return string             the generated textarea form html content
285
-		 */
286
-		public static function textarea($name, $value = '', array $attributes = array()){
287
-			$str = null;
288
-			$str .= '<textarea name = "'.$name.'"';
289
-			$str .= attributes_to_string($attributes);
290
-			$str .= '>';
291
-			$str .= $value.'</textarea>';
292
-			return $str;
293
-		}
279
+        /**
280
+         * Generate the form field for textarea
281
+         * @param  string $name       the name of the textarea field
282
+         * @param  string $value      the textarea field value
283
+         * @param  array  $attributes the additional attributes to be added
284
+         * @return string             the generated textarea form html content
285
+         */
286
+        public static function textarea($name, $value = '', array $attributes = array()){
287
+            $str = null;
288
+            $str .= '<textarea name = "'.$name.'"';
289
+            $str .= attributes_to_string($attributes);
290
+            $str .= '>';
291
+            $str .= $value.'</textarea>';
292
+            return $str;
293
+        }
294 294
 		
295
-		/**
296
-		 * Generate the form field for select
297
-		 * @param  string $name       the name of the form field
298
-		 * @param  mixed|array $values      the values used to populate the "option" tags
299
-		 * @param  mixed $selected   the selected value in the option list
300
-		 * @param  array  $attributes the additional attribute to be added
301
-		 * @return string             the generated form field html content for select
302
-		 */
303
-		public static function select($name, $values = null, $selected = null, array $attributes = array()){
304
-			if(! is_array($values)){
305
-				$values = array('' => $values);
306
-			}
307
-			$str = null;
308
-			$str .= '<select name = "'.$name.'"';
309
-			$str .= attributes_to_string($attributes);
310
-			$str .= '>';
311
-			foreach($values as $key => $val){
312
-				$select = '';
313
-				if($key == $selected){
314
-					$select = 'selected';
315
-				}
316
-				$str .= '<option value = "'.$key.'" '.$select.'>'.$val.'</option>';
317
-			}
318
-			$str .= '</select>';
319
-			return $str;
320
-		}
295
+        /**
296
+         * Generate the form field for select
297
+         * @param  string $name       the name of the form field
298
+         * @param  mixed|array $values      the values used to populate the "option" tags
299
+         * @param  mixed $selected   the selected value in the option list
300
+         * @param  array  $attributes the additional attribute to be added
301
+         * @return string             the generated form field html content for select
302
+         */
303
+        public static function select($name, $values = null, $selected = null, array $attributes = array()){
304
+            if(! is_array($values)){
305
+                $values = array('' => $values);
306
+            }
307
+            $str = null;
308
+            $str .= '<select name = "'.$name.'"';
309
+            $str .= attributes_to_string($attributes);
310
+            $str .= '>';
311
+            foreach($values as $key => $val){
312
+                $select = '';
313
+                if($key == $selected){
314
+                    $select = 'selected';
315
+                }
316
+                $str .= '<option value = "'.$key.'" '.$select.'>'.$val.'</option>';
317
+            }
318
+            $str .= '</select>';
319
+            return $str;
320
+        }
321 321
 
322
-	}
322
+    }
Please login to merge, or discard this patch.
Spacing   +49 added lines, -49 removed lines patch added patch discarded remove patch
@@ -25,7 +25,7 @@  discard block
 block discarded – undo
25 25
 	*/
26 26
 
27 27
 
28
-	class Form{
28
+	class Form {
29 29
 
30 30
 		/**
31 31
 		 * Generate the form opened tag
@@ -35,23 +35,23 @@  discard block
 block discarded – undo
35 35
 		 * @param  string $enctype    the form enctype like "multipart/form-data"
36 36
 		 * @return string             the generated form html
37 37
 		 */
38
-		public static function open($path = null, array $attributes = array(), $method = 'POST', $enctype = null){
39
-			if($path){
38
+		public static function open($path = null, array $attributes = array(), $method = 'POST', $enctype = null) {
39
+			if ($path) {
40 40
 				$path = Url::site_url($path);
41 41
 			}
42 42
 			$method = strtoupper($method);
43 43
 			$str = null;
44
-			$str .= '<form action = "'.$path.'" method = "'.$method.'"';
45
-			if(! empty($enctype)){
46
-				$str .= ' enctype = "'.$enctype.'" ';
44
+			$str .= '<form action = "' . $path . '" method = "' . $method . '"';
45
+			if (!empty($enctype)) {
46
+				$str .= ' enctype = "' . $enctype . '" ';
47 47
 			}
48
-			if(! isset($attributes['accept-charset'])){
48
+			if (!isset($attributes['accept-charset'])) {
49 49
 				$attributes['accept-charset'] = get_config('charset', 'utf-8');
50 50
 			}
51 51
 			$str .= attributes_to_string($attributes);
52 52
 			$str .= '>';
53 53
 			//if CSRF is enabled in the configuration
54
-			if(get_config('csrf_enable', false) && $method == 'POST'){
54
+			if (get_config('csrf_enable', false) && $method == 'POST') {
55 55
 				$csrfValue = Security::generateCSRF();
56 56
 				$csrfName = get_config('csrf_key', 'csrf_key');
57 57
 				$str .= static::hidden($csrfName, $csrfValue);
@@ -64,7 +64,7 @@  discard block
 block discarded – undo
64 64
 		 * @see Form::open() for more details
65 65
 		 * @return string the generated multipart form html
66 66
 		 */
67
-		public static function openMultipart($path = null, array $attributes = array(), $method = 'POST'){
67
+		public static function openMultipart($path = null, array $attributes = array(), $method = 'POST') {
68 68
 			return self::open($path, $attributes, $method, 'multipart/form-data');
69 69
 		}
70 70
 
@@ -72,7 +72,7 @@  discard block
 block discarded – undo
72 72
 		 * Generate the form close
73 73
 		 * @return string the form close html
74 74
 		 */
75
-		public static function close(){
75
+		public static function close() {
76 76
 			return '</form>';
77 77
 		}
78 78
 
@@ -83,10 +83,10 @@  discard block
 block discarded – undo
83 83
 		 * @param  array  $legendAttributes the legend additional HTML attributes. Is used only is $legend is not empty
84 84
 		 * @return string         the generated fieldset value
85 85
 		 */
86
-		public static function fieldset($legend = '', array $fieldsetAttributes = array(), array $legendAttributes = array()){
86
+		public static function fieldset($legend = '', array $fieldsetAttributes = array(), array $legendAttributes = array()) {
87 87
 			$str = '<fieldset' . attributes_to_string($fieldsetAttributes) . '>';
88
-			if($legend){
89
-				$str .= '<legend' . attributes_to_string($legendAttributes) . '>'.$legend.'</legend>';
88
+			if ($legend) {
89
+				$str .= '<legend' . attributes_to_string($legendAttributes) . '>' . $legend . '</legend>';
90 90
 			}
91 91
 			return $str;
92 92
 		}
@@ -95,7 +95,7 @@  discard block
 block discarded – undo
95 95
 		 * Generate the fieldset close tag
96 96
 		 * @return string the generated html for fieldset close
97 97
 		 */
98
-		public static function fieldsetClose(){
98
+		public static function fieldsetClose() {
99 99
 			return '</fieldset>';
100 100
 		}
101 101
 
@@ -105,12 +105,12 @@  discard block
 block discarded – undo
105 105
 		 * @param  string $name the form field name
106 106
 		 * @return string       the error message if exists and null if not
107 107
 		 */
108
-		public static function error($name){
108
+		public static function error($name) {
109 109
 			$return = null;
110 110
 			$obj = & get_instance();
111
-			if(isset($obj->formvalidation)){
111
+			if (isset($obj->formvalidation)) {
112 112
 				$errors = $obj->formvalidation->returnErrors();
113
-				if(isset($errors[$name])){
113
+				if (isset($errors[$name])) {
114 114
 					list($errorStart, $errorEnd) = $obj->formvalidation->getErrorDelimiter();
115 115
 					$return = $errorStart . $errors[$name] . $errorEnd;
116 116
 				}
@@ -124,9 +124,9 @@  discard block
 block discarded – undo
124 124
 		 * @param  mixed $default the default value if can not found the given form field name
125 125
 		 * @return mixed the form field value if is set, otherwise return the default value.
126 126
 		 */
127
-		public static function value($name, $default = null){
127
+		public static function value($name, $default = null) {
128 128
 			$value = get_instance()->request->query($name);
129
-			if(strlen($value) > 0){
129
+			if (strlen($value) > 0) {
130 130
 				return $value;
131 131
 			}
132 132
 			return $default;
@@ -139,14 +139,14 @@  discard block
 block discarded – undo
139 139
 		 * @param  array  $attributes the additional attributes to be added
140 140
 		 * @return string the generated label html content
141 141
 		 */
142
-		public static function label($label, $for = '', array $attributes = array()){
142
+		public static function label($label, $for = '', array $attributes = array()) {
143 143
 			$str = '<label';
144
-			if($for){
145
-				$str .= ' for = "'.$for.'"';
144
+			if ($for) {
145
+				$str .= ' for = "' . $for . '"';
146 146
 			}
147 147
 			$str .= attributes_to_string($attributes);
148 148
 			$str .= '>';
149
-			$str .= $label.'</label>';
149
+			$str .= $label . '</label>';
150 150
 			return $str;
151 151
 		}
152 152
 
@@ -158,9 +158,9 @@  discard block
 block discarded – undo
158 158
 		 * @param  string $type       the type of the form field (password, text, submit, button, etc.)
159 159
 		 * @return string             the generated form field html content for the input
160 160
 		 */
161
-		public static function input($name, $value = null, array $attributes = array(), $type = 'text'){
161
+		public static function input($name, $value = null, array $attributes = array(), $type = 'text') {
162 162
 			$str = null;
163
-			$str .= '<input name = "'.$name.'" value = "'.$value.'" type = "'.$type.'"';
163
+			$str .= '<input name = "' . $name . '" value = "' . $value . '" type = "' . $type . '"';
164 164
 			$str .= attributes_to_string($attributes);
165 165
 			$str .= '/>';
166 166
 			return $str;
@@ -170,7 +170,7 @@  discard block
 block discarded – undo
170 170
 		 * Generate the form field for "text"
171 171
 		 * @see Form::input() for more details
172 172
 		 */
173
-		public static function text($name, $value = null, array $attributes = array()){
173
+		public static function text($name, $value = null, array $attributes = array()) {
174 174
 			return self::input($name, $value, $attributes, 'text');
175 175
 		}
176 176
 
@@ -178,7 +178,7 @@  discard block
 block discarded – undo
178 178
 		 * Generate the form field for "password"
179 179
 		 * @see Form::input() for more details
180 180
 		 */
181
-		public static function password($name, $value = null, array $attributes = array()){
181
+		public static function password($name, $value = null, array $attributes = array()) {
182 182
 			return self::input($name, $value, $attributes, 'password');
183 183
 		}
184 184
 
@@ -186,8 +186,8 @@  discard block
 block discarded – undo
186 186
 		 * Generate the form field for "radio"
187 187
 		 * @see Form::input() for more details
188 188
 		 */
189
-		public static function radio($name, $value = null,  $checked = false, array $attributes = array()){
190
-			if($checked){
189
+		public static function radio($name, $value = null, $checked = false, array $attributes = array()) {
190
+			if ($checked) {
191 191
 				$attributes['checked'] = true;
192 192
 			}
193 193
 			return self::input($name, $value, $attributes, 'radio');
@@ -197,8 +197,8 @@  discard block
 block discarded – undo
197 197
 		 * Generate the form field for "checkbox"
198 198
 		 * @see Form::input() for more details
199 199
 		 */
200
-		public static function checkbox($name, $value = null, $checked = false, array $attributes = array()){
201
-			if($checked){
200
+		public static function checkbox($name, $value = null, $checked = false, array $attributes = array()) {
201
+			if ($checked) {
202 202
 				$attributes['checked'] = true;
203 203
 			}
204 204
 			return self::input($name, $value, $attributes, 'checkbox');
@@ -208,7 +208,7 @@  discard block
 block discarded – undo
208 208
 		 * Generate the form field for "number"
209 209
 		 * @see Form::input() for more details
210 210
 		 */
211
-		public static function number($name, $value = null, array $attributes = array()){
211
+		public static function number($name, $value = null, array $attributes = array()) {
212 212
 			return self::input($name, $value, $attributes, 'number');
213 213
 		}
214 214
 
@@ -216,7 +216,7 @@  discard block
 block discarded – undo
216 216
 		 * Generate the form field for "phone"
217 217
 		 * @see Form::input() for more details
218 218
 		 */
219
-		public static function phone($name, $value = null, array $attributes = array()){
219
+		public static function phone($name, $value = null, array $attributes = array()) {
220 220
 			return self::input($name, $value, $attributes, 'phone');
221 221
 		}
222 222
 
@@ -224,7 +224,7 @@  discard block
 block discarded – undo
224 224
 		 * Generate the form field for "email"
225 225
 		 * @see Form::input() for more details
226 226
 		 */
227
-		public static function email($name, $value = null, array $attributes = array()){
227
+		public static function email($name, $value = null, array $attributes = array()) {
228 228
 			return self::input($name, $value, $attributes, 'email');
229 229
 		}
230 230
 		
@@ -232,7 +232,7 @@  discard block
 block discarded – undo
232 232
 		 * Generate the form field for "search"
233 233
 		 * @see Form::input() for more details
234 234
 		 */
235
-		public static function search($name, $value = null, array $attributes = array()){
235
+		public static function search($name, $value = null, array $attributes = array()) {
236 236
 			return self::input($name, $value, $attributes, 'search');
237 237
 		}
238 238
 		
@@ -240,7 +240,7 @@  discard block
 block discarded – undo
240 240
 		 * Generate the form field for "hidden"
241 241
 		 * @see Form::input() for more details
242 242
 		 */
243
-		public static function hidden($name, $value = null, array $attributes = array()){
243
+		public static function hidden($name, $value = null, array $attributes = array()) {
244 244
 			return self::input($name, $value, $attributes, 'hidden');
245 245
 		}
246 246
 		
@@ -248,7 +248,7 @@  discard block
 block discarded – undo
248 248
 		 * Generate the form field for "file"
249 249
 		 * @see Form::input() for more details
250 250
 		 */
251
-		public static function file($name, array $attributes = array()){
251
+		public static function file($name, array $attributes = array()) {
252 252
 			return self::input($name, null, $attributes, 'file');
253 253
 		}
254 254
 		
@@ -256,7 +256,7 @@  discard block
 block discarded – undo
256 256
 		 * Generate the form field for "button"
257 257
 		 * @see Form::input() for more details
258 258
 		 */
259
-		public static function button($name, $value = null, array $attributes = array()){
259
+		public static function button($name, $value = null, array $attributes = array()) {
260 260
 			return self::input($name, $value, $attributes, 'button');
261 261
 		}
262 262
 		
@@ -264,7 +264,7 @@  discard block
 block discarded – undo
264 264
 		 * Generate the form field for "reset"
265 265
 		 * @see Form::input() for more details
266 266
 		 */
267
-		public static function reset($name, $value = null, array $attributes = array()){
267
+		public static function reset($name, $value = null, array $attributes = array()) {
268 268
 			return self::input($name, $value, $attributes, 'reset');
269 269
 		}
270 270
 		
@@ -272,7 +272,7 @@  discard block
 block discarded – undo
272 272
 		 * Generate the form field for "submit"
273 273
 		 * @see Form::input() for more details
274 274
 		 */
275
-		public static function submit($name, $value = null, array $attributes = array()){
275
+		public static function submit($name, $value = null, array $attributes = array()) {
276 276
 			return self::input($name, $value, $attributes, 'submit');
277 277
 		}
278 278
 
@@ -283,12 +283,12 @@  discard block
 block discarded – undo
283 283
 		 * @param  array  $attributes the additional attributes to be added
284 284
 		 * @return string             the generated textarea form html content
285 285
 		 */
286
-		public static function textarea($name, $value = '', array $attributes = array()){
286
+		public static function textarea($name, $value = '', array $attributes = array()) {
287 287
 			$str = null;
288
-			$str .= '<textarea name = "'.$name.'"';
288
+			$str .= '<textarea name = "' . $name . '"';
289 289
 			$str .= attributes_to_string($attributes);
290 290
 			$str .= '>';
291
-			$str .= $value.'</textarea>';
291
+			$str .= $value . '</textarea>';
292 292
 			return $str;
293 293
 		}
294 294
 		
@@ -300,20 +300,20 @@  discard block
 block discarded – undo
300 300
 		 * @param  array  $attributes the additional attribute to be added
301 301
 		 * @return string             the generated form field html content for select
302 302
 		 */
303
-		public static function select($name, $values = null, $selected = null, array $attributes = array()){
304
-			if(! is_array($values)){
303
+		public static function select($name, $values = null, $selected = null, array $attributes = array()) {
304
+			if (!is_array($values)) {
305 305
 				$values = array('' => $values);
306 306
 			}
307 307
 			$str = null;
308
-			$str .= '<select name = "'.$name.'"';
308
+			$str .= '<select name = "' . $name . '"';
309 309
 			$str .= attributes_to_string($attributes);
310 310
 			$str .= '>';
311
-			foreach($values as $key => $val){
311
+			foreach ($values as $key => $val) {
312 312
 				$select = '';
313
-				if($key == $selected){
313
+				if ($key == $selected) {
314 314
 					$select = 'selected';
315 315
 				}
316
-				$str .= '<option value = "'.$key.'" '.$select.'>'.$val.'</option>';
316
+				$str .= '<option value = "' . $key . '" ' . $select . '>' . $val . '</option>';
317 317
 			}
318 318
 			$str .= '</select>';
319 319
 			return $str;
Please login to merge, or discard this patch.