public function loadSettingsLocal()
 {
     $net_name = PA::$network_info->address;
     $file_path = DIRECTORY_SEPARATOR . 'networks' . DIRECTORY_SEPARATOR . $net_name;
     if (is_dir(PA::$project_dir . $file_path)) {
         if (is_readable(PA::$project_dir . $file_path)) {
             $file_name = PA::$project_dir . $file_path . DIRECTORY_SEPARATOR . "{$net_name}.xml";
         } else {
             throw new CNException(NETWORK_DIRECTORY_PERMISSION_ERROR, "Can't read data - Directory \"" . PA::$project_dir . $file_path . "\" is not readable.");
         }
     } else {
         if (is_dir(PA::$core_dir . $file_path)) {
             if (is_readable(PA::$core_dir . $file_path)) {
                 $file_name = PA::$core_dir . $file_path . DIRECTORY_SEPARATOR . "{$net_name}.xml";
             } else {
                 throw new CNException(NETWORK_DIRECTORY_PERMISSION_ERROR, "Can't read data - Directory \"" . PA::$core_dir . $file_path . "\" is not readable.");
             }
         } else {
             throw new CNException(NETWORK_DIRECTORY_PERMISSION_ERROR, "Can't read data - Directory \"" . $file_path . "\" DOES NOT EXIST.");
         }
     }
     if (file_exists($file_name) && is_readable($file_name)) {
         $this->settings_file = $file_name;
         $store = new CNXmlConfig($file_name);
         $vars_arr = $store->asArray();
         $this->settings = $this->parseSettingsData($vars_arr, $this->var_names);
         return true;
     }
     return false;
 }
 /**
  * Load internationalization string files
  *
  *
  */
 public function loadLanguageFiles()
 {
     $culture_file = getShadowedPath(PA::$config_path . '/i18n.xml');
     $culture_data = new CNXmlConfig($culture_file);
     if ($culture_data->docLoaded) {
         PA::$culture_data = $culture_data->asArray();
     } else {
         throw new BootStrapException("Error - Can't load \"{$culture_file}\" culture file.", BootStrapException::UNRECOVERABLE_BOOT_EXCEPTION);
     }
     $this->installed_languages = $this->getLanguagesList();
     session_start();
     if (!empty($this->request_data['lang'])) {
         if (array_key_exists($this->request_data['lang'], $this->installed_languages)) {
             $this->current_lang = $this->request_data['lang'];
             $_SESSION['user_lang'] = $this->current_lang;
         }
     } else {
         if (isset($_SESSION['user_lang'])) {
             $this->current_lang = $_SESSION['user_lang'];
         } else {
             if (PA::$config->pa_installed) {
                 $net_info = get_network_info();
                 $net_settings = unserialize($net_info->extra);
                 $this->current_lang = isset($net_settings['default_language']) ? $net_settings['default_language'] : 'english';
             }
         }
     }
     session_commit();
     if ($this->current_lang) {
         PA::$language = $this->current_lang;
     }
     ob_start();
     global $TRANSLATED_STRINGS;
     $strings_file = getShadowedPath("web/languages/" . PA::$language . "/strings.php");
     try {
         if (file_exists($strings_file)) {
             eval('?>' . (require_once $strings_file));
         }
         $msg_handler = getShadowedPath("web/languages/" . PA::$language . "/CNMessagesHandler.php");
         if (file_exists($msg_handler)) {
             eval('?>' . (require_once $msg_handler));
         } else {
             eval('?>' . (require_once getShadowedPath("web/languages/english/CNMessagesHandler.php")));
         }
     } catch (Exception $e) {
         // Either an invalid language was selected, or one (e.g. English) without a strings.php file.
         $TRANSLATED_STRINGS = array();
         throw new BootStrapException($e->message, 1);
     }
     return ob_get_clean();
 }