diff --git a/framework/base/router.class.php b/framework/base/router.class.php index 3d0dcad3a4..c6873e4418 100644 --- a/framework/base/router.class.php +++ b/framework/base/router.class.php @@ -3926,8 +3926,8 @@ class ztSessionHandler implements SessionHandlerInterface public function gc($maxlifeTime): int|false { /* API session never expires. */ - if(!isset($this->config->sessionVar)) return 0; - if((defined('RUN_MODE') && RUN_MODE == 'api') || isset($_GET[$this->config->sessionVar])) return 0; + global $config; + if((defined('RUN_MODE') && RUN_MODE == 'api') || isset($_GET[$config->sessionVar])) return 0; $time = time(); $count = 0; diff --git a/module/story/model.php b/module/story/model.php index 1520e73c0b..16a7cc44db 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -3892,6 +3892,9 @@ class storyModel extends model if($action == 'submitreview' && strpos('draft,changing', $story->status) === false) return false; if($action == 'createtestcase' || $action == 'batchcreatetestcase') return $config->vision != 'lite' && $story->isParent == '0' && $story->type == 'story'; + /* Check isClickable when feedback convert to story. */ + if($action == 'create' && $app->rawModule == 'feedback') return ($config->global->flow == 'full' && strpos('closed|clarify|noreview', $story->status) === false); + if($action == 'createtask') { if($app->tab == 'project' && !empty($_SESSION['project']))