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 */