protected function loadConfigFile($area, $type, $module, $options)
 {
     if (!($_file = $this->getFileByType($area, $type, $module))) {
         return false;
     }
     Kurogo::log(LOG_DEBUG, "Loading config file {$area} of type {$type} with options {$options}", 'config');
     if ($type == 'file') {
         $options = $options | Config::OPTION_IGNORE_DEFAULT;
     }
     $config = new ConfigFile($area, $type);
     if ($module) {
         //$config->setModuleID($module->getID());
     }
     if (!($options & Config::OPTION_IGNORE_DEFAULT)) {
         $config->setFile('default', $this->getFileByType($area, $type . '-default', $module));
     }
     if (!($options & Config::OPTION_IGNORE_SHARED)) {
         $config->setFile('shared', $this->getFileByType($area, $type . '-shared', $module));
     }
     if ($config->setFile('base', $_file)) {
         if (!($options & Config::OPTION_IGNORE_MODE)) {
             $modes = Kurogo::getConfigModes();
             foreach ($modes as $mode) {
                 $config->setFile($mode, self::fileVariant($_file, $mode));
             }
         }
         if (!($options & Config::OPTION_IGNORE_LOCAL)) {
             $config->setFile('local', self::fileVariant($_file, 'local'));
         }
         return $config;
     } elseif (count($config->getFiles()) > 0) {
         return $config;
     }
     if ($options & Config::OPTION_CREATE_EMPTY) {
         if (!is_dir(dirname($_file))) {
             throw new KurogoConfigurationException("Directory " . dirname($_file) . " does not exist");
         }
         Kurogo::log(LOG_DEBUG, "Creating empty config file {$_file}", 'config');
         @touch($_file);
         if ($config->setFile('base', $_file)) {
             return $config;
         }
     }
     return false;
 }