From ec36839303da95cdf29c87c788a50fd421251d7c Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Wed, 30 Aug 2023 01:45:37 +0900 Subject: [PATCH] Add options in module.xml to disable session and Cache-Control headers for individual actions --- classes/context/Context.class.php | 14 ++++++++++---- common/framework/Router.php | 6 ++++++ common/framework/parsers/ModuleActionParser.php | 2 ++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index a7539f82d..3b563a14f 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -366,11 +366,17 @@ class Context // start session if (\PHP_SAPI !== 'cli') { - Rhymix\Framework\Session::checkSSO($site_module_info); - Rhymix\Framework\Session::start(false); - if (!session_cache_limiter()) + if (!isset(self::$_route_info->session) || self::$_route_info->session) { - self::setCacheControl(0); + Rhymix\Framework\Session::checkSSO($site_module_info); + Rhymix\Framework\Session::start(false); + } + if (!isset(self::$_route_info->cache_control) || self::$_route_info->cache_control) + { + if (!session_cache_limiter()) + { + self::setCacheControl(0); + } } } diff --git a/common/framework/Router.php b/common/framework/Router.php index 4a6c13710..7ab918101 100644 --- a/common/framework/Router.php +++ b/common/framework/Router.php @@ -127,6 +127,8 @@ class Router $result->mid = ''; $result->act = ''; $result->forwarded = false; + $result->session = true; + $result->cache_control = true; $result->args = array(); // Separate additional arguments from the URL. @@ -181,6 +183,8 @@ class Router $allargs = array_merge($args, [$prefix_type => $prefix]); $result->module = $module_name; $result->mid = $prefix; + $result->session = ($action_info->action->{$action_info->default_index_act}->session === 'false') ? false : true; + $result->cache_control = ($action_info->action->{$action_info->default_index_act}->cache_control === 'false') ? false : true; $result->args = $allargs; return $result; } @@ -195,6 +199,8 @@ class Router $result->module = $module_name; $result->mid = $prefix_type === 'mid' ? $prefix : ''; $result->act = $action; + $result->session = ($action_info->action->{$action}->session === 'false') ? false : true; + $result->cache_control = ($action_info->action->{$action}->cache_control === 'false') ? false : true; $result->args = $allargs; return $result; } diff --git a/common/framework/parsers/ModuleActionParser.php b/common/framework/parsers/ModuleActionParser.php index d5730c5b9..2fa91fb23 100644 --- a/common/framework/parsers/ModuleActionParser.php +++ b/common/framework/parsers/ModuleActionParser.php @@ -190,6 +190,8 @@ class ModuleActionParser extends BaseParser $action_info->standalone = $standalone; $action_info->check_csrf = self::_getAttributeString($action, 'check-csrf') === 'false' ? 'false' : 'true'; $action_info->meta_noindex = self::_getAttributeString($action, 'meta-noindex') === 'true' ? 'true' : 'false'; + $action_info->session = self::_getAttributeString($action, 'session') === 'false' ? 'false' : 'true'; + $action_info->cache_control = self::_getAttributeString($action, 'cache-control') === 'false' ? 'false' : 'true'; $action_info->global_route = $global_route; $info->action->{$action_name} = $action_info;