Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 22 additions & 8 deletions files/lib/acp/form/FaqQuestionAddForm.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@

use Laminas\Diactoros\Response\RedirectResponse;
use Override;
use wcf\data\faq\category\FaqCategory;
use wcf\data\faq\category\FaqCategoryNode;
use wcf\data\faq\category\FaqCategoryNodeTree;
use wcf\data\faq\Question;
use wcf\data\faq\QuestionAction;
use wcf\data\faq\QuestionEditor;
use wcf\data\IStorableObject;
use wcf\data\language\item\LanguageItemList;
use wcf\data\language\Language;
use wcf\form\AbstractFormBuilderForm;
use wcf\system\form\builder\container\FormContainer;
use wcf\system\form\builder\container\TabFormContainer;
Expand All @@ -23,10 +26,12 @@
use wcf\system\form\builder\IFormDocument;
use wcf\system\html\input\HtmlInputProcessor;
use wcf\system\language\LanguageFactory;
use wcf\system\request\IRouteController;
use wcf\system\request\LinkHandler;
use wcf\system\WCF;

/**
* @extends AbstractFormBuilderForm<Question>
*/
class FaqQuestionAddForm extends AbstractFormBuilderForm
{
/**
Expand Down Expand Up @@ -57,8 +62,14 @@ class FaqQuestionAddForm extends AbstractFormBuilderForm

protected int $isMultilingual = 0;

/**
* @var array<int, string>
*/
protected array $multiLingualAnswers = [];

/**
* @var array<int, FaqCategoryNode|FaqCategory>
*/
protected array $categories;

#[Override]
Expand Down Expand Up @@ -205,13 +216,7 @@ protected function setFormAction()
'isMultilingual' => $this->isMultilingual,
];
if ($this->formObject !== null) {
if ($this->formObject instanceof IRouteController) {
$parameters['object'] = $this->formObject;
} else {
$object = $this->formObject;

$parameters['id'] = $object->{$object::getDatabaseTableIndexName()};
}
$parameters['object'] = $this->formObject;
}

$this->form->action(LinkHandler::getInstance()->getControllerLink(static::class, $parameters));
Expand All @@ -227,6 +232,9 @@ public function assignVariables()
]);
}

/**
* @return array<int, FaqCategoryNode|FaqCategory>
*/
protected function getCategories(): array
{
if (!isset($this->categories)) {
Expand All @@ -235,9 +243,15 @@ protected function getCategories(): array
$categoryList = $categoryTree->getIterator();

$this->categories = [];
/**
* @var FaqCategoryNode $category
*/
foreach ($categoryList as $category) {
$this->categories[$category->categoryID] = $category;

/**
* @var FaqCategory[]
*/
$childCategories = $category->getAllChildCategories();
if (!\count($childCategories)) {
continue;
Expand Down
6 changes: 4 additions & 2 deletions files/lib/acp/page/FaqQuestionListPage.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@

use Override;
use wcf\page\AbstractGridViewPage;
use wcf\system\gridView\AbstractGridView;
use wcf\system\gridView\admin\FaqQuestionGridView;
use wcf\system\WCF;

/**
* @extends AbstractGridViewPage<FaqQuestionGridView>
*/
final class FaqQuestionListPage extends AbstractGridViewPage
{
/**
Expand All @@ -33,7 +35,7 @@ public function readParameters()
}

#[Override]
protected function createGridView(): AbstractGridView
protected function createGridView(): FaqQuestionGridView
{
return new FaqQuestionGridView();
}
Expand Down
2 changes: 1 addition & 1 deletion files/lib/data/faq/Question.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public function isAccessible(?User $user = null): bool
return false;
}

if ($this->getCategory()) {
if ($this->getCategory()->categoryID) {
return $this->getCategory()->isAccessible($user);
}

Expand Down
7 changes: 3 additions & 4 deletions files/lib/data/faq/QuestionAction.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@
use wcf\system\WCF;

/**
* @method QuestionEditor[] getObjects()
* @method QuestionEditor getSingleObject()
* @extends AbstractDatabaseObjectAction<Question, QuestionEditor>
*/
final class QuestionAction extends AbstractDatabaseObjectAction implements ISortableAction, IToggleAction
{
Expand Down Expand Up @@ -139,7 +138,7 @@ public function update()
$this->updateSearchIndex($object);

//update show order
if (isset($this->parameters['data']['showOrder']) && $this->parameters['data']['showOrder'] !== null) {
if (isset($this->parameters['data']['showOrder'])) {
if ($object->showOrder < $this->parameters['data']['showOrder']) {
$sql = "UPDATE wcf1_faq_questions
SET showOrder = showOrder - 1
Expand Down Expand Up @@ -188,7 +187,7 @@ public function update()
}
}

private function updateSearchIndex($object)
private function updateSearchIndex(Question|QuestionEditor $object): void
{
if (isset($this->parameters['answer_i18n'])) {
foreach ($this->parameters['answer_i18n'] as $languageID => $answer) {
Expand Down
8 changes: 2 additions & 6 deletions files/lib/data/faq/QuestionEditor.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
use wcf\system\WCF;

/**
* @method static Question create(array $parameters = [])
* @method Question getDecoratedObject()
* @mixin Question
* @extends DatabaseObjectEditor<Question>
* @implements IEditableCachedObject<Question>
*/
final class QuestionEditor extends DatabaseObjectEditor implements IEditableCachedObject
{
Expand All @@ -31,10 +31,6 @@ public static function resetCache()
*/
public function updateShowOrder(int $showOrder): int
{
if ($showOrder === null) {
$showOrder = \PHP_INT_MAX;
}

//check showOrder
if ($showOrder < $this->showOrder) {
$sql = "UPDATE wcf1_faq_questions
Expand Down
6 changes: 1 addition & 5 deletions files/lib/data/faq/QuestionList.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,7 @@
use wcf\data\DatabaseObjectList;

/**
* @method Question current()
* @method Question[] getObjects()
* @method Question|null getSingleObject()
* @method Question|null search($objectID)
* @property Question[] $objects
* @extends DatabaseObjectList<Question>
*/
final class QuestionList extends DatabaseObjectList
{
Expand Down
9 changes: 6 additions & 3 deletions files/lib/data/faq/category/FaqCategory.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,17 @@
/**
* @method FaqCategory[] getChildCategories()
* @method FaqCategory[] getAllChildCategories()
* @method FaqCategory getParentCategory()
* @method ?FaqCategory getParentCategory()
* @method FaqCategory[] getParentCategories()
* @method static FaqCategory|null getCategory($categoryID)
*/
final class FaqCategory extends AbstractDecoratedCategory implements IAccessibleObject, ITitledLinkObject
{
public const OBJECT_TYPE_NAME = 'dev.tkirch.wsc.faq.category';

/**
* @var array<int, array<string, bool>>
*/
private array $userPermissions = [];

private bool $prefix = false;
Expand All @@ -40,7 +43,7 @@ public function isAccessible(?User $user = null)
return $this->getPermission('canViewFAQ', $user);
}

public function getPermission($permission, ?User $user = null, $isMod = false)
public function getPermission(string $permission, ?User $user = null, bool $isMod = false): bool
{
if ($user === null) {
$user = WCF::getUser();
Expand Down Expand Up @@ -74,7 +77,7 @@ public function getTitle(): string
return ($this->prefix ? '&nbsp;&nbsp;' : '') . WCF::getLanguage()->get($this->title);
}

public function setPrefix($prefix = true)
public function setPrefix(bool $prefix = true): void
{
$this->prefix = $prefix;
}
Expand Down
13 changes: 10 additions & 3 deletions files/lib/data/faq/category/FaqCategoryCache.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace wcf\data\faq\category;

use wcf\data\category\Category;
use wcf\system\category\CategoryHandler;
use wcf\system\SingletonFactory;
use wcf\system\WCF;
Expand All @@ -14,7 +15,7 @@ final class FaqCategoryCache extends SingletonFactory
*/
private array $questions;

private function initQuestions()
private function initQuestions(): void
{
$this->questions = [];

Expand All @@ -38,7 +39,13 @@ private function initQuestions()
$this->countQuestions($categoryToParent, $contacts, 0);
}

private function countQuestions(array $categoryToParent, array &$contacts, $categoryID)
/**
*
* @param array<int, int[]> $categoryToParent
* @param array<int, int> &$contacts
* @param int $categoryID
*/
private function countQuestions(array $categoryToParent, array &$contacts, int $categoryID): int
{
$count = (isset($contacts[$categoryID])) ? $contacts[$categoryID] : 0;
if (isset($categoryToParent[$categoryID])) {
Expand All @@ -54,7 +61,7 @@ private function countQuestions(array $categoryToParent, array &$contacts, $cate
return $count;
}

public function getQuestions($categoryID)
public function getQuestions(int $categoryID): int
{
if (!isset($this->questions)) {
$this->initQuestions();
Expand Down
10 changes: 8 additions & 2 deletions files/lib/page/FaqQuestionListPage.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ class FaqQuestionListPage extends AbstractPage
*/
public $neededPermissions = ['user.faq.canViewFAQ'];

/**
* @var array<int, object>
*/
protected array $faqs = [];

protected int $showFaqAddDialog = 0;
Expand Down Expand Up @@ -67,8 +70,7 @@ public function readData()
}
if (
isset($this->category)
&& $this->category !== null
&& $this->category->categoryID != $category->categoryID
&& $this->category->categoryID !== $category->categoryID
) {
continue;
}
Expand Down Expand Up @@ -115,6 +117,10 @@ public function assignVariables()
]);
}

/**
* @param int[] $questionIDs
* @return array<void>|GroupedAttachmentList
*/
protected function getAttachmentList(array $questionIDs): array|GroupedAttachmentList
{
if ($questionIDs === []) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,12 @@
namespace wcf\system\attachment;

use Override;
use wcf\data\faq\Question;
use wcf\system\WCF;

/**
* @extends AbstractAttachmentObjectType<Question>
*/
final class FaqQuestionAttachmentObjectType extends AbstractAttachmentObjectType
{
#[Override]
Expand Down
2 changes: 1 addition & 1 deletion files/lib/system/bbcode/FaqBBCode.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public function getParsedTag(array $openingTag, $content, array $closingTag, BBC
return WCF::getTPL()->render('wcf', 'faqBBCode', [
'question' => $question,
'collapseQuestion' => $collapse,
], true);
]);
}

return $question->getTitle() . "\n\n" . $question->getPlainOutput();
Expand Down
1 change: 1 addition & 0 deletions files/lib/system/box/FaqCategoriesBoxController.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ protected function getActiveCategory(): ?AbstractDecoratedCategory
|| RequestHandler::getInstance()->getActiveRequest()->getRequestObject() instanceof FaqQuestionPage
) {
if (isset(RequestHandler::getInstance()->getActiveRequest()->getRequestObject()->category)) {
// @phpstan-ignore property.protected
$activeCategory = RequestHandler::getInstance()->getActiveRequest()->getRequestObject()->category;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public function __invoke(ServerRequestInterface $request, array $variables): Res
}

/**
* @param list<ShowOrderItem> $items
* @param ShowOrderItem[] $items
*/
private function saveShowOrder(array $items): void
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public function __invoke(ServerRequestInterface $request, array $variables): Res
}

/**
* @return list<int>
* @return int[]
*/
private function getQuestionsIDs(string $query): array
{
Expand All @@ -63,7 +63,8 @@ private function getQuestionsIDs(string $query): array
}

/**
* @return list<Question>
* @param int[] $questionIDs
* @return Question[]
*/
private function getQuestions(array $questionIDs): array
{
Expand Down
7 changes: 5 additions & 2 deletions files/lib/system/gridView/admin/FaqQuestionGridView.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
use Override;
use wcf\acp\form\FaqQuestionEditForm;
use wcf\data\category\CategoryNodeTree;
use wcf\data\DatabaseObjectList;
use wcf\data\faq\Question;
use wcf\data\faq\QuestionList;
use wcf\system\gridView\AbstractGridView;
use wcf\system\gridView\GridViewColumn;
Expand All @@ -25,6 +25,9 @@
use wcf\system\view\filter\ObjectIdFilter;
use wcf\system\WCF;

/**
* @extends AbstractGridView<Question, QuestionList>
*/
final class FaqQuestionGridView extends AbstractGridView
{
public function __construct()
Expand Down Expand Up @@ -93,7 +96,7 @@ public function __construct()
}

#[Override]
protected function createObjectList(): DatabaseObjectList
protected function createObjectList(): QuestionList
{
return new QuestionList();
}
Expand Down
Loading