Esempio n. 1
0
 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;
     }
 }