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 @@
+