static function ValidateConfig() { $showConfig = true; if (self::$oConfig || $_POST) { // only validate config if there is a config to validate. $showConfig = false; foreach (self::$configVars as $key => $info) { $val = defined($key) ? constant($key) : null; if (empty($val)) { self::$configVars[$key]['notice'] = "Must not be empty."; } if ($info['type'] & CFG_TYPE_PATH && !is_dir(PATH_ABS_ROOT . $val)) { self::$configVars[$key]['notice'] = "Must be a valid directory."; } if ($key == 'ADMIN_EMAIL' && !preg_match('/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i', $val)) { self::$configVars[$key]['notice'] = "Must be a valid email address."; } } try { // database::query('SHOW TABLES FROM `'.SQL_DBNAME.'`'); } catch (Exception $e) { self::$configVars['SQL_SERVER']['notice'] = $e->getMessage(); } } $changed = false; foreach (self::$configVars as $key => $info) { if (!defined($key)) { $showConfig = true; } if (isset($info['notice'])) { $showConfig = true; } if (!isset(self::$oConfig[$key]) || self::$oConfig[$key] !== constant($key)) { $changed = true; } } if ($showConfig) { if (!file_exists(PATH_ABS_CONFIG)) { self::ShowConfig(); } self::DownMaintenance(); } if ($changed) { self::SaveConfig(); } self::$isValid = TRUE; return true; }