registerService('defaultMailAddress', function () { return Util::getDefaultEmailAddress('lostpassword-noreply'); }); // register notifier $context->registerNotifierService(CoreNotifier::class); $context->registerNotifierService(AuthenticationNotifier::class); // register event listeners $context->registerEventListener(AddMissingIndicesEvent::class, AddMissingIndicesListener::class); $context->registerEventListener(AddMissingPrimaryKeyEvent::class, AddMissingPrimaryKeyListener::class); $context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class); $context->registerEventListener(BeforeLoginTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class); $context->registerEventListener(LoadAdditionalEntriesEvent::class, LoadAdditionalEntriesListener::class); $context->registerEventListener(RemoteWipeStarted::class, RemoteWipeActivityListener::class); $context->registerEventListener(RemoteWipeStarted::class, RemoteWipeNotificationsListener::class); $context->registerEventListener(RemoteWipeStarted::class, RemoteWipeEmailListener::class); $context->registerEventListener(RemoteWipeFinished::class, RemoteWipeActivityListener::class); $context->registerEventListener(RemoteWipeFinished::class, RemoteWipeNotificationsListener::class); $context->registerEventListener(RemoteWipeFinished::class, RemoteWipeEmailListener::class); $context->registerEventListener(UserDeletedEvent::class, UserDeletedStoreCleanupListener::class); $context->registerEventListener(UserDeletedEvent::class, UserDeletedTokenCleanupListener::class); $context->registerEventListener(BeforeUserDeletedEvent::class, UserDeletedFilesCleanupListener::class); $context->registerEventListener(UserDeletedEvent::class, UserDeletedFilesCleanupListener::class); $context->registerEventListener(UserDeletedEvent::class, UserDeletedWebAuthnCleanupListener::class); $context->registerEventListener(PasswordUpdatedEvent::class, PasswordUpdatedListener::class); // Tags $context->registerEventListener(UserDeletedEvent::class, TagManager::class); // config lexicon $context->registerConfigLexicon(ConfigLexicon::class); $context->registerWellKnownHandler(OCMDiscoveryHandler::class); $context->registerCapability(Capabilities::class); $context->registerEventListener(RestrictInteractionEvent::class, RestrictInteractionListener::class); // Direct Editing $context->registerEventListener(UserDeletedEvent::class, UserDeletedDirectEditingTokenCleanupListener::class); $context->registerEventListener(UserChangedEvent::class, UserDisabledDirectEditingTokenCleanupListener::class); $registry = Server::get(ISharingRegistry::class); $registry->registerRecipientType(Server::get(EmailShareRecipientType::class)); $registry->registerRecipientType(Server::get(GroupShareRecipientType::class)); $registry->registerRecipientType(Server::get(TeamShareRecipientType::class)); $registry->registerRecipientType(Server::get(TokenShareRecipientType::class)); $registry->registerRecipientType(Server::get(UserShareRecipientType::class)); $registry->registerPropertyType(Server::get(ExpirationDateSharePropertyType::class)); $registry->markPropertyTypeCompatibleWithRecipientType(ExpirationDateSharePropertyType::class, EmailShareRecipientType::class); $registry->markPropertyTypeCompatibleWithRecipientType(ExpirationDateSharePropertyType::class, GroupShareRecipientType::class); $registry->markPropertyTypeCompatibleWithRecipientType(ExpirationDateSharePropertyType::class, TeamShareRecipientType::class); $registry->markPropertyTypeCompatibleWithRecipientType(ExpirationDateSharePropertyType::class, TokenShareRecipientType::class); $registry->markPropertyTypeCompatibleWithRecipientType(ExpirationDateSharePropertyType::class, UserShareRecipientType::class); $registry->registerPropertyType(new LabelSharePropertyType()); $registry->markPropertyTypeCompatibleWithRecipientType(LabelSharePropertyType::class, TokenShareRecipientType::class); $registry->registerPropertyType(new NoteSharePropertyType()); $registry->markPropertyTypeCompatibleWithRecipientType(NoteSharePropertyType::class, EmailShareRecipientType::class); $registry->markPropertyTypeCompatibleWithRecipientType(NoteSharePropertyType::class, GroupShareRecipientType::class); $registry->markPropertyTypeCompatibleWithRecipientType(NoteSharePropertyType::class, TeamShareRecipientType::class); $registry->markPropertyTypeCompatibleWithRecipientType(NoteSharePropertyType::class, TokenShareRecipientType::class); $registry->markPropertyTypeCompatibleWithRecipientType(NoteSharePropertyType::class, UserShareRecipientType::class); $registry->registerPropertyType(Server::get(PasswordSharePropertyType::class)); $registry->markPropertyTypeCompatibleWithRecipientType(PasswordSharePropertyType::class, EmailShareRecipientType::class); $registry->markPropertyTypeCompatibleWithRecipientType(PasswordSharePropertyType::class, TokenShareRecipientType::class); $registry->registerPermissionPreset(new ViewSharePermissionPreset()); $registry->registerPermissionPreset(new EditSharePermissionPreset()); $registry->registerPermissionType(null, Server::get(ReshareSharePermissionType::class)); // Cannot use the APP_ID from files_sharing Application and EXCLUDE_RESHARE_FROM_EDIT from files_sharing ConfigLexicon, because the classes are not registered yet. if (!Server::get(IAppConfig::class)->getValueBool('files_sharing', 'shareapi_exclude_reshare_from_edit')) { $registry->markPermissionTypeCompatibleWithPermissionPreset(ReshareSharePermissionType::class, EditSharePermissionPreset::class); } } #[\Override] public function boot(IBootContext $context): void { } }