/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk

« back to all changes in this revision

Viewing changes to codeigniter/system/core/Config.php

  • Committer: galaxyAbstractor
  • Date: 2013-04-10 15:49:32 UTC
  • mto: (19.1.5 lenasys)
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: galaxyabstractor@gmail.com-20130410154932-4vizlzk0ar5gykvi
* Added an simple admin panel to the codeviewer-cmssy stuff
* Redesigned a bit like the mockups - still stuff to come
* Implemented the codeviewer + admin panel again using the Framework CodeIgniter instead 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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 */