From f275572df3ed7ffe39fec322faba6eddcb31f179 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 1 Nov 2025 15:46:40 +0000 Subject: [PATCH 1/4] Initial plan From 4ad99056b267f3a9b0b65f01fb35c16154cb2892 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 1 Nov 2025 15:58:22 +0000 Subject: [PATCH 2/4] Fix fatal error when adding subcategory to restricted parent category Co-authored-by: thorsten <45284+thorsten@users.noreply.github.com> --- phpmyfaq/admin/category.add.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/phpmyfaq/admin/category.add.php b/phpmyfaq/admin/category.add.php index d5b9307e94..662c32a69e 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,26 @@ 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); + $parentCategoryLang = $parentCategoryData->getLang(); + $parentCategoryName = $parentCategoryData->getName(); + } 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'), ]; } From 4e9ecf667547df6822432353106f097cc5faf91a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 1 Nov 2025 16:02:00 +0000 Subject: [PATCH 3/4] Add validation for category data retrieval Co-authored-by: thorsten <45284+thorsten@users.noreply.github.com> --- phpmyfaq/admin/category.add.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/phpmyfaq/admin/category.add.php b/phpmyfaq/admin/category.add.php index 662c32a69e..491a54f5e5 100644 --- a/phpmyfaq/admin/category.add.php +++ b/phpmyfaq/admin/category.add.php @@ -83,8 +83,16 @@ $baseCategory = new Category($faqConfig, [], false); $baseCategory->setLanguage($faqConfig->getLanguage()->getLanguage()); $parentCategoryData = $baseCategory->getCategoryData($parentId); - $parentCategoryLang = $parentCategoryData->getLang(); - $parentCategoryName = $parentCategoryData->getName(); + + // Validate that the category was found + if ($parentCategoryData->getId() > 0) { + $parentCategoryLang = $parentCategoryData->getLang() ?? $faqConfig->getLanguage()->getLanguage(); + $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']; From 9887a3f2ee90ca401c47dcd12fccdf6ec401d158 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 1 Nov 2025 16:05:05 +0000 Subject: [PATCH 4/4] Remove unnecessary null coalescing operator Co-authored-by: thorsten <45284+thorsten@users.noreply.github.com> --- phpmyfaq/admin/category.add.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpmyfaq/admin/category.add.php b/phpmyfaq/admin/category.add.php index 491a54f5e5..8babae9f45 100644 --- a/phpmyfaq/admin/category.add.php +++ b/phpmyfaq/admin/category.add.php @@ -86,7 +86,7 @@ // Validate that the category was found if ($parentCategoryData->getId() > 0) { - $parentCategoryLang = $parentCategoryData->getLang() ?? $faqConfig->getLanguage()->getLanguage(); + $parentCategoryLang = $parentCategoryData->getLang(); $parentCategoryName = $parentCategoryData->getName(); } else { // Parent category doesn't exist in database - use fallback values