Blame | Last modification | View Log | RSS feed
<?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 providedif ($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 */