/** * Update advanced configuration. */ function procAdminUpdateAdvanced() { $vars = Context::getRequestVars(); // Default URL $default_url = rtrim(trim($vars->default_url), '/\\') . '/'; if (!filter_var($default_url, FILTER_VALIDATE_URL) || !preg_match('@^https?://@', $default_url)) { return new Object(-1, 'msg_invalid_default_url'); } if (parse_url($default_url, PHP_URL_PATH) !== RX_BASEURL) { return new Object(-1, 'msg_invalid_default_url'); } // SSL and ports if ($vars->http_port == 80) { $vars->http_port = null; } if ($vars->https_port == 443) { $vars->https_port = null; } $use_ssl = $vars->use_ssl ?: 'none'; // Check if all URL configuration is consistent if ($use_ssl === 'always' && !preg_match('@^https://@', $default_url)) { return new Object(-1, 'msg_default_url_ssl_inconsistent'); } if ($vars->http_port && preg_match('@^http://@', $default_url) && parse_url($default_url, PHP_URL_PORT) != $vars->http_port) { return new Object(-1, 'msg_default_url_http_port_inconsistent'); } if ($vars->https_port && preg_match('@^https://@', $default_url) && parse_url($default_url, PHP_URL_PORT) != $vars->https_port) { return new Object(-1, 'msg_default_url_https_port_inconsistent'); } // Set all URL configuration Rhymix\Framework\Config::set('url.default', $default_url); Rhymix\Framework\Config::set('url.http_port', $vars->http_port ?: null); Rhymix\Framework\Config::set('url.https_port', $vars->https_port ?: null); Rhymix\Framework\Config::set('url.ssl', $use_ssl); getController('module')->updateSite((object) array('site_srl' => 0, 'domain' => preg_replace('@^https?://@', '', $default_url))); // Object cache if ($vars->object_cache_type) { if ($vars->object_cache_type === 'memcached' || $vars->object_cache_type === 'redis') { $cache_servers = array($vars->object_cache_type . '://' . $vars->object_cache_host . ':' . intval($vars->object_cache_port)); if ($vars->object_cache_type === 'redis') { $cache_servers[0] .= '/' . intval($vars->object_cache_dbnum); } } else { $cache_servers = array(); } if (!Rhymix\Framework\Cache::getDriverInstance($vars->object_cache_type, $cache_servers)) { return new Object(-1, 'msg_cache_handler_not_supported'); } Rhymix\Framework\Config::set('cache', array('type' => $vars->object_cache_type, 'ttl' => intval($vars->cache_default_ttl ?: 86400), 'servers' => $cache_servers)); } else { Rhymix\Framework\Config::set('cache', array()); } // Thumbnail settings $args = new stdClass(); $args->thumbnail_type = $vars->thumbnail_type === 'ratio' ? 'ratio' : 'crop'; $oModuleController = getController('module'); $oModuleController->insertModuleConfig('document', $args); // Other settings Rhymix\Framework\Config::set('use_rewrite', $vars->use_rewrite === 'Y'); Rhymix\Framework\Config::set('use_sso', $vars->use_sso === 'Y'); Rhymix\Framework\Config::set('session.delay', $vars->delay_session === 'Y'); Rhymix\Framework\Config::set('session.use_db', $vars->use_db_session === 'Y'); Rhymix\Framework\Config::set('view.minify_scripts', $vars->minify_scripts ?: 'common'); Rhymix\Framework\Config::set('view.concat_scripts', $vars->concat_scripts ?: 'none'); Rhymix\Framework\Config::set('view.server_push', $vars->use_server_push === 'Y'); Rhymix\Framework\Config::set('view.use_gzip', $vars->use_gzip === 'Y'); // Save Rhymix\Framework\Config::save(); $this->setMessage('success_updated'); $this->setRedirectUrl(Context::get('success_return_url') ?: getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminConfigAdvanced')); }