static function getSettings() { global $enabled_modules; $settings = false; // if already fetched, return it straight if (isset(self::$settings)) { return self::$settings; } // if table not exist, return null if (in_array('database', $enabled_modules)) { self::createTableIfNotExist(); global $mysqli; // if not cached in db or in dev, load it $settings = self::findByName('system'); } if (!$settings || ENV == 'dev') { require_once MODULESROOT . DS . 'core' . DS . 'includes' . DS . 'libraries' . DS . 'spyc' . DS . 'spyc.php'; $settings = array(); // load core module settings first $module_dir = MODULESROOT . DS . 'core'; $settings = array_merge_recursive(Spyc::YAMLLoad($module_dir . DS . 'settings.yml'), $settings); $settings = array_merge_recursive(Spyc::YAMLLoad($module_dir . DS . 'routing.yml'), $settings); $settings = array_merge_recursive(Spyc::YAMLLoad($module_dir . DS . 'role.yml'), $settings); // loop through modules and merge all settings if ($handle = opendir(MODULESROOT)) { while (false !== ($entry = readdir($handle))) { // skip any file starting with "." if (preg_match('/^\\./', $entry)) { continue; } // loop over the module folder $module_dir = MODULESROOT . DS . $entry; if (is_dir($module_dir) && in_array($entry, $enabled_modules) && $entry != 'core') { if (is_file($module_dir . DS . 'settings.yml')) { $settings = array_merge_recursive(Spyc::YAMLLoad($module_dir . DS . 'settings.yml'), $settings); } if (is_file($module_dir . DS . 'routing.yml')) { $settings = array_merge_recursive(Spyc::YAMLLoad($module_dir . DS . 'routing.yml'), $settings); } if (is_file($module_dir . DS . 'role.yml')) { $settings = array_merge_recursive(Spyc::YAMLLoad($module_dir . DS . 'role.yml'), $settings); } } } } // store in db if (in_array('database', $enabled_modules) && ENV != 'dev') { $var = new Vars(); $var->setName('system'); $var->setValue(serialize($settings)); $var->save(); self::$settings = $settings; } return $settings; } else { self::$settings = unserialize($settings->getValue()); return self::$settings; } }