Prototype for an API method
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / bootstrap / com.woltlab.wcf.php
index f6107400495da889dd628b04dcf556659afb6541..945248053c65bef85a0695642be35166fd317168 100644 (file)
@@ -1,6 +1,8 @@
 <?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;
@@ -18,7 +20,9 @@ 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;
@@ -32,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);
 
@@ -68,15 +75,33 @@ return static function (): void {
 
     $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 >= \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.