*/ public static function permissionCodes(string $pageKey, string $bundleKey): array { $pages = self::pages(); $page = $pages[$pageKey] ?? []; $bundle = $page['bundles'][$bundleKey] ?? []; $codes = is_array($bundle) ? ($bundle['permission_codes'] ?? []) : []; return is_array($codes) ? array_values(array_filter($codes, static fn ($v): bool => is_string($v) && $v !== '')) : []; } public static function prdName(string $pageKey, string $bundleKey): string { return sprintf('%s·%s', self::pageLabel($pageKey), self::bundleLabel($pageKey, $bundleKey)); } /** @return list */ public static function requiredBundleKeys(string $pageKey): array { $pages = self::pages(); $page = $pages[$pageKey] ?? []; $required = $page['required_bundles'] ?? []; if (! is_array($required)) { return []; } return array_values(array_filter($required, static fn ($v): bool => is_string($v) && $v !== '')); } /** @return list */ public static function requiredAnyPrdSlugs(string $pageKey): array { $bundleKeys = self::requiredBundleKeys($pageKey); if ($bundleKeys === []) { return []; } $slugs = []; foreach ($bundleKeys as $bundleKey) { $slug = self::prdSlug($pageKey, $bundleKey); if (is_string($slug) && $slug !== '') { $slugs[] = $slug; } } return array_values(array_unique($slugs)); } }