summaryrefslogtreecommitdiffstats
path: root/system/libraries
diff options
context:
space:
mode:
Diffstat (limited to 'system/libraries')
-rw-r--r--system/libraries/Config.php99
1 files changed, 86 insertions, 13 deletions
diff --git a/system/libraries/Config.php b/system/libraries/Config.php
index bd138331f..f7f813f86 100644
--- a/system/libraries/Config.php
+++ b/system/libraries/Config.php
@@ -36,8 +36,12 @@ class CI_Config {
*
* Sets the $config data from the primary config.php file as a class variable
*
- * @access public
- */
+ * @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();
@@ -55,7 +59,7 @@ class CI_Config {
* @param string the config file name
* @return boolean if the file was loaded correctly
*/
- function load($file = '')
+ function load($file = '', $use_sections = FALSE, $fail_gracefully = FALSE)
{
$file = ($file == '') ? 'config' : str_replace(EXT, '', $file);
@@ -63,15 +67,42 @@ class CI_Config {
{
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_once(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.');
}
- $this->config = array_merge($this->config, $config);
+ 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);
@@ -86,6 +117,48 @@ class CI_Config {
/**
* 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;
+ }
+ // END item()
+
+ // --------------------------------------------------------------------
+
+ /**
+ * 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.
*
@@ -94,7 +167,7 @@ class CI_Config {
* @param bool
* @return string
*/
- function item($item, $slash = FALSE)
+ function slash_item($item)
{
if ( ! isset($this->config[$item]))
{
@@ -103,20 +176,20 @@ class CI_Config {
$pref = $this->config[$item];
- if ($pref == '')
- {
- return $pref;
+ if ($pref != '')
+ {
+ if (ereg("/$", $pref) === FALSE)
+ {
+ $pref .= '/';
+ }
}
-
- if ($slash !== FALSE AND ereg("/$", $pref) === FALSE)
- {
- $pref .= '/';
- }
return $pref;
}
// END item()
+
+
// --------------------------------------------------------------------
/**