diff --git a/phpmyfaq/admin/category.add.php b/phpmyfaq/admin/category.add.php index d5b9307e94..8babae9f45 100644 --- a/phpmyfaq/admin/category.add.php +++ b/phpmyfaq/admin/category.add.php @@ -16,6 +16,7 @@ * @since 2003-12-20 */ +use phpMyFAQ\Category; use phpMyFAQ\Category\Permission; use phpMyFAQ\Enums\PermissionType; use phpMyFAQ\Filter; @@ -75,12 +76,34 @@ if ($parentId > 0) { $userAllowed = $categoryPermission->get(Permission::USER, [$parentId]); $groupsAllowed = $categoryPermission->get(Permission::GROUP, [$parentId]); + + // Check if parent category exists in loaded categories + // If not (due to permission restrictions), fetch it directly + if (!isset($category->categoryName[$parentId])) { + $baseCategory = new Category($faqConfig, [], false); + $baseCategory->setLanguage($faqConfig->getLanguage()->getLanguage()); + $parentCategoryData = $baseCategory->getCategoryData($parentId); + + // Validate that the category was found + if ($parentCategoryData->getId() > 0) { + $parentCategoryLang = $parentCategoryData->getLang(); + $parentCategoryName = $parentCategoryData->getName(); + } else { + // Parent category doesn't exist in database - use fallback values + $parentCategoryLang = $faqConfig->getLanguage()->getLanguage(); + $parentCategoryName = ''; + } + } else { + $parentCategoryLang = $category->categoryName[$parentId]['lang']; + $parentCategoryName = $category->categoryName[$parentId]['name']; + } + $templateVars = [ ...$templateVars, - 'categoryNameLangCode' => LanguageCodes::get($category->categoryName[$parentId]['lang']), + 'categoryNameLangCode' => LanguageCodes::get($parentCategoryLang), 'userAllowed' => $categoryPermission->get(Permission::USER, [$parentId])[0], 'groupsAllowed' => $categoryPermission->get(Permission::GROUP, [$parentId]), - 'categoryName' => $category->categoryName[$parentId]['name'], + 'categoryName' => $parentCategoryName, 'msgMainCategory' => Translation::get('msgMainCategory'), ]; }