]> jfr.im git - z_archive/KronOS.git/blob - system/core/Config.php
Fixing filestructure again
[z_archive/KronOS.git] / system / core / Config.php
1 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2 /**
3 * CodeIgniter
4 *
5 * An open source application development framework for PHP 5.1.6 or newer
6 *
7 * @package CodeIgniter
8 * @author ExpressionEngine Dev Team
9 * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.
10 * @license http://codeigniter.com/user_guide/license.html
11 * @link http://codeigniter.com
12 * @since Version 1.0
13 * @filesource
14 */
15
16 // ------------------------------------------------------------------------
17
18 /**
19 * CodeIgniter Config Class
20 *
21 * This class contains functions that enable config files to be managed
22 *
23 * @package CodeIgniter
24 * @subpackage Libraries
25 * @category Libraries
26 * @author ExpressionEngine Dev Team
27 * @link http://codeigniter.com/user_guide/libraries/config.html
28 */
29 class CI_Config {
30
31 /**
32 * List of all loaded config values
33 *
34 * @var array
35 */
36 var $config = array();
37 /**
38 * List of all loaded config files
39 *
40 * @var array
41 */
42 var $is_loaded = array();
43 /**
44 * List of paths to search when trying to load a config file
45 *
46 * @var array
47 */
48 var $_config_paths = array(APPPATH);
49
50 /**
51 * Constructor
52 *
53 * Sets the $config data from the primary config.php file as a class variable
54 *
55 * @access public
56 * @param string the config file name
57 * @param boolean if configuration values should be loaded into their own section
58 * @param boolean true if errors should just return false, false if an error message should be displayed
59 * @return boolean if the file was successfully loaded or not
60 */
61 function __construct()
62 {
63 $this->config =& get_config();
64 log_message('debug', "Config Class Initialized");
65
66 // Set the base_url automatically if none was provided
67 if ($this->config['base_url'] == '')
68 {
69 if (isset($_SERVER['HTTP_HOST']))
70 {
71 $base_url = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off' ? 'https' : 'http';
72 $base_url .= '://'. $_SERVER['HTTP_HOST'];
73 $base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
74 }
75
76 else
77 {
78 $base_url = 'http://localhost/';
79 }
80
81 $this->set_item('base_url', $base_url);
82 }
83 }
84
85 // --------------------------------------------------------------------
86
87 /**
88 * Load Config File
89 *
90 * @access public
91 * @param string the config file name
92 * @param boolean if configuration values should be loaded into their own section
93 * @param boolean true if errors should just return false, false if an error message should be displayed
94 * @return boolean if the file was loaded correctly
95 */
96 function load($file = '', $use_sections = FALSE, $fail_gracefully = FALSE)
97 {
98 $file = ($file == '') ? 'config' : str_replace('.php', '', $file);
99 $found = FALSE;
100 $loaded = FALSE;
101
102 $check_locations = defined('ENVIRONMENT')
103 ? array(ENVIRONMENT.'/'.$file, $file)
104 : array($file);
105
106 foreach ($this->_config_paths as $path)
107 {
108 foreach ($check_locations as $location)
109 {
110 $file_path = $path.'config/'.$location.'.php';
111
112 if (in_array($file_path, $this->is_loaded, TRUE))
113 {
114 $loaded = TRUE;
115 continue 2;
116 }
117
118 if (file_exists($file_path))
119 {
120 $found = TRUE;
121 break;
122 }
123 }
124
125 if ($found === FALSE)
126 {
127 continue;
128 }
129
130 include($file_path);
131
132 if ( ! isset($config) OR ! is_array($config))
133 {
134 if ($fail_gracefully === TRUE)
135 {
136 return FALSE;
137 }
138 show_error('Your '.$file_path.' file does not appear to contain a valid configuration array.');
139 }
140
141 if ($use_sections === TRUE)
142 {
143 if (isset($this->config[$file]))
144 {
145 $this->config[$file] = array_merge($this->config[$file], $config);
146 }
147 else
148 {
149 $this->config[$file] = $config;
150 }
151 }
152 else
153 {
154 $this->config = array_merge($this->config, $config);
155 }
156
157 $this->is_loaded[] = $file_path;
158 unset($config);
159
160 $loaded = TRUE;
161 log_message('debug', 'Config file loaded: '.$file_path);
162 break;
163 }
164
165 if ($loaded === FALSE)
166 {
167 if ($fail_gracefully === TRUE)
168 {
169 return FALSE;
170 }
171 show_error('The configuration file '.$file.'.php does not exist.');
172 }
173
174 return TRUE;
175 }
176
177 // --------------------------------------------------------------------
178
179 /**
180 * Fetch a config file item
181 *
182 *
183 * @access public
184 * @param string the config item name
185 * @param string the index name
186 * @param bool
187 * @return string
188 */
189 function item($item, $index = '')
190 {
191 if ($index == '')
192 {
193 if ( ! isset($this->config[$item]))
194 {
195 return FALSE;
196 }
197
198 $pref = $this->config[$item];
199 }
200 else
201 {
202 if ( ! isset($this->config[$index]))
203 {
204 return FALSE;
205 }
206
207 if ( ! isset($this->config[$index][$item]))
208 {
209 return FALSE;
210 }
211
212 $pref = $this->config[$index][$item];
213 }
214
215 return $pref;
216 }
217
218 // --------------------------------------------------------------------
219
220 /**
221 * Fetch a config file item - adds slash after item (if item is not empty)
222 *
223 * @access public
224 * @param string the config item name
225 * @param bool
226 * @return string
227 */
228 function slash_item($item)
229 {
230 if ( ! isset($this->config[$item]))
231 {
232 return FALSE;
233 }
234 if( trim($this->config[$item]) == '')
235 {
236 return '';
237 }
238
239 return rtrim($this->config[$item], '/').'/';
240 }
241
242 // --------------------------------------------------------------------
243
244 /**
245 * Site URL
246 * Returns base_url . index_page [. uri_string]
247 *
248 * @access public
249 * @param string the URI string
250 * @return string
251 */
252 function site_url($uri = '')
253 {
254 if ($uri == '')
255 {
256 return $this->slash_item('base_url').$this->item('index_page');
257 }
258
259 if ($this->item('enable_query_strings') == FALSE)
260 {
261 $suffix = ($this->item('url_suffix') == FALSE) ? '' : $this->item('url_suffix');
262 return $this->slash_item('base_url').$this->slash_item('index_page').$this->_uri_string($uri).$suffix;
263 }
264 else
265 {
266 return $this->slash_item('base_url').$this->item('index_page').'?'.$this->_uri_string($uri);
267 }
268 }
269
270 // -------------------------------------------------------------
271
272 /**
273 * Base URL
274 * Returns base_url [. uri_string]
275 *
276 * @access public
277 * @param string $uri
278 * @return string
279 */
280 function base_url($uri = '')
281 {
282 return $this->slash_item('base_url').ltrim($this->_uri_string($uri), '/');
283 }
284
285 // -------------------------------------------------------------
286
287 /**
288 * Build URI string for use in Config::site_url() and Config::base_url()
289 *
290 * @access protected
291 * @param $uri
292 * @return string
293 */
294 protected function _uri_string($uri)
295 {
296 if ($this->item('enable_query_strings') == FALSE)
297 {
298 if (is_array($uri))
299 {
300 $uri = implode('/', $uri);
301 }
302 $uri = trim($uri, '/');
303 }
304 else
305 {
306 if (is_array($uri))
307 {
308 $i = 0;
309 $str = '';
310 foreach ($uri as $key => $val)
311 {
312 $prefix = ($i == 0) ? '' : '&';
313 $str .= $prefix.$key.'='.$val;
314 $i++;
315 }
316 $uri = $str;
317 }
318 }
319 return $uri;
320 }
321
322 // --------------------------------------------------------------------
323
324 /**
325 * System URL
326 *
327 * @access public
328 * @return string
329 */
330 function system_url()
331 {
332 $x = explode("/", preg_replace("|/*(.+?)/*$|", "\\1", BASEPATH));
333 return $this->slash_item('base_url').end($x).'/';
334 }
335
336 // --------------------------------------------------------------------
337
338 /**
339 * Set a config file item
340 *
341 * @access public
342 * @param string the config item key
343 * @param string the config item value
344 * @return void
345 */
346 function set_item($item, $value)
347 {
348 $this->config[$item] = $value;
349 }
350
351 // --------------------------------------------------------------------
352
353 /**
354 * Assign to Config
355 *
356 * This function is called by the front controller (CodeIgniter.php)
357 * after the Config class is instantiated. It permits config items
358 * to be assigned or overriden by variables contained in the index.php file
359 *
360 * @access private
361 * @param array
362 * @return void
363 */
364 function _assign_to_config($items = array())
365 {
366 if (is_array($items))
367 {
368 foreach ($items as $key => $val)
369 {
370 $this->set_item($key, $val);
371 }
372 }
373 }
374 }
375
376 // END CI_Config class
377
378 /* End of file Config.php */
379 /* Location: ./system/core/Config.php */