Skip to content

Commit 7caa9c6

Browse files
committed
Merge branch '6.2' of https://github.com/WoltLab/WCF into 6.2
2 parents a867dcf + 4b2176d commit 7caa9c6

File tree

4 files changed

+21
-55
lines changed

4 files changed

+21
-55
lines changed

wcfsetup/install/files/lib/system/gridView/AbstractGridView.class.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ abstract class AbstractGridView
5656
private int $rowsPerPage = 20;
5757
private string $baseUrl = '';
5858
private string $defaultSortField = '';
59-
private string $defaultSortOrder = '';
59+
private string $defaultSortOrder = 'ASC';
6060
private string $sortField = '';
6161
private string $sortOrder = 'ASC';
6262
private int $pageNo = 1;

wcfsetup/install/files/lib/system/listView/AbstractListView.class.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ abstract class AbstractListView
3636
private int $itemsPerPage = 20;
3737
private string $baseUrl = '';
3838
private string $defaultSortField = '';
39-
private string $defaultSortOrder = '';
39+
private string $defaultSortOrder = 'ASC';
4040
private string $sortField = '';
4141
private string $sortOrder = 'ASC';
4242
private string $cssClassName = '';

wcfsetup/install/files/lib/system/menu/acp/AcpMenuItem.class.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,20 @@ public function __construct(
2222
public readonly string $parentMenuItem = '',
2323
public readonly string $link = '',
2424
public readonly ?FontAwesomeIcon $icon = null
25-
) {
26-
}
25+
) {}
2726

28-
public function getLink()
27+
#[\Override]
28+
public function getLink(): string
2929
{
3030
return $this->link;
3131
}
3232

33-
public function getIcon(): ?FontAwesomeIcon
33+
public function getIcon(): FontAwesomeIcon
3434
{
35+
if ($this->icon === null) {
36+
return FontAwesomeIcon::fromString('question;true');
37+
}
38+
3539
return $this->icon;
3640
}
3741

wcfsetup/install/files/lib/system/search/acp/MenuItemACPSearchResultProvider.class.php

Lines changed: 11 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@
22

33
namespace wcf\system\search\acp;
44

5-
use wcf\data\acp\menu\item\ACPMenuItem;
6-
use wcf\system\database\util\PreparedStatementConditionBuilder;
75
use wcf\system\menu\acp\ACPMenu;
6+
use wcf\system\menu\acp\AcpMenuItem;
87
use wcf\system\WCF;
98

109
/**
1110
* ACP search provider implementation for menu items.
1211
*
13-
* @author Alexander Ebert
14-
* @copyright 2001-2019 WoltLab GmbH
15-
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
12+
* @author Alexander Ebert
13+
* @copyright 2001-2025 WoltLab GmbH
14+
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
1615
*/
1716
class MenuItemACPSearchResultProvider extends AbstractACPSearchResultProvider implements IACPSearchResultProvider
1817
{
@@ -22,52 +21,15 @@ class MenuItemACPSearchResultProvider extends AbstractACPSearchResultProvider im
2221
public function search($query)
2322
{
2423
$results = [];
24+
$menuItems = ACPMenu::getInstance()->menuItemList;
2525

26-
// search by language item
27-
$conditions = new PreparedStatementConditionBuilder();
28-
$conditions->add("languageID = ?", [WCF::getLanguage()->languageID]);
26+
foreach ($menuItems as $menuItem) {
27+
\assert($menuItem instanceof AcpMenuItem);
2928

30-
// filter by language item
31-
$languageItemsConditions = '';
32-
$languageItemsParameters = [];
33-
foreach (ACPSearchHandler::getInstance()->getAbbreviations('.acp.menu.link.%') as $abbreviation) {
34-
if (!empty($languageItemsConditions)) {
35-
$languageItemsConditions .= " OR ";
29+
if (\mb_stripos($menuItem->__toString(), $query) === false) {
30+
continue;
3631
}
37-
$languageItemsConditions .= "languageItem LIKE ?";
38-
$languageItemsParameters[] = $abbreviation;
39-
}
40-
$conditions->add("(" . $languageItemsConditions . ")", $languageItemsParameters);
41-
$conditions->add("languageItemValue LIKE ?", ['%' . $query . '%']);
42-
43-
$sql = "SELECT languageItem, languageItemValue
44-
FROM wcf1_language_item
45-
" . $conditions . "
46-
ORDER BY languageItemValue ASC";
47-
$statement = WCF::getDB()->prepare($sql); // don't use a limit here
48-
$statement->execute($conditions->getParameters());
49-
$languageItems = $statement->fetchMap('languageItem', 'languageItemValue');
50-
51-
if (empty($languageItems)) {
52-
return [];
53-
}
54-
55-
$conditions = new PreparedStatementConditionBuilder();
56-
$conditions->add("menuItem IN (?)", [\array_keys($languageItems)]);
57-
$conditions->add("menuItemController <> ''");
58-
59-
$sql = "SELECT *
60-
FROM wcf1_acp_menu_item
61-
" . $conditions;
62-
$statement = WCF::getDB()->prepare($sql); // don't use a limit here
63-
$statement->execute($conditions->getParameters());
64-
65-
$menuItems = ACPMenu::getInstance()->menuItemList;
66-
67-
while ($menuItem = $statement->fetchObject(ACPMenuItem::class)) {
68-
// only valid menu items exist in TreeMenu::$menuItemList,
69-
// so no need to call AbstractACPSearchResultProvider::validate()
70-
if (!isset($menuItems[$menuItem->menuItem])) {
32+
if (!$menuItem->getLink()) {
7133
continue;
7234
}
7335

@@ -79,7 +41,7 @@ public function search($query)
7941
$parentMenuItem = $menuItems[$parentMenuItem]->parentMenuItem;
8042
}
8143
$results[] = new ACPSearchResult(
82-
$languageItems[$menuItem->menuItem],
44+
$menuItem->__toString(),
8345
$menuItem->getLink(),
8446
WCF::getLanguage()->getDynamicVariable(
8547
'wcf.acp.search.result.subtitle',

0 commit comments

Comments
 (0)