$val array. private $yaml = array(); /** * Function: __construct * Loads the configuration YAML file. */ private function __construct() { if (!file_exists(INCLUDES_DIR."/config.yaml.php")) return false; $contents = str_replace("\n", "", file_get_contents(INCLUDES_DIR."/config.yaml.php")); $this->yaml = YAML::load($contents); $arrays = array("enabled_modules", "enabled_feathers", "routes"); foreach ($this->yaml as $setting => $value) if (in_array($setting, $arrays) and empty($value)) $this->$setting = array(); elseif (!is_int($setting)) $this->$setting = (is_string($value)) ? stripslashes($value) : $value ; fallback($this->url, $this->chyrp_url); } /** * Function: set * Adds or replaces a configuration setting with the given value. * * Parameters: * $setting - The setting name. * $value - The value. * $overwrite - If the setting exists and is the same value, should it be overwritten? */ public function set($setting, $value, $overwrite = true) { if (isset($this->$setting) and $this->$setting == $value and !$overwrite) return false; if (isset($this->file) and file_exists($this->file)) { $contents = str_replace("\n", "", file_get_contents($this->file)); $this->yaml = YAML::load($contents); } # Add the setting $this->yaml[$setting] = $this->$setting = $value; if (class_exists("Trigger")) Trigger::current()->call("change_setting", $setting, $value, $overwrite); # Add the PHP protection! $contents = "\n"; # Generate the new YAML settings $contents.= YAML::dump($this->yaml); if (!@file_put_contents(INCLUDES_DIR."/config.yaml.php", $contents)) { Flash::warning(_f("Could not set \"%s\" configuration setting because %s is not writable.", array($setting, "/includes/config.yaml.php"))); return false; } else return true; } /** * Function: remove * Removes a configuration setting. * * Parameters: * $setting - The name of the setting to remove. */ public function remove($setting) { if (isset($this->file) and file_exists($this->file)) { $contents = str_replace("\n", "", file_get_contents($this->file)); $this->yaml = YAML::load($contents); } # Add the setting unset($this->yaml[$setting]); # Add the PHP protection! $contents = "\n"; # Generate the new YAML settings $contents.= YAML::dump($this->yaml); file_put_contents(INCLUDES_DIR."/config.yaml.php", $contents); } /** * Function: current * Returns a singleton reference to the current configuration. */ public static function & current() { static $instance = null; return $instance = (empty($instance)) ? new self() : $instance ; } }