diff --git a/_sakura/components/Configuration.php b/_sakura/components/Configuration.php index b414c42..8014fcd 100644 --- a/_sakura/components/Configuration.php +++ b/_sakura/components/Configuration.php @@ -7,23 +7,26 @@ namespace Sakura; class Configuration { + // Configuration data public static $_LCNF; public static $_DCNF; - // Constructor + // Initialise configuration, does not contain database initialisation because explained below public static function init($local) { - // Store $local in $_LCNF + // Check if $local is an array and then store it in $_LCNF if(is_array($local)) self::$_LCNF = $local; - else - die('

Failed to initialise configuration.

'); + else // Otherwise trigger an error + trigger_error('Failed to load local configuration!', E_USER_ERROR); } - // Initialise Database configuration values. - // Different from init as that is called before the database connection is initially - // established + /* + * Initialise Database configuration values. + * Different from init as that is called before the database connection is initially + * established. + */ public static function initDB() { $_DATA = Database::fetch('config', true); @@ -39,12 +42,13 @@ class Configuration { // Get values from the configuration on the file system public static function getLocalConfig($key, $subkey = null) { - if(array_key_exists($key, self::$_LCNF)) { - if($subkey) - return self::$_LCNF[$key][$subkey]; + // Check if the key that we're looking for exists + if(array_key_exists($key, self::$_LCNF)) { // If we also have a subkey we check + if($subkey && array_key_exists($subkey, $key)) // if that exists, else we just return + return self::$_LCNF[$key][$subkey]; // the default value. else return self::$_LCNF[$key]; - } else + } else // If it doesn't exist trigger an error to avoid explosions trigger_error('Unable to get local configuration value!', E_USER_ERROR); } @@ -52,24 +56,61 @@ class Configuration { // Dynamically set local configuration values, does not update the configuration file public static function setLocalConfig($key, $subkey, $value) { + // Check if we also do a subkey if($subkey) { + + // If we do we make sure that the parent key is an array if(!isset(self::$_LCNF[$key])) self::$_LCNF[$key] = array(); + + // And then assign the value self::$_LCNF[$key][$subkey] = $value; - } else { + + } else // Otherwise we just straight up assign it self::$_LCNF[$key] = $value; - } } // Get values from the configuration in the database public static function getConfig($key) { + // Check if the key that we're looking for exists if(array_key_exists($key, self::$_DCNF)) - return self::$_DCNF[$key]; - else + return self::$_DCNF[$key]; // Then return the value + else // If it doesn't exist trigger an error to avoid explosions trigger_error('Unable to get configuration value!', E_USER_ERROR); } + // Parse .cfg files, mainly/only used for templates + public function parseCfg($data) { + + // Create storage variable + $out = array(); + + // Remove comments and empty lines + $data = preg_replace('/#.*?\r\n/im', null, $data); + $data = preg_replace('/^\r\n/im', null, $data); + + // Break line breaks up into array values + $data = explode("\r\n", $data); + + foreach($data as $var) { + + // Remove whitespace between key, equals sign and value + $var = preg_replace('/[\s+]=[\s+]/i', '=', $var); + + // Then break this up + $var = explode('=', $var); + + // And assign the value with the key to the output variable + $out[$var[0]] = $var[1]; + + } + + // Return the output variable + return $out; + + } + } diff --git a/_sakura/components/Templates.php b/_sakura/components/Templates.php new file mode 100644 index 0000000..7e71daf --- /dev/null +++ b/_sakura/components/Templates.php @@ -0,0 +1,14 @@ +