<?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) 2006, 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 != '') | |
{ | |
if (ereg("/$", $pref) === FALSE) | |
{ | |
$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').preg_replace("|^/*(.+?)/*$|", "\\1", $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 | |
?> |