123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380 |
- <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
- /**
- * CodeIgniter
- *
- * An open source application development framework for PHP 5.1.6 or newer
- *
- * @package CodeIgniter
- * @author EllisLab Dev Team
- * @copyright Copyright (c) 2008 - 2014, EllisLab, Inc.
- * @copyright Copyright (c) 2014 - 2015, British Columbia Institute of Technology (http://bcit.ca/)
- * @license http://codeigniter.com/user_guide/license.html
- * @link http://codeigniter.com
- * @since Version 1.0
- * @filesource
- */
- // ------------------------------------------------------------------------
- /**
- * CodeIgniter Config Class
- *
- * This class contains functions that enable config files to be managed
- *
- * @package CodeIgniter
- * @subpackage Libraries
- * @category Libraries
- * @author EllisLab Dev Team
- * @link http://codeigniter.com/user_guide/libraries/config.html
- */
- class CI_Config {
- /**
- * List of all loaded config values
- *
- * @var array
- */
- var $config = array();
- /**
- * List of all loaded config files
- *
- * @var array
- */
- var $is_loaded = array();
- /**
- * List of paths to search when trying to load a config file
- *
- * @var array
- */
- var $_config_paths = array(APPPATH);
- /**
- * Constructor
- *
- * Sets the $config data from the primary config.php file as a class variable
- *
- * @access public
- * @param string the config file name
- * @param boolean if configuration values should be loaded into their own section
- * @param boolean true if errors should just return false, false if an error message should be displayed
- * @return boolean if the file was successfully loaded or not
- */
- function __construct()
- {
- $this->config =& get_config();
- log_message('debug', "Config Class Initialized");
- // Set the base_url automatically if none was provided
- if ($this->config['base_url'] == '')
- {
- if (isset($_SERVER['SERVER_ADDR']))
- {
- $base_url = (empty($_SERVER['HTTPS']) OR strtolower($_SERVER['HTTPS']) === 'off') ? 'http' : 'https';
- $base_url .= '://'.$_SERVER['SERVER_ADDR'];
- $base_url .= substr($_SERVER['SCRIPT_NAME'], 0, strpos($_SERVER['SCRIPT_NAME'], basename($_SERVER['SCRIPT_FILENAME'])));
- }
- else
- {
- $base_url = 'http://localhost/';
- }
- $this->set_item('base_url', $base_url);
- }
- }
- // --------------------------------------------------------------------
- /**
- * Load Config File
- *
- * @access public
- * @param string the config file name
- * @param boolean if configuration values should be loaded into their own section
- * @param boolean true if errors should just return false, false if an error message should be displayed
- * @return boolean if the file was loaded correctly
- */
- function load($file = '', $use_sections = FALSE, $fail_gracefully = FALSE)
- {
- $file = ($file == '') ? 'config' : str_replace('.php', '', $file);
- $found = FALSE;
- $loaded = FALSE;
- $check_locations = defined('ENVIRONMENT')
- ? array(ENVIRONMENT.'/'.$file, $file)
- : array($file);
- foreach ($this->_config_paths as $path)
- {
- foreach ($check_locations as $location)
- {
- $file_path = $path.'config/'.$location.'.php';
- if (in_array($file_path, $this->is_loaded, TRUE))
- {
- $loaded = TRUE;
- continue 2;
- }
- if (file_exists($file_path))
- {
- $found = TRUE;
- break;
- }
- }
- if ($found === FALSE)
- {
- continue;
- }
- include($file_path);
- if ( ! isset($config) OR ! is_array($config))
- {
- if ($fail_gracefully === TRUE)
- {
- return FALSE;
- }
- show_error('Your '.$file_path.' file does not appear to contain a valid configuration array.');
- }
- if ($use_sections === TRUE)
- {
- if (isset($this->config[$file]))
- {
- $this->config[$file] = array_merge($this->config[$file], $config);
- }
- else
- {
- $this->config[$file] = $config;
- }
- }
- else
- {
- $this->config = array_merge($this->config, $config);
- }
- $this->is_loaded[] = $file_path;
- unset($config);
- $loaded = TRUE;
- log_message('debug', 'Config file loaded: '.$file_path);
- break;
- }
- if ($loaded === FALSE)
- {
- if ($fail_gracefully === TRUE)
- {
- return FALSE;
- }
- show_error('The configuration file '.$file.'.php does not exist.');
- }
- return TRUE;
- }
- // --------------------------------------------------------------------
- /**
- * Fetch a config file item
- *
- *
- * @access public
- * @param string the config item name
- * @param string the index name
- * @param bool
- * @return string
- */
- function item($item, $index = '')
- {
- if ($index == '')
- {
- if ( ! isset($this->config[$item]))
- {
- return FALSE;
- }
- $pref = $this->config[$item];
- }
- else
- {
- if ( ! isset($this->config[$index]))
- {
- return FALSE;
- }
- if ( ! isset($this->config[$index][$item]))
- {
- return FALSE;
- }
- $pref = $this->config[$index][$item];
- }
- return $pref;
- }
- // --------------------------------------------------------------------
- /**
- * Fetch a config file item - adds slash after item (if item is not empty)
- *
- * @access public
- * @param string the config item name
- * @param bool
- * @return string
- */
- function slash_item($item)
- {
- if ( ! isset($this->config[$item]))
- {
- return FALSE;
- }
- if( trim($this->config[$item]) == '')
- {
- return '';
- }
- return rtrim($this->config[$item], '/').'/';
- }
- // --------------------------------------------------------------------
- /**
- * Site URL
- * Returns base_url . index_page [. uri_string]
- *
- * @access public
- * @param string the URI string
- * @return string
- */
- function site_url($uri = '')
- {
- if ($uri == '')
- {
- return $this->slash_item('base_url').$this->item('index_page');
- }
- if ($this->item('enable_query_strings') == FALSE)
- {
- $suffix = ($this->item('url_suffix') == FALSE) ? '' : $this->item('url_suffix');
- return $this->slash_item('base_url').$this->slash_item('index_page').$this->_uri_string($uri).$suffix;
- }
- else
- {
- return $this->slash_item('base_url').$this->item('index_page').'?'.$this->_uri_string($uri);
- }
- }
- // -------------------------------------------------------------
- /**
- * Base URL
- * Returns base_url [. uri_string]
- *
- * @access public
- * @param string $uri
- * @return string
- */
- function base_url($uri = '')
- {
- return $this->slash_item('base_url').ltrim($this->_uri_string($uri), '/');
- }
- // -------------------------------------------------------------
- /**
- * Build URI string for use in Config::site_url() and Config::base_url()
- *
- * @access protected
- * @param $uri
- * @return string
- */
- protected function _uri_string($uri)
- {
- if ($this->item('enable_query_strings') == FALSE)
- {
- if (is_array($uri))
- {
- $uri = implode('/', $uri);
- }
- $uri = trim($uri, '/');
- }
- else
- {
- if (is_array($uri))
- {
- $i = 0;
- $str = '';
- foreach ($uri as $key => $val)
- {
- $prefix = ($i == 0) ? '' : '&';
- $str .= $prefix.$key.'='.$val;
- $i++;
- }
- $uri = $str;
- }
- }
- return $uri;
- }
- // --------------------------------------------------------------------
- /**
- * System URL
- *
- * @access public
- * @return string
- */
- function system_url()
- {
- $x = explode("/", preg_replace("|/*(.+?)/*$|", "\\1", BASEPATH));
- return $this->slash_item('base_url').end($x).'/';
- }
- // --------------------------------------------------------------------
- /**
- * Set a config file item
- *
- * @access public
- * @param string the config item key
- * @param string the config item value
- * @return void
- */
- function set_item($item, $value)
- {
- $this->config[$item] = $value;
- }
- // --------------------------------------------------------------------
- /**
- * Assign to Config
- *
- * This function is called by the front controller (CodeIgniter.php)
- * after the Config class is instantiated. It permits config items
- * to be assigned or overriden by variables contained in the index.php file
- *
- * @access private
- * @param array
- * @return void
- */
- function _assign_to_config($items = array())
- {
- if (is_array($items))
- {
- foreach ($items as $key => $val)
- {
- $this->set_item($key, $val);
- }
- }
- }
- }
- // END CI_Config class
- /* End of file Config.php */
- /* Location: ./system/core/Config.php */
|