<?php
+use wcf\system\acp\dashboard\event\AcpDashboardCollecting;
use wcf\system\cronjob\CronjobScheduler;
+use wcf\system\endpoint\event\ControllerCollecting;
use wcf\system\event\EventHandler;
+use wcf\system\event\listener\PackageUpdateListChangedLicenseListener;
use wcf\system\event\listener\PhraseChangedPreloadListener;
use wcf\system\event\listener\PipSyncedPhrasePreloadListener;
use wcf\system\event\listener\PreloadPhrasesCollectingListener;
use wcf\system\language\preload\PhrasePreloader;
use wcf\system\package\event\PackageInstallationPluginSynced;
use wcf\system\package\event\PackageListChanged;
+use wcf\system\package\event\PackageUpdateListChanged;
+use wcf\system\package\license\LicenseApi;
+use wcf\system\session\event\PreserveVariablesCollecting;
use wcf\system\user\authentication\event\UserLoggedIn;
+use wcf\system\user\authentication\LoginRedirect;
use wcf\system\user\event\UsernameValidating;
use wcf\system\WCF;
use wcf\system\worker\event\RebuildWorkerCollecting;
);
$eventHandler->register(UserLoggedIn::class, UserLoginCancelLostPasswordListener::class);
+ $eventHandler->register(PreserveVariablesCollecting::class, static function (PreserveVariablesCollecting $event) {
+ $event->keys[] = LoginRedirect::SESSION_VAR_KEY;
+ });
$eventHandler->register(UsernameValidating::class, UsernameValidatingCheckCharactersListener::class);
$event->register(\wcf\system\worker\SitemapRebuildWorker::class, 500);
$event->register(\wcf\system\worker\StatDailyRebuildDataWorker::class, 800);
});
+
+ $eventHandler->register(PackageUpdateListChanged::class, PackageUpdateListChangedLicenseListener::class);
+
+ $eventHandler->register(AcpDashboardCollecting::class, static function (AcpDashboardCollecting $event) {
+ $event->register(new \wcf\system\acp\dashboard\box\NewsAcpDashboardBox());
+ $event->register(new \wcf\system\acp\dashboard\box\StatusMessageAcpDashboardBox());
+ $event->register(new \wcf\system\acp\dashboard\box\ExpiringLicensesAcpDashboardBox());
+ $event->register(new \wcf\system\acp\dashboard\box\UsersAwaitingApprovalAcpDashboardBox());
+ $event->register(new \wcf\system\acp\dashboard\box\SystemInfoAcpDashboardBox());
+ $event->register(new \wcf\system\acp\dashboard\box\CreditsAcpDashboardBox());
+ });
+
+ $eventHandler->register(ControllerCollecting::class, static function (ControllerCollecting $event) {
+ $event->register(new \wcf\system\endpoint\moderationqueues\Assign);
+ });
+
+ try {
+ $licenseApi = new LicenseApi();
+ $licenseData = $licenseApi->readFromFile();
+ if ($licenseData !== null) {
+ $brandingFree = $licenseData->woltlab['com.woltlab.brandingFree'] ?? '0.0';
+ $expiresAt = $licenseData->license['expiryDates']['com.woltlab.brandingFree'] ?? \TIME_NOW;
+ if ($brandingFree !== '0.0' && ($expiresAt === -1 || $expiresAt >= \TIME_NOW)) {
+ define('WOLTLAB_BRANDING', false);
+ }
+
+ // Expire the cached license data after 60 days.
+ if ($licenseData->creationDate->getTimestamp() < \TIME_NOW - 86400 * 60) {
+ $licenseApi->clearLicenseFile();
+ }
+ }
+ } catch (\Throwable) {
+ // Reading the license file must never cause any errors.
+ }
+
+ if (!defined('WOLTLAB_BRANDING')) {
+ define('WOLTLAB_BRANDING', true);
+ }
};