244 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			244 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 | 
						|
/**
 | 
						|
 * CodeIgniter
 | 
						|
 *
 | 
						|
 * An open source application development framework for PHP 4.3.2 or newer
 | 
						|
 *
 | 
						|
 * @package		CodeIgniter
 | 
						|
 * @author		ExpressionEngine Dev Team
 | 
						|
 * @copyright	Copyright (c) 2008 - 2010, 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 {
 | 
						|
 | 
						|
	var $config = array();
 | 
						|
	var $is_loaded = array();
 | 
						|
 | 
						|
	/**
 | 
						|
	 * 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 CI_Config()
 | 
						|
	{
 | 
						|
		$this->config =& get_config();
 | 
						|
		log_message('debug', "Config Class Initialized");
 | 
						|
	}
 | 
						|
  	
 | 
						|
	// --------------------------------------------------------------------
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Load Config File
 | 
						|
	 *
 | 
						|
	 * @access	public
 | 
						|
	 * @param	string	the config file name
 | 
						|
	 * @return	boolean	if the file was loaded correctly
 | 
						|
	 */	
 | 
						|
	function load($file = '', $use_sections = FALSE, $fail_gracefully = FALSE)
 | 
						|
	{
 | 
						|
		$file = ($file == '') ? 'config' : str_replace(EXT, '', $file);
 | 
						|
	
 | 
						|
		if (in_array($file, $this->is_loaded, TRUE))
 | 
						|
		{
 | 
						|
			return TRUE;
 | 
						|
		}
 | 
						|
 | 
						|
		if ( ! file_exists(APPPATH.'config/'.$file.EXT))
 | 
						|
		{
 | 
						|
			if ($fail_gracefully === TRUE)
 | 
						|
			{
 | 
						|
				return FALSE;
 | 
						|
			}
 | 
						|
			show_error('The configuration file '.$file.EXT.' does not exist.');
 | 
						|
		}
 | 
						|
	
 | 
						|
		include(APPPATH.'config/'.$file.EXT);
 | 
						|
 | 
						|
		if ( ! isset($config) OR ! is_array($config))
 | 
						|
		{
 | 
						|
			if ($fail_gracefully === TRUE)
 | 
						|
			{
 | 
						|
				return FALSE;
 | 
						|
			}
 | 
						|
			show_error('Your '.$file.EXT.' 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;
 | 
						|
		unset($config);
 | 
						|
 | 
						|
		log_message('debug', 'Config file loaded: config/'.$file.EXT);
 | 
						|
		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
 | 
						|
	 *
 | 
						|
	 * The second parameter allows a slash to be added to the end of
 | 
						|
	 * the item, in the case of a path.
 | 
						|
	 *
 | 
						|
	 * @access	public
 | 
						|
	 * @param	string	the config item name
 | 
						|
	 * @param	bool
 | 
						|
	 * @return	string
 | 
						|
	 */
 | 
						|
	function slash_item($item)
 | 
						|
	{
 | 
						|
		if ( ! isset($this->config[$item]))
 | 
						|
		{
 | 
						|
			return FALSE;
 | 
						|
		}
 | 
						|
 | 
						|
		$pref = $this->config[$item];
 | 
						|
 | 
						|
		if ($pref != '' && substr($pref, -1) != '/')
 | 
						|
		{	
 | 
						|
			$pref .= '/';
 | 
						|
		}
 | 
						|
 | 
						|
		return $pref;
 | 
						|
	}
 | 
						|
  	
 | 
						|
	// --------------------------------------------------------------------
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Site URL
 | 
						|
	 *
 | 
						|
	 * @access	public
 | 
						|
	 * @param	string	the URI string
 | 
						|
	 * @return	string
 | 
						|
	 */
 | 
						|
	function site_url($uri = '')
 | 
						|
	{
 | 
						|
		if (is_array($uri))
 | 
						|
		{
 | 
						|
			$uri = implode('/', $uri);
 | 
						|
		}
 | 
						|
 | 
						|
		if ($uri == '')
 | 
						|
		{
 | 
						|
			return $this->slash_item('base_url').$this->item('index_page');
 | 
						|
		}
 | 
						|
		else
 | 
						|
		{
 | 
						|
			$suffix = ($this->item('url_suffix') == FALSE) ? '' : $this->item('url_suffix');
 | 
						|
			return $this->slash_item('base_url').$this->slash_item('index_page').trim($uri, '/').$suffix; 
 | 
						|
		}
 | 
						|
	}
 | 
						|
	
 | 
						|
	// --------------------------------------------------------------------
 | 
						|
 | 
						|
	/**
 | 
						|
	 * 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;
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// END CI_Config class
 | 
						|
 | 
						|
/* End of file Config.php */
 | 
						|
/* Location: ./system/libraries/Config.php */ |