Skip to content

Commit dae43cc

Browse files
committed
Drop show order and sort by provider name instead
1 parent ff58b09 commit dae43cc

3 files changed

Lines changed: 17 additions & 29 deletions

File tree

wcfsetup/install/files/lib/event/acp/search/provider/ProviderCollecting.class.php

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,9 @@ final class ProviderCollecting implements IPsr14Event
2020
*/
2121
private array $providers = [];
2222

23-
/**
24-
* @var array<string, int>
25-
*/
26-
private array $showOrders = [];
27-
28-
public function register(string $providerName, IACPSearchResultProvider $provider, int $showOrder = 0): void
23+
public function register(string $providerName, IACPSearchResultProvider $provider): void
2924
{
3025
$this->providers[$providerName] = $provider;
31-
$this->showOrders[$providerName] = $showOrder;
3226
}
3327

3428
/**
@@ -38,9 +32,4 @@ public function getProviders(): array
3832
{
3933
return $this->providers;
4034
}
41-
42-
public function getShowOrder(string $providerName): int
43-
{
44-
return $this->showOrders[$providerName] ?? 0;
45-
}
4635
}

wcfsetup/install/files/lib/system/event/listener/AcpSearchProviderCollectingListener.class.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ final class AcpSearchProviderCollectingListener
2525
{
2626
public function __invoke(ProviderCollecting $event): void
2727
{
28-
$event->register('com.woltlab.wcf.menuItem', new MenuItemACPSearchResultProvider(), 1);
29-
$event->register('com.woltlab.wcf.option', new OptionACPSearchResultProvider(), 2);
30-
$event->register('com.woltlab.wcf.user', new UserACPSearchResultProvider(), 3);
31-
$event->register('com.woltlab.wcf.userGroupOption', new UserGroupOptionACPSearchResultProvider(), 4);
32-
$event->register('com.woltlab.wcf.package', new PackageACPSearchResultProvider(), 5);
33-
$event->register('com.woltlab.wcf.page', new PageACPSearchResultProvider(), 6);
34-
$event->register('com.woltlab.wcf.box', new BoxACPSearchResultProvider(), 7);
35-
$event->register('com.woltlab.wcf.article', new ArticleACPSearchResultProvider(), 8);
36-
$event->register('com.woltlab.wcf.trophy', new TrophyACPSearchResultProvider(), 9);
28+
$event->register('com.woltlab.wcf.article', new ArticleACPSearchResultProvider());
29+
$event->register('com.woltlab.wcf.box', new BoxACPSearchResultProvider());
30+
$event->register('com.woltlab.wcf.menuItem', new MenuItemACPSearchResultProvider());
31+
$event->register('com.woltlab.wcf.option', new OptionACPSearchResultProvider());
32+
$event->register('com.woltlab.wcf.package', new PackageACPSearchResultProvider());
33+
$event->register('com.woltlab.wcf.page', new PageACPSearchResultProvider());
34+
$event->register('com.woltlab.wcf.trophy', new TrophyACPSearchResultProvider());
35+
$event->register('com.woltlab.wcf.user', new UserACPSearchResultProvider());
36+
$event->register('com.woltlab.wcf.userGroupOption', new UserGroupOptionACPSearchResultProvider());
3737
}
3838
}

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use wcf\system\event\EventHandler;
99
use wcf\system\exception\ImplementationException;
1010
use wcf\system\SingletonFactory;
11+
use wcf\system\WCF;
1112

1213
/**
1314
* Handles ACP Search.
@@ -29,19 +30,13 @@ class ACPSearchHandler extends SingletonFactory
2930
*/
3031
private array $providers = [];
3132

32-
/**
33-
* @var array<string, int>
34-
*/
35-
private array $showOrders = [];
36-
3733
#[\Override]
3834
protected function init()
3935
{
4036
$event = new ProviderCollecting();
4137
EventHandler::getInstance()->fire($event);
4238
foreach ($event->getProviders() as $providerName => $provider) {
4339
$this->providers[$providerName] = $provider;
44-
$this->showOrders[$providerName] = $event->getShowOrder($providerName);
4540
}
4641

4742
foreach (ACPSearchProviderCacheBuilder::getInstance()->getData() as $acpSearchProvider) {
@@ -55,12 +50,16 @@ protected function init()
5550
}
5651

5752
$this->providers[$acpSearchProvider->providerName] = new $className();
58-
$this->showOrders[$acpSearchProvider->providerName] = (int)$acpSearchProvider->showOrder;
5953
}
6054

55+
$language = WCF::getLanguage();
56+
$collator = new \Collator($language->getLocale());
6157
\uksort(
6258
$this->providers,
63-
fn(string $a, string $b) => $this->showOrders[$a] <=> $this->showOrders[$b]
59+
static fn(string $a, string $b) => $collator->compare(
60+
$language->get('wcf.acp.search.provider.' . $a),
61+
$language->get('wcf.acp.search.provider.' . $b)
62+
)
6463
);
6564
}
6665

0 commit comments

Comments
 (0)