You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
379 lines
8.0 KiB
379 lines
8.0 KiB
<?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 ExpressionEngine Dev Team |
|
* @copyright Copyright (c) 2008 - 2011, EllisLab, Inc. |
|
* @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 ExpressionEngine 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['HTTP_HOST'])) |
|
{ |
|
$base_url = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off' ? 'https' : 'http'; |
|
$base_url .= '://'. $_SERVER['HTTP_HOST']; |
|
$base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']); |
|
} |
|
|
|
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 */
|
|
|