Cleanly separate the LicenseApi service and the LicenseData value object
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / bootstrap / com.woltlab.wcf.php
CommitLineData
921a5a56
TD
1<?php
2
a87f05e3 3use wcf\system\cronjob\CronjobScheduler;
cbb6cd3a 4use wcf\system\event\EventHandler;
72b14b62 5use wcf\system\event\listener\PhraseChangedPreloadListener;
3476fff9 6use wcf\system\event\listener\PipSyncedPhrasePreloadListener;
a66ffe10 7use wcf\system\event\listener\PreloadPhrasesCollectingListener;
cbb6cd3a 8use wcf\system\event\listener\UserLoginCancelLostPasswordListener;
d93e2f9b 9use wcf\system\event\listener\UsernameValidatingCheckCharactersListener;
e25082fb 10use wcf\system\language\event\LanguageImported;
72b14b62 11use wcf\system\language\event\PhraseChanged;
cefdae5a 12use wcf\system\language\LanguageFactory;
72b14b62 13use wcf\system\language\preload\command\ResetPreloadCache;
5492c8f9 14use wcf\system\language\preload\event\PreloadPhrasesCollecting;
67dd12f1 15use wcf\system\language\preload\PhrasePreloader;
3476fff9 16use wcf\system\package\event\PackageInstallationPluginSynced;
cefdae5a 17use wcf\system\package\event\PackageListChanged;
0f5abeda 18use wcf\system\package\license\LicenseApi;
cbb6cd3a 19use wcf\system\user\authentication\event\UserLoggedIn;
d93e2f9b 20use wcf\system\user\event\UsernameValidating;
a87f05e3 21use wcf\system\WCF;
73df173e 22use wcf\system\worker\event\RebuildWorkerCollecting;
921a5a56 23
2bdb96d3 24return static function (): void {
252f3bc2
TD
25 $eventHandler = EventHandler::getInstance();
26
a87f05e3
TD
27 WCF::getTPL()->assign(
28 'executeCronjobs',
29 CronjobScheduler::getInstance()->getNextExec() < TIME_NOW && \defined('OFFLINE') && !OFFLINE
30 );
cbb6cd3a 31
252f3bc2 32 $eventHandler->register(UserLoggedIn::class, UserLoginCancelLostPasswordListener::class);
cbad026e 33
d93e2f9b
TD
34 $eventHandler->register(UsernameValidating::class, UsernameValidatingCheckCharactersListener::class);
35
252f3bc2 36 $eventHandler->register(PackageListChanged::class, static function () {
cefdae5a 37 foreach (LanguageFactory::getInstance()->getLanguages() as $language) {
72b14b62 38 $command = new ResetPreloadCache($language);
cefdae5a
AE
39 $command();
40 }
41 });
252f3bc2 42 $eventHandler->register(LanguageImported::class, static function (LanguageImported $event) {
e25082fb
AE
43 $command = new ResetPreloadCache($event->language);
44 $command();
45 });
252f3bc2
TD
46 $eventHandler->register(PhraseChanged::class, PhraseChangedPreloadListener::class);
47 $eventHandler->register(PackageInstallationPluginSynced::class, PipSyncedPhrasePreloadListener::class);
67dd12f1 48 WCF::getTPL()->assign('phrasePreloader', new PhrasePreloader());
252f3bc2 49 $eventHandler->register(PreloadPhrasesCollecting::class, PreloadPhrasesCollectingListener::class);
73df173e
TD
50
51 $eventHandler->register(RebuildWorkerCollecting::class, static function (RebuildWorkerCollecting $event) {
52 $event->register(\wcf\system\worker\LikeRebuildDataWorker::class, -100);
53 $event->register(\wcf\system\worker\ArticleRebuildDataWorker::class, 50);
54 $event->register(\wcf\system\worker\PageRebuildDataWorker::class, 50);
55 $event->register(\wcf\system\worker\PollRebuildDataWorker::class, 60);
56 $event->register(\wcf\system\worker\UserActivityPointUpdateEventsWorker::class, 65);
57 $event->register(\wcf\system\worker\UserRebuildDataWorker::class, 70);
58 $event->register(\wcf\system\worker\UserActivityPointItemsRebuildDataWorker::class, 75);
73df173e 59 $event->register(\wcf\system\worker\CommentRebuildDataWorker::class, 120);
ff3774bd
TD
60 $event->register(\wcf\system\worker\CommentResponseRebuildDataWorker::class, 121);
61 $event->register(\wcf\system\worker\AttachmentRebuildDataWorker::class, 450);
62 $event->register(\wcf\system\worker\MediaRebuildDataWorker::class, 450);
63 $event->register(\wcf\system\worker\SitemapRebuildWorker::class, 500);
64 $event->register(\wcf\system\worker\StatDailyRebuildDataWorker::class, 800);
73df173e 65 });
0f5abeda
AE
66
67 try {
19781b8e
TD
68 $licenseData = LicenseApi::readFromFile();
69 if ($licenseData !== null) {
974f0363
TD
70 $brandingFree = $licenseData->woltlab['com.woltlab.brandingFree'] ?? '0.0';
71 $expiresAt = $licenseData->license['expiryDates']['com.woltlab.brandingFree'] ?? \TIME_NOW;
0f5abeda
AE
72 if ($brandingFree !== '0.0' && $expiresAt >= \TIME_NOW) {
73 define('WOLTLAB_BRANDING', false);
74 }
75 }
76 } catch (\Throwable) {
77 // Reading the license file must never cause any errors.
78 }
79
80 if (!defined('WOLTLAB_BRANDING')) {
81 define('WOLTLAB_BRANDING', true);
82 }
921a5a56 83};