diff --git a/core/ViewDataTable/Factory.php b/core/ViewDataTable/Factory.php index 67e329e6c7415850cb40bd4e9b5ef2dcde09fd3c..01a301cb19ce2f619b69a9b3d3835e49c1d50102 100644 --- a/core/ViewDataTable/Factory.php +++ b/core/ViewDataTable/Factory.php @@ -97,10 +97,6 @@ class Factory $defaultViewType = self::getDefaultViewTypeForReport($apiAction); - if (!$forceDefault && !empty($defaultViewType)) { - $defaultType = $defaultViewType; - } - $isWidget = Common::getRequestVar('widget', '0', 'string'); if (!empty($isWidget)) { @@ -115,14 +111,22 @@ class Factory $savedViewDataTable = $params['viewDataTable']; } - $type = Common::getRequestVar('viewDataTable', $savedViewDataTable, 'string'); + // order of default viewDataTables' priority is: function specified default, saved default, configured default for report + // function specified default is preferred + // -> force default == true : defaultType ?: saved ?: defaultView + // -> force default == false : saved ?: defaultType ?: defaultView + if ($forceDefault) { + $defaultType = $defaultType ?: $savedViewDataTable ?: $defaultViewType; + } else { + $defaultType = $savedViewDataTable ?: $defaultType ?: $defaultViewType; + } + + $type = Common::getRequestVar('viewDataTable', $defaultType, 'string'); // Common::getRequestVar removes backslashes from the defaultValue in case magic quotes are enabled. // therefore do not pass this as a default value to getRequestVar() - if ('' === $type - || $forceDefault - ) { - $type = $defaultType ? : HtmlTable::ID; + if ('' === $type) { + $type = $defaultType ?: HtmlTable::ID; } $params['viewDataTable'] = $type;