Prototype for an API method
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / bootstrap / com.woltlab.wcf.php
index 59732e3992c1ceb37d3a286ee93ebf027d3f6f4b..945248053c65bef85a0695642be35166fd317168 100644 (file)
@@ -1,7 +1,10 @@
 <?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;
@@ -15,7 +18,11 @@ use wcf\system\language\preload\event\PreloadPhrasesCollecting;
 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;
@@ -29,6 +36,9 @@ return static function (): void {
     );
 
     $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);
 
@@ -62,4 +72,42 @@ return static function (): void {
         $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);
+    }
 };