From b5e9cd9343f5d75f5b032724b592500fa229ed0d Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Thu, 22 May 2025 13:36:23 +0900 Subject: [PATCH] Display required level in "Not permitted" error message ##2548 --- classes/module/ModuleObject.class.php | 12 ++++++++-- modules/point/point.model.php | 33 +++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/classes/module/ModuleObject.class.php b/classes/module/ModuleObject.class.php index 82cbde6a0..f77996e99 100644 --- a/classes/module/ModuleObject.class.php +++ b/classes/module/ModuleObject.class.php @@ -476,9 +476,17 @@ class ModuleObject extends BaseObject { return 'msg_administrator_only'; } - elseif (is_array($failed_requirement)) + elseif (is_array($failed_requirement) && count($failed_requirement)) { - return 'msg_required_specific_group'; + if (class_exists('PointModel')) + { + $min_level = PointModel::getMinimumLevelForGroup($failed_requirement); + if ($min_level) + { + return sprintf(lang('member.msg_required_minimum_level'), $min_level); + } + } + return 'member.msg_required_specific_group'; } else { diff --git a/modules/point/point.model.php b/modules/point/point.model.php index 1220f37a8..a9cfb5599 100644 --- a/modules/point/point.model.php +++ b/modules/point/point.model.php @@ -117,6 +117,39 @@ class PointModel extends Point return $level - 1; } + /** + * Get the minimum level required to belong in group(s) + * + * @param int|array $group_srl + * @return ?int + */ + public static function getMinimumLevelForGroup($group_srl): ?int + { + if (!is_array($group_srl)) + { + $group_srl = [$group_srl]; + } + + $min_level = null; + $config = self::getConfig(); + foreach ($config->point_group ?? [] as $group => $required_level) + { + if (in_array($group, $group_srl)) + { + if ($min_level === null) + { + $min_level = $required_level; + } + else + { + $min_level = min($min_level, $required_level); + } + } + } + + return $min_level; + } + /** * @deprecated */