Index: install.php =================================================================== --- install.php (revision 15908) +++ install.php (working copy) @@ -154,15 +154,12 @@ { include_once(FULL_PATH . REL_PATH . '/kernel/kbase.php'); // required by kDBConnection class include_once(FULL_PATH . REL_PATH . '/kernel/utility/multibyte.php'); // emulating multi-byte php extension + include_once(FULL_PATH . REL_PATH . '/kernel/system_config.php'); // kSystemConfig static class to access system/config.php data require_once(FULL_PATH . REL_PATH . '/install/install_toolkit.php'); // toolkit required for module installations to installator $this->toolkit = new kInstallToolkit(); $this->toolkit->setInstallator($this); - $this->StepDBFile = FULL_PATH.'/'.REL_PATH.'/install/steps_db.xml'; - - $base_path = rtrim(preg_replace('/'.preg_quote(rtrim(REL_PATH, '/'), '/').'$/', '', str_replace('\\', '/', dirname($_SERVER['PHP_SELF']))), '/'); - $this->baseURL = 'http://'.$_SERVER['HTTP_HOST'].$base_path.'/core/install/'; - + $this->baseURL = 'http://' . $_SERVER['HTTP_HOST'] . kSystemConfig::defaultValue('WebsitePath') . '/core/install/'; set_error_handler( Array(&$this, 'ErrorHandler') ); if (file_exists($this->toolkit->INIFile)) { @@ -170,18 +167,10 @@ $this->writeableFolders[] = $this->toolkit->defaultWritablePath . '/config.php'; } - if ( !$this->toolkit->getSystemConfig('Misc', 'WriteablePath') ) { - $this->toolkit->setSystemConfig('Misc', 'WriteablePath', $this->toolkit->defaultWritablePath); - } + $this->toolkit->ensureSystemConfigValue('Misc', 'WriteablePath'); + $this->toolkit->ensureSystemConfigValue('Misc', 'RestrictedPath'); + $this->toolkit->ensureSystemConfigValue('Misc', 'WebsitePath'); - if ( !$this->toolkit->getSystemConfig('Misc', 'RestrictedPath') ) { - $this->toolkit->setSystemConfig('Misc', 'RestrictedPath', $this->toolkit->getSystemConfig('Misc', 'WriteablePath') . DIRECTORY_SEPARATOR . '.restricted'); - } - - if ( !$this->toolkit->getSystemConfig('Misc', 'WebsitePath') ) { - $this->toolkit->setSystemConfig('Misc', 'WebsitePath', $base_path); - } - if ( $this->toolkit->systemConfigChanged ) { // immediately save, because this paths will be used in kApplication class later $this->toolkit->SaveConfig(true); Index: install/install_toolkit.php =================================================================== --- install/install_toolkit.php (revision 15908) +++ install/install_toolkit.php (working copy) @@ -98,7 +98,7 @@ function kInstallToolkit() { - $this->defaultWritablePath = DIRECTORY_SEPARATOR . 'system'; + $this->defaultWritablePath = kSystemConfig::defaultValue('WriteablePath'); if ( class_exists('kApplication') ) { // auto-setup in case of separate module install @@ -617,6 +617,20 @@ } /** + * Sets default value for empty system config variable + * + * @param string $section + * @param string $key + * @return string|bool + */ + function ensureSystemConfigValue($section, $key) + { + if ( !$this->getSystemConfig($section, $key) ) { + $this->setSystemConfig($section, $key, kSystemConfig::defaultValue($key)); + } + } + + /** * Returns information from system config * * @param string $section Index: kernel/application.php =================================================================== --- kernel/application.php (revision 15908) +++ kernel/application.php (working copy) @@ -297,7 +297,7 @@ $this->Factory = new $factory_class(); $this->registerDefaultClasses(); - $vars = kUtil::parseConfig(true); + $vars = kSystemConfig::parseConfig(true); $db_class = isset($vars['Databases']) ? 'kDBLoadBalancer' : ($this->isDebugMode() ? 'kDBConnectionDebug' : 'kDBConnection'); $this->Conn = $this->Factory->makeClass($db_class, Array (SQL_TYPE, Array ($this->_logger, 'handleSQLError'))); $this->Conn->setup($vars); Index: kernel/globals.php =================================================================== --- kernel/globals.php (revision 15908) +++ kernel/globals.php (working copy) @@ -157,71 +157,6 @@ } /** - * Parses "/system/config.php" file and returns the result - * - * @param bool $parse_section - * @return Array - * @access public - */ - public static function parseConfig($parse_section = false) - { - $file = FULL_PATH . DIRECTORY_SEPARATOR . 'system' . DIRECTORY_SEPARATOR . 'config.php'; - - if ( !file_exists($file) ) { - return Array (); - } - - if ( file_exists($file) && !is_readable($file) ) { - die('Could Not Open Ini File'); - } - - $contents = file($file); - - if ( $contents && $contents[0] == '<' . '?' . 'php die() ?' . ">\n" ) { - // format of "config.php" file before 5.1.0 version - array_shift($contents); - - return parse_ini_string(implode('', $contents), $parse_section); - } - - $_CONFIG = Array (); - require($file); - - if ( $parse_section ) { - if ( isset($_CONFIG['Database']['LoadBalancing']) && $_CONFIG['Database']['LoadBalancing'] ) { - require FULL_PATH . DIRECTORY_SEPARATOR . 'system' . DIRECTORY_SEPARATOR . 'db_servers.php'; - } - - return $_CONFIG; - } - - $ret = Array (); - - foreach ($_CONFIG as $section => $section_variables) { - $ret = array_merge($ret, $section_variables); - } - - return $ret; - } - - /** - * Returns parsed variables from "config.php" file - * - * @return Array - * @access public - */ - public static function getConfigVars() - { - static $vars = NULL; - - if ( !isset($vars) ) { - $vars = self::parseConfig(); - } - - return $vars; - } - - /** * Same as "include_once", but also profiles file includes in debug mode and DBG_PROFILE_INCLUDES constant is set * * @param string $file Index: kernel/startup.php =================================================================== --- kernel/startup.php (revision 15908) +++ kernel/startup.php (working copy) @@ -18,20 +18,16 @@ $globals_start = microtime(true); include_once(KERNEL_PATH . '/globals.php'); // some non-OOP functions and kUtil static class used through kernel + include_once(KERNEL_PATH . '/system_config.php'); // kSystemConfig static class to access system/config.php data include_once(KERNEL_PATH . '/utility/multibyte.php'); // emulating multi-byte php extension $globals_end = microtime(true); - $vars = kUtil::getConfigVars(); + $vars = kSystemConfig::getConfigVars(); - $charset = isset($vars['WebsiteCharset']) ? $vars['WebsiteCharset'] : 'utf-8'; - define('CHARSET', $charset); + define('CHARSET', $vars['WebsiteCharset']); + define('ADMIN_DIRECTORY', $vars['AdminDirectory']); + define('ADMIN_PRESETS_DIRECTORY', $vars['AdminPresetsDirectory']); - $admin_directory = isset($vars['AdminDirectory']) ? $vars['AdminDirectory'] : '/admin'; - define('ADMIN_DIRECTORY', $admin_directory); - - $admin_Presets_directory = isset($vars['AdminPresetsDirectory']) ? $vars['AdminPresetsDirectory'] : ADMIN_DIRECTORY; - define('ADMIN_PRESETS_DIRECTORY', $admin_Presets_directory); - $https_mark = getArrayValue($_SERVER, 'HTTPS'); define('PROTOCOL', ($https_mark == 'on') || ($https_mark == '1') ? 'https://' : 'http://'); @@ -71,8 +67,8 @@ // variable WebsitePath is auto-detected once during installation/upgrade define('BASE_PATH', $vars['WebsitePath']); - define('APPLICATION_CLASS', isset($vars['ApplicationClass']) ? $vars['ApplicationClass'] : 'kApplication'); - define('APPLICATION_PATH', isset($vars['ApplicationPath']) ? $vars['ApplicationPath'] : '/core/kernel/application.php'); + define('APPLICATION_CLASS', $vars['ApplicationClass']); + define('APPLICATION_PATH', $vars['ApplicationPath']); if (isset($vars['WriteablePath'])) { define('WRITEABLE', FULL_PATH . $vars['WriteablePath']); @@ -113,7 +109,7 @@ define('IMAGES_PENDING_PATH', IMAGES_PATH . 'pending/'); define('MAX_UPLOAD_SIZE', min(ini_get('upload_max_filesize'), ini_get('post_max_size'))*1024*1024); - define('EDITOR_PATH', isset($vars['EditorPath']) ? $vars['EditorPath'] : '/core/ckeditor/'); + define('EDITOR_PATH', $vars['EditorPath']); // caching types define('CACHING_TYPE_NONE', 0); @@ -129,12 +125,12 @@ static public $domainsParsedRebuildTime; } - CacheSettings::$unitCacheRebuildTime = isset($vars['UnitCacheRebuildTime']) ? $vars['UnitCacheRebuildTime'] : 10; - CacheSettings::$structureTreeRebuildTime = isset($vars['StructureTreeRebuildTime']) ? $vars['StructureTreeRebuildTime'] : 10; - CacheSettings::$cmsMenuRebuildTime = isset($vars['CmsMenuRebuildTime']) ? $vars['CmsMenuRebuildTime'] : 10; - CacheSettings::$templateMappingRebuildTime = isset($vars['TemplateMappingRebuildTime']) ? $vars['TemplateMappingRebuildTime'] : 5; - CacheSettings::$sectionsParsedRebuildTime = isset($vars['SectionsParsedRebuildTime']) ? $vars['SectionsParsedRebuildTime'] : 10; - CacheSettings::$domainsParsedRebuildTime = isset($vars['DomainsParsedRebuildTime']) ? $vars['DomainsParsedRebuildTime'] : 2; + CacheSettings::$unitCacheRebuildTime = $vars['UnitCacheRebuildTime']; + CacheSettings::$structureTreeRebuildTime = $vars['StructureTreeRebuildTime']; + CacheSettings::$cmsMenuRebuildTime = $vars['CmsMenuRebuildTime']; + CacheSettings::$templateMappingRebuildTime = $vars['TemplateMappingRebuildTime']; + CacheSettings::$sectionsParsedRebuildTime = $vars['SectionsParsedRebuildTime']; + CacheSettings::$domainsParsedRebuildTime = $vars['DomainsParsedRebuildTime']; class MaintenanceMode { const NONE = 0; Index: kernel/system_config.php =================================================================== --- kernel/system_config.php (revision 0) +++ kernel/system_config.php (revision 0) @@ -0,0 +1,128 @@ + '/admin', + 'AdminPresetsDirectory' => '/admin', + 'ApplicationClass' => 'kApplication', + 'ApplicationPath' => '/core/kernel/application.php', + 'CmsMenuRebuildTime' => 10, + 'DomainsParsedRebuildTime' => 2, + 'EditorPath' => '/core/ckeditor/', + 'RestrictedPath' => DIRECTORY_SEPARATOR . 'system' . DIRECTORY_SEPARATOR . '.restricted', + 'SectionsParsedRebuildTime' => 5, + 'StructureTreeRebuildTime' => 10, + 'TemplateMappingRebuildTime' => 5, + 'UnitCacheRebuildTime' => 10, + 'WebsiteCharset' => 'utf-8', + 'WebsitePath' => rtrim(preg_replace('/'.preg_quote(rtrim(REL_PATH, '/'), '/').'$/', '', str_replace('\\', '/', dirname($_SERVER['PHP_SELF']))), '/'), + 'WriteablePath' => DIRECTORY_SEPARATOR . 'system', + ); + } + + return $values; + } + + /** + * Returns default config value + * + * @param string $key + * @return string + * @access public + */ + public static function defaultValue($key) + { + $default_values = self::defaultValues(); + + return isset($default_values[$key]) ? $default_values[$key] : false; + } + + /** + * Parses "/system/config.php" file and returns the result + * + * @param bool $parse_section + * @return Array + * @access public + */ + public static function parseConfig($parse_section = false) + { + $file = FULL_PATH . DIRECTORY_SEPARATOR . 'system' . DIRECTORY_SEPARATOR . 'config.php'; + + if ( !file_exists($file) ) { + return Array (); + } + + if ( file_exists($file) && !is_readable($file) ) { + die('Could Not Open Ini File'); + } + + $contents = file($file); + + if ( $contents && $contents[0] == '<' . '?' . 'php die() ?' . ">\n" ) { + // format of "config.php" file before 5.1.0 version + array_shift($contents); + + return parse_ini_string(implode('', $contents), $parse_section); + } + + $_CONFIG = Array (); + require($file); + + if ( $parse_section ) { + if ( isset($_CONFIG['Database']['LoadBalancing']) && $_CONFIG['Database']['LoadBalancing'] ) { + require FULL_PATH . DIRECTORY_SEPARATOR . 'system' . DIRECTORY_SEPARATOR . 'db_servers.php'; + } + + return $_CONFIG; + } + + $ret = self::defaultValues(); + + foreach ($_CONFIG as $section_variables) { + $ret = array_merge($ret, $section_variables); + } + + return $ret; + } + + /** + * Returns parsed variables from "config.php" file + * + * @return Array + * @access public + */ + public static function getConfigVars() + { + static $vars = NULL; + + if ( !isset($vars) ) { + $vars = self::parseConfig(); + } + + return $vars; + } +} \ No newline at end of file Property changes on: kernel\system_config.php ___________________________________________________________________ Added: svn:eol-style + LF Index: kernel/utility/cache.php =================================================================== --- kernel/utility/cache.php (revision 15908) +++ kernel/utility/cache.php (working copy) @@ -99,7 +99,7 @@ { parent::__construct(); - $vars = kUtil::getConfigVars(); + $vars = kSystemConfig::getConfigVars(); $this->siteKeyName = 'site_serial:' . crc32(SQL_TYPE . '://' . SQL_USER . ':' . SQL_PASS . '@' . SQL_SERVER . ':' . TABLE_PREFIX . ':' . SQL_DB); // get cache handler class to use @@ -743,7 +743,7 @@ $this->cachingType = CACHING_TYPE_MEMORY; - $vars = kUtil::getConfigVars(); + $vars = kSystemConfig::getConfigVars(); $memcached_servers = isset($vars['MemcacheServers']) ? $vars['MemcacheServers'] : $default_servers; if ( $memcached_servers && class_exists('Memcache') ) { Index: kernel/utility/debugger.php =================================================================== --- kernel/utility/debugger.php (revision 15908) +++ kernel/utility/debugger.php (working copy) @@ -392,7 +392,7 @@ } if ( class_exists('kUtil') ) { - $vars = kUtil::getConfigVars(); + $vars = kSystemConfig::getConfigVars(); DebuggerUtil::$trustProxy = isset($vars['TrustProxy']) ? (bool)$vars['TrustProxy'] : false; } Index: kernel/utility/http_query.php =================================================================== --- kernel/utility/http_query.php (revision 15908) +++ kernel/utility/http_query.php (working copy) @@ -117,7 +117,7 @@ $_GET['ajax'] = 'yes'; } - $vars = kUtil::getConfigVars(); + $vars = kSystemConfig::getConfigVars(); $this->_trustProxy = isset($vars['TrustProxy']) ? (bool)$vars['TrustProxy'] : false; } Index: kernel/utility/logger.php =================================================================== --- kernel/utility/logger.php (revision 15908) +++ kernel/utility/logger.php (working copy) @@ -221,7 +221,7 @@ { parent::__construct(); - $vars = kUtil::getConfigVars(); + $vars = kSystemConfig::getConfigVars(); $this->_debugMode = $this->Application->isDebugMode(); $this->setState(isset($vars['EnableSystemLog']) ? $vars['EnableSystemLog'] : self::STATE_DISABLED); Index: units/helpers/minifiers/minify_helper.php =================================================================== --- units/helpers/minifiers/minify_helper.php (revision 15908) +++ units/helpers/minifiers/minify_helper.php (working copy) @@ -200,7 +200,7 @@ */ public function compressString(&$string, $extension) { - $vars = kUtil::getConfigVars(); + $vars = kSystemConfig::getConfigVars(); if ( !array_key_exists('CompressionEngine', $vars) ) { // compression method not specified - use none Index: units/helpers/modules_helper.php =================================================================== --- units/helpers/modules_helper.php (revision 15908) +++ units/helpers/modules_helper.php (working copy) @@ -182,7 +182,7 @@ } $modules = Array(); - $vars = kUtil::getConfigVars(); + $vars = kSystemConfig::getConfigVars(); $license = array_key_exists('License', $vars) ? base64_decode($vars['License']) : false; if ($license) { list ( , , $i_Keys) = $this->_ParseLicense($license);